【问题标题】:WebView (not WKWebView) calling Localized HTML fileWebView(不是 WKWebView)调用本地化的 HTML 文件
【发布时间】:2018-03-28 09:47:59
【问题描述】:

Mac 应用程序要求在 WebView(旧类型,而不是较新的 WKWebView)中以本地化形式调用 HTML 文件,以便向用户呈现一些内容。

正如我的旁注,我意识到今天不应该使用 WebView,并且首选 WKWebView,但是这是当前需要支持的旧版应用程序。

我在 iOS 版本上使用了类似的方法,但它似乎不起作用。 HTML 文件简称为“Term.HTML”,与本地化字符串和所有其他本地化内容一起放置在每个本地化文件夹中。这是我尝试使用的代码:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:NSLocalizedString(@"fileTerm", nil) ofType:@"html"];
htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];

[termsView takeStringURLFrom:htmlString];

我的本​​地化字符串文件每个都包含一行内容:

"fileTerm" = "Term";

这是将第一行的声明链接到实际文件的原因。它适用于 iOS。但是,当运行应用程序并尝试运行包含 WebView 的视图时,当我实际尝试将 HTML 文件提供给作为我的 WebView 的“termsView”时,XCode 将自动在第三行创建一个断点。跳过此断点并强制应用程序运行后,包含 WebView 的整个视图将根本不会出现。如果有人知道这是为什么或者是否有更好的方法来做到这一点,我将不胜感激?谢谢大家!

【问题讨论】:

  • 我不知道你为什么使用 'NSLocalizedString' 作为文件名,这对我来说似乎没有必要。但是要弄清楚问题,当你打断点时,你在 htmlFile 和 htmlString 中看到了什么?
  • 这是因为我需要根据设备设置的语言调用不同的 HTML 文件以正确本地化显示它。有没有其他方法可以做到这一点?
  • [[NSBundle mainBundle] pathForResource:@"Term" ofType:@"html"] 会搜索 .lproj 文件夹,所以你只需要将英文放在 en.lproj/Term.html 中,德文放在 de.lproj/Term.html 中等等。跨度>

标签: ios objective-c xcode macos cocoa


【解决方案1】:

可能有人需要 SWift:我通过为每种语言保存 3 个 html 文件解决了这个问题,然后在 ViewController 类中检查了当前的应用程序语言。并调用当前语言的 html 文件

func loadHtmlFile() {
    let preferredLanguage = NSLocale.preferredLanguages[0]
    if preferredLanguage == "kz" {
        let url = Bundle.main.url(forResource: "aboutUs_kz", withExtension:"html")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    if preferredLanguage == "ru" {
        let url = Bundle.main.url(forResource: "aboutUs_ru", withExtension:"html")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
    if preferredLanguage == "en" {
        let url = Bundle.main.url(forResource: "aboutUs_en", withExtension:"html")
        let request = URLRequest(url: url!)
        webView.load(request)
    }
}

在 viewDidLoad() 中

override func viewDidLoad() {
    super.viewDidLoad()
        loadHtmlFile()
}

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    相关资源
    最近更新 更多