Sdílet prostřednictvím


Lokalizace

Tato příručka představuje koncepty internacionalizace a lokalizace a odkazy na pokyny k vytváření mobilních aplikací Xamarin pomocí těchto konceptů.

Pokud chcete přeskočit přímo na technické podrobnosti o lokalizaci aplikací Xamarin, začněte jedním z těchto článků s postupy pro konkrétní platformu:

i18n a L10n

Internacionalizace je proces, kdy váš kód dokáže zobrazit různé jazyky a přizpůsobit zobrazení pro různá národní prostředí (například číslo a formátování data). Označuje se také jako globalizace.

Lokalizace je následující krok – vytváření prostředků (například řetězců a obrázků) pro každý jazyk a jejich sdružování s mezinárodní aplikací.

Internationalizace se často zkracuje na i18n – zkratka pro 18 písmen mezi "i" a "n". Lokalizace je podobně zkrácena na L10n – pro 10 písmen mezi "L" a "n".

Přehled

Tento dokument představuje koncepty spojené s internacionalizací a lokalizací a obecně se vztahují na vývoj mobilních aplikací. Při návrhu a vytváření aplikace můžou být dříve pevně zakódované věci, které ale musí být parametrizovány pro lokalizaci:

  • Rozložení obrazovky a text
  • Ikony, grafika a barvy,
  • Videosoubory a zvukové soubory,
  • Dynamický text a formátování textu (například čísla, měna a kalendářní data)
  • Změny rozložení pro jazyky zprava doleva (RTL) a
  • Řazení dat

Bez ohledu na to, na které mobilní platformy cílí vaše aplikace, vám tyto tipy pomůžou vytvořit vysoce kvalitní lokalizovanou aplikaci.

Na co dát pozor při navrhování

Návrh aplikace tak, aby bylo možné lokalizovat její obsah, se nazývá internacionalizace. Správné zobecnění je více než jen povolení načtení různých jazykových řetězců za běhu – dobře navržená aplikace by měla umožňovat změny všech prostředků na základě jazyka a národního prostředí (včetně obrázků, zvuků a videí) a může přizpůsobit formátování a rozložení, aby se dokázalo vypořádat s různými řetězci velikosti.

Tato část popisuje některé aspekty návrhu, které je třeba vzít v úvahu při vytváření mezinárodní aplikace.

Rozložení a délka řetězce

Čínské a japonské řetězce můžou být velmi krátké – někdy může být jeden nebo dva znaky dostatečně smysluplné pro popisek vstupního pole.

Německé řetězce (například) mohou být velmi dlouhé; někdy se relativně krátké slovo v angličtině stává velmi dlouhým v jiných jazycích – buď se stane oříznutým nebo jinak neočekávaně přeformátováním rozložení.

Porovnejte délku řetězce několika položek na domovské obrazovce iOS v angličtině, němčině a japonštině:

German vs Japanese string length

Všimněte si, že Nastavení v angličtině (8 znaků) vyžaduje pro německý překlad 13 znaků, ale pouze 2 znaky v japonštině.

Rozložení, ve kterých je popisek zobrazení a vstupní pole vedle sebe, je obtížné pracovat, když se délka popisku může výrazně lišit. Rozložení, ve kterém se popisek zobrazuje nad polem, je často jednodušší lokalizovat, protože pro popisek i vstup je k dispozici plná šířka obrazovky.

Obecně platí, že pokud vytváříte pevná rozložení (zejména vedle sebe) umožňují alespoň 50 % větší šířku, než vyžadují anglické řetězce pro popisky a text. Tento problém se nevyřeší, ale poskytne vyrovnávací paměť, která bude fungovat v mnoha případech.

Ověřování vstupu

Při psaní ověřovacích pravidel si dávejte pozor na předpoklady. Může se zdát platné, že zadání textového pole vyžaduje alespoň tři znaky v angličtině, protože jedno písmeno má velmi zřídka nějaký význam. V čínštině a japonštině ale může být platným vstupem jeden znak a ověřovací zpráva "vyžaduje se alespoň 3 znaky" pro tyto jazyky nedává smysl.

Další zdánlivě jednoduché úkoly, jako je ověřování e-mailové adresy nebo adresy URL webu, se znaky neomezují pouze na podmnožinu ASCII.

Napište svá ověřovací pravidla s ohledem na internacionalizaci – buď zvolte nejméně omezující pravidla, nebo napište logiku, aby fungovala jinak pro každý jazyk.

Obrázky a barva

