summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter09/locale.html
blob: f0dabad1f9cd1f9055a28bcb86b772f7dc5981a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    <title>
      9.7. Настройка системной локали
    </title>
    <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
    <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
    <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
    "text/css" media="print" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body class="lfs" id="lfs-12.2">
    <div class="navheader">
      <h4>
        Линукс с нуля - Версия 12.2
      </h4>
      <h3>
        Глава 9. Системные настройки
      </h3>
      <ul>
        <li class="prev">
          <a accesskey="p" href="usage.html" title=
          "Настройка и использование загрузочных скриптов System V">Пред.</a>
          <p>
            Настройка и использование загрузочных скриптов System V
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="inputrc.html" title=
          "Создание файла /etc/inputrc">След.</a>
          <p>
            Создание файла /etc/inputrc
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter09.html" title=
          "Глава 9. Системные настройки">Наверх</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Линукс с нуля - Версия 12.2">Начало</a>
        </li>
      </ul>
    </div>
    <h1 class="sect1">
      <a id="ch-config-locale" name="ch-config-locale"></a>9.7. Настройка
      системной локали
    </h1>
    <div class="sect1" lang="ru" xml:lang="ru">
      <p>
        Некоторые переменные окружения, необходимые для поддержки вашего
        языка. Правильная их установка влияет на:
      </p>
      <div class="itemizedlist">
        <ul>
          <li class="listitem">
            <p>
              Выходные данные программ, переводятся на ваш родной язык
            </p>
          </li>
          <li class="listitem">
            <p>
              Правильную интерпретацию символов в буквы, цифры и другие
              классы. Это необходимо для того, чтобы <span class=
              "command"><strong>bash</strong></span> правильно принимал
              не-ASCII символы, в командной строке в неанглоязычных языковых
              системах
            </p>
          </li>
          <li class="listitem">
            <p>
              Правильную для страны сортировку по алфавиту
            </p>
          </li>
          <li class="listitem">
            <p>
              Подходящий формат бумаги по умолчанию
            </p>
          </li>
          <li class="listitem">
            <p>
              Правильное форматирование денежных значений, значений времени и
              дат
            </p>
          </li>
        </ul>
      </div>
      <p>
        Ниже замените <em class="replaceable"><code>&lt;ll&gt;</code></em>
        двухбуквенным кодом нужного вам языка (например <code class=
        "literal">en</code>), а <em class=
        "replaceable"><code>&lt;CC&gt;</code></em> двухбуквенным кодом
        соответствующей страны (например <code class="literal">GB</code>).
        <em class="replaceable"><code>&lt;charmap&gt;</code></em> нужно
        заменить на каноническую кодировку для выбраной вами локали. Также
        могут присутствовать необязательные модификаторы, такие как
        <code class="literal">@euro</code>.
      </p>
      <p>
        Список всех локалей, поддерживаемых Glibc, можно получить, выполнив
        следующую команду:
      </p>
      <pre class="userinput"><kbd class="command">locale -a</kbd></pre>
      <p>
        Таблицы символов могут иметь несколько синонимов. Например
        <code class="literal">ISO-8859-1</code> так же называют <code class=
        "literal">iso8859-1</code> и <code class="literal">iso88591</code>.
        Некоторые приложения не могут корректно обрабатывать различные
        синонимы (например <code class="literal">UTF-8</code> должно быть
        указано как <code class="literal">UTF-8</code>, а не <code class=
        "literal">utf8</code>), поэтому в большинстве случаев безопаснее
        всего выбрать каноническое имя для конкретной локали. Для определения
        канонического имени локали выполните команду ниже, заменив <em class=
        "replaceable"><code>&lt;locale name&gt;</code></em> на вывод
        <span class="command"><strong>locale -a</strong></span> для желаемой
        локали (например <code class="literal">en_GB.iso88591</code> в нашем
        примере).
      </p>
      <pre class="userinput"><kbd class="command">LC_ALL=<em class=
      "replaceable"><code>&lt;locale name&gt;</code></em> locale charmap</kbd></pre>
      <p>
        Для локали <code class="literal">en_GB.iso88591</code> приведенная
        выше команда напечатает:
      </p>
      <pre class="screen"><code class=
      "computeroutput">ISO-8859-1</code></pre>
      <p>
        Окончательная настройка локали будет выглядеть так: <code class=
        "literal">en_GB.ISO-8859-1</code>. Важно, чтобы локаль, найденная с
        помощью приведенной выше методики, была проверена перед её
        добавлением в файлы запуска Bash:
      </p>
      <pre class="userinput"><kbd class=
      "command">LC_ALL=&lt;locale name&gt; locale language
