리소스 관리 시스템에서 언어 태그를 일치시키는 방법

앞의 문서(리소스 관리 시스템에서 리소스를 일치시키고 선택하는 방법)에서는 일반적으로 한정자 일치를 살펴보았지만, 여기서는 언어 태그 일치에 집중하고 있습니다.

소개

언어 태그 한정자가 있는 리소스는 앱 런타임 언어 목록을 기반으로 비교되고 점수가 매겨집니다. 다른 언어 목록의 정의에 대해서는 사용자 프로필 언어와 앱 매니페스트 언어 이해를 참조하세요. 목록의 첫 번째 언어에 대한 일치는 다른 지역 변형의 경우에도 목록에서 두 번째 언어를 일치하기 전에 발생합니다. 예를 들어 앱 런타임 언어가 en-US인 경우 en-GB에 대한 리소스는 fr-CA 리소스보다 우선적으로 선택됩니다. en 형식의 리소스가 없는 경우에만 fr-CA 리소스가 선택됩니다. 이 경우 앱의 기본 언어는 en 형식으로 설정할 수 없습니다.

점수 체계는 BCP-47 하위 태그 레지스트리 및 기타 데이터 소스에 포함된 데이터를 사용합니다. 이로 인해 점수는 일치하는 다른 품질과 그라데이션되고 여러 후보를 사용할 수 있는 경우 가장 일치하는 점수를 가진 후보를 선택합니다.

따라서 일반 용어에 언어 콘텐츠를 태그로 지정할 수 있지만 필요에 따라 여전히 특정 콘텐츠를 지정할 수 있습니다. 예를 들어 앱에 미국, 영국, 기타 영역에 공통된 여러 영어 문자열이 있을 수 있습니다. 이러한 문자열을 “en”(영어)으로 태그를 지정하면 공간 및 지역화 오버헤드가 저장됩니다. 차이를 구분해야 할 때, 예를 들면 “color/colour”라는 단어가 포함된 문자열에서 미국과 영국 버전은 모두 각각 “en-US” 및 “en-GB”라는 언어 및 지역 하위 태그를 사용하여 태그를 지정할 수 있습니다.

언어 태그

언어는 표준화된 올바른 형식을 갖춘 BCP-47 언어 태그를 사용하여 식별됩니다. 하위 태그 구성 요소는 BCP-47 하위 태그 레지스트리에 정의되어 있습니다. BCP-47 언어 태그에 대한 일반 구조는 다음과 같은 하나 이상의 하위 태그 요소로 구성됩니다.

  • 언어 하위 태그(필수).
  • 스크립트 하위 태그(하위 태그 레지스트리에 지정된 기본값을 사용하여 유추할 수 있음).
  • 지역 하위 태그(선택 사항).
  • 변형 하위 태그(선택 사항).

추가 하위 태그 요소가 있을 수 있지만 일치하는 언어에 거의 영향을 주지 않습니다. 와일드 카드("")를 사용하여 정의된 언어 범위가 없습니다(예: "en-").

두 개 언어 일치

Windows가 두 언어를 비교할 때마다 일반적으로 보다 큰 프로세스의 컨텍스트에서 수행됩니다. Windows가 애플리케이션 언어 목록을 생성하는 때와 같이 여러 언어 평가의 컨텍스트일 수 있습니다(사용자 프로필 언어 및 앱 매니페스트 언어 이해 참조). Windows는 사용자 기본 설정의 여러 언어를 앱의 매니페스트에 지정된 언어에 일치시켜 이 작업을 수행합니다. 또한 특정 리소스에 대한 다른 한정자 함께 언어 평가의 컨텍스트에서 비교될 수도 있습니다. 한 가지 예로 Windows는 특정 리소스 컨텍스트에 특정 파일 리소스를 확인하는 경우가 있습니다. 사용자의 홈 위치 또는 디바이스의 현재 스케일링과, 또는 리소스 선택의 요소에 포함되는 기타 요인(언어 이외)으로 dpi와 비교합니다.

두 개의 언어 태그를 비교할 때 비교는 일치 근접성을 기준으로 점수를 할당합니다.

