Dostępnych jest kilka zmiennych środowiskowych do zmiany ustawień języka. Możesz wyświetlić bieżące ustawienia regionalne, wykonując localepolecenie. Aby zmienić wszystkie ustawienia regionalne na angielski, użyj LANG=C. To Custawienie regionalne jest zawsze dostępne bez instalowania dodatkowych pakietów językowych. (Aby tymczasowo zmienić język na inny niż angielski, zobacz post @ mklement0 ).
Przykłady:
Wykonanie polecenia z domyślnymi ustawieniami języka i wydrukowanie bieżących ustawień regionalnych:
$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=
Tymczasowo zastąp język jednego programu i pokaż, że jest on naprawdę tymczasowy:
$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
Zmień ustawienia regionalne dla wszystkich poleceń wykonanych w bieżącej powłoce i ponownie dołącz proofy:
$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
@gertvdijk: Dzięki za to; powodem, dla którego ta odpowiedź działa nawet bez ustawiania, LANGUAGEjest wyjątek : GNU gettext daje pierwszeństwo LANGUAGEwartości, z wyjątkiem sytuacji, gdy (efektywna) LC_MESSAGESwartość (zwykle ustawiana pośrednio przez LANGlub LC_ALL) to albo C(jej synonim) POSIX. Zauważ też, że LANGUAGEzdarza się, że w tej odpowiedzi jest rozbrojony, podczas gdy jest ustawiony domyślnie, a jeśli jest ustawiony, musisz go przesłonić , aby przełączyć się na język określonego ustawienia narodowego (w przeciwieństwie do „C” / „POSIX”), który jest co znalazłeś
mklement0
Twoja odpowiedź działa świetnie, gdy przechodzisz do ustawień regionalnych „C” (z wiadomościami w języku angielskim w USA, zgodnie z wymaganiami), ale nie będzie działać dla innych ustawień regionalnych, chyba że LANGUAGEzostanie jawnie rozbrojone lub zastąpione. Biorąc pod uwagę ogólny tytuł pytania, istnieje prawdopodobieństwo, że ludzie znajdą tę odpowiedź, chcąc również przejść na język inny niż angielski, więc rozważ dodanie tej informacji do swojej odpowiedzi.
mklement0
@ mklement0 Biorąc pod uwagę kontekst pytania (publikowanie angielskich komunikatów o błędach), uważam, że aktualny post jest wystarczający. Możesz dodać kolejną odpowiedź, aby wyjaśnić szczegóły, LANGUAGEjeśli chcesz :)
Lekensteyn
Dodałem własną odpowiedź , jak zasugerowałeś. Jeśli zgadzasz się z moją oceną, że przyszli czytelnicy mogą przyjść tutaj, aby przejść na dowolny język (jak już kilka osób już aktywnie wskazało), dodaj link do mojej odpowiedzi na twoje pytanie. Poza tym sugeruję zmianę wartości LANGUAGEwyjściowej próbki na nl, która jest faktyczną wartością domyślną, gdy twoje ustawienia regionalne są nl_NL.UTF-8.
mklement0
9
Pomocna odpowiedź Lekensteyn działa świetnie, jeśli chcesz przejść na angielski w USA na żądanie, zgodnie z żądaniem PO, ale jeśli chcesz przejść na inny język na żądanie , potrzeba więcej pracy.
Przed rozpoczęciem należy zainstalować tabele komunikatów z sudo apt-get install language-pack-<lang-tag>, gdzie <lang-tag>jest prostą podtag języka RTF 5646 , na przykład esdla hiszpańskiego.
Podstawowe informacje
GNU gettext narzędzia opartych daje pierwszeństwo niestandardowych LANGUAGEzmiennej środowiska [1]
na POSIX określonych kodowej zmienne środowiska LC_ALL, LC_MESSAGESi LANG(w tej kolejności).
Biorąc pod uwagę, że LANGUAGEjest ustawiony domyślnie w systemach Ubuntu [2] , a mianowicie do fragmentu o LANGwartości, która odzwierciedla zarówno tag prosty język (np esna hiszpańskim) lub tag language-region (np de_DEdla wariantu Niemczech niemiecki), musisz wyłączyć lub zastąpić LANGUAGE, aby komunikaty w innym języku zaczęły obowiązywać. [3]
Opcja 1: Ustaw LANGUAGE
Przykład : Przełącz na eswiadomości hiszpańskie ( ) ad-hoc:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Uwaga : eswystarczy prosty tag języka, np. , Ale możesz dodać identyfikator regionu (np. es_ARDla Argentyny), a nawet sufiks zestawu znaków (np es_AR.UTF-8.).
Jednak zlokalizowane wiadomości mogą istnieć tylko na poziomie języka , a awarią jest użycie wiadomości pasujących do części językowej ( esw tym przypadku).
Opcja 2: Wyłącz LANGUAGEi ustawLC_ALL
To alternatywne rozwiązanie undefinesLANGUAGE pierwszy, a następnie wykorzystuje zmienną środowiskowe w POSIX LC_ALLniejawnie ustawione LC_MESSAGES[4] :
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
To rozwiązanie ma tę zaletę, że ustawia wszystkie aspekty lokalizacji na określone ustawienia regionalne (takie jak LC_TIMEformaty daty / godziny), a ustawienie (domyślnie) LC_MESSAGESinformuje również programy inne niż GNU o pożądanym języku.
Zwróć uwagę, że LC_ALLwymagana jest dokładna, pełna nazwa ustawień regionalnych, w tym sufiks zestawu znaków, aby była skuteczna ( es_ES.UTF-8) (inaczej niż w przypadku LANGUAGE, gdy wystarczy prosty tag języka (jak es)). To samo dotyczy ustawienia LC_MESSSAGESi LANG. Podanie niepoprawnej / niezainstalowanej nazwy ustawień regionalnych powoduje powrót do ustawień narodowych POSIX, a zatem w języku angielskim.
Przypisy
[1] Powody, dla których odpowiedź Lekensteyn dzieła nawet bez wyłączania / nadrzędne LANGUAGEJEST wyjątek : jeżeli (skuteczne) LC_MESSAGESwartości (zwykle ustawiony pośrednio LANGlub LC_ALL) jest albo Cczy (jego synonim) POSIX, wartość ta jest spełniony, niezależnie od wartości LANGUAGE, Jeśli w ogóle. I odwrotnie, jeśli (skuteczną) LC_MESSAGESwartością jest jakikolwiek inny, specyficzny język, LANGUAGEma pierwszeństwo.
[2] Dotyczy to właściwego Ubuntu , ale niekoniecznie innych smaków ; Lekensteyn stwierdza, że Kubuntu czy nie ustawić LANGUAGE.
Prawdopodobnie nieLANGUAGE powinien być ustawiony domyślnie, biorąc pod uwagę, że w przypadku jego braku przestrzegana jest wartość implikowana przez wartość (która określa bieżące ustawienia narodowe).
LC_MESSAGESLANG
[3] Możesz także użyć tego podejścia, aby przejść na [US] angielski, przypisując jeden LANGUAGE=Club LANGUAGE=POSIX(jako alternatywę dla, LANG=C/ LANG=POSIX), chociaż nie jestem pewien, czy jest to aktywnie rozpoznawane, czy po prostu mechanizm rezerwowy , biorąc pod uwagę, że te wartości nie 'zacząć od znacznika języka ; być może byłby lepszy wybór en_US.
[4] Istnieje AN krawędź przypadek, w którym to podejście nie jest praca: Próby wywołania wykonywalny z toru - czy względny lub bezwzględny - nie przełączy się na określonym języku, podczas gdy sama nazwa pliku nie: LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utilitynie nie pracy (wysyła wiadomość w bieżących ustawieniach narodowych), podczas gdy LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utilityrobi (wyświetla hiszpański komunikat o błędzie).
Jeśli ktoś wie, dlaczego i czy jest ku temu dobry powód, daj nam znać.
LANG
lubLANG_ALL
dla mnie nie działa, ale takLANGUAGE
jest. Zobacz Dlaczego przesłanianie zmiennej środowiskowej LANG nie zmienia dla mnie języka?LANGUAGE
jest wyjątek : GNU gettext daje pierwszeństwoLANGUAGE
wartości, z wyjątkiem sytuacji, gdy (efektywna)LC_MESSAGES
wartość (zwykle ustawiana pośrednio przezLANG
lubLC_ALL
) to alboC
(jej synonim)POSIX
. Zauważ też, żeLANGUAGE
zdarza się, że w tej odpowiedzi jest rozbrojony, podczas gdy jest ustawiony domyślnie, a jeśli jest ustawiony, musisz go przesłonić , aby przełączyć się na język określonego ustawienia narodowego (w przeciwieństwie do „C” / „POSIX”), który jest co znalazłeśLANGUAGE
zostanie jawnie rozbrojone lub zastąpione. Biorąc pod uwagę ogólny tytuł pytania, istnieje prawdopodobieństwo, że ludzie znajdą tę odpowiedź, chcąc również przejść na język inny niż angielski, więc rozważ dodanie tej informacji do swojej odpowiedzi.LANGUAGE
jeśli chcesz :)LANGUAGE
wyjściowej próbki nanl
, która jest faktyczną wartością domyślną, gdy twoje ustawienia regionalne sąnl_NL.UTF-8
.Pomocna odpowiedź Lekensteyn działa świetnie, jeśli chcesz przejść na angielski w USA na żądanie, zgodnie z żądaniem PO, ale jeśli chcesz przejść na inny język na żądanie , potrzeba więcej pracy.
Przed rozpoczęciem należy zainstalować tabele komunikatów z
sudo apt-get install language-pack-<lang-tag>
, gdzie<lang-tag>
jest prostą podtag języka RTF 5646 , na przykłades
dla hiszpańskiego.Podstawowe informacje
GNU gettext narzędzia opartych daje pierwszeństwo niestandardowych
LANGUAGE
zmiennej środowiska [1] na POSIX określonych kodowej zmienne środowiskaLC_ALL
,LC_MESSAGES
iLANG
(w tej kolejności).Biorąc pod uwagę, że
LANGUAGE
jest ustawiony domyślnie w systemach Ubuntu [2] , a mianowicie do fragmentu oLANG
wartości, która odzwierciedla zarówno tag prosty język (npes
na hiszpańskim) lub tag language-region (npde_DE
dla wariantu Niemczech niemiecki), musisz wyłączyć lub zastąpićLANGUAGE
, aby komunikaty w innym języku zaczęły obowiązywać. [3]Opcja 1: Ustaw
LANGUAGE
Przykład : Przełącz na
es
wiadomości hiszpańskie ( ) ad-hoc:Uwaga :
es
wystarczy prosty tag języka, np. , Ale możesz dodać identyfikator regionu (np.es_AR
Dla Argentyny), a nawet sufiks zestawu znaków (npes_AR.UTF-8
.).Jednak zlokalizowane wiadomości mogą istnieć tylko na poziomie języka , a awarią jest użycie wiadomości pasujących do części językowej (
es
w tym przypadku).Opcja 2: Wyłącz
LANGUAGE
i ustawLC_ALL
To alternatywne rozwiązanie undefines
LANGUAGE
pierwszy, a następnie wykorzystuje zmienną środowiskowe w POSIXLC_ALL
niejawnie ustawioneLC_MESSAGES
[4] :To rozwiązanie ma tę zaletę, że ustawia wszystkie aspekty lokalizacji na określone ustawienia regionalne (takie jak
LC_TIME
formaty daty / godziny), a ustawienie (domyślnie)LC_MESSAGES
informuje również programy inne niż GNU o pożądanym języku.Zwróć uwagę, że
LC_ALL
wymagana jest dokładna, pełna nazwa ustawień regionalnych, w tym sufiks zestawu znaków, aby była skuteczna (es_ES.UTF-8
) (inaczej niż w przypadkuLANGUAGE
, gdy wystarczy prosty tag języka (jakes
)). To samo dotyczy ustawieniaLC_MESSSAGES
iLANG
. Podanie niepoprawnej / niezainstalowanej nazwy ustawień regionalnych powoduje powrót do ustawień narodowych POSIX, a zatem w języku angielskim.Przypisy
[1] Powody, dla których odpowiedź Lekensteyn dzieła nawet bez wyłączania / nadrzędne
LANGUAGE
JEST wyjątek : jeżeli (skuteczne)LC_MESSAGES
wartości (zwykle ustawiony pośrednioLANG
lubLC_ALL
) jest alboC
czy (jego synonim)POSIX
, wartość ta jest spełniony, niezależnie od wartościLANGUAGE
, Jeśli w ogóle. I odwrotnie, jeśli (skuteczną)LC_MESSAGES
wartością jest jakikolwiek inny, specyficzny język,LANGUAGE
ma pierwszeństwo.[2] Dotyczy to właściwego Ubuntu , ale niekoniecznie innych smaków ; Lekensteyn stwierdza, że Kubuntu czy nie ustawić
LANGUAGE
.Prawdopodobnie nie
LANGUAGE
powinien być ustawiony domyślnie, biorąc pod uwagę, że w przypadku jego braku przestrzegana jest wartość implikowana przez wartość (która określa bieżące ustawienia narodowe).LC_MESSAGES
LANG
[3] Możesz także użyć tego podejścia, aby przejść na [US] angielski, przypisując jeden
LANGUAGE=C
lubLANGUAGE=POSIX
(jako alternatywę dla,LANG=C
/LANG=POSIX
), chociaż nie jestem pewien, czy jest to aktywnie rozpoznawane, czy po prostu mechanizm rezerwowy , biorąc pod uwagę, że te wartości nie 'zacząć od znacznika języka ; być może byłby lepszy wybóren_US
.[4] Istnieje AN krawędź przypadek, w którym to podejście nie jest praca: Próby wywołania wykonywalny z toru - czy względny lub bezwzględny - nie przełączy się na określonym języku, podczas gdy sama nazwa pliku nie:
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility
nie nie pracy (wysyła wiadomość w bieżących ustawieniach narodowych), podczas gdyLANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
robi (wyświetla hiszpański komunikat o błędzie).Jeśli ktoś wie, dlaczego i czy jest ku temu dobry powód, daj nam znać.
źródło