跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[Go 编程语言] Golang 实现的网站如何实现高度自定义且自动化的国际化 i18n 多语言?


小天管理

已推荐帖子

我的方案:用 Golang 的 template 编写网页,使用 gnu gettext 实现 i18n ,定时任务更新 gnu po file 。

大致流程:在 web 服务上添加中间件,网站服务启动时加载预先生成好的各种语言的 po 翻译文件,后端可以通过用户自行设置语言或根据浏览器信息自动匹配语言,在前端网页上通过 hreflang 告知搜索引擎本地化相关的链接信息,这有助于 seo 。

实现自定义的需要自动转换语言的标记方法,通常需要包含 3 类,go 中调用的方法、html 模板方法、以及 js 代码中的标记。

在 html 模板中调用 i18n 需要语言参数,通常是需要从请求头中获取的,但无法直接将请求上下文传入到模板中,需要将语言参数使用模板变量的形式从后端传到 html 模板方法里。

编写业务代码时, 在 Golang 代码和 HTML 模板代码和以及 JS 代码中使用自定义的方法标记需要翻译成其他语言的字符串,这样就能自动将文字翻译为不同的语言。

使用 shell 脚本每天根据规则定时提取 HTML 、Go 、JS 代码中的标记字符串, 以及数据库中需要翻译的内容(历史的、新增的、更新过的),以特定格式生成文本文件,很多网站的国际化只有导航等固定内容的国际化,实际数据库中的动态内容却没有国际化,这是我想处理的重点问题。每一次生成的新文件都要和历史文件进行对比合并避免文件因重复内容过多导致太大处理困难。

使用 gnu gettext 将生成文件转换为 po 模板,然后通过 python 代码读取解析 po 模板,找出没有翻译过的内容。 然后将这些内容通过调用谷歌翻译翻译为不同国家的语言后在写回到 po 文件中,同时会翻译结果的格式做一些换行等修正处理。

完成后再将新增的 URL 更新到 sitemap ,自动提交代码,触发自动部署上线更新网站,上线成功后再将新增和更新的 URL 提交通知给百度、微软以及谷歌等搜索引擎,这有助于更新后的网页能被快速搜索到。

为了在最后一步便捷地将 URL 提交通知给百度、微软以及谷歌等搜索引擎,昨晚写了一个 golang 包 urlsubmitter用于提交链接,目前还比较粗糙,欢迎大家来完善

意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

    没有会员可显示

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...