Ця відповідь покаже, як повністю налаштувати локаль, необов'язково використовуючи наявний локал як базовий. Тип локалі, який буде використаний у цій відповіді, - i18n
тип; такий тип локалі буде мати на увазі в кожній згадці слова "locale" в тілі відповіді.
Знайдіть путівник
Перше, що вам потрібно налаштувати локаль, - це ознайомитися з форматом локалі. Цей веб-редактор локальних ресурсів містить вичерпний опис кожного поля в мові, незважаючи на те, що він не може бути використаний будь-ким відразу. Це буде керівництво по використанню.
Потрібні інструменти
Єдиними інструментами, необхідними для роботи з локалями, є
- Текстовий редактор. Будь-хто зробить, хоча VIM буде чудовим.
- Перетворювач тексту в унікод. Найбільш очікувалося, що у вас його не було, тож я надам вам простий. Прочитайте наступний підрозділ, щоб отримати його.
Я рекомендую вам створити каталог і зберегти все, що стосується роботи, яку ви будете виконувати на локалі до нього.
Перетворювач тексту в унікод (encodestr)
ПРИМІТКА: якщо ви використовуєте непоширені символи, у вас можуть виникнути проблеми зі сценарієм, про який я пишу нижче; ви можете поглянути на альтернативні сценарії, пов’язані з nass .
Збережіть наступний код у файлі. Цей файл буде ідентифікований вашою системою як сценарій python. Це добре, оскільки він є одним. Це керівництво передбачає, що ви викликали сценарій encodestr
.
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
Після збереження цього дозволу на виконання файлу - це стане в нагоді. Ви можете зробити це з допомогою Наутілуса, або тікаючи від терміналу наступної команди на каталозі , в якому ви зберегли сценарій: chmod +x encodestr
.
Тепер ви можете перевірити цей скрипт працює на тому ж каталозі: ./encodestr hello
. Ви повинні отримати вихід, рівний <U0068><U0065><U006C><U006C><U006F>
.
Змініть існуючий локал
Модифікація наявної локалі - це найпростіший випадок, оскільки в ідеалі ви виберете локаль, який майже повністю відповідає вашим потребам, і в цьому випадку вам потрібно внести лише невеликі зміни. Для його адаптації ви можете скористатися посібником, щоб дізнатись, які з розділів є тими, які ви хочете змінити, і як ви можете їх змінити. Усі встановлені локалі проживають /usr/share/i18n/locales
, однак керівництво містить майже кожну створену локаль.
Однак перше, що ви помітите, коли відкриєте локаль, - це те, що ви прочитаєте англійські слова стільки, скільки дивні <UXXXX>
коди. Вам потрібно буде вміти створювати ці коди - ось тут і encodestr
йде сценарій.
Коли ви знаєте, які розділи потрібно змінити, вам потрібно знати кожне поле, що міститься в розділі.
Наприклад, LC_TIME
розділ містить поле t_fmt
та багато інших. Кожне поле має свій опис у путівнику .
Тепер, коли ви знаєте, які поля потрібно змінити, скористайтеся посібником ще раз, щоб дізнатися, які значення приймає поле.
Наприклад, поле t_fmt
приймає текст та загальні змінні strfmt .
Тільки коли ви знаєте, що писати на полях, які ви хочете змінити, запустіть текст через encodestr
сценарій, щоб отримати його закодований еквівалент.
ПРИМІТКА: Не кожне поле потрібно кодувати, використовуйте наявний локаль як посилання, якщо це необхідно.
Наприклад, якщо ви хочете мати формат часу Time: %T
в t_fmt
полі, запустіть ./encodestr "Time: %T"
; це повернеться, <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
і тому у вас буде лінія t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
у вашій мові (звичайно, у відповідному розділі).
Після того, як ви змінили кожне поле, яке ви хотіли, вам потрібно буде продовжити встановлення локальної системи в систему, щоб її можна було використовувати. Перейдіть до розділу інсталяції для цього.
Створення локалу з нуля
На відміну від модифікації одного, інший метод, який ви можете використовувати для створення власної локальної мови, працює над цим з нуля. Це не дуже складно, якщо - знову ж таки - ви користуєтесь посібником . Ось корисна порада: ви можете копіювати розділи з інших локальних версій без власних методів копіювання та вставки . Вам просто потрібно дотримуватися цього формату:
LC_SECTION
copy "locale"
END LC_SECTION
Де LC_SECTION
знаходиться розділ, який ви хочете змінити, і locale
локал, з якого потрібно скопіювати цей розділ.
Наприклад, якщо ви хочете скопіювати формат часу в англійській мові, ви мали б цей текст у вашому користувальницькому локальному файлі:
LC_TIME
copy "en_GB"
END LC_TIME
І це економить багато роботи та запевняє, що будь-які зміни, внесені до посилається на локалі, будуть відображені у вашому.
Встановлення власної локальної мови
Кроки, які я збираюся показати нижче, можуть бути не оптимальними, але працюють.
Складіть свою мову. Не панікуйте! На це не потрібно часу. Просто запустіть команду, sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
де custom
є назва вашої мови.
Скопіюйте свій локальний /usr/share/i18n/locales/
каталог у каталог. Для цього вам обов’язково знадобляться sudo priviledges, і ви можете це зробити за допомогою команди, sudo cp locale /usr/share/i18n/locales/
де locale
назва файлу вашого користувацького локалу.
Вкажіть свою мову в /var/lib/locales/supported.d/
. Наприклад, створіть ім’я файлу /var/lib/locales/supported.d/asd
та додайте рядок custom UTF-8
, де користувацьким є ім’я вашої локалі.
Виконайте магічну команду. Я насправді не знаю, що саме ця команда робить, але це дуже важливо. Біжи sudo locale-gen
. Найімовірніше, що він генерує посилання на доступні локалі, де це необхідно.
Скажіть вашій системі використовувати локаль. Якщо ви хочете, щоб локал використовувався на загальносистемному рівні, змініть /etc/environment
файл. Якщо ні, ви можете змінити ~/.profile
файл або будь-який інший файл, який розміщується при запуску. Якщо ви не знаєте, що останнє означає, не хвилюйтеся, просто скористайтеся ~/.profile
файлом. Щоб знати, що ви повинні написати в ньому, спочатку запустіть locale
команду. Він повинен видавати список з пунктами як LANGUAGE
, LC_MESSAGES
, LC_CTYPE
і багатьма іншими. Ви будете писати для кожного з потрібних розділів (перерахованих попередньою командою) окремими рядками, SECTION="locale"
де SECTION
знаходиться розділ та locale
назва вашої власної мови.
Наприклад, якщо ви хочете використовувати формат часу з Нідерландів, але англійською мовою, напишіть:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
ПРИМІТКА. Якщо ви хочете використовувати одну локаль для кожного параметра локалі, напишіть, LC_ALL="locale"
де locale
ім’я вашого власного мовного. Якщо ви хочете використовувати локаль для всього, окрім мови, ви можете написати LANG="locale"
та (в іншому рядку, звичайно), LANGUAGE="locale":XX
де XX
є 2-літерний код для потрібної мови.
Наприклад, якщо ви хочете використовувати голландську мову та англійську мову, ви можете використовувати:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
Ви закінчили
Наступного разу, коли ви ввійдете в систему, ваша мова повинна використовуватись. Ви можете перевірити це, запустивши locale
команду ще раз.
Будь ласка, коментуйте невідповідності чи помилкові заяви в цьому посібнику!
πμ
він виводить<U00CF><U0080><U00CE><U00BC>
замість очікуваних символів<U03C0><U03BC>
. Ось посилання, яке працює.