Closed xuchendev closed 2 years ago
这个需要暴露一个新接口了
CefRequestContext::SetPreference(const CefString& name, CefRefPtr
安排
可以使用QCefView.setPreference接口来更改已经初始化过的一些参数。
如果需要修改语言可以这样写:
QString error;
if (!qcefView->setPreference("intl.accept_languages", "zh-CN", error)) {
// failed to set preference, show error message with `error`
}
不过我觉得你的做法有点问题,你是想做多语言的应用,首先你的应用应该是分Qt原生部分和Webapp部分的,如果要做多语言比较好的模式应该如下实现:
多语言切换的触发方式可以放在WebApp中,当用户点击WebApp中的切换语言按钮,通过InvokeMethod通知Native,然后再Qt的invokemethod相应中你需要做如下:
不过我觉得你的做法有点问题,你是想做多语言的应用,首先你的应用应该是分Qt原生部分和Webapp部分的,如果要做多语言比较好的模式应该如下实现:
- Qt原生实现多语言(实现方式根据你自己的应用而定)
- WebApp也实现多语言(可以通过URL传参数实现)
多语言切换的触发方式可以放在WebApp中,当用户点击WebApp中的切换语言按钮,通过InvokeMethod通知Native,然后再Qt的invokemethod相应中你需要做如下:
- 根据JS传入的目标语言参数,使Qt原生部分切换为目标语言
- 根据JS传入的目标语言参数,生成新的URL,然后通过QCefView的重新navigate到新的URL
我们实现的机制类似,但是出现了一个问题,Web人员反馈他那边调用HTTP接口时候已经指定了Accept-Language,但是不生效,怀疑是被CEF进行了覆盖。所以我们想通过SetLocale这种方式来完成Accept-Language请求头更改。
intl.accept_languages
问题得到解决,牛批!
在Windows平台下先设置为zh-CN 然后在Web交互中更改为en-US