android — Упрощенный и традиционный китайский против регионов" />

Упрощенный и традиционный китайский против регионов

В процессе реализации поддержки традиционного и упрощенного китайского языка в моем приложении для Android я не понял, как это должно работать.

Итак, прочитав документацию а также некоторые обсуждения, такие как этот и это я поместил упрощенный китайский в

    значения-ж
  • значения-ж-RCN
  • значения-ж-RSG

и традиционный китайский в

  • значения-ж-RTW
  • значения-ж-RHK

Это все работает нормально, но как-то не имеет смысла для меня (извините, если я недостаточно понимаю о китайском упрощенном и традиционном использовании).

Из того, что я понял из проверки диалогового окна настройки языкового стандарта в эмуляторе, а также в телефоне с рутом, пользователь может изменить языковой стандарт на упрощенный китайский или традиционный китайский.

Теперь вот вопрос. Как система знает, где взять упрощенный или традиционный китайский strings.xml. Есть ли какое-то предположение, в котором говорится, что если я должен отображать упрощенный китайский, получаю его из values-zh и получаю традиционный из values-zh-rTW?

Но что, если пользователь находится в HK и настроил свое устройство для отображения упрощенного китайского? Или что, если эмигрант где-то еще в мире устанавливает свое устройство на традиционный китайский, но его регион, например, США или ЦА?

Что мне нужно сделать, чтобы мои пользователи могли задать свой языковой стандарт и чтобы мое приложение отображалось с правильным языковым стандартом?

Обновление:

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

например. китаец, живущий в США, который хочет использовать традиционный китайский, может установить язык на традиционный китайский (по крайней мере, на телефоне с root-доступом), а затем иметь язык zh-rTW. Он никоим образом не мог установить свою страну отдельно от США. Аналогичным образом, эмигранты любого типа не могут установить свой родной язык в той стране, в которой они живут в настоящее время.

По сути это означает, что поддерживается только несколько комбинаций языка и страны. Теперь вопрос в том, как узнать, кто они?

65 голосов | спросил Manfred Moser 16 22010vEurope/Moscow11bEurope/MoscowTue, 16 Nov 2010 02:29:17 +0300 2010, 02:29:17

2 ответа


0

Так что я думаю, что после дальнейшего расследования и с ответом Маркса я собираюсь дать ответ сам. Вот идет:

Из коробки Android имеет только две локали: zh_rCN, что упрощенный китайский, и zh_rTW, традиционный китайский. Как видно из приложения «Настройки», это единственные локали, поставляемые в комплекте:

https://android.googlesource.com/platform /пакеты /приложения /Настройки /+ /мастер /Рез /

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

https://android.googlesource.com /platform/external/icu4c.git/+/master/data/locales/ Как видите, для китайцев есть

  • zh.txt
  • zh_CN.txt
  • zh_HK.txt
  • zh_Hans.txt
  • zh_Hans_CN.txt
  • zh_Hans_HK.txt
  • zh_Hans_MO.txt
  • zh_Hans_SG.txt
  • zh_Hant.txt
  • zh_Hant_HK.txt
  • zh_Hant_MO.txt
  • zh_Hant_TW.txt
  • zh_MO.txt
  • zh_SG.txt
  • zh_TW.txt

Hant - это код ISO для традиционного языка и Hans для упрощенного китайского. Так что теоретически это будет означать, что мы могли бы иметь

  • упрощенный китайский в Китае, Гонконге, Макао и Сингапуре
  • традиционный китайский в Гонконге, Макао и Тайване

Однако имейте в виду, что приложение «Настройки» должно быть изменено, чтобы иметь различные варианты выбора локали. Таким образом, на этом этапе упрощенный китайский переводится как zh_rCN и традиционный zh_rTW, и вы должны быть особенными, если у вас есть такой модифицированный образ Android, который поддерживает другие локали.

В любом случае, чтобы сохранить данные, вы можете использовать класс Configuration для получения локали, например, в вашем классе приложения с помощью getResources (). getConfiguration (). locale.

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

Итак, подведем итоги. Минимальная настройка будет отражать то, что делается в приложении настроек (есть только zh-rCN и zh-rTW), но если вы хотите указать локали по умолчанию для Сингапура, Гонконга, Макао, предоставляющих традиционные китайский по умолчанию вы можете сделать это тоже, и это должно работать. Однако у меня нет никаких доказательств того, что такая конфигурация используется где-либо еще.

Надеюсь, это поможет.

ответил Manfred Moser 23 22010vEurope/Moscow11bEurope/MoscowTue, 23 Nov 2010 00:07:39 +0300 2010, 00:07:39
0

Обновленный ответ

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

Добавьте файлы string.xml для традиционного и упрощенного китайского

В Android Studio щелкните правой кнопкой мыши папку res и выберите Создать> Файл ресурсов Android . Введите strings для Имя файла и выберите Локаль из списка.

 введите описание изображения здесь

Прокрутите вниз до zh для выбора языка. Добавьте один файл strings для CN: Китай (упрощенно) и один для TW: Тайвань (традиционный). Если вы используете только один из них, просто выберите Любой регион .

Насколько я понимаю, документация , поиск сначала проверит, существует точное соответствие для языка и региона (пример: китайский-традиционный-тайваньский). Тогда он обратится к более широким проверкам. (Эта система на Android 7.0.)

1. zh-Hant-TW   // Chinese - Traditional - Taiwan
2. zh-Hant      // Chinese - Traditional
3. zh           // Chinese

Я не совсем уверен в том, как все это работает, поэтому прочитайте эта и эта документация.

Следуя этому методу в моем собственном приложении, переключение системных настроек между традиционным и упрощенным также изменило отображение приложения.

Преобразование между традиционным и упрощенным

Если у вас уже есть один перевод в традиционном или упрощенном виде, вы можете автоматически преобразовать текст в Интернете. Начните с Google Translate, чтобы преобразовать его в другой (просто вставьте файл strings.xml). Это уже делает довольно хорошую работу. Затем сделайте это снова несколько раз, используя один из многих онлайн-конвертеров. Используйте инструмент сравнения текста или сайт ( text-compare.com - это хорошо), чтобы сравнить результаты конверсий , Это поможет вам отследить любые ошибки, допущенные Google.

ответил Suragch 23 42017vEurope/Moscow11bEurope/MoscowThu, 23 Nov 2017 08:50:21 +0300 2017, 08:50:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132