2017-06-19 1 views
1

iosアプリケーションでサポートされる言語を設定するにはどうすればよいですか? たとえば、現在の日を取得するためにNSDateを使用します。デバイス言語がサポートされている言語以外の場合NSDateFormatterはデバイスの言語で「日」を返しますが、その言語をサポートしていない場合は英語で取得したいと考えています。iosアプリケーションローカライゼーション

NSLocalを使用して特定の言語で日を取得する方法があることは知っていますが、他の文字列も変換する必要があるため、そのようにしたくありません。

答えて

0

Apple documentationはこれをかなり明確にカバーしています。私はあなたが必要とするのは「日」という言葉ですが、次のようにすれば、次のように言葉を含めると次のようになります:

1)あなたはすべての単語(String)をアプリケーションを単一の.swiftファイルに追加します。各ワードは、デバイス設定でデバイスのNSLocalセットごとにローカライズされた文字列にこの文字列を変換する関数で返されるべきである:

struct Localization { 
    static let all: String = { 
     return getLocalized("All") 
    }() 
    static let allMedia: String = { 
     return getLocalized("All Media") 
    }() 
    static let back: String = { 
     return getLocalized("Back") 
    }() 

    // ...and do this for each string 

} 

2)また、文字列を変換する静的関数を含める必要があります。このファイル

static func getLocalized(_ string: String) -> String { 
    return NSLocalizedString(string, comment: "") 
} 

ここでは、NSLocalizedString(メソッドはすべてあなたのために重労働を行います。あなたのプロジェクトで.XLIFFファイルを調べると(それになる)、デバイスごとに正しい文字列を取得しますNSLocale。このメソッドには、言語変換プログラムに渡した "文字列"パラメータの処理方法を伝える "コメント"も含まれています。

3).swiftファイルに配置したすべての文字列を確認するには、それぞれを.XLIFFfileに含める必要があります。これは、言語エキスパートが翻訳し、.XLIFFに文字列ごとに適切な翻訳語を含める必要があるファイルです。前に述べたように、これはあなたのプロジェクトの中に一度含まれていたファイルで、NSLocalizedString(メソッドはこのファイルを検索し、正しい翻訳された文字列を取得します。

それだけです!

+0

CLGeocoderを使用してユーザーの都市を取得する必要がある場合はどうすればいいですか?ユーザーの都市をデバイス言語で返します。サポートされている言語のみを使用する必要があります。 –