Bash – Why does the bash translation file not contain all error texts

bashlocale

I downloaded the latest version (4.4 for now) of Bash sources from GNU's site.

I opened French translation file (fr.po) from po directory and I searched for "permission denied". There were no results.

When I open terminal and run cd /var/log/apache2 I get the error: bash: cd: /var/log/apache2: Permission denied. So it IS a Bash error yet it's not included in mentioned file. Also, when I grep -rn . -e "denied" in the bash sources directory I only get 2 results, both of which are from file "COPYING".

Moreover, when I change Bash language with this command: export LC_ALL=fr_FR I get bash: cd: /var/log/apache2: Permission non accordée. Changing Bash language changes this error so it's another proof that this is indeed a Bash message.

Does anyone know why isn't this error included in the po file?

Best Answer

The string comes from strerror(3), which maps error numbers to messages. In this case, it's mapping EACCES. The strings (and their translations) are contained in your C library.

Related Question