多语言路由如何支持/fr,/es,/it等识别

justdan

多语言情况下,如何识别路由上的语言,比如博客支持多语言,路由如下:
法语:http://127.0.0.1:8787/app/fr/blog/xxxx
意大利语:http://127.0.0.1:8787/app/it/blog/xxxx

请问通过什么方式进行配置可以实现此类功能?

396 1 0
1个回答

sm2010

https://www.workerman.net/doc/webman/components/translation.html#%E4%B8%BA%E6%AF%8F%E4%B8%AA%E8%AF%B7%E6%B1%82%E6%98%8E%E7%A1%AE%E7%9A%84%E8%AE%BE%E7%BD%AE%E8%AF%AD%E8%A8%80
按照手册写个中间件设置就好了,手册里通过session判断,你改成通过正则匹配 $request->path() 判断

  • justdan 2024-06-09

    谢谢回答,上面举的例子有些出入,应该是:
    法语:http://127.0.0.1:8787/fr/blog/xxxx
    意大利语:http://127.0.0.1:8787/it/blog/xxxx

    在路由改写隐藏掉/app前缀后,通过path实现语言自动匹配功能,使用中间件可以通过正则表达式来实现,但如何与路由相匹配呢,/blog/xxxx是实际的路由,/fr是语言,但$request->_data['path']并不可写,如何从path(/fr/blog/xxxx)中得到语言并切换后,改写path为/blog/xxxx,才能与真正的路由匹配?

  • sm2010 2024-06-09

    路由改写隐藏掉/app,你用什么改写的?如果是nginx改写,可以顺便加一个http头,比如 Lang: fr,中间件里$request->header('lang'); 读取就行了

  • justdan 2024-06-09

    webman自带路由改写隐藏掉/app,其实/fr、/it是一个参数,比如language=fr,可以通过nginx改写规则实现,只不过还要写一个route生成url的助手函数来改写language=fr实现网页内所有href的链接转换成/fr/blog/xxxx,而默认为中文时,路由为/blog/xxxx

×
🔝