poniedziałek, 16 maja 2016

[DSP2016] iOS prosto z poligonu odc.5 (lokalizacja)

Tym razem bardziej lightowo, czasami tak trzeba, jeśli ma się w dalszych planach mocniejszy i trudniejszy materiał. Dziś opiszę, jak przygotowałem wersje anglo- i polskojęzyczną mojej dotychczasowej app-ki na iOS. Możecie to sprawdzić jak zawsze na github.

IMG_0031  IMG_0032

Lokalizacja w iOS nie jest przesadnie trudna, aczkolwiek wymaga kilku kroków. Oto linki z oficjalnej dokumentacji Apple, z którymi możemy się zapoznać:

Najbardziej pomógł mi jednak tutorial ze strony http://www.appcoda.com/localization-tutorial-ios8/. Znalazłem też inny na https://www.raywendeadanrlich.com/64401/internationalization-tutorial-for-ios-2014. Ten pierwszy generalnie jest lepszy, pokazuje więcej zagadnień i jest w Swift. Nie mówi jednak wszystkiego i ten drugi może być dla niego pewnym uzupełnieniem. Żaden z nich nie powiedział jednak o jednej rzeczy, a mianowicie jak… otworzyć w Xcode odpowiednią zakładkę z ustawieniami projektu, od której wszystko się zaczyna. Jeśli ktoś nie będzie mógł trafić, polecam link http://stackoverflow.com/questions/33614747/ios-localization-in-xcode-7.

Wiedza zawarta w powyższych linkach jest w zupełności wystarczająca do wykonania naszego zadania. Nie będziemy się więc przesadnie rozwodzić, dokonamy tylko krótkiego podsumowania z fragmentami plików zasobów i kodu.

Krok 1 - włączenie lokalizacji w całym projekcie, a konkretnie u nas dla plików storyboard. Projekt natywnie został stworzony w języku angielskim, więc dodałem tylko do niego kulturę polską. Zaowocowało to odpowiednią strukturą w projekcie i powstaniem plików na tłumaczenia polskie. Zrobiłem to dla każdego storyboard, natomiast aktualnie praktyczne znaczenie ma Main.storyboard. W wygenerowanym pliku Main.strings w miejscu angielskich napisów powstawiałem polskie, np:

/* Class = "UINavigationItem"; title = "Light Organ"; ObjectID = "G1V-9d-2Ho"; */
"G1V-9d-2Ho.title" = "Kolorofon";

Krok 2 - tłumaczenia dla napisów w kodzie. W projekcie możemy stworzyć plik tekstowy o nazwie Localizable.strings i włączamy jego lokalizację dla kultur angielskiej i polskiej. Następnie wstawiamy tłumaczenia w postaci klucz = wartość, np:

/* Unknown artist */

"unknownArtist" = "Nieznany wykonawca";

W kodzie aplikacji sztywne stringi zastępujemy wywołaniem funkcji NSLocalizedString z podaniem klucza i opcjonalnie komentarza. Przykładowo w FileListViewController mamy linijkę:

var artist = NSLocalizedString("unknownArtist", comment: "Unknown Artist")

Krok 3 - przetłumaczenie nazwy aplikacji. Podobnie jak w Android chcemy, by w języku polskim app-ka nazywała się “Kolorofon”, a po angielsku “Light Organ”. Jak tego dokonać? Tworzymy plik InfoPlist.strings (dla kultur en i pl) w taki sam sposób jak wcześniej Localizable.strings.  Ustawiamy w nim klucz CFBundleDisplayName na pożądaną wartość. Dla kultury polskiej wygląda to tak:

CFBundleDisplayName = "Kolorofon";

Następnym razem może wspomnimy o jeszcze jednej drobnej rzeczy, ale generalnie już czas na więcej hardcore’u –Winking smile

Brak komentarzy: