Golang Go语言中 有哪个框架能简单实现或怎么不使用框架实现在 URL 中传递“语言”
如 Almalinux 官网
传,中文 https://almalinux.org/zh-hans/blog/
不传,那就是默认英文 https://almalinux.org/blog
代码咋写呢?
不管 almalinux 咋实现的,他可能就是个静态页但是咋动态实现。
匹配路由 /zh/blog 和 /blog 。 只有是 zh|en|zh-CN|en-US 就算是语言参数,赋给 context ,不然就当作普通业务 path 匹配?
Golang Go语言中 有哪个框架能简单实现或怎么不使用框架实现在 URL 中传递“语言”
更多关于Golang Go语言中 有哪个框架能简单实现或怎么不使用框架实现在 URL 中传递“语言”的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这不是页面的事?和 go 有啥关系,而且就算是 go ,随便一个 web 框架直接 /:lang/blog 不就可以获取得到了么
更多关于Golang Go语言中 有哪个框架能简单实现或怎么不使用框架实现在 URL 中传递“语言”的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Next.js 自带一个 i18n path prefix
但是你都用 go 了
随便找个理由用 group 功能做不就好了,针对每个语言创建一个 group 。
找个路由*
而且这种路由设计是比较适合页面是做 i18n 的,接口就不要这么设计比较好
路由匹配,nginx 做的事
前端 vue-router 也能做
楼主是问这种一般怎么实现的。单纯 route params 不能处理没有 language 的情况。搞不好还真就是个正则,不满足预设的 language code 就认为是普通的 slug 。
有没有可能你说的 https://almalinux.org/zh-hans/blog/ 、https://almalinux.org/blog 都只是前端的路由,而不涉及到后端的接口
曾经尝试用 springboot 实现(默认 springboot 是通过参数实现?lang=zh ),试了半天效果都不理想(同时支持 url 中有和没有的情况)。
最后通过 nginx 重实现的。。网上有文章,楼主可以搜搜,实际转发给后端,还是转成参数在传递。
对。现在已经在想直接写死了,因为真的实在是。。应该没有啥站点会支持全世界语言吧.
hh 就是不想用 nginx
静态网站把语言写死在 Path 里没啥问题,不过如果你要支持用户自己设置语言 /根据 Header 探测语言 /Cookie 设置语言的话就比较麻烦了
全局路由参数注册吧
貌似框架没有直接带的,一般官方示例都是 /api1/xxx /api2/xxx
你直接这样定义路由试试( fiber )
/:lang?/home…
谁告诉你 Almalinux 官方是个静态页面?
https://github.com/AlmaLinux/almalinux.org/blob/master/almalinux/settings.py
alma 就是单独做了个 locale 中间件,提前拦截处理了 url
我自己实现的话会检查一下 URL 中第一段是不是已知的语言标志,不是的话就根据 HTTP 头推测出用户语言然后加上去跳转。
怎么注册路由实现 /a/b 和 /b 是同一个方法呢。定义两个路由吗?
那不就成了 group("/zh-cn").get(’/b’, handle) group("/").get(’/b’,handle) 了
在Golang中,实现URL中传递“语言”参数并不依赖于特定的框架,而是可以通过标准库net/url
轻松完成。以下是不使用框架实现该功能的简要说明:
-
添加参数到URL:
- 使用
url.Values
类型来表示URL参数。 - 使用
Add
或Set
方法来添加或设置参数。 - 使用
Encode
方法生成URL编码的查询字符串,并将其添加到基本URL的末尾。
- 使用
-
示例代码:
package main import ( "fmt" "net/url" ) func main() { params := url.Values{} params.Add("language", "zh-CN") // 添加语言参数 queryString := params.Encode() baseUrl := "http://example.com" fullUrl := baseUrl + "?" + queryString fmt.Println(fullUrl) // 输出:http://example.com?language=zh-CN }
-
URL转义:
- 使用
url.QueryEscape
对特殊字符进行转义。 - 使用
url.QueryUnescape
对转义后的URL进行解码。
- 使用
通过上述方法,你可以在不依赖任何框架的情况下,轻松地在Golang的URL中传递“语言”参数。同时,Golang的标准库提供了强大的工具来处理URL,使得这一过程变得简单且高效。