iOS用ローカリゼーションガイド







ローカリゼーションは、アプリケーションの他の言語のサポートを作成するプロセスです。 多くの場合、最初に英語のインターフェイスを使用してアプリケーションを作成し、次にそれを他の言語、たとえば日本語にローカライズします。



ローカリゼーションプロセスには時間がかかり、Xcodeの更新に伴いその手順はゆっくりと変化します。 この投稿では、Xcodeの最新バージョン(7.3.1)に基づいて各ステップを説明します。



Alconostに翻訳



ローカリゼーションの作業を開始する前に、「Use Base Internationalization」オプションを選択してください。







基本的な国際化とは何ですか?



プロジェクトを作成すると、Xcodeはデフォルト言語のリソースとファイル構造を自動的に生成します。







これは、いわゆるベース言語です。 グローバル市場向けのアプリケーションを作成する場合、基本的な言語リソースには通常、英語のテキストが含まれます。



新しいローカリゼーションの追加



したがって、言語リソースのデフォルトの基本構造があります。 新しい言語のサポートを追加しましょう。



Project Navigatorでプロジェクトファイルを選択し、プロジェクトのリスト(プロジェクト)およびターゲットパラメーター(ターゲット)でプロジェクトを選択します。 [情報]タブを開き、[ローカライズ]ブロックの下の[+]ボタンをクリックします。 次に、ドロップダウンリストに表示されている言語からサポートする言語を選択します。







Xcodeは、新しい言語用に追加する必要のあるリソースのセットを含むダイアログを開きます。 [完了]ボタンをクリックすると、これらのファイルが[新しい言語] .lprojという新しい言語プロジェクトのフォルダーに作成されます。 (この例では、日本語のサポートがそれぞれ追加され、ja.lprojフォルダーが作成されました。)







これで、次の例のように、プロジェクトフォルダーにファイル構造ができました。







Localizable.stringsファイルはどこにありますか?



Localizable.stringsファイルは、キー/値のペアとして翻訳データを追加する場所です。

Xcodeの以前のバージョンは、デフォルトでLocalizable.stringsファイルを生成しましたが、そのコピーは他の言語用に簡単に作成できました。



Xcodeの最近のバージョンは、デフォルトでLocalizable.stringsファイルを作成しません。



Localizable.stringsファイルを追加するには、[ファイル]→[新規]→[ファイル]を選択してから、[iOSリソース]タブで文字列(文字列ファイル)ファイルを選択し、Localizable.stringsという名前を付けてファイルを作成します。











これで、以下の例のように、ベース言語のLocalizable.stringsファイルが作成されました。







日本語のLocalizable.stringsを追加するには、ブラウザ(ファイルインスペクター)で日本語(日本語)を選択します。 これにより、ja.lprojフォルダーに新しいLocalizable.stringsファイルが作成されます。







これで2つのLocalizable.stringsファイルができました。1つはBase.lprojフォルダーにあり、もう1つはja.lprojフォルダーにあります。



アプリケーションで使用される単語とフレーズをベース言語のLocalizable.stringsファイルに追加しましょう。



以下は「Welcome」=「Welcome」を追加する例です。



左側はいわゆるキーであり、NSLocalizedStringメソッドはその助けを借りて右側からテキスト(値)を抽出します。 これは、このデータ型がどのように見えるかです-キー/値のペア。







以下は、NSLocalizedStringメソッドの例です。 キーをメソッドの最初のパラメーターとして設定することにより、Localizable.stringsファイルから対応する値を抽出して返すことができます。 この例では、タイトル、メッセージ、および通知ボタンのローカライズされた文字列を取得します。



let alertTitle = NSLocalizedString("Welcome", comment: "") let alertMessage = NSLocalizedString("Thank you for trying this app, you are a great person!", comment: "") let cancelButtonText = NSLocalizedString("Cancel", comment: "") let signupButtonText = NSLocalizedString("Signup", comment: "") let alert = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: UIAlertControllerStyle.Alert) let cancelAction = UIAlertAction(title: cancelButtonText, style: UIAlertActionStyle.Cancel, handler: nil) let signupAction = UIAlertAction(title: signupButtonText, style: UIAlertActionStyle.Default, handler: nil) alert.addAction(cancelAction) alert.addAction(signupAction) presentViewController(alert, animated: true, completion: nil)
      
      





アプリケーションを起動すると、英語のテキストを含む通知が表示されます。







次のステップ:日本語テキストをja.lprojフォルダーのLocalizable.stringsファイルに追加します。 同じキーを使用しますが、値を対応する日本語への翻訳に置き換えます。







次に、iOSシミュレーターで、電話の言語を日本語に切り替え、アプリケーションを起動して、日本語のテキストを含む通知を確認します。







ローカライズ結果を確認する必要があるたびに電話言語を切り替えるのは面倒です。 Xcodeは、iOSシミュレーターで実行されているアプリケーションの言語のみを切り替える便利な機能を提供します。



これを行うには、Xcodeウィンドウの左上隅にあるドロップダウンメニューから[スキームの編集]を選択し、アプリケーション言語をシステム(システム言語)から日本語(日本語)に変更します。 (紛失した場合は、下のスクリーンショットを参照してください。)