LC_ALL=&lt;locale name&gt; locale charmap
LC_ALL=&lt;locale name&gt; locale int_curr_symbol
LC_ALL=&lt;locale name&gt; locale int_prefix</kbd></pre>
      <p>
        Приведенные выше команды должны вывести название языка, кодировку
        символов, используемую в локали, местную валюту и телефонный код
        страны. Если какая-либо из команд завершается с сообщением об ошибке,
        похожим на указанное ниже, это означает, что ваша локаль либо не была
        установлена в Главе 8, либо не поддерживается стандартной установкой
        Glibc.
      </p>
      <pre class="screen"><code class=
      "computeroutput">locale: Cannot set LC_* to default locale: No such file or directory</code></pre>
      <p>
        Если это произойдет, вам следует либо установить желаемую локаль с
        помощью команды <span class=
        "command"><strong>localedef</strong></span>, либо рассмотреть
        возможность выбора другой локали. Дальнейшие инструкции не
        предполагают таких сообщений об ошибках от Glibc.
      </p>
      <p>
        Другие пакеты также могут работать некорректно (но не всегда будут
        отображать какие-либо сообщения об ошибках), если название локали не
        соответствует их ожиданиям. В таких случаях изучите, какие ещё
        дистрибутивы Linux поддерживают ваш язык, возможно, это даст
        некоторую полезную информацию
      </p>
      <p>
        Программа оболочки <span class=
        "command"><strong>/bin/bash</strong></span> (далее именуемая как
        <span class="quote">«<span class="quote">оболочка</span>»</span>)
        использует начальный набор файлов, чтобы помочь создать среду для
        запуска. Каждый файл имеет определенное назначение и может по-разному
        влиять на вход в систему и интерактивное окружение. Файлы в каталоге
        <code class="filename">/etc</code> содержат глобальные настройки.
        Если в домашнем каталоге существуют эквивалентные файлы, они могут
        переопределить глобальные настройки.
      </p>
      <p>
        Интерактивная оболочка входа запускается после успешного входа с
        использованием <span class=
        "command"><strong>/bin/login</strong></span>, прочитав файл
        <code class="filename">/etc/passwd</code>. Интерактивная оболочка без
        входа в систему запускается из командной строки (например,
        <code class="prompt">[prompt]$</code><span class=
        "command"><strong>/bin/bash</strong></span>). Неинтерактивная
        оболочка обычно присутствует когда выполняется скрипт оболочки. Он
        неинтерактивен, поскольку обрабатывает скрипт и не ожидает ввода
        пользователем между командами.
      </p>
      <p>
        Создайте файл <code class="filename">/etc/profile</code> <span class=
        "phrase">после того, как будут определены правильные настройки
        локали, чтобы установить желаемый язык</span>, но вместо этого
        установите локаль <code class="literal">C.UTF-8</code> при запуске
        консоли Linux (чтобы программы не выводили символы, которые консоль
        Linux не может отобразить):
      </p>
      <pre class="userinput"><kbd class=
      "command">cat &gt; /etc/profile &lt;&lt; "EOF"
<code class="literal"># Begin /etc/profile

for i in $(locale); do
  unset ${i%=*}
done

if [[ "$TERM" = linux ]]; then
  export LANG=C.UTF-8
else
  export LANG=<em class=
"replaceable"><code>&lt;ll&gt;_&lt;CC&gt;.&lt;charmap&gt;&lt;@modifiers&gt;</code></em>
fi

# End /etc/profile</code>
EOF</kbd></pre>
      <p>
        Локаль <code class="literal">C</code> (используемая по умолчанию) и
        <code class="literal">en_US</code> (одна из рекомендуемых для
        англоязычных пользователей в Соединенных Штатах) это разные локали.
        <code class="literal">C</code> использует 7-битный набор символов
        US-ASCII и обрабатывает байты с установленным старшим битом как
        недопустимые символы. Вот почему, например, команда <span class=
        "command"><strong>ls</strong></span> заменяет их вопросительными
        знаками в этой локали. Кроме того, попытка отправить почту с такими
        символами из Mutt или Pine приводит к тому что, отправляемые
        сообщения не соответствуют RFC (кодировка в исходящей почте указана
        как <code class="computeroutput">unknown 8-bit</code>). Рекомендуется
        использовать локаль <code class="literal">C</code>, если вы уверены,
        что вам никогда не понадобятся 8-битные символы.
      </p>
    </div>
    <div class="navfooter">
      <ul>
        <li class="prev">
          <a accesskey="p" href="usage.html" title=
          "Настройка и использование загрузочных скриптов System V">Пред.</a>
          <p>
            Настройка и использование загрузочных скриптов System V
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="inputrc.html" title=
          "Создание файла /etc/inputrc">След.</a>
          <p>
            Создание файла /etc/inputrc
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter09.html" title=
          "Глава 9. Системные настройки">Наверх</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Линукс с нуля - Версия 12.2">Начало</a>
        </li>
      </ul>
    </div>
  </body>
</html>