Ne každý obrázek se musí změnit na základě volby jazyka uživatele. Mnoho ikon nebo fotek bude vhodné pro všechny uživatele, bez ohledu na jazyk, který mluví. Některé prostředky ale mají smysl lokalizovat, například:

  • Obrázky znázorňující lidi nebo konkrétní umístění – vaše aplikace může být pro uživatele relevantnější, pokud zobrazuje místní osoby nebo umístění.
  • Ikony – Některé ikony můžou být specifické pro jazykovou verzi a vy můžete aplikaci usnadnit tím, že lokalizujete image tak, aby odrážela místní porozumění.
  • Barvy – Některé kultury chápou barvy odlišně – červená může znamenat varování v jedné oblasti, ale hodně štěstí v jiné. Při návrhu aplikace se obraťte na nativní mluvčí a zjistěte, jestli byste měli vytvořit mechanismus pro lokalizaci barev.

Videa a zvuk

Videa a zvuk představují při lokalizaci aplikace zvláštní výzvy, protože i když je poměrně snadné přeložit řetězce, může být nahrávání několika stop voiceoveru nebo videoklipů nákladné i obtížné.

Více kopií videosouborů a zvukových souborů může také výrazně zvýšit velikost aplikace (zejména pokud lokalizujete do velkého počtu jazyků nebo máte velké množství mediálních souborů). Po instalaci aplikace můžete zvážit stažení jenom požadovaných jazykových prostředků, ale to může mít za následek také špatné uživatelské prostředí v pomalých sítích.

Problémy s lokalizací je často možné vyřešit několika způsoby – nejdůležitější je vzít je v úvahu předem a zajistit, aby se o ně postarala vaše aplikace.

Kalendářní data, časy, čísla a měna

Pokud používáte funkce formátování .NET, nezapomeňte zadat jazykovou verzi, aby se oddělovače desetinných míst správně parsovaly (a vyhněte se vyvolání výjimek převodu). Například 1,99 i 1 99 jsou platné desetinné číslo v závislosti na vašem národním prostředí.

Když data pocházejí ze známého zdroje (tj. z vlastního kódu nebo webové služby, kterou řídíte), můžete pevně zakódovat identifikátor jazykové verze, který odpovídá formátování, jako je invariantCulture, který bude fungovat pro standardní formátování anglického jazyka.

double.Parse("1,999.99", CultureInfo.InvariantCulture);

Pokud uživatel aplikace zadává data, parsujte je pomocí instance CultureInfo, která odráží jejich národní prostředí:

double.Parse("1 999,99", CultureInfo.CreateSpecificCulture("fr-FR"));

Další informace najdete v článcích MSDN o analýze číselných řetězců a parsování řetězců data a času.

Jazyky zprava doleva (RTL)

Některé jazyky, například arabština, hebrejština a Urdu (například), se čtou zprava doleva. Aplikace, které podporují tyto jazyky, by měly používat návrhy obrazovky, které se přizpůsobují čtenářům se zprava doleva, například:

  • Text by měl být zarovnaný doprava.
  • Popisky by se měly zobrazit napravo od vstupních polí.
  • Výchozí umístění tlačítka je obecně obrácené.
  • Potáhnutím a animací hierarchické navigace (a dalšími metaforami a animacemi navigace), které používají směr pro kontext, by se také měly vrátit zpět.

IOS i Android podporují rozložení zprava doleva a vykreslování písem s integrovanými funkcemi, které pomáhají provádět výše uvedené úpravy. Xamarin.Forms aktuálně nepodporuje vykreslování RTL automaticky.

Třídění

Různé jazyky definují pořadí řazení abecedy odlišně, i když používají stejnou znakové sady.

Podívejte se na podrobnosti porovnání řetězců v osvědčených postupech pro použití řetězců v rozhraní .NET Framework pro příklad, kde jazyk (CultureInfo) ovlivňuje pořadí řazení.

Je nepravděpodobné, že integrované databázové funkce na mobilních platformách budou podporovat řazení specifické pro jazyk, takže možná budete muset implementovat další kód do obchodní logiky.

Ujistěte se, že píšete a testujete vyhledávací algoritmus s ohledem na více jazyků. Mezi aspekty, které je potřeba vzít v úvahu, patří:

  • Automatické dokončování – pokud jste vytvořili funkci automatického dokončování, ujistěte se, že obsahuje návrhy relevantní pro jazyk uživatele.
  • Porovnávání dotazů s daty – budou vyhledávací dotazy zadané v určitém jazyce spouštěny pouze s obsahem napsaným v tomto jazyce nebo proti veškerému obsahu v aplikaci?
  • Stemming – pokud je vaše hledání vytvořené tak, aby hledalo podobná slova, kořeny slov a další optimalizace hledání, jsou tyto optimalizace vytvořené pro všechny jazyky, které podporujete?
  • Řazení – ujistěte se, že jsou výsledky seřazené správně (viz výše).

