多语言情况下,如何识别路由上的语言,比如博客支持多语言,路由如下: 法语:http://127.0.0.1:8787/app/fr/blog/xxxx 意大利语:http://127.0.0.1:8787/app/it/blog/xxxx
请问通过什么方式进行配置可以实现此类功能?
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() 判断
谢谢回答,上面举的例子有些出入,应该是: 法语: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,才能与真正的路由匹配?
路由改写隐藏掉/app,你用什么改写的?如果是nginx改写,可以顺便加一个http头,比如 Lang: fr,中间件里$request->header('lang'); 读取就行了
webman自带路由改写隐藏掉/app,其实/fr、/it是一个参数,比如language=fr,可以通过nginx改写规则实现,只不过还要写一个route生成url的助手函数来改写language=fr实现网页内所有href的链接转换成/fr/blog/xxxx,而默认为中文时,路由为/blog/xxxx
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() 判断
谢谢回答,上面举的例子有些出入,应该是:
法语: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,才能与真正的路由匹配?
路由改写隐藏掉/app,你用什么改写的?如果是nginx改写,可以顺便加一个http头,比如 Lang: fr,中间件里$request->header('lang'); 读取就行了
webman自带路由改写隐藏掉/app,其实/fr、/it是一个参数,比如language=fr,可以通过nginx改写规则实现,只不过还要写一个route生成url的助手函数来改写language=fr实现网页内所有href的链接转换成/fr/blog/xxxx,而默认为中文时,路由为/blog/xxxx