중국어 간체 및 번체 vs 지역
내 Android 애플리케이션에서 중국어 번체 및 간체 지원을 구현하는 과정에서 이것이 작동하는 방식에 대해 혼란 스러웠습니다.
그래서 읽기에서 문서를 같은 몇 가지 토론뿐만 아니라 이 와 이 내가 넣어 가지고 중국어 간체로
- 값 -zh
- 값 -zh-rCN
- 값 -zh-rSG
중국어 번체
- 값 -zh-rTW
- 값 -zh-rHK
그 모든 것이 잘 작동하지만 어떻게 든 이해가되지 않습니다 (중국어 간체 대 전통 사용법에 대해 충분히 이해하지 못하면 죄송합니다).
에뮬레이터와 루팅 된 전화에서 로케일 설정 대화 상자를 확인한 결과 사용자는 로케일을 중국어 간체 또는 번체로 변경할 수 있습니다.
이제 여기에 질문이 있습니다. 시스템은 중국어 간체 또는 번체 strings.xml을 어디서 얻을 수 있는지 어떻게 알 수 있습니까? 중국어 간체를 표시해야한다면 values-zh에서 가져오고 values-zh-rTW에서 전통적으로 가져 오라는 가정이 있습니까?
하지만 사용자가 홍콩에 있고 장치가 중국어 간체를 표시하도록 설정하면 어떻게 될까요? 또는 세계 어딘가의 이민자가 장치를 중국어 번체로 설정했지만 그의 지역이 예를 들어 미국이나 캐나다인 경우 어떻게됩니까?
사용자가 로케일을 설정하고 내 앱이 올바른 로케일로 표시되도록하려면 어떻게해야합니까?
최신 정보:
추가 조사에서 나는 안드로이드 폰 사용자가 언어와 별도로 국가를 설정할 수 없다고 생각합니다. UI에서 로케일이라고하는 것만 설정할 수 있습니다. 언어와 국가로 구성되어 있지만 목록이 제한되어 많은 조합이 불가능합니다.
예를 들어, 중국어 번체를 사용하려는 미국에 거주하는 중국인은 언어를 중국어 번체 (적어도 루팅 된 전화에서)로 설정 한 다음 zh-rTW 로케일을 가질 수 있습니다. 그는 자신의 국가를 미국으로 따로 설정할 수 없었습니다. 비슷한 방식으로 어떤 종류의 이주민도 현재 살고있는 국가에서 모국어를 설정할 수 없습니다.
기본적으로 이는 언어와 국가의 조합 만 지원됨을 의미합니다. 이제 질문은 그들이 어떤 것인지 알아내는 방법입니다.
따라서 추가 조사를 거쳐 Marks 답변을 통해 직접 답변 할 것이라고 생각합니다. 여기에 간다 :
기본적으로 Android에는 중국어 간체 인 zh_rCN과 중국어 번체 인 zh_rTW의 두 가지 로케일 만 있습니다. 설정 앱에서 볼 수 있듯이 다음은 유일하게 제공되는 로케일입니다.
https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/
그러나 중국에서 판매되는 전화 등 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을 사용하여 Application 클래스에서 로케일을 가져올 수 있습니다.
예를 들어이를 기록하고 추적 시스템에 데이터를 전송하거나 (사용하는 모든 항목) 지원되는 항목을 확인하고 메시지의 로케일 설정과 함께 예외를 던질 수 있습니다. 그러면 시장 인터페이스에 표시됩니다. 그러나 앱의 최소 한 번의 충돌을 의미합니다 (공상에있는 경우 몇 분 후에 게시하고 업데이트 할 수 있습니다 ..)
요약하자면 .. 최소 설정은 설정 앱에서 수행되는 작업을 미러링하는 것이지만 (zh-rCN 및 zh-rTW 만 있음) 싱가포르, 홍콩, 마카오에 대한 기본 로케일을 제공하려는 경우 기본적으로 중국어 번체를 제공합니다. 당신도 그렇게 할 수 있고 그것은 작동합니다. 그러나 그러한 구성이 어디에서나 사용된다는 증거는 없습니다 ..
도움이되기를 바랍니다.
업데이트 된 답변
질문과 이전 답변은 꽤 오래되었습니다. 그들이 여전히 얼마나 정확한지 말하기는 어렵습니다. 이 답변은 앱에서 중국어 번체와 간체를 모두 지원하고 싶지만 지역의 세부 사항에 대해 지나치게 염려하지 않는 다른 사람들을위한 것입니다.
string.xml
중국어 번체 및 간체 용 파일 추가
Android Studio에서 res
폴더를 마우스 오른쪽 버튼으로 클릭하고 New> Android 리소스 파일을 선택 합니다 . 파일 이름strings
을 입력 하고 목록에서 로케일 을 선택 하십시오.
Scroll down to zh for the language. Add one strings
file for CN: China (simplified) and one for TW: Taiwan (traditional). If you are only using one then just choose Any Region.
As I understand the documentation, lookup will first check if there is an exact match for language and region (Example: Chinese-Traditional-Taiwan). Then it will fall back to broader checks. (This system is as of Android 7.0.)
1. zh-Hant-TW // Chinese - Traditional - Taiwan
2. zh-Hant // Chinese - Traditional
3. zh // Chinese
I'm not completely sure about how all this works so please read this and this documentation.
Following this method in my own app, switching the system settings between Traditional and Simplified changed the app display also.
Converting between Traditional and Simplified
If you already have one translation in either Traditional or Simplified, you can auto convert the text online. Start with Google Translate to convert to the other (just paste in your strings.xml
file). It does a fairly good job already. Then do it again several times using one of the many online converters. Use a text comparing tool or site (text-compare.com is good) to compare the result of the conversions. That will help you catch any mistakes that Google made.
https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
Android 7.0 (API level 24) introduced support for BCP 47 language tags, which you can use to qualify language- and region-specific resources. A language tag is composed from a sequence of one or more subtags, each of which refines or narrows the range of language identified by the overall tag.
you can now define traditional or simplified using the BCP 47 tags. (To use a BCP 47 language tag, concatenate b+ and a two-letter ISO 639-1 language code, optionally followed by additional subtags separated by +.)
more specifically: -
Simplified:
values-b+zh (defaults to simplified)
values-b+zh+Hans or
values-b+zh+Hans+CN (if you want to include regions)
Traditional:
values-b+zh+Hant or
values-b+zh+TW (defaults to traditional)
values-b+zh+Hant+TW (if you want to include regions)
you can look at https://tools.ietf.org/html/bcp47 for other interesting combinations. including: -
zh-cmn-Hans-CN (Chinese, Mandarin, Simplified script, as used in
China)
cmn-Hans-CN (Mandarin Chinese, Simplified script, as used in
China)
zh-yue-HK (Chinese, Cantonese, as used in Hong Kong SAR)
yue-HK (Cantonese Chinese, as used in Hong Kong SAR)
zh-nan-TW (min nan Chinese, as used in Taiwan)
zh-hak-CN (Chinese, Hakka, China).
remember to add -b and replace the - in each tag with +
참고 URL : https://stackoverflow.com/questions/4189875/simplified-and-traditional-chinese-vs-regions
'Program Tip' 카테고리의 다른 글
NuGet 스크립트를 다른 디렉터리로 (0) | 2020.11.02 |
---|---|
gem이 실패하면 mkmf.log 파일은 어디에서 찾을 수 있습니까? (0) | 2020.11.02 |
Django 및 Bootstrap : 어떤 앱을 권장합니까? (0) | 2020.11.02 |
Maven이 아티팩트를 검색하기 위해 원격 저장소로 이동하지 않고 로컬 저장소를 사용하도록 강제하는 방법은 무엇입니까? (0) | 2020.11.02 |
Java에서 매우 반복적 인 코드 및 문서 관리 (0) | 2020.11.02 |