この構成では、シミュレーターの電話言語は切り替えられませんが、アプリケーション内の環境の言語は指定した言語に変更されます。 これは、複数の言語を追加し、それらを切り替えてローカライズの結果を確認する場合に便利です。







ストーリーボードのローカライズ



NSLocalizedStringを使用してローカライズされたテキストを抽出する方法と、Localizalbe.stringsファイルのデータを準備する方法がわかりました。



これは、ローカライズされたテキストをプログラムでユーザーに表示するのに十分です。

次のステップは、ストーリーボードで定義されたテキスト(ボタン名など)のローカライズをサポートすることです。 ストーリーボードでボタンまたはショートカットの名前を指定し、View Controller(ViewControllers)でこれらのテキストをプログラムで変更しない場合、.storyboardファイルのローカライズを行う必要があります。



ストーリーボードで使用される単語に翻訳データを追加するには、最初にProject Navigatorでストーリーボードファイルを選択し、次に日本語(日本語)を見つけて右側のブラウザー(ファイルインスペクター)に追加します。 これにより、ja.lprojフォルダーに[StoryboardFileName] .stringsファイルが作成されます。 次の例では、Main.storyboardファイル用にファイルMain.strings(日本語)が作成されます。







Main.stringsファイルには、同様のものが表示されます。



 /* Class = "UIButton"; normalTitle = "Get Started"; ObjectID = "qs4-6I-gUp"; */ "qs4-6I-gUp.normalTitle" = "Get Started";
      
      





「はじめに」の部分を適切な日本語のフレーズに置き換えます。



 /* Class = "UIButton"; normalTitle = "Get Started"; ObjectID = "qs4-6I-gUp"; */ "qs4-6I-gUp.normalTitle" = "始める";
      
      





アプリを起動します。 ボタン名が日本語に正しくローカライズされていることを確認してください。



[ストーリーボード] .stringsファイルの何が問題になっていますか



唯一の問題は、ストーリーボードファイルに新しいユーザーインターフェイスコンポーネントを追加しても、Main.stringsファイルが更新されないことです。



したがって、常にインターフェイスのコンポーネントを最初に決定してから、たとえばブラウザーでの日本語ローカライズ(ファイルインスペクター)を含むMain.stringsを作成する必要があります。



アプリケーション名のローカリゼーション



Info.plistファイルからアプリケーションまたは他の何かの名前をローカライズするには、InfoPlist.stringsファイルを作成します。



「ファイルへ移動」→「新規」→「ファイル」を選択してから、「iOSリソース」タブで文字列(文字列ファイル)ファイルを選択し、InfoPlist.stringsという名前を設定します。 InfoPlist.stringsファイルをBase.lprojフォルダーに保存します。 (XcodeはこのInfoPlist.stringsファイルをベース言語として分類します。)



通常、info.plistファイルでこれら2つの値をローカライズします。





以下の例のように、これらのキーのアプリケーション名と著作権情報を提供します。



 /* InfoPlist.strings LocalizationTutorialApp Created by Takamitsu Mizutori on 2016/07/25. Copyright 2016年 Goldrush Computing Inc. All rights reserved. */ "CFBundleDisplayName" = "MyApp"; "NSHumanReadableCopyright" = "2016 Goldrush Computing Inc. All rights reserved.";
      
      





次に、ブラウザー(ファイルインスペクター)で、日本語を選択してInfoPlist.stringsをja.lprojフォルダーに追加します(このため、InfoPlist.stringsファイルは選択したままにしておく必要があります)。







InfoPlist.strings(日本語)ファイルで、例のように値を日本語の翻訳に置き換えます。



 /* InfoPlist.strings LocalizationTutorialApp Created by Takamitsu Mizutori on 2016/07/25. Copyright 2016年 Goldrush Computing Inc. All rights reserved. */ "CFBundleDisplayName" = "マイアプリ"; "NSHumanReadableCopyright" = "2016年 Goldrush Computing Inc. All rights reserved.";
      
      





アプリケーションを起動し、アプリケーションの名前が日本語で正しくローカライズされているかどうかを確認します。







これが、アプリケーションを別の言語にローカライズするプロセス全体です。



アプリケーションをローカライズする新しい方法



私は多くのアプリケーションを書き、ローカライズに多くの仕事をしました。 作業時間がかなりかかるため、私は常にそれを簡素化する方法を探しました。 最後に、ローカライズプロセスを容易にするツールを作成しました-InAppTranslationと呼ばれます。 興味がある場合は、当社のウェブサイト-inapptranslation.comにアクセスしてください。



翻訳者について



この記事はAlconostによって翻訳されました。



Alconostは、60の言語でアプリケーション、ゲーム、およびサイトをローカライズします 。 ネイティブ翻訳者、言語テスト、APIを備えたクラウドプラットフォーム、継続的なローカリゼーション、プロジェクトマネージャー24時間365日、あらゆる形式の文字列リソース。



また、Google PlayおよびApp Storeの販売、画像、広告、トレーニング、ティーザー、エクスペラー、トレーラー用の広告およびトレーニングビデオも作成しています。



続きを読む: alconost.com



All Articles