首先,我阅读了这个问题,在我看来,这个问题与解决我的问题相对应,但是经过多次重新阅读和测试后,我不理解它:https://github.com/i18next/react-i18next/issues/325 (也许是因为我没有使用React)
我也尝试过使用.htaccess进行此操作:https://github.com/i18next/i18next/issues/144
但是它给出了404错误。
我最近尝试使用i18next创建一个站点,该站点运行正常,但我希望能够使用国家/地区代码添加更好的URL。
示例而不是(更改语言):
https://www.mywebsite.com/index.html?lng=fr-BE
这个
https://www.mywebsite.com/fr-BE
知道我不能使用PHP等后端语言,而是使用Apache Web服务器,并且仅将i18next与jquery.i18next一起使用。
为了更深入地描述我的问题,我如何确保用户到达任何页面时都会添加国家代码? 如果网址中已经有国家/地区代码,该怎么更改用户的语言?
最重要的是,有可能吗?
感谢您阅读我的问题,希望您能帮助我解决我的问题。 :)
P.S .:请原谅我的英语
答案 0 :(得分:0)
完全可能。
因此,首先在您的.htaccess文件中,您需要具有以下内容:
RewriteEngine On
RewriteRule ^(\w+)\/?([\w\-]+)?$ $1.html?lng=$2
这将重写格式
的URLwww.example.com/index/fr-BE 到 www.example.com/index.html?lng=fr-BE
所以我正在使用这种方法,因为您可能要考虑将language参数视为可选参数并将其默认设置为某个值。而且此规则还将重定向
www.example.com/some_pag e到 www.example.com/some_page.html
就是使用友好的URL。现在,从查询字符串中获取语言参数。如果不使用服务器端语言(例如PHP),则不能使用'lng'参数的值,但是按照here的指南,您可以使用window.location.pathname
获取语言字符串(如果存在) 。
因此,对于 www.example.com/index/fr-BE 格式的URL,您可以使用以下代码:
let params = window.location.pathname.split('/').slice(1);
if(typeof params[1] !== 'undefined') {
console.log(params[1]); // <-- should be 'fr-BE'
i18next.setLng(params[1]);
}
希望这会有所帮助。