问题:如何根据用户的首选语言,将用户重定向到最相关的内容,位于3个不同的子目录中?
我有什么
我创建了3个不同的_locales子目录,每个子目录包含特定于语言的messages.json文件:
在根目录的manifest.json中,这已经很好用,正如预期的那样,使用以下方法正确地调整扩展名的名称和描述:
的manifest.json
{
"manifest_version": 2,
"name": "__MSG_extensionName__",
"description": "__MSG_extensionDescription__",
"version": "1.0",
"default_locale": "en",
"browser_action": {
"default_title": "__MSG_extensionName__",
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
我被困的地方
当用户点击我的扩展程序图标时,我还想从最相关的子目录加载特定于语言的内容 - 而不是“default_popup”:“popup.html”行 - 因为有些网址是我从popup.html文件链接到的语言也不同:
所以我认为最好的方法是从我的root manifest.json中交换当前读取的那一行
"default_popup": "popup.html"
带有一行
"default_popup": "__MSG_initialContent__"
然后在每个_locales子目录中的messages.json文件都有
"initialContent": {
"message": "popup.html"
}
以便从该子目录中本地读取内容。
但是:这就是它崩溃的地方。然后我收到“此网页未找到错误”。
我尝试过这些不同的变化(以下是_locales / de / messages.json的示例) - 但都导致了相同的错误消息:
"initialContent": {
"message": "popup.html"
}
然后
"initialContent": {
"message": "_locales/de/popup.html"
}
然后
"initialContent": {
"message": "/de/popup.html"
}
最后
"initialContent": {
"message": "de/popup.html"
}
我做错了什么?
谢谢!
答案 0 :(得分:0)
我知道这个问题很老,但是我才发现它,我想这对将来的访问者来说很不错的解决方案。
报价:
预定义的消息
国际化系统提供了一些预定义的消息来帮助您进行本地化。其中包括
@@ui_locale
,因此您可以检测到当前的UI区域设置,...[...]
特殊消息
@@extension_id
可以在CSS和JavaScript文件中使用,无论扩展名或应用程序是否已本地化。此消息不适用于清单文件。下表描述了每个预定义的消息。
@@extension_id
扩展名或应用ID;您可以使用此字符串为扩展程序内的资源构造URL。即使是未本地化的扩展程序也可以使用此消息。 注意:您不能在清单文件中使用此消息。
@@ui_locale
当前语言环境;您可以使用此字符串来构造特定于语言环境的URL。[...]