在我的应用程序中,我在菜单中有一个链接,用户可以在线访问我们的常见问题页面。我正在使用webview加载页面,到目前为止一直很好。
但问题是,我的在线页面会自动检测用户语言并加载页面的正确本地化版本。
如果我在模拟器上打开safari并加载我的网址,它会被重定向到正确的本地化版本,但在应用程序上使用UIWebview会加载英语(默认)语言。
我在网上做过一些研究,但找不到与此事有关的任何内容。
为了加载正确的本地化版本,我能/需要传递一些内容吗?
由于
修改
我目前正在使用手机语言并传入URL,但我正在寻找的是UIWebview的行为与safari一样,通过调用主URL并让网站根据您的语言选择版本。
答案 0 :(得分:1)
您可以将应用支持的语言作为包含[[NSBundle mainBundle] localizations];
的字符串数组,并将其与系统语言进行比较,如下所示:
+ (NSString *)preferredLanguage {
NSString *res = @"en";
NSArray *appSupportedLanguages = [[NSBundle mainBundle] localizations];
NSArray *appleLanguages = [NSLocale preferredLanguages];
if (appleLanguages && appleLanguages.count > 0) {
NSString *shortLangId = [appleLanguages.firstObject substringToIndex:2];
if ([appSupportedLanguages containsObject:shortLangId]) {
res = shortLangId;
}
}
return res;
}
我在这里使用缩短版本的原因是iOS 9改变了一些语言的ID并且它破坏了我的应用程序 - 你应该在这里做一些小改动。不过,此方法允许您获取可用于打开正确的常见问题页面的语言ID,如https://.../faq_fr.htm
或某些服务器端处理,如https://...?lang=fr
。