Xamarin에서 watchOS 지역화 작업

여러 언어에 대해 watchOS 앱 조정

지역화된 콘텐츠를 표시하는 Apple Watch

watchOS 앱은 표준 iOS 메서드를 사용하여 지역화됩니다.

  • 스토리보드 요소에서 지역화 ID 사용
  • 스토리보드와 연결된 .strings 파일 및
  • 코드에 사용되는 텍스트의 Localizable.strings 파일입니다.

기본 스토리보드 및 리소스는 기본 디렉터리에 있으며 언어별 번역 및 기타 리소스는 .lproj 디렉터리에 저장됩니다. iOS 및 Watch OS는 사용자의 언어 선택을 자동으로 사용하여 올바른 문자열과 리소스를 로드합니다.

Apple Watch 앱에는 Watch 앱과 Watch 확장의 두 부분으로 구성되어 있으므로 사용 방법에 따라 지역화된 문자열 리소스가 두 곳에 필요합니다.

지역화된 텍스트와 리소스는 조사식 앱과 조사식 확장에서 다릅니다 .

앱 보기

조사식 앱에는 앱의 사용자 인터페이스를 설명하는 스토리보드가 포함되어 있습니다. 지역화를 지원하는 모든 컨트롤(예: LabelImage)에는 지역화 ID있습니다.

각 언어별 .lproj 디렉터리에는 스토리보드에서 참조하는 이미지뿐만 아니라 지역화 ID를 사용하여 각 요소에 대한 번역이 포함된 .strings 파일이 포함되어야 합니다.

시계 확장

조사식 확장은 앱 코드가 실행되는 위치입니다. 코드에서 사용자에게 표시되는 모든 텍스트는 조사식 앱이 아닌 확장에서 지역화해야 합니다.

확장에는 언어별 .lproj 디렉터리도 포함되어야 하지만 .strings 파일에는 코드에 사용되는 텍스트에 대한 번역만 필요합니다.

조사식 솔루션 세계화

세계화는 애플리케이션을 지역화할 수 있도록 하는 프로세스입니다. 시계 앱의 경우 이는 텍스트 길이가 다른 스토리보드를 디자인하여 표시되는 텍스트에 따라 각 화면 레이아웃이 적절하게 조정되도록 하는 것을 의미합니다. 또한 조사식 확장 코드에서 참조되는 문자열을 메서드를 사용하여 LocalizedString 번역할 수 있는지 확인해야 합니다.

앱 보기

기본적으로 조사식 앱은 지역화를 위해 구성되지 않습니다. 기본 스토리보드 파일을 이동하고 번역을 위한 다른 디렉터리를 만들어야 합니다.

  1. Base.lproj 디렉터리를 만들고 Interface.storyboard해당 디렉터리로 이동합니다.

  2. 지원하려는 각 언어에 대한 language.lproj> 디렉터리를 만듭니<다.

  3. .lproj 디렉터리에 Interface.strings 텍스트 파일이 있어야 합니다(파일 이름은 Storboard의 이름과 일치해야 합니다). 필요에 따라 이러한 디렉터리에 지역화가 필요한 모든 이미지를 배치할 수 있습니다.

조사식 앱 프로젝트는 이러한 변경 내용이 변경된 후 다음과 같습니다(영어 및 스페인어 파일만 추가됨).

영어 및 스페인어 파일이 있는 조사식 앱 프로젝트

스토리보드 텍스트

스토리보드를 편집할 때 각 요소를 선택하고 속성 패드에 표시되는 지역화 ID확인합니다.

속성 패드에 표시되는 지역화 ID

Base.lproj 폴더에서 아래와 같이 키-값 쌍을 만듭니다. 여기서 키는 점(.)으로 조인된 컨트롤의 지역화 ID 및 속성 이름으로 구성됩니다.

"AgC-eL-Hgc.title" = "WatchL10nEN"; // interface controller title
"0.text" = "Welcome to WatchL10n"; // Welcome
"1.text" = "Language settings are in Apple Watch App"; // How to change language
"2.title" = "Greetings"; // Greeting
"6.title" = "Detail";
"39.text" = "Second screen";

이 예제에서는 지역화 ID단순 숫자 문자열(예: "0", "1" 등) 또는 더 복잡한 문자열(예: "AgC-eL-Hgc"). Label컨트롤에는 Text 속성이 있고 ButtonTitle 해당 지역화된 값이 설정된 방식에 반영되는 속성이 있습니다. 위의 예제와 같이 소문자 속성 이름을 사용해야 합니다.

스토리보드가 시계에 렌더링되면 사용자가 선택한 언어에 따라 올바른 값이 자동으로 추출되고 표시됩니다.

스토리보드 이미지

예제 솔루션에는 각 언어 폴더의 이미지도 포함됩니다 gradient@2x.png . 이 이미지는 언어마다 다를 수 있습니다(예: 번역이 필요한 텍스트가 포함되어 있거나 지역화된 아이콘을 사용할 수 있음).

스토리보드에서 이미지의 이미지 속성을 설정하기만 하면 사용자가 선택한 언어에 따라 올바른 이미지가 시계에 렌더링됩니다.

스토리보드에서 이미지 이미지 속성 설정

참고: 모든 Apple Watches에는 Retina 디스플레이가 있으므로 @2x 버전의 이미지만 필요합니다. 스토리보드에서 @2x 지정할 필요가 없습니다.

