adduser+pl (do Arka)

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Nie, 25 Paź 1998, 21:04:00 CET


On Sat, 24 Oct 1998, Marek Obuchowicz wrote:

> > > [root w elephant /root]# echo $LANG
> > > pl
> > 
> > pl, a nie pl_PL? A inne LC_* nie są ustawione...
> > 
> > > [root w elephant /root]# strace -o >(grep locale) adduser
> > > open("/usr/share/locale/locale.alias", O_RDONLY|0x8000) = 4
> > > open("/usr/share/i18n/locale.alias", O_RDONLY|0x8000) = -1 ENOENT (No such file or directory)
> > > open("/usr/share/locale/pl/LC_MESSAGES", O_RDONLY) = 4
> > > open("/usr/share/locale/pl/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory)
> > 
> > I nie może znaleźć ustawień locale (mógłby znaleźć najwyżej przetłumaczone
> > komunikaty, które są w pl, ale teraz sprawdziłem, że w odróżnieniu od
> > niektórych programów w C, skrypty basha muszą znaleźć wszystkie ustawienia,
> > żeby zechciały brać pod uwagę którekolwiek). Ustaw LANG=pl_PL.

> U mnie /usr/share/locale/pl jest linkiem do pl_PL a ustawienie langa na
> pl_PL nie pomaga :(

Linki nic tu nie mają do gadania. Standardowo postać wpisów w zmiennych z
LOCALE ma postać:

<język>[_<dialekt>[.<enkoding>]]

I w razie ustawienia najdłuższej postaci tych zmiennych jeżeli nie zostaną
znalezione pewne pliki w katalogu locale/<język>[_<dialekt>[.<enkoding>]]
to następuje odcinanie od końca zmiennych LOCALE i dalsze poszukiwanie
potrzebnych zasobów.

Czyli jeżeli dasz pl_PL, to tak czy inaczej jeżeli nie zostanie znalezione
coś w locale/pl_PL/LC_MESSAGES to zaraz po tym powinna być próba szukania
w locale/pl/LC_MESSAGES. Przykład z życia:

wun:~%setenv LANG "pl_PL"
wun:~%rm -f /bin/bash
rm: /bin/bash: Odmowa dostępu
wun:~%setenv LANG "pl"
wun:~%rm -f /bin/bash
rm: /bin/bash: Odmowa dostępu

i analiza ze strace przy LANG="pl_PL"

open("/usr/share/locale/pl_PL/LC_MESSAGES", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_MONETARY", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_COLLATE", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_TIME", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_NUMERIC", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_CTYPE", O_RDONLY) = 4
open("/usr/share/locale/pl_PL/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No su ch file or directory)
open("/usr/share/locale/pl/LC_MESSAGES/libc.mo", O_RDONLY) = 4

Jak widać najpierw była próba czytania z locale/pl_PL/LC_MESSAGES/libc.mo
i się to nie udało i dopiero poszło locale/pl/LC_MESSAGES/libc.mo.
To, że u Ciebie czy u innych to nie działa jest kwerstią libc i jakiś
usterek na tym poziomie. Którą wersję libc masz obecnie ?

kloczek
-- 
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl