Lokalizowanie interfejsu za pomocą edytora tłumaczeń

Edytor tłumaczeń udostępnia skonsolidowany i edytowalny widok wszystkich domyślnych i przetłumaczonych zasobów w formie ciągów.

Wprowadzenie do tłumaczenia aplikacji na różne języki znajdziesz w artykule Obsługa różnych języków i kultur.

Rysunek 1. Edytor tłumaczeń pokazujący tekst aplikacji przed tłumaczeniem.

Zasoby w postaci ciągów znaków

Zasoby w postaci ciągu znaków dla projektu znajdują się w plikach strings.xml. Twój projekt ma domyślny plik strings.xml zawierający zasoby w domyślnym języku Twojej aplikacji, czyli język, którego oczekujesz od większości użytkowników aplikacji. Możesz też mieć przetłumaczone pliki strings.xml, które zawierają zasoby w postaci ciągów znaków dla innych języków, które chcesz obsługiwać w swojej aplikacji.

Gdy domyślny plik strings.xml będzie gotowy, możesz dodać tłumaczenia samodzielnie lub skorzystać z usług profesjonalistów. W obu przypadkach warto skorzystać z funkcji Android Studio, które pomogą Ci testować tekst możliwy do zlokalizowania i nim zarządzać. Informacje o profesjonalnych usługach tłumaczeniowych znajdziesz w sekcji Zamów usługi tłumaczeniowe.

Otwórz edytor tłumaczeń

Edytor tłumaczeń jest dostępny w Android Studio w tych miejscach:

Otwórz w widoku Androida

  1. W panelu Projekt > Android po lewej stronie wybierz ModuleName > res > wartości.
  2. Kliknij plik strings.xml prawym przyciskiem myszy i wybierz Otwórz edytor tłumaczeń.

    Edytor tłumaczeń wyświetli pary klucz-wartość z pliku strings.xml.

    Uwaga: po przetłumaczeniu plików strings.xml projekt ma wiele odpowiadających im folderów values z sufiksami wskazującymi język, np. values-es w przypadku języka hiszpańskiego. Domyślny plik strings.xml zawsze znajduje się w folderze values (bez sufiksu).

Rys. 1 przedstawia domyślny tekst aplikacji (w tym przypadku w języku angielskim) w Edytorze tłumaczeń dla prostej aplikacji przed wykonaniem tłumaczenia. Zawartość przetłumaczonych plików strings.xml pojawi się po prawej stronie kolumny Nie można przetłumaczyć z 1 kolumną dla każdego języka, jak widać na ilustracji 2.

Otwórz z pliku string.xml

Edytor tłumaczeń jest dostępny z poziomu dowolnego pliku strings.xml.

  1. W panelu Projekt > Android po lewej stronie wybierz ModuleName > res > wartości.
  2. Kliknij dwukrotnie plik strings.xml, aby otworzyć go do edycji.
  3. W pliku strings.xml kliknij link Otwórz edytor w prawym górnym rogu.

Uwaga: gdy klikniesz link Ukryj powiadomienie, link Otwórz edytor zniknie. Aby go przywrócić, zamknij projekt i otwórz go ponownie.

Otwórz w edytorze projektów

Możesz otworzyć edytor tłumaczeń w edytorze układu, aby zmienić domyślny i przetłumaczony tekst w celu lepszego dopasowania go do układu. Informacje o przełączaniu się między językami w edytorze projektów znajdziesz w artykule Wyświetlanie przetłumaczonego tekstu w edytorze projektów.

  1. W panelu Projekt > Android po lewej stronie wybierz ModuleName > res > układ.
  2. Kliknij dwukrotnie plik content_main.xml, aby otworzyć go do edycji.
  3. Kliknij kartę Projekt w lewym dolnym rogu, by wyświetlić Edytor projektów.
  4. W edytorze projektów wybierz listę Język .
  5. Wybierz Edytuj tłumaczenia .

Skonfiguruj wiersze, których nie można przetłumaczyć

W Edytorze tłumaczeń możesz wybrać opcję Nie można przetłumaczyć, aby wskazać, że nie chcesz tłumaczyć tekstu z tego wiersza. Tekst, którego nie chcesz tłumaczyć, może dotyczyć konkretnych produktów, np. nazw handlowych i znaków towarowych, albo terminów technicznych, które nie mają tłumaczenia.

Gdy zaznaczysz opcję Nie można przetłumaczyć, odpowiedni wiersz w domyślnym pliku strings.xml będzie zawierać element translatable="false". W poniższym przykładzie ciąg EasyApp w górnym wierszu nie jest przetłumaczony, ponieważ jest to nazwa produktu.

<resources>
    <string name="app_name" translatable="false">EasyApp</string>
    <string name="action_settings">Settings</string>
    <string name="easy_app">I am a Simple App!</string>
    <string name="next_page">Next Page</string>
    <string name="second_page_message">I am the Second Page!</string>
    <string name="title_activity_second">SecondActivity</string>
