Мовні коди для спрощеної китайської та традиційної китайської?


79

Ми створюємо багатомовні підсайти на нашому веб-сайті.

Я хотів би використовувати двобуквенні мовні коди. Іспанська та французька мови - це просто. Вони отримають такі URL-адреси, як:

mydomain.com/es
mydomain.com/fr

але я стикаюся з проблемою з традиційною та спрощеною китайською мовами. Чи існують стандарти, які двобуквенні коди використовувати для цих мов?

mydomain.com/zh
mydomain.com/?

2
Ви кажете, що іспанська та французька мови - це просто, але база даних CLDR містить 26 та 47 варіантів для кожної країни відповідно! Це просто залежить від того, наскільки ресурси, які ви надаєте, залежать від відмінностей.
Патанджалі

Відповіді:


174

@dkarp дає чудову загальну відповідь. Я додаю деякі додаткові особливості щодо китайської:

Є кілька країн, де китайською мовою є основна письмова мова. Основна різниця між ними полягає в тому, чи використовують вони спрощені або традиційні символи, але існують також незначні регіональні відмінності (у словниковому запасі тощо). Стандартним способом розрізнити їх буде код країни, наприклад, zh_CNдля материкового Китаю, zh_SGСінгапуру, zh_TWТайваню або zh_HKГонконгу.

Материковий Китай та Сінгапур використовують спрощені символи, а інші використовують традиційні символи. Оскільки Китай та Тайвань є двома з найбільшим населенням, саме zh_CNі zh_TWчасто використовуються для розрізнення спрощеної та традиційної версій веб-сайту.

Однак більш технічно правильним, але не загальновживаним на практиці було б використання zh_HANSдля (загальних) спрощених китайських ієрогліфів та zh_HANTдля традиційних китайських ієрогліфів, за винятком рідкісних випадків, коли доцільно розрізняти різні країни.


11
Це чудова відповідь - добре написана і, мабуть, не те, що знає більшість людей. І це проводить гарну межу між тим, що є більш технічно правильним ( zh_HANS), і тим, що насправді є там загальновживаним ( zh_CN). Ви можете здійснити пошук у Google за двома термінами - це приблизно різниця 7 на 1 на користь zh_CN, що, чесно кажучи, менше, ніж я очікував.
dkarp

11
Насправді різниця в URL-адресах така велика, як я очікував. inurl:zh_CNдає 4.3M звернень; inurl:zh_HANSдає 20K. Все-таки справді інформативна відповідь.
dkarp

2
Різниця між HANS та HANT набагато менш корисна, ніж CN та TW, оскільки різниця більша за символи, але залежить від регіону. Наприклад, підпрограма перекладається як 子程序 у материковому Китаї, але як 子 程式 на Тайвані. У цьому прикладі символи однакові в спрощеній та традиційній китайській мовах, але переклад все одно повинен відрізнятися.
Yongwei Wu

34

Для цього дійсно існує стандартне подання. Оскільки люди стикаються з точно такою ж проблемою, яку ви бачите - одна і та ж мова, але різні діалекти чи символи - вони розширили двобуквенний код мови двобуквеним кодом регіону. Отже, ви можете мати універсальну французьку сторінку на mydomain.com/fr, але інтернаціоналізація для французько-канадських читачів може залишити вас із mydomain.com/fr_CA(Канада) та mydomain.com/fr_FR(Франція). Деякі платформи використовують тире замість підкреслення, щоб розділити мову та коди регіонів (звідси fr-CAі fr-FR).

Стандартною мовою для спрощеної китайської мови є zh_CN. Стандартною мовою традиційної китайської мови є zh_TW.

Я вагаюся вказати вам фактичні документи стандарту BCP 47 , оскільки вони, десь, дещо важкі для деталей та трохи легкі для читабельності. Просто використовуйте стандартні ідентифікатори мови, такі як ті, що використовуються Java , і все буде добре.


2

Мова залежить від того, де вона розмовляється (doh!), Тому коди мови та мови відображають цю реальність. zhє основним мовним кодом, але оскільки є дві його основні форми, існують zh_Hansі zh_Hant, але вони все ще є лише мовними кодами, а не мовами.

Місцезнаходження

Щоб повністю вказати, яка мова використовується в тому чи іншому місці, код країни все ще повинен бути суфіксом, таким чином, як для спрощеної , так zh_Hans_HKі zh_Hant_HKдля традиційної китайської, відповідно, як говорять у Гонконгу.

Насправді, реальність така, що у багатьох країнах часто потрібно щось більш конкретне, ніж код країни, але це, ймовірно, експоненціально збільшить складність та підтримку баз даних, таких як CLDR, а також підтримку інфраструктури для подачі в неї, як-от вилучення даних про місцезнаходження IP , є загальнодоступним або недостатньо точним.

Виправлений текст

Тепер, якщо код просто вказує, який набір фіксованих рядків використовувати в інтерфейсі користувача, або навіть цілі набори сторінок на сайті, суфікс країни насправді не є необхідним, якщо не існує декількох місць, де мова змінюється досить істотно (інформація на основі місцезнаходження), щоб турбуватися створенням цілого окремого набору ресурсів.

Чим більший набір ресурсів, тим більша ймовірність того, що буде потрібен мовний код, заснований на мові [у цьому контексті, буде потрібен лише атрибут мови, а не справжній регіон, тому ви можете назвати його як вам подобається!] робити це потрібно лише тоді, коли це необхідно.

Значення на льоту

Однак, якщо ви хочете відформатувати певні значення змінних, такі як дати, час, валюти та цифри, на льоту, локалі стають важливими, оскільки всі інструменти, що підтримують таку функціональність (наприклад, на основі даних Unicode CLDR), очікують їх. Мова для них повинна бути окремим параметром коду, для якого налаштована побудована власною мовою інтерфейсу, якщо ви не хочете створити набір ресурсів для кожної відомої локалі та підтримувати їх до нудоти!

Мовні засоби браузера

Зауважте, що при вказівці мови для веб-сторінки, яку можна редагувати, як у вікнах введення, а для поля ввімкнено перевірку правопису в атрибутах або css, мовні засоби браузера будуть перевіряти правопис поля відповідно до цієї локалі.

Критерії

Ви повинні чітко розуміти, що надає набір ресурсів, тому враховуйте:

  • Виправлені рядки? Тільки мова.
  • Форматування на льоту? Місцевість.
  • Перевірка правопису в середовищі перегляду? Місцевість.
  • Цілі сторінки / підсайт? Тільки мова, інакше локаль (як варіант мови), якщо потрібен суттєво інший вміст.

Електронна таблиця для мінімізації накладних витрат на обслуговування

Я використовую електронну таблицю для зберігання рядків інтерфейсу, де кожен код мови має батьківський код, так що комірка для своєї версії рядка має формулу, яка отримує свій рядок від батьківського. Щоб створити власний рядок для цієї мови та рядка, я просто перезаписую формулу комірки точним текстом. Це мінімізує обсяг обслуговування ресурсів. В кінці я запускаю макрос, який генерує повний файл ресурсів для кожної мови.


Я думаю, якщо ваша мова програмування (наприклад, Java) або фреймворк, що відповідає мовам, може підтримувати формат типу zh-hans_CN, тоді переходьте до нього. Якщо цього не відбувається, тоді наявність Country передбачає "сценарій", як Ганс передбачається для zh_CN, zh_SG, а Хант передбачає для zh_TW, zh_HK. Тож частину сценарію можна зупинити. Якщо у вашій системі взагалі немає відповідності країнам, як, наприклад, вона має en / fr / de / es для більшості мов .... тоді вона може мати формат типу zh_hans / zh_hant принаймні для певних мов (наприклад, Drupal переважно таким чином, я дозволяю своїм мобільним додаткам надсилати цю інформацію, щоб вона відповідала моєму API Drupal CMS)
armyofda12mnkeys
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.