Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zlokalizowana aplikacja jest aplikacją, która może być zlokalizowana na innych rynkach, językach lub regionach bez ujawniania żadnych wad funkcjonalnych w aplikacji. Najważniejszą właściwością aplikacji lokalizowalnej jest to, że jego kod wykonywalny został oczyszczony z zasobów lokalizowalnych. Dlatego należy określić, które zasoby aplikacji muszą być zlokalizowane. Zadaj sobie pytanie, co należy zmienić, jeśli aplikacja ma być zlokalizowana na innych rynkach.
Zalecamy również zapoznanie się z wytycznymi dotyczącymi globalizacji.
Umieść ciągi w plikach zasobów (.resw)
Nie zakodowuj na stałe literałów ciągów w swoim kodzie imperatywnym, w znacznikach XAML ani w manifeście pakietu aplikacji. Zamiast tego, umieść ciągi w plikach zasobów (.resw), aby można je było dostosować do różnych rynków lokalnych niezależnie od skompilowanych plików binarnych tej aplikacji. Aby uzyskać szczegółowe informacje, zobacz Lokalizowanie ciągów w interfejsie użytkownika oraz w manifeście pakietu aplikacji.
W tym temacie pokazano również, jak dodać komentarze do domyślnego pliku zasobów (resw). Jeśli na przykład przyjmujesz nieformalny głos lub ton, pamiętaj, aby to wyjaśnić w komentarzach. Ponadto, aby zminimalizować wydatki, upewnij się, że tylko ciągi, które należy przetłumaczyć, są udostępniane tłumaczom.
Ustaw język domyślny aplikacji odpowiednio w pliku źródłowym manifestu pakietu aplikacji (plik Package.appxmanifest). Język domyślny określa język używany, gdy preferowane języki użytkownika nie są zgodne z żadnym z obsługiwanych języków aplikacji. Oznacz wszystkie zasoby przy użyciu ich języka (nawet tych w języku domyślnym, na przykład \Assets\en-us\Logo.png), aby system mógł określić język, w którym znajduje się zasób i jak jest używany w określonych sytuacjach.
Dostosowywanie obrazów i innych zasobów plików na potrzeby języka
W idealnym przypadku będzie można globalizować obrazy , co oznacza, że będą one niezależne od kultury. W przypadku wszystkich obrazów i innych zasobów plików, w których nie jest to możliwe, utwórz dowolną liczbę różnych wariantów tych obrazów i umieść odpowiednie kwalifikatory języka w nazwach plików lub folderów. Aby dowiedzieć się więcej, zobacz Dostosowywanie zasobów na potrzeby języka, skalowania, dużego kontrastu i innych kwalifikatorów.
Aby zminimalizować koszty lokalizacji, nie umieszczaj na obrazach tekstu ani materiałów wrażliwych kulturowo. Obraz, który jest odpowiedni we własnej kulturze, może być obraźliwy lub błędnie zinterpretowany w innych kulturach. Unikaj używania obrazów specyficznych dla kultury, takich jak skrzynki pocztowe, które nie są powszechne na całym świecie. Unikaj symboli religijnych, zwierząt, obrazów politycznych lub obrazów specyficznych dla płci. Wyświetlanie ciała, części ciała lub gestów dłoni może być również tematem poufnym. Jeśli nie możesz uniknąć wszystkich tych elementów, twoje obrazy będą musiały być starannie zlokalizowane. Jeśli lokalizujesz język z innym kierunkiem czytania niż własne, użycie obrazów symetrycznych i efektów ułatwia obsługę dublowania.
Należy również unikać używania tekstu na obrazach i mowy w plikach audio/wideo.
Użycie koloru w aplikacji
Należy zachować ostrożność przy używaniu kolorów. Używanie kombinacji kolorów, które są związane z flagami narodowymi lub ruchami politycznymi, może być problematyczne. Wybór kolorów może wymagać oceny przez ekspertów ds. kultury. Występują również problemy z ułatwieniami dostępu związane z używaniem koloru. Jeśli używasz koloru do przekazywania znaczenia, należy również przekazać te same informacje za pomocą innych środków, takich jak rozmiar, kształt lub etykieta.
Rozważ przekształcenie ciągów w zdania.
Użyj ciągów o odpowiednim rozmiarze. Krótkie ciągi są łatwiejsze do tłumaczenia i umożliwiają odtwarzanie tłumaczenia (co pozwala zaoszczędzić koszty, ponieważ ten sam ciąg nie jest wysyłany do lokalizatora więcej niż raz). Ponadto bardzo długie ciągi mogą nie być obsługiwane przez narzędzia lokalizacji.
Jednak w napięciu z tą wytyczną istnieje ryzyko ponownego użycia ciągu w różnych kontekstach. Nawet proste słowa, takie jak "włączone" i "wyłączone", mogą być tłumaczone inaczej, w zależności od kontekstu. W języku angielskim terminy "on" i "off" służą do przełączania trybu samolotowego, Bluetooth i urządzeń. Ale w języku włoskim tłumaczenie zależy od kontekstu tego, co jest włączone i wyłączone. Należy utworzyć parę ciągów dla każdego kontekstu. Jeśli te dwa konteksty są takie same, można ponownie użyć ciągów. Można na przykład ponownie użyć ciągu "Volume" zarówno w przypadku głośności efektów dźwiękowych, jak i muzyki, ponieważ oba odnoszą się do intensywności dźwięku. Nie należy ponownie używać tego samego ciągu podczas odwoływania się do woluminu dysku twardego, ponieważ kontekst i znaczenie są różne, a słowo może być tłumaczone inaczej.
Ponadto ciąg, taki jak "tekst" lub "faks", może służyć zarówno jako czasownik, jak i rzeczownik w języku angielskim, co może mylić proces tłumaczenia. Zamiast tego utwórz oddzielny ciąg zarówno dla formy czasownika, jak i rzeczownika. Jeśli nie masz pewności, czy konteksty są takie same, postępuj ostrożnie i użyj odrębnego ciągu znaków.
Krótko mówiąc, podziel swoje ciągi na fragmenty, które działają we wszystkich kontekstach. Mogą wystąpić sytuacje, w których ciąg musi być pełnym zdaniem.
Rozważ następujący ciąg: "Nie można zsynchronizować {0}".
Różne wyrazy mogą zastąpić {0}, takie jak "termin", "zadanie" lub "dokument". Chociaż ten przykład działa w języku angielskim, nie będzie działać we wszystkich przypadkach dla odpowiedniego zdania, na przykład w języku niemieckim. Zwróć uwagę, że w następujących zdaniach niemieckich niektóre wyrazy w ciągu szablonu ("Der", "Die", "Das") muszą być zgodne ze sparametryzowanym słowem:
| angielski | Niemiecki |
|---|---|
| Nie można zsynchronizować terminu. | Der Termin konnte nicht synchronisiert werden. |
| Nie można zsynchronizować zadania. | Die Aufgabe konnte nicht synchronisiert werden. |
| Nie można zsynchronizować dokumentu. | Das Dokument konnte nicht synchronisiert werden. |
W innym przykładzie rozważ zdanie: "Przypomnij mi w {0} minutach". Użycie "minuty/minut" pasuje do języka angielskiego, ale inne języki mogą używać różnych terminów. Na przykład język polski używa wartości "minuta", "minuty" lub "minut" w zależności od kontekstu.
Aby rozwiązać ten problem, lokalizuj całe zdanie, a nie pojedyncze słowo. Wykonanie tej czynności może wydawać się dodatkową pracą i rozwiązaniem nielegantnym, ale jest to najlepsze rozwiązanie, ponieważ:
- Gramatyczny poprawny komunikat będzie wyświetlany dla wszystkich języków.
- Tłumacz nie będzie musiał pytać, czym będą zastępowane ciągi.
- Po zakończeniu pracy nad aplikacją nie będzie potrzeby implementowania kosztownej poprawki kodu, gdy taki problem się pojawi.
Inne zagadnienia dotyczące ciągów
Unikaj kolokalizmów i metafor w ciągach utworzonych w języku domyślnym. Język specyficzny dla grupy demograficznej, takiej jak kultura i wiek, może być trudny do zrozumienia lub tłumaczenia, ponieważ tylko osoby w tej grupie demograficznej używają tego języka. Podobnie metafory mogą mieć sens dla jednej osoby, ale nie oznaczają nic dla kogoś innego. Na przykład "bluebird" oznacza coś specyficznego dla tych, którzy są częścią kultury narciarskiej, ale ci, którzy nie są częścią tej kultury, nie rozumieją odniesienia.
Nie używaj żargonu technicznego, skrótów ani akronimów. Język techniczny jest mniej prawdopodobny dla odbiorców nietechnicznych lub osób z innych kultur lub regionów i trudno je przetłumaczyć. Ludzie nie używają tego rodzaju słów w codziennych rozmowach. Język techniczny często pojawia się w komunikatach o błędach w celu zidentyfikowania problemów ze sprzętem i oprogramowaniem, ale ciągi powinny być techniczne tylko wtedy, gdy użytkownik potrzebuje tego poziomu informacji i może go wykonać lub znaleźć kogoś, kto może.
Używanie nieformalnego stylu lub tonu w tekstach jest prawidłowym wyborem. Możesz użyć komentarzy w domyślnym pliku zasobów (resw), aby wskazać ten zamiar.
Pseudolokalizacja
Pseudolokalizuj aplikację, aby odkryć wszelkie problemy z lokalizacją. Pseudolokalizacja jest rodzajem próbnej lokalizacji, czyli testu ujawnienia. Tworzysz zestaw zasobów, które nie są naprawdę tłumaczone; wyglądają tylko w ten sposób. Ciągi są o około 40% dłuższe niż w domyślnym języku, a zawierają ograniczniki, które pozwalają szybko zorientować się, czy zostały obcięte w interfejsie użytkownika.
Zagadnienia dotyczące wdrażania
Podczas instalowania aplikacji zawierającej zlokalizowane dane językowe może się okazać, że tylko język domyślny jest dostępny dla aplikacji, mimo że początkowo dołączono zasoby dla wielu języków. Dzieje się tak, ponieważ proces instalacji jest zoptymalizowany pod kątem instalowania tylko zasobów językowych, które są zgodne z bieżącym językiem i kulturą urządzenia. W związku z tym, jeśli urządzenie jest skonfigurowane pod kątem en-US, tylko zasoby języka en-US są instalowane z aplikacją.
Uwaga / Notatka
Nie można zainstalować dodatkowej obsługi języka dla aplikacji po początkowej instalacji. Jeśli zmienisz język domyślny po zainstalowaniu aplikacji, aplikacja będzie nadal używać tylko oryginalnych zasobów językowych.
Jeśli chcesz upewnić się, że wszystkie zasoby językowe są dostępne po instalacji, utwórz plik konfiguracji dla pakietu aplikacji, który określa, że niektóre zasoby są wymagane podczas instalacji (w tym zasoby językowe). Ta zoptymalizowana funkcja instalacji jest automatycznie włączana po wygenerowaniu pliku .appxbundle aplikacji podczas procesu pakowania. Aby uzyskać więcej informacji, zobacz Upewnij się, że zasoby są zainstalowane na urządzeniu niezależnie od tego, czy urządzenie wymaga ich.
Opcjonalnie, aby upewnić się, że wszystkie zasoby są zainstalowane (nie tylko podzbiór), możesz wyłączyć generowanie .appxbundle podczas tworzenia pakietu aplikacji. Nie jest to jednak zalecane, ponieważ może zwiększyć czas instalacji aplikacji.
Wyłącz automatyczne generowanie pliku appxbundle, ustawiając atrybut "Generate App Bundle" na "never":
- W programie Visual Studio kliknij prawym przyciskiem myszy nazwę projektu
- Wybierz pozycję Store —>Utwórz pakiety aplikacji...
- W oknie dialogowym Tworzenie pakietów wybierz pozycję Chcę utworzyć pakiety do przekazania do Microsoft Store przy użyciu nowej nazwy aplikacji, a następnie kliknij przycisk Dalej.
- W oknie dialogowym Wybierz nazwę aplikacji wybierz/utwórz nazwę aplikacji dla pakietu.
- W oknie dialogowym Wybieranie i konfigurowanie pakietów ustaw Generuj pakiet aplikacji na Nigdy.
Świadomość geopolityczna
Unikaj przestępstwa politycznego w mapach lub w przypadku odwoływania się do regionów. Mapy mogą obejmować kontrowersyjne granice regionalne lub krajowe i są częstym źródłem przestępstwa politycznego. Należy zachować ostrożność, że każdy interfejs użytkownika używany do wybierania narodu odnosi się do niego jako "kraj/region". Wyświetlenie spornego terytorium na liście oznaczonej etykietą "kraje", na przykład w formularzu adresu, może obrazić niektórych użytkowników.
Zdarzenia zmiany języka i regionu
Zasubskrybuj zdarzenia, które są generowane podczas zmiany ustawień języka i regionu systemu. Zrób to, aby w razie potrzeby ponownie załadować zasoby. Aby uzyskać szczegółowe informacje, zobacz Aktualizowanie ciągów w odpowiedzi na zdarzenia zmiany wartości kwalifikatora i Aktualizowanie obrazów w odpowiedzi na zdarzenia zmiany wartości kwalifikatora.
Upewnij się, że jest zachowana prawidłowa kolejność parametrów podczas formatowania ciągów
Nie zakładaj, że wszystkie języki wyrażają parametry w tej samej kolejności. Rozważmy na przykład ten format.
string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".
Ciąg formatu w tym przykładzie działa dla języka angielskiego (Stany Zjednoczone). Nie jest to jednak odpowiednie dla Niemiec (Niemcy), na przykład gdy dzień i miesiąc są wyświetlane w odwrotnej kolejności. Upewnij się, że tłumacz zna intencję każdego z parametrów, aby można było odwrócić kolejność elementów formatu w ciągu formatu (na przykład "{1}{0}") zgodnie z potrzebami języka docelowego.
Nie lokalizuj nadmiernie
Przesyłaj do tłumaczy tylko tekst w języku naturalnym, a nie kod programowania ani znaczniki. Tag <link> nie jest językiem naturalnym. Rozważmy te przykłady.
| Nie lokalizuj tego | Zlokalizuj to |
|---|---|
| link <>warunków użytkowania</link> | warunki użytkowania |
| <link>zasad ochrony prywatności</link> | zasady zachowania poufności informacji |
Dołączenie tagu <link> w pliku zasobów (.resw) oznacza, że może również zostać przetłumaczony. Oznaczałoby to, że tag jest nieprawidłowy. Jeśli masz długie ciągi, które muszą zawierać znaczniki, aby zachować kontekst i zapewnić kolejność, wyjaśnij w komentarzach, co nie należy tłumaczyć.
Wybieranie odpowiedniego podejścia do tłumaczenia
Po rozdzieleniu ciągów na pliki zasobów można je przetłumaczyć. Idealny czas tłumaczenia ciągów jest po sfinalizowaniu ciągów w projekcie, co zwykle dzieje się na końcu projektu. Do procesu tłumaczenia można podejść na wiele sposobów. Może to zależeć od ilości ciągów, które mają zostać przetłumaczone, liczby języków do tłumaczenia i sposobu tłumaczenia (na przykład w firmie i zatrudniania zewnętrznego dostawcy).
Rozważ te opcje.
- Pliki zasobów można przetłumaczyć, otwierając je bezpośrednio w projekcie. Takie podejście dobrze sprawdza się w przypadku projektu, który ma niewielką liczbę ciągów, które należy przetłumaczyć na dwa lub trzy języki. Może to być odpowiednie w przypadku scenariusza, w którym deweloper mówi więcej niż jeden język i jest gotów obsłużyć proces tłumaczenia. Takie podejście zapewnia szybki dostęp, nie wymaga żadnych narzędzi i minimalizuje ryzyko niewłaściwego tłumaczenia. Ale nie jest skalowalny. W szczególności zasoby w różnych językach mogą łatwo stracić synchronizację, powodując złe doświadczenia użytkownika i problemy z utrzymaniem.
- Pliki zasobów ciągu są w formacie tekstowym XML lub ResJSON, więc można je przekazać do tłumaczenia przy użyciu dowolnego edytora tekstów. Przetłumaczone pliki zostaną następnie skopiowane z powrotem do projektu. Takie podejście wiąże się z ryzykiem przypadkowego edytowania tagów XML przez tłumacze, ale umożliwia wykonywanie prac nad tłumaczeniem poza projektem programu Microsoft Visual Studio. Takie podejście może działać dobrze w przypadku projektów, które należy przetłumaczyć na niewielką liczbę języków. Format XLIFF jest formatem XML zaprojektowanym specjalnie do użytku w lokalizacji i powinien być dobrze obsługiwany przez niektórych dostawców lokalizacji lub narzędzia lokalizacyjne. Aby wygenerować pliki XLIFF z innych plików zasobów, takich jak resw lub resjson, można użyć zestawu narzędzi Multilingual App Toolkit.
Uwaga / Notatka
Lokalizacja może być również konieczna w przypadku innych zasobów, w tym obrazów i plików audio.
Należy również wziąć pod uwagę następujące kwestie:
- Narzędzia lokalizacji Do analizowania plików zasobów jest dostępnych wiele narzędzi lokalizujących i umożliwia edytowanie tylko ciągów translatowalnych przez tłumaczy. Takie podejście zmniejsza ryzyko przypadkowego edytowania tagów XML przez tłumacza. Ale ma wadę wprowadzenia nowego narzędzia i procesu do procesu lokalizacji. Narzędzie lokalizacji jest dobre w przypadku projektów z dużą liczbą ciągów, ale niewielką liczbą języków. Aby dowiedzieć się więcej, zobacz Jak korzystać z Multilingual App Toolkit.
- dostawcy lokalizacji Rozważ użycie dostawcy lokalizacji, jeśli aplikacja zawiera długie ciągi tekstowe, które trzeba przetłumaczyć na dużą liczbę języków. Dostawca lokalizacji może udzielić porad dotyczących narzędzi i procesów, a także tłumaczenia plików zasobów. Jest to idealne rozwiązanie, ale jest również najbardziej kosztowną opcją i może zwiększyć czas realizacji przetłumaczonej zawartości.
Zachowaj spójność kluczy dostępu i etykiet
Jest wyzwaniem, aby 'zsynchronizować' klucze dostępu wykorzystywane w dostępności z wyświetlaniem zlokalizowanych kluczy dostępu, ponieważ dwa zasoby ciągów znaków są rozdzielone na dwie osobne sekcje. Pamiętaj, aby podać komentarze dla ciągu etykiety, takie jak: Make sure that the emphasized shortcut key is synchronized with the access key.
Obsługa dopisków fonetycznych (furigana) dla japońskich ciągów, które można sortować
Japońskie znaki kanji charakteryzują się posiadaniem więcej niż jednego sposobu czytania (wymowy) w zależności od słowa, w którym są używane. Prowadzi to do problemów podczas próby sortowania japońskich nazwanych obiektów, takich jak nazwy aplikacji, pliki, utwory itd. Japoński kanji w przeszłości był zwykle sortowany w zrozumiałej dla maszyn kolejności o nazwie XJIS. Niestety, ponieważ ta kolejność sortowania nie jest fonetyczna, nie jest bardzo przydatna dla ludzi.
furigana rozwiązuje ten problem w ten sposób, umożliwiając użytkownikowi lub twórcy określenie fonetyki znaków, które są używane. Jeśli używasz poniższej procedury, aby dodać aplikację furigana do nazwy aplikacji, możesz upewnić się, że została ona posortowana we właściwej lokalizacji na liście aplikacji. Jeśli nazwa aplikacji zawiera znaki kanji i nie zostało podane furigana, a język interfejsu użytkownika lub kolejność sortowania jest ustawiona na japoński, system Windows dokłada wszelkich starań, aby wygenerować odpowiednią wymowę. Istnieje jednak możliwość sortowania nazw aplikacji zawierających rzadkie lub unikatowe odczyty w ramach bardziej typowego odczytu. Dlatego najlepszym rozwiązaniem dla japońskich aplikacji (zwłaszcza zawierających znaki kanji w nazwach) jest podanie wersji furigana nazwy aplikacji w ramach procesu lokalizacji japońskiej.
Dodaj "ms-resource:Appname" jako nazwę wyświetlaną pakietu i nazwę wyświetlaną aplikacji.
Utwórz folder ja-JP w obszarze ciągów i dodaj dwa pliki zasobów w następujący sposób:
strings\ en-us\ ja-jp\ Resources.altform-msft-phonetic.resw Resources.reswW obszarze Resources.resw dla ogólne, ja-JP: Dodaj zasób tekstowy dla nazwy aplikacji "希蒼"
W obszarze Resources.altform-msft-phonetic.resw dla japońskich zasobów furigana: Dodaj wartość furigana dla parametru AppName "のあ"
Użytkownik może wyszukać nazwę aplikacji "希蒼" przy użyciu wartości furigana "のあ" (noa) oraz wartości fonetycznej "まれあお" (mare-ao), korzystając z funkcji GetPhonetic z Edytora metod wejściowych (IME).
Sortowanie jest zgodne z formatem Regional Control Panel:
- W obszarze ustawień regionalnych użytkownika japońskiego,
- Jeśli furigana jest włączona, wtedy "希蒼" jest sortowane pod "の".
- Jeśli brakuje furigany, "希蒼" jest sortowane pod literą "ま".
- W ustawieniach regionalnych użytkownika niejapońskiego,
- Jeśli furigana jest włączona, wtedy "希蒼" jest sortowane pod "の".
- Jeśli brakuje furigany, "希蒼" jest sortowany w obszarze "漢字".
Tematy pokrewne
- wytyczne dotyczące globalizacji
- Lokalizowanie ciągów w interfejsie użytkownika i w manifeście pakietu aplikacji
- Dostosuj swoje zasoby pod kątem języka, skali, wysokiego kontrastu i innych czynników
- Dostosuj układ i czcionki oraz obsługuj RTL
- Aktualizowanie obrazów w odpowiedzi na zdarzenia zmiany wartości kwalifikatora
Przykłady
Windows developer