私は、RESTサービスにアクセスするために3文字(ISO 639-2)の言語コードが必要なプロジェクトに取り組んでいます。 [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]
を使用して現在の言語設定を使用したいと考えていました。残念なことに、このメソッドは2文字(ISO 639-1)の言語コードを返すことを好みます。 NSLocaleに更新されたコードを返させる方法はありますか?または2文字の言語コードを3文字の言語コードに変換するために使用できる別の方法がありますか?iOSでは常にISO 639-2(3文字)の言語コードを取得しますか?
4
A
答えて
5
いいえ、できません。手動で変換する必要があります。これはあまり簡単ではありません。
8
Githubで私のコードをチェックし、NSLocaleのカテゴリでISO 639.2言語コードを取得してください。
[[NSLocale currentLocale] ISO639_2LanguageIdentifier];
0
ISO 3166-1の国コードについても同様の変換が必要でした。 iOSは私に2文字のコードをくれましたが、3文字のコードが必要でした。ここに私の解決策がある:
- ISOの国を取得するためのリソースファイル/ APIを見つける。 (例:https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes/tree/master/all)
- 2文字コードを検索し、一致する3文字コードに変換します。
あなたはこのシングルトンクラスすることを検討することができ、その国が唯一持っているいくつかのサンプルコード(与えられたあなたは上記のルークスGITプロジェクトの形式のISO-countries.jsonファイルを持っている)
import UIKit
import CoreTelephony
class CountryCode {
internal var _countries: [String: [AnyHashable: Any]]?
internal var countries: [String: [AnyHashable: Any]]? {
get {
if _countries == nil {
_countries = countriesDictionary()
}
return _countries
}
}
func convertToThreeCharacterCountryCode(twoCharacterCountryCode: String) -> String? {
let country = countries?[twoCharacterCountryCode.uppercased()]
return country?["alpha-3"] as? String
}
fileprivate func countriesDictionary() -> [String: [AnyHashable: Any]] {
var countries = [String: [AnyHashable: Any]]()
guard let url = Bundle.main.url(forResource: "iso-countries", withExtension: "json") else {
return countries
}
do {
let data = try Data(contentsOf: url)
if let dictionaries = try JSONSerialization.jsonObject(with: data, options: []) as? [[AnyHashable: Any]] {
for countryDictionary in dictionaries {
if let key = countryDictionary["alpha-2"] as? String {
countries[key] = countryDictionary
}
}
return countries
}
return countries
} catch {
return countries
}
}
}
一度ロードする。私は国を覚えておきたくないので(私のアプリではこれは起動時に一度だけ必要であった)、私はしなかった。
0
スウィフトでは、それはこのような単純なのです。このような変換が存在する場合
let currentLocale = NSLocale.current as? NSLocale
let code = currentLocale?.iso639_2LanguageCode()
関連する問題
- 1. get_current_languageから2文字の言語コードを取得する
- 2. javascriptで2文字の言語コードを取得していますか?
- 3. Guyrati言語(他の言語)のiosの文字列から単一文字を取得する方法
- 4. getSimCountryIsoは3文字または2文字を返しますISOコード
- 5. 3地点のISOコード(ISO 3166-1 alpha-3)からMSジオイドを取得
- 6. Googleの言語コードから言語名を取得するにはgoogle appsスクリプトで翻訳しますか?
- 7. Javaで言語のUnicode文字を取得する
- 8. MySQLで3文字以下の単語を取得する
- 9. CakePHPで現在の言語コードを取得するには?
- 10. iso国コードを取得
- 11. textView(iOS)の文字インデックスから単語を取得
- 12. Nunjucksテンプレート言語の文字列から部分文字列を取得する方法はありますか?
- 13. javascriptで日付なしのISO文字列を取得
- 14. Pythonで単語の最初の3文字を取得するには?
- 15. nopCommerce 3.9で言語文化の言語IDを取得する方法は?
- 16. C#:スカンジナビア語のアルファベットの文字を取得しますか?
- 17. C言語でアルファベットで文字の位置を取得する方法は?
- 18. HTML文字コードから文字を取得するには?
- 19. iso-8859-1で特殊文字を読み取り、同じ文字のutf-8値を取得します
- 20. Goプログラミング言語では、変数の型を文字列として取得できますか?
- 21. Mount-DiskImageでマウントされたISOのドライブ文字を取得するには
- 22. 文字列をC言語のコードに変換する方法#
- 23. Androidに文字ベースの言語を表示しますか?
- 24. アンドロイドアプリケーションでISO国コードを取得するには?
- 25. 文字列がJavaでISO言語の国であるかどうかを確認する方法
- 26. ISO-8859-1文字セットを通常の文字列に変換する方法
- 27. SQL文字列から列に3文字を取得
- 28. .resx-filesまたはRedisの言語文字列ですか?
- 29. 文字のASCIIコードをC言語で整数に格納する方法は?
- 30. C++の言語IDから言語名を取得するには?
、私はそれは、単純なマッピングテーブルを使用するよりも、それ以上に複雑になりますどのように表示されません。 –
は、テーブルのサイズと入力データのフォーマットに依存します.btwはそれほどではありません。639-1 – sorin
Appleのマニュアルを正しく理解すると、639-1コードが存在しない場合は639-2コードが返されます現在の言語。私はここでコードの完全なリストを見つけました:http://www.loc.gov/standards/iso639-2/php/code_list.phpルックアップテーブルは確かに可能なようですが、それは面倒なことであり、多くの文字列の比較は高価である。私は本当に彼らがサーバー側でそれをやりたいと思う。 –