Match 점수 예시
정확히 일치 가장 높음 en-AU : en-AU
변형 일치(언어, 스크립트, 지역, 변형) en-AU-variant1 : en-AU-variant1-t-ja
지역 일치(언어, 스크립트, 지역) en-AU : en-AU-variant1
부분 일치(언어, 스크립트)
- 매크로 지역 일치 en-AU : en-053
- 지역 중립 일치 en-AU : en
- 표기법 유사성 일치(제한된 지원) en-AU : en-GB
- 선호 지역 일치 en-AU : en-US
- 모든 지역 일치 en-AU : en-CA
미확인 언어(모든 언어 일치) en-AU : und
일치하지 않음(스크립트 불일치 또는 기본 언어 태그 불일치) 가장 낮음 en-AU : fr-FR

정확히 일치

태그가 정확하게 동일합니다(모든 하위 태그 요소 일치). 비교는 변형 또는 지역 일치에서 이 일치 형식으로 승격될 수 있습니다. 예를 들어 en-US는 en-US와 일치합니다.

변형 일치

태그는 언어, 스크립트, 지역, 변형 하위 태그에 대해 일치하지만 일부 다른 측면에서 다릅니다.

지역 일치

태그는 언어, 스크립트, 지역 하위 태그에 대해 일치하지만 일부 다른 측면에서 다릅니다. 예를 들어 de-DE-1996은 de-DE와 일치하고 en-US-x-Pirate는 en-US와 일치합니다.

부분 일치

태그는 언어 및 스크립트 하위 태그에 대해 일치하지만 지역 또는 일부 다른 하위 태그에서 다릅니다. 예를 들어 en-US는 en과 일치하고 en-US는 en-*와 일치합니다.

매크로 지역 일치

태그는 언어 및 스크립트 하위 태그에 대해 일치합니다. 두 태그에는 지역 하위 태그가 있으며 이 중 하나는 다른 지역을 포함하는 매크로 지역을 나타냅니다. 매크로 지역 하위 태그는 항상 숫자이고 유엔통계국 M.49 국가 및 지역 코드에서 파생됩니다. 포함하는 관계에 대한 세부 정보는 매크로 지리(대륙)적 지역, 지리적 하위 지역, 선택된 경제 및 기타 그룹의 구성을 참조하세요.

참고 “경제 그룹화” 또는 “기타 그룹화”에 대한 UN 코드는 BCP-47에서 지원되지 않습니다.

참고 매크로 지역 하위 태그 “001”이 있는 태그는 지역 중립 태그와 같은 것으로 간주됩니다. 예를 들어 “es-001” 및 “es”는 동일한 것으로 처리됩니다.

지역 중립 일치

태그는 언어 및 스크립트 하위 태그에 대해 일치하며 하나의 태그에만 지역 태그가 있습니다. 부모 일치는 다른 부분 일치에 앞서 선호됩니다.

표기법 유사성 일치

태그는 언어 및 스크립트 하위 태그와 일치하며 지역 하위 태그는 표기법 유사성이 있습니다. 유사성은 “en-IE” 및 “en-GB”와 같은 특정 언어 유사 지역을 정의하는 Windows에서 관리하는 데이터에 의존합니다.

선호 지역 일치

태그는 언어 및 스크립트 하위 태그에 대해 일치하며 지역 하위 태그 중 하나는 언어에 대한 기본 지역 하위 태그입니다. 예를 들어 “fr-FR”은 “fr” 하위 태그에 대한 기본 지역입니다. 따라서, fr-FR은 fr-CA보다 fr-BE와 더 일치합니다. 이는 Windows가 지역화된 각 언어에 대한 기본 지역을 정의하는 Windows에서 관리하는 데이터에 의존합니다.

형제 일치

태그는 언어 및 스크립트 하위 태그에 대해 일치하며 둘 다 지역 하위 태그가 있지만 둘 사이에 다른 관계는 정의되지 않습니다. 여러 형제 일치가 발생할 경우 더 높은 일치가 없다면 마지막 열거 형제가 우선합니다.

미확인 언어

리소스에 “und” 태그를 지정하여 모든 언어와 일치함을 나타낼 수 있습니다. 또한 이 태그는 스크립트 태그와 함께 사용하여 스크립트에 따라 일치를 필터링할 수 있습니다. 예를 들어 “und-Latn”은 라틴어 스크립트를 사용하는 모든 언어 태그와 일치합니다. 자세한 내용은 아래를 참조하십시오.

스크립트 불일치

태그가 기본 언어 태그에 대해서만 일치하고 스크립트에 대해서는 일치하지 않는 경우 쌍은 일치하지 않는 것으로 간주되며 유효한 수준의 일치 미만으로 점수가 매겨집니다.

