Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Zmatky s češtinou  (Přečteno 2505 krát)

juwa2

  • Závislák
  • ***
  • Příspěvků: 4935
Zmatky s češtinou
« kdy: 07 Května 2022, 08:50:55 »
Jak je to vlastně z češtinou v konzolových aplikacích?
Teď se mi třeba aktualizoval cron, a jelikož průběh aktualizace pozorně sleduji, zaujala mě hláška
Kód: [Vybrat]
Setting up cron (3.0pl1-128.1ubuntu1.1) ...
Warning: juwa is not a regular file!
Warning: root is not a regular file!

Protože nevidím důvod, proč by zrovna moje dva crontaby nebyly "regular file", zapátral jsem v postinstalačním skriptu balíčku cron a našel tam tohle
Kód: [Vybrat]
cd /var/spool/cron/crontabs
for tab_name in *; do
tab_type=$(stat -c '%F' "$tab_name")

if [ "$tab_type" != "regular file" ]
    then
    echo "Warning: $tab_name is not a regular file!"
    else
    continue
fi

Začíná přihořívat, zkusil jsem
Kód: [Vybrat]
tab_type=$(stat -c '%F' "/var/spool/cron/crontabs/juwa")
echo $tab_type
běžný soubor

Takže je to jasné - skript očekává výraz "regular file"  ale od aplikace stat dostane český překlad "běžný soubor"  což nevyhoví podmínce a tím pádem hlásí chybu.

A nyní k otázce.
1. Proč aplikace stat zobrazuje výstup příkazů v češtině (dokonce celý help je český, ale to zrovna ničemu nevadí)??
2. Co třeba v Indické verzi Ubuntu, tam je pak výstupem co (netuším jak se v hindštině napíše "běžný soubor"), nějaký "rozsypaný čaj"?
    Ty výstupy jsou přeci určeny nejenom k tomu aby je nějaký uživatel četl, ale také s nimi často pracují další aplikace, skripty, systém atd.
3. Lze to nějak nastavit/změnit?

Vždy jsem si myslel, že tenhle zmatek se týká jenom windowsů (tam např. pokud se cesta nezadá ve správném jazyce, tak neexistuje - ale neplatí to vždycky, někdy to kupodivu zase "zkousne" české i anglické zadání stažené soubory/downloads
  :-\
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EDIT:  Po "menším" pátrání jsem zjistil, že problém výše se bohužel týká všech aplikací z balíku coreutils, kterých je více jak stovka..
Jsou to všechny tyto běžné aplikace:
Kód: [Vybrat]
cat cp date dd df dir echo false chgrp chmod chown ln ls mkdir mknod mktemp mv pwd readlink rm rmdir sleep stty sync touch true uname vdir arch basename base32 base64 b2sum cksum comm csplit cut dircolors dirname du env expand expr factor fmt fold groups head hostid chcon id join link logname md5sum mkfifo nice nl nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx realpath runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf sort split stat stdbuf sum tac tail tee test timeout tr truncate tsort tty unexpand uniq unlink users wc who whoami yes
Náprava je naštěstí docela snadná
Na konec souboru  ~/.bashrc  přidáme tyto dva řádky
Kód: [Vybrat]
unset LC_ALL
export LC_MESSAGES=C

A následně provedeme příkaz
Kód: [Vybrat]
source ~/.bashrc
Pro kontrolu si ještě můžeme zobrazit výstup příkazu locale
Od teď už budou výstupy všech těchto aplikací pouze v angličtině, tj. nebudou komoleny nesmyslnými českými překlady, veškeré okolní prostředí jim bude "rozumět".  :)
A změna je trvalá, není omezena na session v jednom terminálu.
« Poslední změna: 07 Května 2022, 11:10:51 od juwa2 »

 

Provoz zaštiťuje spolek OpenAlt.