目次
概要
ウェブとアプリ間でエンドユーザが選択した言語状態を共有します。
インフォメーション
本ページの用語について
ウェブ:Webview を指します。WOVN.ioウィジェットを用いて翻訳します。
アプリ:Native アプリを指します。WOVN.app SDK を用いて翻訳します。
設定方法
WOVN.io ウィジェットの言語を設定してアプリの選択を反映する
ユーザーがアプリの言語を変更するたびに changeLanguage をトリガーするために、viewDidLoad()
中にオブザーバーが作成されます。
NotificationCenter.default.addObserver(self, selector: #selector(self.changeLanguage)
, name: NSNotification.Name(rawValue: "langChangeNotification"), object: nil)
この changeLanguage メソッドは、WOVN.ioウィジェットから Javascript コードを読み取り、現在選択されているアプリ言語に基づいて言語を更新します。
@objc func changeLanguage(notif: NSNotification) {
let currentLang = Setting.shared.language
let script = "javascript:WOVN.io.changeLang('\(currentLang)');"
webView.evaluateJavaScript(script) { (result, error) in
if result != nil {
print("WebView language updated successfully")
} else if let error = error {
print("An error occurred: \(error)")
}
}
アプリの言語を設定して WOVN.io ウィジェットの選択を反映する
WOVN.io ウィジェット内の言語の変更を処理するには、WKScriptMessageHandler
を拡張する必要があります。
extension WebViewViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "changeLang" {
if let lang = message.body as? String {
Setting.shared.language = lang
self.reloadSelectLanguageBtn()
print("Language changed by WebView to: \(Setting.shared.language)")
Wovn.changeLang(langs: lang)
}
}
}
}