일치 없음

불일치 기본 언어 하위 태그는 유효한 수준의 일치 미만으로 점수가 매겨집니다. 예를 들어 zh-Hant는 zh-Hans와 일치하지 않습니다.

예제

사용자 언어 “zh-Hans-CN”(중국어 간체(중국))은 표시되는 우선 순위 순서에서 다음 리소스와 일치합니다. X는 일치하지 않음을 나타냅니다.

Matching for Chinese Simplified (China)

  1. 정확한 일치; 2. 3. 지역 일치; 4. 부모 일치; 5. 형제 일치.

언어 하위 태그에 BCP-47 하위 태그 레지스트리에 정의된 억제 스크립트 값이 있는 경우 억제 스크립트 코드의 값을 가지는 상응하는 일치가 발생합니다. 예를 들어 en-Latn-US는 en-US와 일치합니다. 다음 예에서 사용자 언어는 “en-AU”(영어(오스트레일리아))입니다.

Matching for English (Australia)

  1. 정확한 일치; 2. 매크로 지역 일치; 3. 지역 중립 일치; 4. 표기법 유사성 일치; 5. 선호 지역 일치; 6. 형제 일치.

언어 목록에 언어 일치

때때로 일치는 단일 언어를 언어 목록에 일치시키는 보다 큰 과정의 일환으로 발생합니다. 예를 들어 앱의 언어 목록에 단일 언어 기반 리소스의 일치가 있을 수 있습니다. 일치는 목록에서 일치하는 첫 번째 언어의 위치로 점수가 매겨집니다. 목록에서 언어가 아래에 위치할수록 점수도 낮습니다.

언어 목록에 동일한 언어 및 스크립트 하위 태그를 가지는 두 개 이상의 지역 변형이 포함되는 경우 첫 번째 언어 태그에 대한 비교는 정확한, 변형, 지역 일치에 대해서만 점수가 매겨집니다. 부분 일치 점수는 마지막 지역 변형으로 연기됩니다. 그러면 사용자는 자신의 언어 목록에 대한 일치 동작을 제어할 수 있습니다. 일치 동작은 첫 번째의 언어 및 스크립트와 일치하는 세 번째 항목이 있는 경우 목록의 보조 항목에 대한 정확한 일치가 목록의 첫 번째 항목에 대한 부분 일치보다 선호되도록 할 수 있습니다. 다음은 예입니다.

  • 언어 목록(순서대로): “pt-PT”(포르투갈어(포르투갈)), “en-US”(영어(미국)), “pt-BR”(포르투갈어(브라질)).
  • 리소스: “en-US”, “pt-BR”.
  • 높은 점수의 리소스: “en-US”.
  • 설명: 비교는 “pt-PT”로 시작하지만 정확한 일치를 찾지 못했습니다. 사용자의 언어 목록에 “pt-BR”이 있기 때문에 부분 일치는 “pt-BR”과 비교하도록 연기되었습니다. 다음 언어 비교는 “en-US”이며 정확한 일치입니다. 따라서 우위 리소스는 “en-US”입니다.

또는

  • 언어 목록(순서대로): “es-MX”(스페인어(멕시코)), “es-HO”(스페인어(온두라스)).
  • 리소스: “en-ES”, “es-HO”.
  • 높은 점수의 리소스: “es-HO”.

미확인 언어(“und”)

더 나은 일치가 없을 경우 모든 언어와 일치하는 리소스를 지정하기 위해 언어 태그 “und”를 사용할 수 있습니다. BCP-47 언어 범위 "" 또는 "-<script>"를 비슷하게 간주할 수 있습니다. 다음은 예입니다.

  • 언어 목록: “en-US”, “zh-Hans-CN”.
  • 리소스: “zh-Hans-CN”, “und”.
  • 높은 점수의 리소스: “und”.
  • 설명: 비교는 “en-US”로 시작하지만 “en”을 기준으로 부분 또는 더 나은 일치를 찾지 못했습니다. “und” 태그가 지정된 리소스가 있으므로 일치 알고리즘은 이를 사용합니다.

“und” 태그는 여러 언어가 단일 리소스를 공유하고 개별 언어를 예외로 간주하도록 허용합니다. 예를 들어

  • 언어 목록: “zh-Hans-CN”, “en-US”.
  • 리소스: “zh-Hans-CN”, “und”.
  • 높은 점수의 리소스: “zh-Hans-CN”.
  • 설명: 비교는 첫 번째 항목에 대한 정확한 일치를 찾으므로 “und” 레이블이 지정된 리소스에 대해서는 확인하지 않습니다.

