有哪个框架能简单实现或怎么不使用框架实现在 URL 中传递“语言”

2022-08-09 13:36:23 +08:00
 dzdh

如 Almalinux 官网

传,中文 https://almalinux.org/zh-hans/blog/

不传,那就是默认英文 https://almalinux.org/blog

代码咋写呢?

不管 almalinux 咋实现的,他可能就是个静态页但是咋动态实现。

匹配路由 /zh/blog 和 /blog 。 只有是 zh|en|zh-CN|en-US 就算是语言参数,赋给 context ,不然就当作普通业务 path 匹配?

2654 次点击
所在节点    Go 编程语言
21 条回复
wunonglin
2022-08-09 13:38:19 +08:00
这不是页面的事?和 go 有啥关系,而且就算是 go ,随便一个 web 框架直接 /:lang/blog 不就可以获取得到了么
momocraft
2022-08-09 13:40:10 +08:00
Next.js 自带一个 i18n path prefix
但是你都用 go 了
Trim21
2022-08-09 13:42:39 +08:00
随便找个理由用 group 功能做不就好了,针对每个语言创建一个 group 。
Trim21
2022-08-09 13:42:49 +08:00
@Trim21 找个路由*
wunonglin
2022-08-09 13:45:23 +08:00
而且这种路由设计是比较适合页面是做 i18n 的,接口就不要这么设计比较好
wangtian2020
2022-08-09 14:04:11 +08:00
路由匹配,nginx 做的事
前端 vue-router 也能做
crysislinux
2022-08-09 14:09:39 +08:00
楼主是问这种一般怎么实现的。单纯 route params 不能处理没有 language 的情况。搞不好还真就是个正则,不满足预设的 language code 就认为是普通的 slug 。
fzdwx
2022-08-09 14:09:52 +08:00
有没有可能你说的 https://almalinux.org/zh-hans/blog/https://almalinux.org/blog 都只是前端的路由,而不涉及到后端的接口
FanError
2022-08-09 14:17:52 +08:00
曾经尝试用 springboot 实现(默认 springboot 是通过参数实现?lang=zh ),试了半天效果都不理想(同时支持 url 中有和没有的情况)。

最后通过 nginx 重实现的。。网上有文章,楼主可以搜搜,实际转发给后端,还是转成参数在传递。
dzdh
2022-08-09 14:44:32 +08:00
@crysislinux 对。现在已经在想直接写死了,因为真的实在是。。应该没有啥站点会支持全世界语言吧.
dzdh
2022-08-09 14:44:51 +08:00
@FanError
@wangtian2020

hh 就是不想用 nginx
gzf6
2022-08-09 14:57:31 +08:00
agagega
2022-08-09 14:59:25 +08:00
静态网站把语言写死在 Path 里没啥问题,不过如果你要支持用户自己设置语言 /根据 Header 探测语言 /Cookie 设置语言的话就比较麻烦了
bais
2022-08-09 17:58:21 +08:00
全局路由参数注册吧
yrj
2022-08-09 19:30:05 +08:00
貌似框架没有直接带的,一般官方示例都是 /api1/xxx /api2/xxx
你直接这样定义路由试试( fiber )
/:lang?/home..
itskingname
2022-08-09 21:31:07 +08:00
谁告诉你 Almalinux 官方是个静态页面?
vone
2022-08-10 09:23:40 +08:00
hailaz
2022-08-10 10:05:16 +08:00
codehz
2022-08-10 10:17:29 +08:00
https://github.com/AlmaLinux/almalinux.org/blob/master/almalinux/settings.py
alma 就是单独做了个 locale 中间件,提前拦截处理了 url
ysc3839
2022-08-10 12:11:50 +08:00
我自己实现的话会检查一下 URL 中第一段是不是已知的语言标志,不是的话就根据 HTTP 头推测出用户语言然后加上去跳转。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/871662

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX