Tworzenie wersji językowych aplikacji (iOS)

PL
Data dodania: 2011-09-09, Autor: Karol Wierzchołowski, Dodał: Karol, Wyświetleń: 390

Zacznijmy zatem od stworzenia prostego projektu składającego się z jednej etykiety i jednego rysunku. Będzie to wersja angielska naszej aplikacji. Później dodamy obsługę wersji polskiej.

  • Tworzymy nowy projekt View-based Application o nazwie LangProject.
  • Edytujemy plik LangProjectViewController.xib i umieszczamy w widoku obiekt Label. Nadajemy mu treść "Hello, World!".
  • Dodajemy do projektu jakiś plik graficzny, np. Rysunek.png, a następnie umieszczamy w widoku obiekt Image View i wyświetlamy w nim dołączony rysunek.
  • Przechodzimy do pliku LangProjectViewController.h i dodajemy w nim właściwość label.
#import <UIKit/UIKit.h>

@interface LangProjectViewController : UIViewController
{
    IBOutlet UILabel *label;
}
@property (nonatomic, retain) IBOutlet UILabel *label;

@end
  • W pliku LangProjektViewController.m również dodajemy obsługę tej właściwości.
#import "LangProjectViewController.h"

@implementation LangProjectViewController

@synthesize label;

-(void)dealloc {
    [label release];
    [super dealloc];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
  • Wracamy do pliku LangProjektViewController.xib i tworzymy połączenie obiektu Label z właściwością label.
  • Po uruchomieniu programu powinien on wyglądać tak:

Możemy teraz rozpocząć przygotowanie polskiej wersji językowej aplikacji. W tym celu:

  • Klikamy prawy klawisz myszy w oknie z listą plików i z menu podręcznego wybieramy New File. Pokaże się okno wyboru szablonu. Wybieramy szablon Strings File z sekcji Resources. Plik nazywamy Localizable.strings.
  • Stworzony zostanie nowy plik w naszym projekcie. Przechodzimy do jego edycji i wpisujemy:
/* 
  Localizable.strings
  LangProject

  Created by _Autor_ on 23.08.2011.
  Copyright 2011 __MyCompanyName__. All rights reserved.
*/

"LabelPowitanie"="Hello, World!";
  • Jest to plik, w którym nadajemy dowolnym etykietom pewne wartości. Zarówno etykiety jak i wartości umieszczamy w cudzysłowach i rozdzielamy znakiem "=". Z poziomu kodu źródłowego możemy odwoływać się do tych etykiet korzystając z funkcji NSLocalizedString. Dopiszmy więc dodatkową linię w pliku LangProjektViewController.m.
- (void)viewDidLoad
{
    [super viewDidLoad];
    label.text=NSLocalizedString(@"LabelPowitanie", @"Witaj Świecie");
}
  • Jako pierwszy parametr funkcji NSLocalizedString podajemy etykietę, którą użyliśmy w pliku Localizable.strings. W naszym przykładzie użyliśmy etykiety LabelPowitanie, także funkcja ta zwróci tekst "Hello, World!" - tekst przypisany do tej etykiety. Drugi z parametrów to komentarz. Informuje on nas tylko o tym, co znajduje się pod tą etykietą (czasami etykiety nazywa się np. P001, P002, P003 i wówczas w kodzie trudno byłoby się domyśleć, co pod etykietą się znajduje).

  • Zaznaczamy plik Localizable.strings w oknie plików i przełączamy się na zakładkę File Inspector (prawy panel). Odszukujemy sekcję Localization i wciskamy w niej ikonkę +. Nasz plik zostanie odznaczony, zaznaczamy więc go ponownie. W okienku Localization widoczny będzie wpis English. Klikamy ponownie w ikonę + i z menu, które się pojawi wybieramy Polish (PL).

  • W ten sposób stworzyliśmy nasz plik w dwóch wersjach językowych - polskiej i angielskiej. Kiedy nasz program uruchomiony będzie na iPhone z ustawionym językiem polskim - załaduje się polska wersja tego pliku. Kiedy będzie to iPhone z angielską wersją językową - wczyta się także angielska wersja językowa tego pliku. W oknie z listą plików obok Localizable.strings pojawiła się mała strzałeczka. Klikając ją rozwiniemy drzewo zapewniające dostęp do obu wersji językowych pliku. Zaznaczmy zatem Localizable.strings (Polish) i w edytorze wpisujemy:

/* 
  Localizable.strings
  LangProject

  Created by _Autor_ on 23.08.2011.
  Copyright 2011 __MyCompanyName__. All rights reserved.
*/

"LabelPowitanie"="Witaj Świecie!";
Uwaga! Jeśli po uruchomieniu programu, pomimo ustawienia polskiej wersji językowej w symulatorze, nadal nie widzimy komunikatu "Witaj Świecie", powinniśmy usunąć program z symulatora, wybrać z menu Product opcję Clean, później Build i uruchomić go ponownie, aby zainstalowała się nowa wersja dwujęzyczna.
  • W powyższy sposób powinniśmy odwoływać się do wszystkich komunikatów w naszym programie. Również wszelkie napisy wyświetlane w różnych obiektach powinny być pobierane z pliku Localizable.strings. Dzięki temu rozwiązaniu, tłumacząc tylko ten jeden plik na dowolny język, stworzymy nową lokalizację naszej aplikacji.

  • Czasami może zajść jeszcze potrzeba dodania odpowiedniej wersji językowej rysunku umieszczonego w programie. Robimy to tak samo jak tłumaczyliśmy plik Localizable.strings, a więc - odszukujemy plik Rysunek.png i dodajemy do niego dwie lokalizacje: English i Polish. Następnie rozwijamy drzewko obok Rysunek.png i zaznaczamy Rysunek.png (Polish). Klikamy na nim prawy klawisz myszy i z menu, które się pojawi wybieramy Show in Finder. Pokaże się okno Findera a w nim zaznaczony będzie plik Rysunek.png. Ma to być wersja polska tego pliku, dlatego skopiujmy w to miejsce nową jego wersję, zastępując dotychczasową.

Dokładnie w ten sam sposób możemy dodać do projektu różne wersje ikony i splasha.
  • Teraz, po uruchomieniu programu ujrzymy okno:
Korzystając z powyższej metody możemy również dodawać nowe wersje językowe wszystkich plików XIB. Wystarczy zaznaczyć taki plik, stworzyć lokalizacje np. Polish i English, a następnie przetłumaczyć taki plik. Rozwiązanie to ma jednak pewne wady. Po pierwsze, mamy problem z wysłaniem takiego pliku do tłumacza i po drugie - zmieniając coś w interfejsie zmieniać będziemy tylko wersję danego języka. Dlatego odradzam tę metodę na rzecz przedstawionej wcześniej.

Ostatnia rzecz, jaka jeszcze może się przydać - to tłumaczenie tytułu aplikacji. Jeśli chcemy przygotować różne wersje tytułu (wyświetlanego na springboardzie) musimy odszukać pliku _InfoPlist.strings__ i stworzyć jego lokalizacje Polish i English. Następnie należy edytować te pliki i dodać do nich wpis (w przykładzie otworzony jest plik InfoPlist.strings Polish).

/* Localized versions of Info.plist keys */

"CFBundleDisplayName" = "Tytuł Polski";

 


Aby dodawać komentarze musisz być zalogowany!


Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?