Локаль и язык интерфейса

Продолжение обсуждения из Business Week Day:

Как я уже упоминал в связанном посте, локаль не тождественна языку интерфейса.

В качестве примера возьмём KDE (Linux и Qt):

Как видно на первом скриншоте, можно выбрать язык интерфейса. Это определяет язык интерфейса и всего, что вы видите на экране, за исключением того, что показано на втором скриншоте.
Второй скриншот позволяет задать локаль пользователя и переопределить форматы чисел, времени, валюты, единиц измерения и сортировки.
Это важно, так как многие используют систему на предпочитаемом ими языке, но живут в другой стране, где у них иные предпочтения в настройках локали.

Приведу примеры из моего региона — арабского мира:

  • Во всех странах основным языком является арабский.
  • Страны Магриба предпочитают использовать восточноарабские цифры (٠١٢٣٤٥٦٧٨٩), тогда как страны Магриба предпочитают использовать арабские цифры (0123456789).
  • Египет, Судан и страны Персидского залива предпочитают использовать латинские названия месяцев, транслитерированные на арабский: Arabic names of Gregorian months - Wikipedia, в то время как Левант и Месопотамия предпочитают использовать ассирийские названия месяцев: Arabic names of Gregorian months - Wikipedia, а страны Магриба — транслитерацию французских названий месяцев: Arabic names of Gregorian months - Wikipedia.

Следовательно, даты зависят от этих различий:

  • Во всех странах текст пишется справа налево.
  • Страны Магриба: ⁨١٢ يناير ٢٠٢٠⁩ = 12 января 2020 г. (чтение справа налево)
  • Страны Магриба: ⁨12 جانفي 2020⁩ = 12 января 2020 г. (чтение справа налево)
  • Проще говоря: используются ли восточноарабские или западные/арабские цифры, текст всё равно пишется справа налево, что ещё больше усложняет выбор цифр, не говоря уже о формате.

Даже разделитель тысяч отличается:


(Восточноарабские цифры также имеют другой разделитель: ١٠٬٠٠٠٫٠٠: image )

Как это влияет на Discourse:

  • Форматы даты и времени, чисел, начало рабочей недели.

Что не затрагивается:

  • Относительные даты.

Идеальные решения:

  • Извлечь и внедрить форматы Unicode, позволяя пользователю выбирать любую понравившуюся локаль. Это требует обдумывания, так как может вступить в конфликт с Moment.JS.
  • Предоставить переводчикам все необходимые средства и возможности для выбора, какой формат где отображать в программном обеспечении.
3 лайка

В ближайшее время не планируется разделять текущую систему локалей на локаль и язык интерфейса. Однако я согласен, что это было бы хорошим решением.

В любом случае, считаю, что текущая система уже позволяет создавать локали, специфичные для определённых регионов. У нас есть client.en_US.yml и server.en_US.yml, которые переопределяют форматы дат/времени, чисел и т. д.

Уверен, что нечто подобное можно реализовать и для арабского языка. Более того, это даже можно сделать с помощью плагина.

2 лайка