Sdílet prostřednictvím


Práce s lokalizací watchOS v Xamarinu

Přizpůsobení aplikací watchOS pro více jazyků

Apple Watch zobrazující lokalizovaný obsah

Aplikace watchOS se lokalizují pomocí standardních metod pro iOS:

  • Použití ID lokalizace u elementů scénáře
  • Soubory .strings asociované s scénářem a
  • Soubory localizable.strings pro text použitý v kódu.

Výchozí scénáře a prostředky jsou umístěny v základním adresáři a překlady specifické pro jazyk a další prostředky jsou uloženy v adresářích .lproj . Operační systém iOS a Watch automaticky použije výběr jazyka uživatele k načtení správných řetězců a prostředků.

Vzhledem k tomu, že aplikace Apple Watch má dvě části – Watch App a Watch Extension – lokalizované řetězcové prostředky se vyžadují na dvou místech v závislosti na tom, jak se používají.

Lokalizovaný text a prostředky se budou v aplikaci kukátku a rozšíření kukátek lišit .

Kukátková aplikace

Aplikace watch obsahuje scénář, který popisuje uživatelské rozhraní aplikace. Všechny ovládací prvky (například Label a Image) podporující lokalizaci mají ID lokalizace.

Každý adresář .lproj specifický pro jazyk by měl obsahovat soubory .strings s překlady pro každý prvek (pomocí ID lokalizace), stejně jako obrázky odkazované scénářem.

Rozšíření kukátek

Rozšíření kukátek je místo, kde běží kód aplikace. Jakýkoli text, který se uživateli zobrazí z kódu, musí být lokalizován v rozšíření, a ne v aplikaci watch.

Rozšíření by také mělo obsahovat adresáře .lproj specifické pro jazyk, ale soubory .strings vyžadují překlady pouze pro text, který se používá ve vašem kódu.

Globalizace řešení kukátek

Globalizace je proces, kdy je možné lokalizovat aplikaci. U aplikací pro kukátky to znamená navrhnout scénář s různými délkami textu, aby se každé rozložení obrazovky správně upravilo podle toho, jaký text se zobrazí. Musíte také zajistit, aby všechny řetězce odkazované v kódu rozšíření kukátek mohly být přeloženy LocalizedString pomocí metody.

Kukátková aplikace

Ve výchozím nastavení není aplikace watch nakonfigurovaná pro lokalizaci. Musíte přesunout výchozí soubor scénáře a vytvořit další adresáře pro překlady:

  1. Vytvořte adresář Base.lproj a přesuňte do něj rozhraní.storyboard .

  2. Vytvořte <adresáře language.lproj> pro každý jazyk, který chcete podporovat.

  3. Adresáře .lproj by měly obsahovat textový soubor Interface.strings (název souboru by měl odpovídat názvu tabulky). Volitelně můžete umístit všechny obrázky, které vyžadují lokalizaci v těchto adresářích.

Projekt aplikace Watch vypadá takto po provedení těchto změn (byly přidány pouze soubory anglického a španělského jazyka):

Projekt aplikace Watch se soubory anglického a španělského jazyka

Text scénáře

Při úpravě scénáře vyberte každý prvek a všimněte si ID lokalizace, které se zobrazí na panelu Vlastnosti :

ID lokalizace, které se zobrazí na panelu Vlastnosti

Ve složce Base.lproj vytvořte páry klíč-hodnota, jak je znázorněno níže, kde klíč je vytvořen ID lokalizace a název vlastnosti ovládacího prvku, spojené tečkou (.).

"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";