Data z externích zdrojů

Mnoho aplikací stahuje data z externích zdrojů, z Twitteru a informačních kanálů RSS do počasí, zpráv nebo cen akcií. Při zobrazení uživateli je třeba zvážit možnost, že jim zobrazíte obrazovku s irelevantními nebo nečitelnými informacemi.

K vyzkoušení a zajištění toho, aby vaše aplikace zobrazovala data relevantní pro uživatele, můžete použít několik strategií:

  • Různé zdroje – vaše aplikace může stahovat data z jiného zdroje v závislosti na jazyce nebo národním prostředí uživatele. Zprávy o národním prostředí, počasí a ceny akcií mohou dávat větší smysl než něco staženo z Severní Amerika n informačního kanálu.
  • Lokalizované zobrazení – pokud zobrazujete Informační kanál twitteru nebo fotek, měli byste zobrazit metadata (například čas potřebný) v jeho jazyce, i když samotný obsah zůstává v původním jazyce.
  • Překlad – do aplikace můžete vytvořit možnost překladu, abyste mohli provést strojový překlad příchozích dat. To může být automatické nebo podle vlastního uvážení uživatele – nezapomeňte uživatele upozornit, pokud k tomu dochází, protože strojové překlady nejsou nikdy dokonalé!

To by také mohlo mít vliv na externí odkazy na zvukové stopy nebo videa – při návrhu aplikace nezapomeňte předem naplánovat zdroj přeloženého obsahu nebo zajistit, aby uživatelé byli odpovídajícím způsobem informováni uživatelským rozhraním, když obsah nebude prezentován v jejich jazyce.

Nepřekládat

Některé řetězce ve vaší aplikaci nemusí být nutné překládat nebo alespoň potřebují zvláštní pozornost překladatele. Příklady:

  • Adresy URL – pokud vypíšete adresu URL, může nebo nemusí být potřeba ji upravovat podle jazyka. Například facebook.com nevyžaduje překlad, který automaticky rozpozná jazyk v hlavní lokalitě. Jiné weby mají obsah specifický pro národní prostředí a můžete chtít nabídnout jinou adresu URL, například yahoo.com nebo yahoo.fr nebo yahoo.it.
  • Telefonní čísla – zejména čísla různých zemí nebo čísel pro volající, kteří mluví konkrétním jazykem.
  • Kontaktní údaje – adresy a další informace se mohou lišit podle jazyka nebo národního prostředí.
  • Ochranné známky a názvy produktů – některé řetězce nemusí překládat, protože jsou vždy napsané ve stejném jazyce.

Nakonec nezapomeňte uvést podrobné pokyny pro překladatele, pokud určité řetězce vyžadují zvláštní zacházení.

Formátovaný text

Obvykle se nejedná o problém s mobilními aplikacemi, protože řetězce obvykle nejsou formátované s bohatým formátováním. Pokud je ale ve vaší aplikaci vyžadováno formátování formátovaného textu (například tučné písmo nebo kurzíva), ujistěte se, že překladatel ví, jak zadávat formátování, ukládají se soubory správně a jsou správně naformátované před zobrazením uživateli (tj. nenechte kódy formátování samotné prezentovat uživateli).

Tipy překladu

Překlad řetězců používaných aplikací je považován za součást procesu lokalizace. Obvykle se tento úkol převede na službu překladu a provede ji vícejazyčný personál, který nemusí vaši aplikaci nebo vaši firmu znát.

Následující tipy vám pomůžou vytvářet řetězce, které se snadněji překládají přesně, a tím zlepší kvalitu lokalizovaných aplikací.

Lokalizace úplných řetězců, nikoli slov

Vývojáři se někdy snaží určit jednotlivá slova nebo věty fragmenty, aby je mohli znovu používat v celé aplikaci. Například pro text "Máte 5 zpráv". Můžou zadat následující řetězce pro překlad.

Špatné:

"You have"
"no"
"message"
"messages"

a pak se pomocí zřetězení řetězců pokusíte vytvořit správnou frázi za běhu v kódu:

Špatné:

"You have" + " " + numMsgs + " " + "messages"
"You have" + " no " + "messages"

To se nedoporučuje , protože nemusí nutně fungovat pro všechny jazyky a bude obtížné pochopit kontext jednotlivých krátkých segmentů. To také vede k opětovnému použití přeložených řetězců, což může později způsobit problémy, pokud se použijí v různých kontextech (a pak se aktualizují).

Povolit opětovné řazení parametrů

