以下の方法でiPhoneデバイスの言語をサーバーに取得するにはどうすればよいですか?
$_SERVER['HTTP_ACCEPT_LANGUAGE']
以下の方法でiPhoneデバイスの言語をサーバーに取得するにはどうすればよいですか?
$_SERVER['HTTP_ACCEPT_LANGUAGE']
デバイスの言語を受信する方法を尋ねている場合は、次のようにすることができます。
NSString *userLocale = [[NSLocale currentLocale] localeIdentifier];
NSString *userLanguage = [userLocale substringToIndex:2];
if([userLanguage isEqualToString:@"en"]){
//English
}
else if([userLanguage isEqualToString:@"es"]){
//Spanish
}
else if([userLanguage isEqualToString:@"fr"]){
//French
}
残りの言語コードについては、この Web サイトにアクセスしてください。iOS のコードは、最後の列の ISO 639-1 コードです。
[[NSLocale currentLocale] localeIdentifier]
上記の答えは、常に返されるため、うまくいきませんでしたen_US
。これは、シミュレータでの言語設定の変更が によって認識されるため[NSLocale preferredLanguages]
です。デバイスの言語設定を確認する別の方法を次に示します。
NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@"%@", preferredLanguage);
if ([preferredLanguage isEqualToString:@"en_US"])
{
// English
}
else if([preferredLanguage isEqualToString:@"es"])
{
// Spanish
}
デバイスの現在の言語を取得するには
NSLocale.preferredLanguages()[0] as String
出力:
en-IN
アプリの言語を取得するには
NSBundle.mainBundle().preferredLocalizations[0] as NSString
ノート:
info.plist のCFBundleDevelopmentRegionで指定した言語を取得します
info.plist でCFBundleAllowMixedLocalizationsが true の場合、info.plist の CFBundleLocalizations の最初の項目が返されます
PHP
ブラウザーは通常、Accept-Language という名前の HTTP ヘッダーを送信します。これは、ユーザーが取得する言語を示します。
$_SERVER['HTTP_ACCEPT_LANGUAGE']
'HTTP_ACCEPT_LANGUAGE'
Contents of the Accept-Language: header from the current request, if there is one. Example: 'en'.
http://php.net/manual/en/reserved.variables.server.php
基本的に必要なのは、コードが何であるかを見つけることだけです。おそらく次のようなことを確認する必要があります。
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] != "")
{
$currentLanguage = "en";
}
しばらく PHP に触れていませんでしたが、ブラウザによっては、ブラウザが言語を報告しない可能性があります。デフォルトが必要になります。
これは古い投稿であることは知っていますが、今日はモンクが求めたことを実行する必要があり、qegal によって投稿された解決策はうまくいかなかったので、回答を投稿します。しかし、それは私を正しい軌道に乗せたので、qegalに+1票を投じました。
私のアプリでは、電話がスウェーデン語に設定されているときに何かをする必要があるため、起動時に言語がスウェーデン語に設定されているかどうかを確認し、そうであれば適切なメソッドを呼び出します。コードは viewDidLoad: メソッドにネストされています。携帯電話の設定で地域形式を対応する言語に設定することを忘れないでください。
NSString *userLocale = [[NSLocale currentLocale] localeIdentifier];
NSLog(@"%@", userLocale);
if ([userLocale isEqualToString:@"sv_SE"]) {
// Swedish, do something when phone is set to Swedish or whatever language you prefer
}
Swift: ネイティブ API 経由でデバイス言語を取得するには
let language = NSLocale.preferredLanguages()[0] as String