
Я только что установил openSUSE Leap 42.2. У меня возникли проблемы с настройками языка.
Я хочу, чтобы компьютер говорил со мной на английском языке, но при этом я хочу, чтобы форматы были шведскими, поэтому я изменил настройки на смесь шведского и английского языков.
В Ubuntu установка /etc/default/locale
следующего значения обычно дает то, что мне нужно:
LANG=en_US.UTF-8
LC_CTYPE=sv_SE.UTF-8
LC_NUMERIC=sv_SE.UTF-8
LC_TIME=sv_SE.UTF-8
LC_COLLATE=sv_SE.UTF-8
LC_MONETARY=sv_SE.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=sv_SE.UTF-8
LC_NAME=sv_SE.UTF-8
LC_ADDRESS=sv_SE.UTF-8
LC_TELEPHONE=sv_SE.UTF-8
LC_MEASUREMENT=sv_SE.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
Похоже, в openSUSE это делать некорректно.
Вместо этого я изменил sv_SE на en_US в нескольких файлах в моей домашней папке.
~/.config/plasma-locale-settings.sh
~/.config/plasma-localerc
~/.i18n
~/.profile
После первой попытки установить язык с помощью графических инструментов:
Теперь locale
получается то, чего я и ожидал, и, как видно на картинках, большинство диалогов говорят на английском, но zypper, похоже, это не волнует:
user@computer:~> locale
LANG=en_US.UTF-8
LC_CTYPE=sv_SE.UTF-8
LC_NUMERIC=sv_SE.UTF-8
LC_TIME=sv_SE.UTF-8
LC_COLLATE=sv_SE.UTF-8
LC_MONETARY=sv_SE.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=sv_SE.UTF-8
LC_NAME=sv_SE.UTF-8
LC_ADDRESS=sv_SE.UTF-8
LC_TELEPHONE=sv_SE.UTF-8
LC_MEASUREMENT=sv_SE.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
user@computer:~> zypper search | head -3
Läser in förrådsdata...
Läser installerade paket...
Как мне убедить Zypper говорить со мной по-английски?
Попытка обойти проблему, используя en_DK
вместо этого смесь en_US
и , sv_SE
не очень успешна:
Даже если для каждой переменной LC_variable задано значение en_US, система настаивает на использовании шведского языка, поэтому должно быть что-то еще, влияющее на отображаемый язык:
user@computer:~> locale | grep sv_SE
LC_CTYPE=sv_SE.UTF-8
LC_NUMERIC=sv_SE.UTF-8
LC_TIME=sv_SE.UTF-8
LC_COLLATE=sv_SE.UTF-8
LC_MONETARY=sv_SE.UTF-8
LC_PAPER=sv_SE.UTF-8
LC_NAME=sv_SE.UTF-8
LC_ADDRESS=sv_SE.UTF-8
LC_TELEPHONE=sv_SE.UTF-8
LC_MEASUREMENT=sv_SE.UTF-8
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_CTYPE
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_NUMERIC
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_TIME
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_COLLATE
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_MONETARY
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_PAPER
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_NAME
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_ADDRESS
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_TELEPHONE
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
LC_MEASUREMENT
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> NEXT=`locale | grep sv_SE | awk -F '=' '{ print $1 }' | head -1`; echo $NEXT; export $NEXT=en_US.UTF-8; zypper ref
bash: export: "=en_US.UTF-8": inte en giltig identifierare
Root-behörigheter krävs för att uppdatera systemarkiv.
user@computer:~> locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
Сброс всех настроек на en_US и перезагрузка обучают Zypper английскому языку:
user@computer:~> locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
user@computer:~> zypper ref
Root privileges are required for refreshing system repositories.
решение1
Вы можете выполнить export LC_ALL=C
до zypper ....
.
Например:
# export LC_ALL=C
# zypper dup
Warning: You are about to do a distribution upgrade with all enabled
repositories. Make sure these repositories are compatible before you
continue. See 'man zypper' for more information about this command.
Loading repository data...
Reading installed packages...
Computing distribution upgrade...
...
...
решение2
После возврата всех настроек на английский язык я смог добиться желаемого поведения следующим образом:
Щелчок правой кнопкой мыши по часам — выборУстановить формат времени...- ВыборПодробные настройкии активация шведского языка для всех подробных настроек:
Проверив локаль после этого, я думаю, что, возможно, LC_CTYPE
это мошенник. Но многие LC_variables, которые я установил на шведский язык, теперь стали английскими, так что для уверенности потребуется еще немного повозиться.
user@computer:~> zypper ref
Root privileges are required for refreshing system repositories.
user@computer:~> locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=sv_SE.UTF-8
LC_TIME=sv_SE.UTF-8
LC_COLLATE=sv_SE.UTF-8
LC_MONETARY=sv_SE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT=sv_SE.UTF-8
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=