</resources>

Dodawanie i usuwanie języków

Edytor tłumaczeń obsługuje protokół BCP 47 oraz łączy kody regionów i regionów (krajów) w jedną grupę na potrzeby wybranych lokalizacji. Język określa więcej niż język. Ustawienia regionalne obejmują formatowanie zależne od kraju, takie jak data i godzina, waluty czy ułamki dziesiętne.

Aby dodać język:

  1. W edytorze tłumaczeń kliknij ikonę kuli ziemskiej .
  2. Z listy wybierz język, który chcesz dodać.

    Nowy język pojawi się w edytorze tłumaczeń, a do projektu zostanie dodany folder values-* z plikiem strings.xml. Na przykład w przypadku języka hiszpańskiego wpisz values-es.

Aby usunąć język:

Możesz usunąć język w edytorze tłumaczeń, usuwając wszystkie wartości w tej kolumnie (patrz sekcja Edytowanie, dodawanie lub usuwanie tekstu). Możesz też usunąć folder projektu dla tego języka w ten sposób:

  1. W panelu Projekt > Android po lewej stronie wybierz ModuleName > res.
  2. Kliknij prawym przyciskiem myszy folder values-* obok języka, który chcesz usunąć. Na przykład values-hi w języku hindi.
  3. Z listy wybierz Usuń, aby usunąć folder i jego plik strings.xml.

Edytowanie, dodawanie i usuwanie tekstu

Ustawienia tekstu możesz operować bezpośrednio w pliku strings.xml lub za pomocą edytora tłumaczeń. W tej sekcji opisano sposób korzystania z edytora tłumaczeń. W Edytorze tłumaczeń możesz edytować, dodawać lub usuwać tekst w widoku listy lub w polu Tłumaczenie u dołu Edytora tłumaczeń.

Rysunek 2. U góry widok listy i pole Tłumaczenie u dołu

Widok listy

Aby edytować lub dodać tekst:

  1. Kliknij dwukrotnie komórkę, w której chcesz edytować lub dodać tekst.
  2. Użyj funkcji kopiowania i wklejania za pomocą klawiatury, a jeśli masz klawiaturę obsługującą znaki diakrytyczne, pisz bezpośrednio w widoku listy.
  3. Naciśnij Tab lub przenieś kursor poza pole.

Aby usunąć tekst:

  1. Kliknij dwukrotnie komórkę, którą chcesz usunąć.
  2. W widoku listy zaznacz tekst i naciśnij Usuń.
  3. Naciśnij Tab lub przenieś kursor poza pole.

Pole tłumaczenia

Aby edytować lub dodać tekst:

  1. W widoku listy kliknij raz komórkę, w której chcesz edytować lub dodać tekst.
  2. W polu Tłumaczenie naciśnij klawisz kopiuj i wklej, a jeśli masz klawiaturę obsługującą znaki diakrytyczne, wpisz tekst bezpośrednio w polu Tłumaczenie.
  3. Naciśnij Tab lub przenieś kursor poza pole.

Aby usunąć tekst:

  1. Kliknij raz komórkę, którą chcesz usunąć.
  2. W polu Tłumaczenie zaznacz tekst i naciśnij Usuń.

Dodawanie i usuwanie kluczy

W Edytorze tłumaczeń w kolumnie Klucz znajduje się lista unikalnych identyfikatorów dla każdego elementu danych w plikach strings.xml. Klucze możesz dodawać i usuwać w edytorze tłumaczeń. Gdy usuniesz klucz, edytor tłumaczeń usunie ten klucz wraz ze wszystkimi powiązanymi tłumaczeniami. Edytor tłumaczeń korzysta z refaktoryzacji Safe Delete do usuwania klucza. Dzięki temu wiesz, czy tekst klucza jest używany w innym miejscu, i możesz wprowadzić niezbędne korekty przed usunięciem klucza. Dzięki refatorowaniu Safe Delete Twój kod nadal się skompiluje po usunięciu klucza.

Aby dodać klucz:

  1. W Edytorze tłumaczeń kliknij Dodaj klucz .
  2. W oknie wpisz nazwę klucza, wartość domyślną i lokalizację domyślnego pliku strings.xml.

    Rysunek 3. Dodaj klucz

Aby usunąć klucz, wykonaj te czynności:

  1. W Edytorze tłumaczeń wybierz klawisz, który chcesz usunąć.
  2. Kliknij Usuń klucze .
  3. W oknie Usuń zdecyduj, czy chcesz bezpiecznie usunąć plik i czy przeszukiwać go w komentarzach i ciągach tekstowych, a następnie kliknij OK.

    Rysunek 4. Usuń okno

    Jeśli do usuniętego klucza nie ma odniesień (użytkowań) lub jeśli wszystkie odwołania można bezpiecznie zwijać, klucz jest usuwany. W przeciwnym razie edytor tłumaczeń wyświetli okno Wykryto użycie z informacjami o wykrytych problemach.

    Rysunek 5. Usuń okno

  4. Wybierz Wyświetl wykorzystanie, aby zobaczyć, co zostanie usunięte. Okno Znajdź konflikty bezpiecznego usuwania pokazuje wszystkie przypadki, których nie można bezpiecznie usunąć, aby można było edytować odpowiedni kod.

    Rysunek 6. Niebezpieczne przypadki użycia

  5. Kliknij prawym przyciskiem myszy użycie, aby wyświetlić menu kontekstowe, i wybierz Przejdź do źródła, by wprowadzić niezbędne zmiany.
  6. W panelu Znajdź konflikty bezpiecznego usuwania wybierz Ponownie uruchom Bezpieczne usuwanie, aby upewnić się, że nie ma żadnych innych zastosowań, które wymagają uwagi.
  7. Po wyczyszczeniu użycia danych kliknij Do Refactor (Do refaktoryzacji), aby usunąć klucz.

Popraw błędy

Rysunek 7 przedstawia edytor tłumaczeń wyświetlający zawartość plików strings.xml w językach angielskim, hiszpańskim i francuskim. Czerwony tekst oznacza wiersze z błędami.

Rysunek 7. Czerwony tekst oznacza błąd, który trzeba naprawić

Aby poprawić błąd, najedź kursorem na czerwony tekst. Pojawi się wyjaśnienie problemu i jego rozwiązanie.

Gdy wprowadzisz zmiany w edytorze tłumaczeń, zostaną one zaktualizowane w plikach strings.xml. Gdy wprowadzisz zmiany w pliku strings.xml, zostaną one zaktualizowane w odpowiedniej kolumnie w Edytorze tłumaczeń.

Przykładowe poprawki w Edytorze tłumaczeń:

  • Rysunek 7 pokazuje, że wiersz app_name ma zaznaczoną opcję Nie można przetłumaczyć, ale dostępne jest tłumaczenie na język hiszpański. Usuń tłumaczenie na język hiszpański, aby poprawić błąd.
  • Rysunek 7 pokazuje, że w wierszu next_page brakuje tłumaczenia na język francuski. Aby naprawić błąd, skopiuj Page Suivante do komórki za pomocą klawiatury. Operacja kopiowania i wklejania na klawiaturze kopiuje do komórki tekst ze znakami diakrytycznymi.

Wyświetl przetłumaczony tekst w edytorze projektów

Aby zobaczyć, jak przetłumaczony tekst wyświetla się w układzie aplikacji, w Edytorze projektowania przełącz wersję tekstu między wersją domyślną a przetłumaczoną:

  1. W panelu Projekt > Android po lewej stronie wybierz ModuleName > res > układ.
  2. Kliknij dwukrotnie plik content_main.xml, aby otworzyć go do edycji.
  3. Kliknij kartę Projekt w lewym dolnym rogu, by wyświetlić Edytor projektów.
  4. W edytorze projektów wybierz listę Język .
  5. Wybierz Edytuj tłumaczenia .
  6. Wybierz język, w którym chcesz wyświetlać aplikację.

    Rysunek 8. Lista języków z wybraną opcją hiszpański

Edytor projektów wyświetla układ aplikacji w wybranym języku, w tym przypadku w języku hiszpańskim.

Rysunek 9. Edytor projektów wyświetlający tekst przetłumaczony w języku hiszpańskim

Ustawianie domyślnego języka Edytora projektów

Aby przywrócić domyślny język, kliknij es > Język .

Rysunek 10. Ustaw język domyślny

Testuj tekst możliwy do zlokalizowania i zarządzaj nim

Platforma Android i Android Studio zapewniają kilka funkcji, które ułatwiają zarządzanie tekstem aplikacji możliwym do zlokalizowania i testowanie go. Te funkcje zawierają opcje pomocne w przypadku problemów ze skryptami pisanymi od prawej do lewej (RTL), takimi jak arabski czy hebrajski. Testowanie zlokalizowanego tekstu umożliwia wprowadzanie zmian w tekście UI i jego układzie przed zatwierdzeniem wiadomości do repozytorium źródłowego w celu późniejszego wysłania do przetłumaczenia.

Refaktoryzacja projektu pod kątem obsługi RTL

Android Studio zawiera polecenie refaktoryzacji, które włącza obsługę tekstu dwukierunkowego w elementach TextView, ConstraintLayout i LinearLayout, dzięki czemu aplikacje mogą wyświetlać i umożliwiać użytkownikom edytowanie tekstu zarówno w skryptach od lewej do prawej (LTR), jak i od prawej do lewej (RTL). To polecenie umożliwia też automatyczne powielanie układów interfejsu aplikacji i wszystkich widżetów widoku. Aby zobaczyć zmianę kierunku tekstu i lustrzane odbicie układu, musisz też ustawić właściwości tekstu i kierunku układu w Edytorze układu.