스크립트 태그가 있는 “und”를 사용하여 스크립트로 리소스를 필터링할 수 있습니다. 예를 들어

  • 언어 목록: “ru”.
  • 리소스: “und-Latn”, “und-Cyrl”, “und-Arab”.
  • 높은 점수의 리소스: “und-Cyrl”.
  • 설명: 비교는 “ru”에 대한 부분 또는 더 나은 일치를 찾지 않으므로 언어 태그 “und”와 일치합니다. 언어 태그 “ru”와 관련된 억제 스크립트 값 “Cyrl”은 리소스 “und-Cyrl”과 일치합니다.

표기법 지역별 유사성

지역 하위 태그가 다른 두 개의 언어 태그가 일치하는 경우 특정 지역 쌍은 다른 쌍보다 서로 보다 높은 유사성이 있을 수 있습니다. 영어(“en”)에 대해서만 유일하게 유사성 그룹이 지원됩니다. 지역 하위 태그 “PH”(필리핀) 및 “LR”(라이베리아)은 “US” 지역 하위 태그와 표기법 유사성이 있습니다. 다른 모든 지역 하위 태그는 “GB”(영국) 지역 하위 태그와 유사성이 있습니다. 따라서 “en-US” 및 “en-GB” 리소스를 둘 다 사용할 수 있는 경우 “en-HK”(영어(홍콩 특별 행정구)) 언어 목록은 “en-GB” 리소스로부터 “en-US” 리소스보다 높은 점수를 얻습니다.

많은 지역 변형이 있는 언어 처리

특정 언어는 서로 다른 지역에서 해당 언어의 다양한 방언을 사용하는 큰 언어 구사자 커뮤니티를 가집니다. 예를 들어 영어, 프랑스어, 스페인어는 다국어 앱에서 가장 자주 지원되는 언어들입니다. 지역 차이에는 철자법(예를 들어 “color”와 “colour”)의 차이점 또는 용어(예를 들어 “truck”과 “lorry”)와 같은 지역 언어의 차이점이 포함될 수 있습니다.

전 세계에 사용할 수 있는 앱을 만들 때 이렇게 지역 변형이 큰 언어는 다음과 같은 특정 문제를 야기합니다. “다른 지역 변형을 몇 가지나 지원해야 하나요?” “그렇다면 무엇을 해야 하나요?” “앱에 대한 이러한 지역 변형 자산을 관리하는 비용적으로 가장 효과적인 방법은 무엇인가요?” 이 항목에서는 이러한 모든 질문 내용까지 다루지는 않습니다. 그러나 Windows의 언어 일치 매커니즘은 지역 변형을 처리하는 데 도움이 되는 기능을 제공합니다.

종종 앱은 특정 언어의 단일 변형만 지원합니다. 앱에서 지역에 관계 없이 영어 모국어 사용자들이 사용할 것으로 예상되는 단 하나의 방언에 대한 리소스만 있다고 가정합시다. 이 경우 지역 하위 태그가 없는 “en” 태그가 해당 기대를 반영할 것입니다. 하지만 앱은 지역 하위 태그를 포함하는 “en-US”와 같은 태그를 사용해 왔을 수 있습니다. 이 경우에도 기대가 반영됩니다. 앱은 영어의 한 가지 변형만 사용하며 Windows는 사용자 언어 기본 설정이 다른 지역 변형으로 설정된 단일 지역 변형에 대해 태그된 리소스 일치를 적절한 방법으로 처리합니다.

그러나 두 개 이상의 지역 변형이 지원되는 경우 “en”과 “en-US” 등의 차이는 사용자 환경에 큰 영향을 미칠 수 있으며 사용하는 지역 하위 태그를 고려하는 것이 중요해질 것입니다.

캐나다에서 사용되는 프랑스어와 유럽 프랑스어에 대해 별도의 지역화를 제공하려는 경우를 가정해 봅시다. 캐나다에서 사용되는 프랑스어의 경우 “fr-CA”를 사용할 수 있습니다. 유럽의 언어 구사자의 경우 지역화는 프랑스어(프랑스)를 사용하고 이에 대해 “fr-FR”을 사용할 수 있습니다. 하지만 특정 사용자의 언어 기본 설정이 “fr-BE”인 벨기에 사용자인 경우 어떠한 결과를 얻게 될까요? “BE” 지역은 “FR” 및 “CA” 둘 다와 다르며 둘 다에 대해 “모든 지역” 일치를 제안합니다. 그러나 프랑스가 프랑스어의 기본 지역이므로 이 경우 “fr-FR”이 가장 일치하는 항목으로 간주됩니다.