Některé programovací jazyky vyžadují další syntaxi k určení pořadí parametrů v řetězci, ale .NET už podporuje koncept číslovaných zástupných symbolů, takže

Dobré:

"a {0} b {1} cde {3}"

lze přeložit následující (kde se změní umístění a pořadí zástupných symbolů)

"{2} {3} f g h {0}"

a tokeny budou seřazeny podle zamýšleného překladače. Nezapomeňte uvést vysvětlení toho, co jednotlivé zástupné symboly obsahují při odesílání řetězce překladateli.

Použití více řetězců pro kardinalitu

Vyhněte se řetězcům, jako je "You have {0} message/s." Použití konkrétních řetězců pro každý stav, abyste zajistili lepší uživatelské prostředí:

Dobré:

"You have no messages."
"You have 1 message."
"You have 2 messages."
"You have {0} messages."

V aplikaci budete muset napsat kód, abyste vyhodnotili zobrazované číslo a zvolili příslušný řetězec. Některé platformy (včetně iOS a Androidu) mají integrované funkce, které automaticky vyberou nejlepší řetězec v množném čísle na základě předvoleb aktuálního jazyka nebo národního prostředí.

Povolení pohlaví

Jazyky založené na latince někdy používají různá slova v závislosti na pohlaví předmětu. Pokud vaše aplikace ví o pohlaví, měli byste povolit přeložené řetězce, aby to odrážely.

Existuje také jasnější případ i v angličtině, kde řetězce odkazují na konkrétní osobu nebo uživatele vaší aplikace. Některé weby například zobrazují podobné zprávy "Bob commented on his post" , takže potřebujete řetězce pro muže, ženy i jiné než binární nebo neznámé pohlaví:

Dobré:

"{0} commented on his post"
"{0} commented on her post"
"{0} commented on their post"

Nepoužití řetězců

Nebo přesněji, nepoužívejte opakovaně řetězce jen proto, že jsou podobné, pokud samotný řetězec má jiný účel nebo význam.

Představte si například, že máte v aplikaci zapnutý/vypnutý přepínač a ovládací prvek přepínače potřebuje text pro "zapnuto" a "vypnuto" k lokalizaci. Hodnotu tohoto nastavení také zobrazíte jinde v aplikaci v textovém popisku. Pro zobrazení přepínače a stavu přepínače byste měli použít různé řetězce (i když se jedná o stejný řetězec ve vašem výchozím jazyce) – například:

  • "Zapnuto" – zobrazí se na samotném přepínači.
  • "Vypnuto" – zobrazí se na samotném přepínači.
  • "Zapnuto" – zobrazeno v popisku
  • "Vypnuto" – zobrazí se v popisku.

To poskytuje maximální flexibilitu pro překladatele:

  • Z důvodů návrhu například samotný přepínač používá malá písmena "zapnuto" a "vypnuto", ale popisek zobrazení používá velká písmena "Zapnuto" a "Vypnuto".
  • Některé jazyky můžou potřebovat zkrácenou hodnotu přepínače, aby se vešly do ovládacího prvku uživatelského rozhraní, zatímco celé (přeložené) slovo se může objevit v popisku.
  • V některých jazycích může být vykreslování přepínače pro kulturní znalosti možné použít "I" a "O", ale přesto můžete chtít, aby popisek četl "Zapnuto" nebo "Vypnuto".

Překladatelské služby

Strojový překlad

Pokud chcete do své aplikace začlenit funkce překladu , zvažte rozhraní Azure Translator Text API.

Pro účely testování můžete během vývoje použít jeden z mnoha nástrojů pro online překlad, abyste do své aplikace zahrnuli nějaký lokalizovaný text:

K dispozici je mnoho dalších. Kvalita strojového překladu obecně není dostatečně dobrá k vydání aplikace bez první kontroly a otestování profesionálními překladateli nebo rodilými mluvčími.

Profesionální překlad

K dispozici jsou také profesionální překladatelské služby, které převezmou vaše řetězce a distribuují je svým vlastním překladatelům a poskytují vám hotové překlady za poplatek.

Jednou z nejznámějších služeb je LionBridge. Většina profesionálních služeb podporuje všechny běžné typy souborů, včetně řetězců, XML, RESX a POT/PO.

Shrnutí

Tento článek představil některé koncepty, se kterými byste měli být obeznámeni před internacionalizací aplikace a následnou lokalizací prostředků, a také se dozvíte, jak změnit jazykové předvolby pro každou platformu.

Tyto koncepty lze použít na různé techniky internacionalizace specifické pro platformu a různé platformy, které jsou možné s Xamarinem.

Pokračujte ve čtení technických podrobností o platformě, kterou vás zajímají: