キレイにする
Swift の場合、ローカリゼーションを少し良くするより良い解決策があります。それほど面倒ではありません。次の拡張子を使用できます。
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
}
func localizedWithComment(comment:String) -> String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: comment)
}
}
これで、何かをローカライズしたいときはいつでも、文字列プロパティとしてリクエストできます:
let text = "my-localization-key".localized
また、現在のシステム言語/ロケールに基づいてローカライズ文字列を取得します。
いくつかのヒント
より大きなプロジェクトがある場合は、ローカリゼーションのエクスポート/新しい言語の追加を処理するマネージャーを調べる価値があります。たとえば、私はCrowdinを使用していますが、いくつかのサービスがより魅力的であると感じるかもしれません. すばらしいことに、手動ですべてを行う必要はありません。キー/翻訳を挿入するだけで、使用しているすべての言語のエクスポートが自動的に行われます。
また、キーの適切な命名に従ってください。人々が行っていること/私の経験に基づいて、論理コンポーネント/モジュールごとにキーに名前を付けるのが賢明だと思います。たとえば、次のようになります。
"Profile.NavigationBar.Title" = "Profile";
"Profile.NavigationBar.Button.Edit" = "Edit;
このようにして、何がどこにあるのかをすぐに確認できます。
最後に、ローカリゼーションは一般的に非常に苦痛です。ローカリゼーションから実際のコードを作成できるジェネレーターがあるため、コンパイラーがチェックします。GitHub で入手できます。
幸運を!
bundle-access 構文が変更された Swift 4+ の更新:
extension String
{
var localized: String
{
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
func localizedWithComment(comment:String) -> String
{
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: comment)
}
}