- PVSM.RU - https://www.pvsm.ru -
На тему этой статьи меня натолкнула история из очень недавнего прошлого. Я зашёл на страничку продукта, именуемого Суперсайтом, компании Не Будем Тыкать Пальцами LLC (но люди из домейнерской индустрии узнают). Заходил я из своего уютного офиса в Латвии и с удивлением обнаружил следующую картину:
И меня, мягко говоря, смутила валюта, в которой была указана стоимость услуг. Ведь на дворе вторая половина 2018 года, а латвийский лат официально прекратил своё существование в январе 2014 и был заменён на евро. И за 4 года не упомянутая выше компания не удосужилась провести ревизию используемых локалей.
Под катом я расскажу, что следует помнить при интернационализации и локализации своего продукта и где черпать данные для периодических ревизий.
Логично будет разобраться в начале, что есть что, и договориться, как мы что будем называть в дальнейшем. Итак…
Хороший вопрос. Многие современные языки программирования содержат встроенные алгоритмы для базовой локализации (форматирование дат, чисел, валют). И если Вам пофиг Вы всецело готовы довериться выбранной Вами технологии, и Вам плевать на пользователей Ваше видение i18n для Вашего продукта не выходит за эти рамки, единственная возможная причина — праздное любопытство и общее развитие.
Впрочем, дьявол кроется в мелочах. И на эти мелочи порой не обращают внимание, что сильно может раздражать пользователей. Если у Вас уже есть солидный опыт в i18n, скорее всего, Вы мало что найдёте нового в этой статье (разве что некоторые примеры из жизни). В этом случае я буду благодарен, если Вы добавите комментарии из своего опыта (и исправите меня, если я в чём-то ошибся). Остальные, надеюсь, найдут пищу для раздумий.
Часто локаль задают как совокупность языка и страны. Этих параметров достаточно, чтобы задать совокупность языковых нюансов и прочих параметров, используемых в регионе. Для некоторых специфических задач может потребоваться более сложное деление (например, налоговые юрисдикции некоторых стран). В таком случае ещё задаётся третий параметр — вариация (например, для определённого региона, операционной системы и т.п.). Также многое зависит от того, насколько близки Вы хотите быть к своему пользователю (например, на Филиппинах существует 12 языков коренных народов с количеством носителей более миллиона человек, им бы было приятно).
Итак, что включает в себя локаль?
Форматирование большинства параметров из этой группы обеспечивает, пожалуй, большинство современных языков программирования. Хотя лучше за ними немного приглядывать на всякий случай. Или хотя бы вовремя обновлять версии соответствующих библиотек.
Например, все (или многие) из вас знают, что в английском есть строгий порядок частей речи. Насколько мне известно, в китайском тоже, кстати. А вот в русском порядок слов может либо вообще не иметь значения, либо менять значение («ты очень умный» звучит как похвала, а «ты умный очень» — как угроза). В арабском встречаются различия при общении с мужчинами и женщинами, в японском — между социальными слоями. В зависимости от того, насколько для Вас важна та или иная аудитория, Вам следует либо детально изучить подобные тонкости совместно с носителем языка, либо проигнорировать.
И это только начало. В английском языке нет падежей, но даже в начале нашего пути en_US и en_UK отличаются. Заглянем в языки стран поближе?
Таргетируетесь на весь мир? Подумайте о том, какие форматы дат использовать. Возможно, с расширенными лучше не связываться, вряд ли встроенные функции форматирования учитывают все упомянутые выше тонкости. А я прошёлся только по 4 из 195 стран — членов и наблюдателей ООН.
Некоторые данные, относящиеся к i18n, используются довольно часто, но порой с небольшими упущениями. Тут уже язык программирования Вам не поможет, придётся поработать ручками.
Как видите, адаптация системы под все возможные варианты записи может сделать её черезчур сложной. Но если один из важных рынков Вашего продукта находится в определённой стране, придётся постараться.
Аспекты i18n из этой категории большинству из Вас вряд ли когда-то понадобятся. Но всё же может быть полезно иметь их ввиду.
Как с ними поступить? Если Вы таргетируетесь на ограниченное количество локалей или расширяетесь постепенно, можно продумать архитектуру под подобные скользкие места. Но идеально было бы их аккуратно и нейтрально обходить.
В тексте статьи я давал ссылки на Википедию, но все мы знаем, что использовать её как серьёзный источник знаний лучше не стоит. К счастью, существует проект Common Locale Data Repository [6] (Общий репозиторий данных о локалях), поддерживаемый Unicode Consortium [7]. Мало того, что он содержит невероятное количество аспектов и параметров локалей [8] и регулярно обновляется сообществом, данные доступны для свободной выгрузки в формате XML, что позволяет при правильной проработке архитектуры регулярно и безболезненно обновлять стандарты.
Я затронул только основные по моему мнению аспекты. Если Вы считаете, что я что-то упустил, напишите в комментариях, добавлю. Заодно делитесь своим опытом работы с локализированными продуктами.
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? [9] (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 [12] в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки? [13]
Автор: Кирилл Василисков
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/298535
Ссылки в тексте:
[1] статье на Великой и Всезнающей: https://en.wikipedia.org/wiki/List_of_postal_codes
[2] подробности на той же вики: https://en.wikipedia.org/wiki/List_of_administrative_divisions_by_country
[3] Ниуэ: https://ru.wikipedia.org/wiki/%D0%9D%D0%B8%D1%83%D1%8D
[4] По ссылке: https://en.wikipedia.org/wiki/List_of_mobile_telephone_prefixes_by_country
[5] мозг: http://www.braintools.ru
[6] Common Locale Data Repository: http://cldr.unicode.org/
[7] Unicode Consortium: http://unicode.org/
[8] невероятное количество аспектов и параметров локалей: http://cldr.unicode.org/cldr-features
[9] Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер?: https://habr.com/company/ua-hosting/blog/347386/
[10] VPS: https://www.reg.ru/?rlink=reflink-717
[11] тут: https://ua-hosting.company/vpsnl
[12] 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249: https://ua-hosting.company/serversnl
[13] Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?: https://habr.com/company/ua-hosting/blog/329618/
[14] Источник: https://habr.com/post/427641/?utm_source=habrahabr&utm_medium=rss&utm_campaign=427641
Нажмите здесь для печати.