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 加载网站的移动版本

在 UIwebview 中加载本地图像

UIWebView 无法正确读取一些本地 HTML5 内容

加载本地存储的 mp3 音频文件时出现 UIWebView 问题

嵌入式 Facebook 帖子无法在 UIWebView 中正确显示

将 HTTPS:// 网站加载到 UIWebView 的最佳方式?