iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
今回はStoryboardではなく、ソースコード中に言語に依存する文字列を埋め込んでいる場合の多言語化に挑戦だ。
ソースコード中に@"文言"で文字列を埋め込んでいる箇所をNSLocalizedString(@"文言", nil)に置換する。ベースは英語版の前提で話を進めているので、文言に相当する文字列はASCIIだ。
cell.detailTextLabel.text = NSLocalizedString(@"Detail", nil);
前回、Storyboardから文言を抜き出すターゲットを用意したが、これにNSLocalizedString()で多国語化する文字列を埋め込んだソースから文言を抜き出すスクリプトを追加する。
genstrings Homepwner/MasterViewController.m -o Homepwner/en.lproj
cp -p Homepwner/en.lproj/Localizable.strings Homepwner/ja.lproj/
このターゲットを実行すると、Localizable.stringsというファイルが生成されるはずだ。
ここからが前回の反省点をふまえた手順だ。
resourcesというグループを作成して多国語化で使用する文言のファイルをここに格納する。Finderからドラッグ&ドロップで追加という事になるか、これで追加するのは、en.lproj配下のファイルのみ。
追加したLocalizable.stringsを選択して、LocalizationとしてJapaneseを追加する。
すると、ja.lprojにコピーが生成され、Xcode上の表示も操作しやすくなると思う。この時、この操作の前にja.lproj配下のファイルを日本語化していたら、英語版ファイルで上書かれるので注意する事。
Localizable.stringsをカスタマイズ。
/* No comment provided by engineer. */
"Detail" = "詳細表示";
実行