如 Almalinux 官网
传,中文 https://almalinux.org/zh-hans/blog/
不传,那就是默认英文 https://almalinux.org/blog
代码咋写呢?
不管 almalinux 咋实现的,他可能就是个静态页但是咋动态实现。
匹配路由 /zh/blog 和 /blog 。 只有是 zh|en|zh-CN|en-US 就算是语言参数,赋给 context ,不然就当作普通业务 path 匹配?
1
wunonglin 2022-08-09 13:38:19 +08:00
这不是页面的事?和 go 有啥关系,而且就算是 go ,随便一个 web 框架直接 /:lang/blog 不就可以获取得到了么
|
2
momocraft 2022-08-09 13:40:10 +08:00 1
Next.js 自带一个 i18n path prefix
但是你都用 go 了 |
3
Trim21 2022-08-09 13:42:39 +08:00 via Android
随便找个理由用 group 功能做不就好了,针对每个语言创建一个 group 。
|
5
wunonglin 2022-08-09 13:45:23 +08:00
而且这种路由设计是比较适合页面是做 i18n 的,接口就不要这么设计比较好
|
6
wangtian2020 2022-08-09 14:04:11 +08:00
路由匹配,nginx 做的事
前端 vue-router 也能做 |
7
crysislinux 2022-08-09 14:09:39 +08:00 via Android
楼主是问这种一般怎么实现的。单纯 route params 不能处理没有 language 的情况。搞不好还真就是个正则,不满足预设的 language code 就认为是普通的 slug 。
|
8
fzdwx 2022-08-09 14:09:52 +08:00
有没有可能你说的 https://almalinux.org/zh-hans/blog/ 、https://almalinux.org/blog 都只是前端的路由,而不涉及到后端的接口
|
9
FanError 2022-08-09 14:17:52 +08:00
曾经尝试用 springboot 实现(默认 springboot 是通过参数实现?lang=zh ),试了半天效果都不理想(同时支持 url 中有和没有的情况)。
最后通过 nginx 重实现的。。网上有文章,楼主可以搜搜,实际转发给后端,还是转成参数在传递。 |
10
dzdh OP @crysislinux 对。现在已经在想直接写死了,因为真的实在是。。应该没有啥站点会支持全世界语言吧.
|
11
dzdh OP |
12
gzf6 2022-08-09 14:57:31 +08:00
|
13
agagega 2022-08-09 14:59:25 +08:00 via iPhone
静态网站把语言写死在 Path 里没啥问题,不过如果你要支持用户自己设置语言 /根据 Header 探测语言 /Cookie 设置语言的话就比较麻烦了
|
14
bais 2022-08-09 17:58:21 +08:00
全局路由参数注册吧
|
15
yrj 2022-08-09 19:30:05 +08:00
貌似框架没有直接带的,一般官方示例都是 /api1/xxx /api2/xxx
你直接这样定义路由试试( fiber ) /:lang?/home.. |
16
itskingname 2022-08-09 21:31:07 +08:00
谁告诉你 Almalinux 官方是个静态页面?
|
17
vone 2022-08-10 09:23:40 +08:00
|
18
hailaz 2022-08-10 10:05:16 +08:00
|
19
codehz 2022-08-10 10:17:29 +08:00
https://github.com/AlmaLinux/almalinux.org/blob/master/almalinux/settings.py
alma 就是单独做了个 locale 中间件,提前拦截处理了 url |
20
ysc3839 2022-08-10 12:11:50 +08:00
我自己实现的话会检查一下 URL 中第一段是不是已知的语言标志,不是的话就根据 HTTP 头推测出用户语言然后加上去跳转。
|