Všimněte si v tomto příkladu , že ID lokalizace může být jednoduchý číselný řetězec (např. "0", "1" atd. nebo složitější řetězec (například "AgC-eL-Hgc"). Label ovládací prvky mají Text vlastnost a Buttonmají Title vlastnost, která se odráží ve způsobu, jakým jsou nastaveny jejich lokalizované hodnoty – nezapomeňte použít název vlastnosti malými písmeny, jak je znázorněno v příkladu výše.

Při vykreslení scénáře na hodinkách se automaticky extrahují a zobrazí správné hodnoty podle jazyka vybraného uživatelem.

Obrázky scénáře

Ukázkové řešení také obsahuje gradient@2x.png obrázek v každé složce jazyka. Tento obrázek se může lišit pro každý jazyk (např. obsahuje vložený text, který potřebuje přeložit, nebo použít lokalizovanou ikonografii).

Jednoduše nastavte vlastnost Image obrázku ve scénáři a správný obrázek se zobrazí na hodinkách podle jazyka vybraného uživatelem.

Nastavení vlastnosti Image obrázků ve scénáři

Poznámka: Protože všechny Apple Watch mají sítnice displeje, je vyžadována pouze @2x verze obrázku. Ve scénáři nemusíte zadávat @2x .

Rozšíření kukátek

Rozšíření watch vyžaduje podobnou adresářovou strukturu pro podporu lokalizace, ale neexistuje žádný scénář. Lokalizované řetězce v rozšíření jsou pouze ty, na které odkazuje kód jazyka C#.

Adresářová struktura rozšíření kukátek pro podporu lokalizace

Řetězce v kódu

Soubor Localizable.strings má mírně odlišnou strukturu, než pokud byla přidružena ke scénáři. V tomto případě můžeme zvolit libovolný řetězec "klíč"; Apple doporučuje použít klíč, který odráží skutečný text, který by se zobrazil ve výchozím jazyce:

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

Metoda NSBundle.MainBundle.LocalizedString se používá k překladu řetězců do jejich přeložených protějšků, jak je znázorněno v následujícím kódu.

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

Obrázky v kódu

Obrázky naplněné kódem lze nastavit dvěma způsoby.

  1. Ovládací prvek můžete změnit Image nastavením jeho hodnoty na název řetězce obrázku, který již existuje v aplikaci Watch, např.

    displayImage.SetImage("gradient"); // image in Watch App (as shown above)
    
  2. Obrázek z rozšíření můžete přesunout na hodinky, které používáte FromBundle , a aplikace automaticky zvolí správný obrázek pro výběr jazyka uživatele. V ukázkovém řešení je v každé složce jazyka obrázek language@2x.png , který se zobrazí DetailController pomocí následujícího kódu:

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

    Všimněte si, že při odkazech na název souboru obrázku nemusíte zadávat @2x .

Druhá metoda je také použitelná, pokud stáhnete obrázek ze vzdáleného serveru pro vykreslení na hodinkách; v tomto případě byste však měli zajistit, aby byl obrázek, který stáhnete, správně lokalizován podle předvoleb uživatele.

Lokalizace

Po nakonfigurování řešení budou překladatelé muset zpracovat soubory a obrázky .strings pro každý jazyk, který chcete podporovat.

Můžete vytvořit tolik adresářů .lproj , kolik potřebujete (jeden pro každý podporovaný jazyk). Pojmenují se pomocí jazykových kódů, jako jsou en, es, de, ja, pt-BR atd. (pro angličtinu, španělštinu, němčinu, japonštinu a portugalštinu (Brazilská).

Připojená ukázka používá (strojově generované) překlady, které ukazují, jak lokalizovat aplikaci watchOS.

Kukátková aplikace

Tyto hodnoty se používají k překladu uživatelského rozhraní definovaného ve scénáři aplikace kukátku. Hodnota klíče je kombinací ID lokalizace každého ovládacího prvku scénáře a vlastnosti, která se překládá.

Doporučujeme přidat do souboru komentáře obsahující původní text, aby překladatelé věděli, co má být překlad.

es.lproj/Interface.strings

Řetězce (strojově přeložené) španělštiny pro scénář jsou uvedeny níže. Ke každému řádku je užitečné přidat komentáře, protože je obtížné zjistit, jaké ID lokalizace odkazuje na jinak:

"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

Rozšíření kukátek

Tyto hodnoty se používají v kódu k překladu informací před zobrazením uživateli. Klíč vybere vývojář při psaní kódu a obvykle obsahuje skutečný řetězec, který se má přeložit.

soubor es.lproj/Localizable.strings

Řetězce (strojově přeložené) jazyka Spansish:

"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

Testování

Metoda pro změnu jazykových předvoleb se liší mezi simulátorem a fyzickými zařízeními.

Simulátor

V simulátoru vyberte jazyk, který chcete otestovat pomocí aplikace pro iOS Nastavení (šedá ikona ozubených kol na domovské obrazovce simulátoru).

Nastavení lokalizace aplikace Nastavení pro iOS

Kukátkové zařízení

Při testování pomocí hodinek změňte jazyk hodinek v aplikaci Apple Watch na spárované i Telefon.

Změna jazyka hodinek v aplikaci Apple Watch na spárované i Telefon