UIWebview 没有加载正确的本地化版本的网站
Posted
技术标签:
【中文标题】UIWebview 没有加载正确的本地化版本的网站【英文标题】:UIWebview not loading the correct localized version of website 【发布时间】:2015-11-04 05:00:17 【问题描述】:在我的应用程序中,我在菜单中有一个链接,可将用户带到我们的在线常见问题解答页面。我正在使用 webview 加载页面,到目前为止一切顺利。
但问题是,我的在线页面会自动检测用户语言并加载页面的正确本地化版本。
如果我在模拟器上打开 safari 并加载我的 url,它会被重定向到正确的本地化版本,但在应用程序上使用 UIWebview 它会加载英语(默认)语言。
我在网上做了一些研究,但找不到与此问题相关的任何信息。
为了加载正确的本地化版本,我可以/需要传递一些东西吗?
谢谢
编辑: 我目前正在获取电话语言并传入 URL,但我正在寻找的是 UIWebview 的行为就像 safari 一样,通过调用主 URL 并让网站根据您的语言选择版本。
【问题讨论】:
你找到解决方案了吗? @Dev_Tandel 不幸的是我从来没有找到解决方案 我已经尝试了一个星期,但仍然两手空空。 【参考方案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
)。
【讨论】:
这是我目前正在做的事情,但我真正想要的是向我的页面发出请求并以正确的版本加载页面,而不是使用语言传递 URL在其中,如果您在模拟器中打开它,safari 的操作方式与此相同。我假设 uiwebview 会像 safari 一样工作,但似乎不是这样以上是关于UIWebview 没有加载正确的本地化版本的网站的主要内容,如果未能解决你的问题,请参考以下文章
UIWebView 不使用 loadRequest 加载网站的移动版本
加载本地存储的 mp3 音频文件时出现 UIWebView 问题