시계 확장

시계 확장은 지역화를 지원하기 위해 유사한 디렉터리 구조가 필요하지만 스토리보드는 없습니다. 확장의 지역화된 문자열은 C# 코드에서 참조하는 문자열입니다.

지역화를 지원하는 조사식 확장 디렉터리 구조

코드의 문자열

Localizable.strings 파일의 구조는 스토리보드와 연결된 경우와 약간 다릅니다. 이 경우 "키" 문자열을 선택할 수 있습니다. Apple의 권장 사항은 기본 언어로 표시되는 실제 텍스트를 반영하는 키를 사용하는 것입니다.

"Breakfast time" = "Breakfast time!"; // morning
"Lunch time" = "Lunch time!"; // midday
"Dinner time" = "Dinner time!"; // evening
"Bed time" = "Bed time!"; // night

NSBundle.MainBundle.LocalizedString 메서드는 아래 코드와 같이 문자열을 번역된 해당 항목으로 확인하는 데 사용됩니다.

var display = "Breakfast time";
var localizedDisplay =
  NSBundle.MainBundle.LocalizedString (display, comment:"greeting");
displayText.SetText (localizedDisplay);

코드의 이미지

코드로 채워진 이미지는 두 가지 방법으로 설정할 수 있습니다.

  1. 해당 값을 Watch 앱에 이미 있는 이미지의 문자열 이름으로 설정하여 컨트롤을 변경할 Image 수 있습니다.

    displayImage.SetImage("gradient"); // image in Watch App (as shown above)
    
  2. 을 사용하여 FromBundle 확장에서 시계로 이미지를 이동할 수 있으며 앱은 사용자의 언어 선택에 맞는 이미지를 자동으로 선택합니다. 예제 솔루션에는 각 언어 폴더에 이미지가 language@2x.png 있으며 다음 코드를 사용하여 표시됩니다 DetailController .

    using (var image = UIImage.FromBundle ("language")) {
        displayImage.SetImage (image);
    }
    

    이미지의 파일 이름을 참조할 때 @2x 지정할 필요가 없습니다.

두 번째 방법은 원격 서버에서 이미지를 다운로드하여 시계에 렌더링하는 경우에도 적용됩니다. 그러나 이 경우 다운로드한 이미지가 사용자의 기본 설정에 따라 올바르게 지역화되었는지 확인해야 합니다.

지역화

솔루션을 구성한 후에는 번역가가 지원하려는 각 언어에 대해 .strings 파일 및 이미지를 처리해야 합니다.

필요한 만큼 .lproj 디렉터리를 만들 수 있습니다(지원되는 각 언어에 대해 하나씩). en, es, de, ja, pt-BR 등과 같은 언어 코드(영어, 스페인어, 독일어, 일본어 및 포르투갈어(브라질))를 사용하여 이름이 지정됩니다.

연결된 샘플은 (기계 생성) 번역을 사용하여 watchOS 앱을 지역화하는 방법을 보여 줍니다.

앱 보기

이러한 값은 조사식 앱의 스토리보드에 정의된 사용자 인터페이스를 변환하는 데 사용됩니다. 키 값은 각 스토리보드 컨트롤의 지역화 ID와 변환되는 속성의 조합입니다.

번역가가 번역해야 하는 내용을 알 수 있도록 원본 텍스트가 포함된 주석을 파일에 추가하는 것이 좋습니다.

es.lproj/Interface.strings

스토리보드의 스페인어 문자열(컴퓨터 번역)은 다음과 같습니다. 지역화 ID가 무엇을 참조하는지 알기 어렵기 때문에 각 줄에 주석을 추가하는 것이 좋습니다.

"AgC-eL-Hgc.title" = "Spanish"; // app screen heading
"0.text" = "Bienvenido a WatchL10n"; // Welcome to WatchL10n
"1.text" = "Ajustes de idioma están en Apple Watch App"; // Change the language in the Apple Watch App
"2.title" = "Saludos"; // Greetings
"6.title" = "2nd"; // second screen heading
"39.text" = "Segunda pantalla"; // second screen

시계 확장

이러한 값은 사용자에게 표시되기 전에 정보를 변환하기 위해 코드에서 사용됩니다. 개발자가 코드를 작성하는 동안 키가 선택되며 일반적으로 번역할 실제 문자열이 포함됩니다.

es.lproj/Localizable.strings 파일

(컴퓨터 번역) 범위별 언어 문자열:

"Breakfast time" = "la hora del desayuno"; // morning
"Lunch time" = "hora de comer"; // midday
"Dinner time" = "hora de la cena"; // evening
"Bed time" = "la hora de dormir"; // night

테스팅

언어 기본 설정을 변경하는 방법은 시뮬레이터와 물리적 디바이스 간에 다릅니다.

시뮬레이터

시뮬레이터에서 iOS 설정 앱(시뮬레이터 홈 화면의 회색 기어 아이콘)을 사용하여 테스트할 언어를 선택합니다.

iOS 설정 앱 지역화 설정

장치 감시

시계로 테스트할 때 페어링된 i전화 Apple Watch 앱에서 시계의 언어를 변경합니다.

페어링된 i의 Apple Watch 앱에서 시계의 언어를 변경합니다전화