Poniższa procedura pokazuje, jak refaktoryzować projekt pod kątem obsługi RTL:

  1. Wybierz Refaktor > Jeśli to możliwe, dodaj obsługę RTL, aby wyświetlić okno widoczne na rysunku 11.

    Rysunek 11. Dodaj obsługę RTL

    • Jeśli element <application> w pliku AndroidManifest.xml nie ma atrybutu android:supportsRTL="true", zaznacz pole wyboru Update AndroidManifest.xml.
    • Jeśli właściwość targetSdkVersion aplikacji ma wartość 17 lub wyższą, wybierz Zastąp właściwości lewej/prawej właściwościami początkowymi/końcowymi. W takim przypadku właściwości powinny używać parametrów „start” i „end” zamiast „left” i „right”. Na przykład android:paddingLeft zmieni się na android:paddingStart.
    • Jeśli targetSdkVersion Twojej aplikacji to 16 lub mniej, wybierz Wygeneruj wersje -v17. W tym przypadku kod XML powinien używać obu zestawów właściwości. Na przykład w pliku XML musisz użyć zarówno właściwości android:paddingLeft, jak i android:paddingStart.
  2. Aby wyświetlić okno Find Refactoring Preview (Znajdź podgląd refaktoryzacji), kliknij Uruchom.

    Rysunek 12. Sprawdź podgląd

  3. Kliknij Zrób refaktoryzację.

Więcej informacji o refaktoryzacji projektu pod kątem obsługi RTL znajdziesz w artykule o natywnej obsłudze RTL w Androidzie 4.2.

Właściwości tekstu i kierunku układu

W oknie Właściwości po prawej stronie znajduje się właściwość textDirection, której można używać z widżetami tekstowymi, oraz właściwość layoutDirection do zmiany kierunku komponentów tekstu i układu. Właściwości kierunku znajdziesz w oknie Właściwości po prawej stronie i działają z interfejsem API na poziomie 17 lub wyższym.

Aby zobaczyć zmianę kierunku tekstu i lustrzane odbicie układu, musisz też refaktoryzować projekt pod kątem obsługi RTL. W języku angielskim zmiana kierunku tekstu powoduje tylko przesunięcie znaków interpunkcyjnych z prawej na lewą stronę tekstu, na przykład „Hello, World!” („Witaj świecie!”). Aby zmienić język tekstu od prawej do lewej, musisz użyć w aplikacji języka od prawej do lewej. Jeśli chcesz używać języka angielskiego i zobaczysz, że tekst został zmieniony na RTL do celów testowych, użyj pseudolocales. Pseudojęzyki są niezależne od polecenia refaktoryzacji i właściwości kierunku.

Aby uzyskać dostęp do właściwości kierunku i z nich korzystać:

  1. W Edytorze układu wybierz widżet tekstowy.
  2. Otwórz okno Właściwości i wyszukaj właściwość RTL, której chcesz użyć.

    Aby ustawić wartość właściwości, wybierz jedną z tych opcji:

    • firstStrong: wartość domyślna w widoku głównym. Pierwszy silny znak kierunkowy określa kierunek akapitu. Jeśli nie ma wyraźnego znaku kierunkowego, kierunek akapitu jest uznanym kierunkiem układu widoku.
    • anyRtl: kierunek akapitu to RTL, jeśli zawiera mocne znaki od prawej do lewej. W przeciwnym razie jest to LTR, jeśli zawiera silne znaki LTR. Jeśli nie ma żadnej wartości, kierunek akapitu to rozpoznany kierunek układu widoku.
    • ltr: kierunek akapitu to LTR.
    • rtl: kierunek akapitu to RTL.
    • locale:kierunek akapitu pochodzi z języka systemowego.
    • dziedziczenie: wartość domyślna. Użyj kierunku ustawionego w elemencie nadrzędnym.
  3. Aby sprawdzić odwrócony tekst i układ, uruchom aplikację.

Pseudojęzyki

Pseudojęzyk to symulowany język, który zakłada cechy języków, które powodują problemy z interfejsem, układem, RTL i inne problemy z tłumaczeniem aplikacji. Pseudojęzyki umożliwiają szybkie i automatyczne tłumaczenia, które można odczytać w języku angielskim, aby uwzględniać wszystkie zlokalizowane wiadomości. Umożliwia to wychwytywanie w kodzie źródłowym wiadomości, których nie można przetłumaczyć.

Informacje o tym, jak używać pseudojęzyków, znajdziesz w artykule Testowanie aplikacji przy użyciu pseudojęzyków.