残りの Web サービスを呼び出している ios アプリケーションがあります。サーバーから返されるエラー コードのディクショナリと、表示する対応するメッセージを含むプロパティ リスト ファイルをアプリに作成しました。
異なる言語用に複数のプロパティ リスト ファイルを作成することを考えています。
ロケールに基づいて特定のプロパティ リストを取得するようにアプリを作成するにはどうすればよいですか?
残りの Web サービスを呼び出している ios アプリケーションがあります。サーバーから返されるエラー コードのディクショナリと、表示する対応するメッセージを含むプロパティ リスト ファイルをアプリに作成しました。
異なる言語用に複数のプロパティ リスト ファイルを作成することを考えています。
ロケールに基づいて特定のプロパティ リストを取得するようにアプリを作成するにはどうすればよいですか?
あなたは、サーバーがエラー コードとメッセージを生成していると言っています。
なので、もっと方法はあると思います。
最初に、サーバーへのリクエストでロケール ヘッダーを送信して、サーバーがすべてのローカリゼーションを行うことができます (私の意見では、解決策 #2 ほど良くはありません)。
したがって、サーバーがエラーコードを返すだけで、クライアント側でメッセージを処理する方法を好むでしょう。サポートしたい言語ごとに、xcode で言語プロジェクトを作成できます: http://www.ibabbleon.com/iphone_app_localization.html#extract
localizable.strings ファイルでは、次のようにします。
"RestServiceXYErrorTitle_1" = "Authentication failed";
"RestServiceXYErrorMessage_1" = "Your credentials were wrong";
"RestServiceXYErrorTitle_2" = "Resource not available";
"RestServiceXYErrorMessage_2" = "The resource you requested is no longer available";
....
次に、サーバーから返されたエラー コード (例: 1) をローカライズ文字列と組み合わせます。
NSString *localizedTitleKey = [NSString stringWithFormat:@"RestServiceXYErrorTitle_%@", errorCode];
NSString *localizedMessageKey = [NSString stringWithFormat:@"RestServiceXYErrorMessage_%@", errorCode];
NSString *errorTitle = NSLocalizedString(localizedTitleKey,@"");
NSString *errorMessage = NSLocalizedString(localizedMessageKey,@"");
これは良い解決策になると思います