タグ付けされた質問 「nslocalizedstring」


15
Swiftで同等のNSLocalizedStringとは何ですか?
Swiftに相当するものはありNSLocalizedString(...)ますか?ではObjective-C、通常次のものを使用します。 NSString *string = NSLocalizedString(@"key", @"comment"); Swiftで同じことをするにはどうすればよいですか?私は関数を見つけました: func NSLocalizedString( key: String, tableName: String? = default, bundle: NSBundle = default, value: String = default, #comment: String) -> String しかし、それは非常に長く、まったく便利ではありません。

5
Swiftでローカライズされた説明とエラータイプを提供するにはどうすればよいですか?
Swift 3構文でカスタムエラータイプを定義してlocalizedDescriptionいErrorます。オブジェクトのプロパティによって返されるエラーのわかりやすい説明を提供したいと思います。どうすればできますか? public enum MyError: Error { case customError var localizedDescription: String { switch self { case .customError: return NSLocalizedString("A user-friendly description of the error.", comment: "My error") } } } let error: Error = MyError.customError error.localizedDescription // "The operation couldn’t be completed. (MyError error 0.)" がlocalizedDescriptionカスタムエラーの説明(「ユーザーにわかりやすいエラーの説明」)を返す方法はありますか?ここでのエラーオブジェクトはタイプErrorではなくタイプであることに注意してくださいMyError。もちろん、オブジェクトをMyErrorにキャストできます (error as? MyError)?.localizedDescription …

9
NSLocalizedStringを使用したベストプラクティス
私は(他のすべてと同様に)NSLocalizedStringアプリのローカライズに使用しています。 残念ながら、いくつかの「欠点」があります(必ずしもNSLocalizedString自体の障害ではありません)。 Xcodeの文字列のオートコンプリートはありません。これにより、エラーが発生しやすくなるだけでなく、作業が面倒になります。 同等の文字列がすでに存在することを知らなかっただけで、文字列を再定義してしまう可能性があります(つまり、「パスワードを入力してください」対「最初にパスワードを入力してください」)。 オートコンプリートの問題と同様に、コメント文字列を「記憶」/コピーして貼り付ける必要があります。そうしないgenstringと、1つの文字列に複数のコメントが表示されます。 genstring一部の文字列をローカライズした後で使用する場合は、古いローカライズを失わないように注意する必要があります。 同じ文字列がプロジェクト全体に散らばっています。たとえば、NSLocalizedString(@"Abort", @"Cancel action")どこでも使用している場合NSLocalizedString(@"Cancel", @"Cancel action")、コードの整合性を高めるために、コードレビューで文字列の名前を変更するように求められます。 私が行うこと(そして、SOでのいくつかの検索の後に、多くの人がこれを行うと思った)は、すべてのローカライズコードstrings.hを含む個別のファイルを用意すること#defineです。例えば // In strings.h #define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil) // Somewhere else NSLog(@"%@", NSLS_COMMON_CANCEL); これは基本的に、コード補完、変数名を変更するための単一の場所(したがってgenstringは不要)、および自動リファクタリングのための一意のキーワードを提供します。ただし、これは、#define本質的に構造化されていない(つまり、LocString.Common.Cancelなどの)ステートメントの集合全体を犠牲にすることになります。 ですから、これはいくらかうまく機能しますが、あなたのプロジェクトでどのようにそれを行うのかと思っていました。NSLocalizedStringの使用を簡略化する他のアプローチはありますか?それをカプセル化するフレームワークさえあるのでしょうか?

1
iOS 8.1シミュレータのローカリゼーションが壊れている(NSLocalizedString)
TL; DR: ローカリゼーションはxCode 6.1および8.1シミュレータでは機能しないようです。 回避策: [スキームの編集] >> [実行](サイドバー)>> [オプション]タブ>> [ アプリケーション言語]に移動します。シミュレーターでアプリを実行する言語を選択します。 長い話: xCodeを6.1に更新しました。このアップデートにより、iOS 7.xシミュレーターが削除され、8.xシミュレーターのみが残りました。 次の手順を実行しました。 7.xシミュレータをインストールしました プロジェクトをクリーンアップ シミュレータからアプリを削除しました プロジェクトの派生フォルダーを削除しました プロジェクトは英語と日本語をサポートしています。 7.1シミュレータ(5s)では、ローカリゼーションは期待どおりに機能します。 8.1シミュレーター(5秒)では機能しません。 Appleは実際のデバイスで動作するため、シミュレータで何かが壊れていると思います。 これに関する何かの入力、他の誰かが同様の問題を経験しましたか? 編集 シミュレータのバグのようです、参照: Apple Dev Forums

6
迅速な変数を持つNSLocalizedString
NSLocalizedStringを使用してアプリをローカライズしようとしています。XLIFFファイルをインポートすると、ほとんどがチャームのように機能しますが、何かが機能せず、一部の文字列がローカライズされていません。問題は、NSLocalizedStringに次のような変数が含まれていることが原因であることに気付きました。 NSLocalizedString(" - \(count) Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare") または NSLocalizedString("Notifica per \(medicina!) della prescrizione \(prescription!)\nMemo: \(memoTextView.text)", comment: "Messaggio della Local Notification") たぶん、これはこの種のものの正しい構文ではありません。誰かが私にそれを迅速に行う方法を説明できますか?どうもありがとうございました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.