먼저 프랑스어(프랑스) 문자열을 사용하지만 일반적으로 “fr”로 자격을 부여하여 프랑스어의 단일 변형에 대해서만 앱을 지역화한 다음 캐나다 프랑스어에 대한 지원을 추가하고자 하는 경우를 가정합시다. 아마도 특정 리소스만 캐나다 프랑스어에 대해 다시 번역해야 할 것입니다. 이러한 모든 원래 자산을 “fr”로 정규화하여 계속 사용하고 “fr-CA”를 사용하여 적은 새 자산을 추가할 수 있습니다. 사용자 언어 기본 설정이 “fr-CA”인 경우 “fr-CA” 자산은 “fr” 자산보다 높은 일치 점수를 가집니다. 그러나 사용자 언어 기본 설정이 다른 프랑스어 변형으로 설정된 경우 지역 중립 자산인 “fr”이 “fr-CA” 자산보다 더 나은 일치가 됩니다.

다른 예로 스페인의 언어 구사자와 라틴 아메리카의 언어 구사자에 대해 별도의 스페인어 지역화를 제공하고자 하는 경우를 가정하겠습니다. 추가로 라틴 아메리카에 대한 번역이 멕시코의 공급 업체로부터 제공되었다고 가정합시다. 두 리소스에 대해 “es-ES”(스페인)와 “es-MX”(멕시코)를 사용해야 할까요? 만약 그랬다면 “es-ES” 리소스를 가져올 것이므로 아르헨티나 또는 콜롬비아와 같은 다른 라틴 아메리카 지역의 언어 구사자에게 문제가 될 것입니다. 이 경우 더 나은 다른 대체제가 있습니다. 매크로 지역 하위 태그 “es-419”를 사용하여 라틴 아메리카나 카리브해의 모든 지역의 언어 구사자에게 자산을 사용하게 하려는 의도를 반영할 수 있습니다.

지역 중립 언어 태그 및 매크로 지역 하위 태그는 여러 지역을 지원하고자 하는 경우 매우 효과적입니다. 필요한 별도 자산의 수를 최소화하기 위해 적용 가능한 가장 광범위한 범위를 반영하는 방식으로 지정된 자산에 자격을 부여할 수 있습니다. 다음으로 필요에 따라 더욱 구체적인 변형으로 광범위하게 적용된 자산을 보완합니다. 해당 사용자에게 적용되는 더욱 구체적인 지역의 다른 자산이 있지 않는 한 다른 자산 사용자의 모든 지역 변형에 대해 지역 중립 언어 한정자가 있는 자산이 사용됩니다. 예를 들어 “en” 자산은 오스트레일리아 영어 사용자에 대해 일치하지만 자산 “en-053”(오스트레일리아 또는 뉴질랜드에서 사용되는 영어)의 자산이 해당 사용자에 대해 더 나은 일치가 되며 “en-AU”의 자산이 가능한 최적의 일치가 됩니다.

영어는 특별한 주의가 필요합니다. 앱에 두 영어 변형에 대한 지역화를 추가하는 경우 미국 영어 및 영국 영어, 또는 “국제” 영어가 될 가능성이 높습니다. 위에서 언급했듯이 미국 외의 특정 지역은 미국 철자법을 따르며 Windows 언어 일치는 이를 고려합니다. 이 경우 해당 변형에 대해 지역 중립 태그인 “en”을 사용하는 것은 권장되지 않으며 “en-GB” 및 “en-US”를 사용하는 것이 좋습니다. (지정된 리소스에 별도의 변형이 필요하지 않은 경우 "en"을 사용할 수 있습니다.) "en-GB" 또는 "en-US"가 "en"으로 대체되면 Windows에서 제공하는 직교 지역 선호도를 방해합니다. 세 번째 영어 지역화가 추가되면 필요에 따라 추가 변형에 대한 특정 또는 매크로 지역 하위 태그를 사용하지만(예: “en-CA”, “en-AU” 또는 “en-053”) 계속해서 “en-GB” 및 “en-US”를 사용합니다.