目次
概要
ウェブとアプリ間でエンドユーザが選択した言語状態を共有します。
インフォメーション
本ページの用語について
ウェブ:Webview を指します。WOVN.ioウィジェットを用いて翻訳します。
アプリ:Native アプリを指します。WOVN.app SDK を用いて翻訳します。
設定方法
WOVN.io ウィジェットの言語を設定してアプリの選択を反映する
viewDidLoad()
の中にユーザーがアプリの言語を変更するたびに changeLanguage をトリガーするためにブザーバーが作成されます。また、メソッドの最後でchangeLangを1回呼び出します。
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.changeLanguage)
, name: NSNotification.Name(rawValue: "langChangeNotification"), object: nil)
// code
// code
changLangHelper()
}
この changeLanguage メソッドは、WOVN.ioウィジェットから Javascript コードを読み取り、現在選択されているアプリ言語に基づいて言語を更新します。
@objc func changeLanguage(notif: NSNotification) {
changeLangHelper()
}
func changeLangHelper() {
let currentLang = Wovn.getCurrentLangCode()
let script = "javascript:WOVN.io.changeLang('\(currentLang)');"
webView.evaluateJavaScript(script) { (result, error) in
if result != nil {
print("LocalHTML 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)
}
}
}
}