Налаштування місцеположення - це налаштування користувача, які стосуються вашої культури.
Локальні назви
У всіх поточних варіантах Unix, про які я знаю (але не в кількох антикваріатах), імена локалів відповідають тій же схемі:
- ISO 639-1 малими двобуквених код мови, або ISO 639-2 код мови три букви , якщо мова не має два-буквений код. Наприклад,
enдля англійської, deдля німецької, jaдля японської, ukдля української, berдля берберської…
- Для багатьох, але не для всіх мов, підкреслення,
_за яким іде двозначний код країни з великим регістром ISO 3166 . Таким чином: en_USдля англійської США, en_UKдля англійської англійської, для fr_CAканадської (квебекської) французької, de_DEдля німецької Німеччини, de_ATдля німецької з Австрії, ja_JPдля японської (Японії) тощо.
- Необов'язково, точка з
.подальшим ім'ям персонажа , що кодує такими як UTF-8, ISO-8859-1, KOI8-U, GB2312, Big5і т.д. З GNU LIBC по крайней мере (не знаю , наскільки широко це), випадок і пунктуація ігноруються при кодуванні імен. Наприклад, zh_CN.UTF-8мандарин (спрощений) китайський код закодований у UTF-8, тоді zh_CNяк мандарин китайський закодований у GB2312, і zh_TWтайванський (традиційний) китайський закодований у Big5.
- За бажанням, знак at, який
@супроводжується назвою варіанта. Значення варіантів залежить від локалу. Наприклад, у багатьох європейських країнах є @euroмісцевий варіант, де знак валюти є євро, а кодування - це такий, що включає цей символ (ISO 8859-15 або ISO 8859-16), на відміну від варіанту, який не використовується без старого знака валюти. Наприклад, en_IE(англійська, Ірландія) використовує кодування latin1 (ISO 8859-1) і £ як символ валюти, в той час як en_IE@euroвикористовується кодування latin9 (ISO 8859-15) і € як символ валюти.
Крім того, є два імені локалів, які існують у всій системі, схожій на unix: Cі POSIX. Ці імена синонімічні і означають обчислювальні, тобто налаштування за замовчуванням, які підходять для даних, які аналізуються комп'ютерною програмою.
Налаштування мови
Наступні категорії локалів визначені POSIX :
LC_CTYPE: набір символів, використовуваний термінальними додатками: класифікаційні дані (символи яких букви, пунктуація, пробіли, недійсні тощо) та перетворення регістру. Текстові утиліти зазвичай прислуховуються LC_CTYPEдо визначення меж символів.
LC_COLLATE: порядок порівняння (тобто сортування). Цей параметр дуже обмежено використовується з кількох причин:
- Більшість мов мають складні правила, які залежать від сортування (наприклад, слова словника та власні імена можуть використовувати не той самий порядок) і не можуть бути виражені символом
LC_COLLATE.
- Існує небагато програм, де належний порядок сортування має значення, яке виконується програмним забезпеченням, яке використовує параметри місцевості. Наприклад, текстові процесори зберігають мову та кодування файлу у самому файлі (інакше файл не оброблятиметься належним чином у системі з різними налаштуваннями мови) та не хвилює налаштування локалі, визначені середовищем.
LC_COLLATEможе мати негативні побічні ефекти, зокрема, тому що це призводить до порядку сортування A <a <B <..., завдяки якому "між A і Z" включає малі літери від a до y. Зокрема, дуже поширені регулярні вирази, такі як [A-Z]зламати деякі програми .
LC_MESSAGES: мова інформаційних повідомлень та повідомлень про помилки.
LC_NUMERIC: форматування чисел: роздільник десятків і тисяч.
Багато програм жорсткого коду .у вигляді десяткового роздільника. Це робить LC_NUMERICне дуже корисними та потенційно небезпечними:
- Навіть якщо ви встановите його, ви все одно будете бачити формат за замовчуванням досить часто.
- Ви, швидше за все, потрапите в ситуацію, коли одна програма виробляє залежний від локалі вихід, а інша програма розраховує
.на десяткову точку або ,роздільник поля.
LC_MONETARY: як LC_NUMERIC, але для сум місцевої валюти.
Дуже мало додатків використовують це.
LC_TIME: форматування дати та часу: назви будня та місяця, годинник 12 або 24 години, порядок частин дати, пунктуація тощо.
GNU libc, який ви знайдете в невбудованому Linux, визначає додаткові категорії мов:
LC_PAPER: розмір паперу за замовчуванням (визначається висотою та шириною).
LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATIONЯ не знаю ні одного додатка , яке використовує їх.
Змінні середовища
Програми, що використовують параметри локалі, визначають їх із змінних оточення.
- Тоді використовується значення
LANGзмінної середовища, якщо це не перекрито іншим параметром. Якщо LANGне встановлено, локальний код за замовчуванням C.
- Ці
LC_xxxімена можуть бути використані в якості змінних оточення.
- Якщо
LC_ALLвстановлено, усі інші значення ігноруються; це в першу чергу корисно для встановлення LC_ALL=Cзапущених програм, яким потрібно виробляти однаковий вихід незалежно від того, де вони запущені.
- Крім того, GNU libc використовує
LANGUAGE для визначення резервних копій для LC_MESSAGES(наприклад, LANGUAGE=fr_BE:fr_FR:enвіддати перевагу бельгійській французькій мові, або за відсутності французької французької мови, або за відсутності англійської).
Встановлення локалів
Дані про локальний вміст можуть бути великими, тому деякі дистрибутиви не доставляють їх у зручній формі, а натомість потребують додаткового кроку встановлення.
- У Debian, щоб встановити локалі, запустіть
dpkg-reconfigure localesта виберіть зі списку в діалоговому вікні або відредагуйте /etc/locale.genта запустіть locale-gen.
- Для встановлення локалів на Ubuntu запустіть
locale-genз іменами локалів як аргументами.
Ви можете визначити свою власну локаль .
Рекомендація
Корисні налаштування:
- Встановіть
LC_CTYPEмову та кодування, якими ви кодуєте текстові файли. Переконайтесь, що термінали використовують це кодування.
Для більшості мов значення має лише кодування. Є кілька винятків; наприклад, в верхньому регістрі iє Iв більшості мов , але İна турецькому мовою ( tr_TR).
- Встановіть
LC_MESSAGESмову, в якій ви хочете бачити повідомлення.
- Набір
LC_PAPERдля en_USякщо ви хочете US Letter бути розмір паперу по замовчуванням і просто про що - небудь ще (наприклад en_GB) , якщо ви хочете A4.
- За бажанням встановіть
LC_TIMEулюблений формат часу.
Як пояснено вище, уникайте встановлення LC_COLLATEта LC_NUMERIC. Якщо ви користуєтесь LANG, явно перекрийте ці дві категорії, встановивши їх на C.
LC_PAPER. І чи можу я оновити це в системі без перезавантаження?