问个落后的技术问题:后端输出的 HTML 要 i18n 是怎么做的?

2019-02-27 11:33:42 +08:00
 mywaiting
都 2019 年了,都还要后端输出 HTML,还要进行 i18n 国际化的翻译,没有办法,感觉跟不上前端的 build 流程,只能直接代码里写好了

网上找遍了 GNU xgettext 的相关文章,无奈这货不支持 HTML 的 i18n 输出啊,所有导致 Poedit 这样的软件也不支持

还特别翻了 python django 的代码,好像也只有针对 python 内多语言的 i18n 支持

那么问题来了:

在 HTML 里面有这样标记 {{ _('text waited to translate') }} 有什么工具、流程、实现可以统一导出里面的待翻译的文本么?难得真要手写正则去遍历文件解决?
1740 次点击
所在节点    问与答
10 条回复
SakuraKuma
2019-02-27 11:37:57 +08:00
你不是已经有答案了嘛.. 正则导出, 翻译, 按语言输出..
就是 css 可能要再匹配了, 有些语言字符数会比较多, 有些地方可能会诡异了.
6IbA2bj5ip3tK49j
2019-02-27 11:41:19 +08:00
想起了一个有趣的轮子
https://www.v2ex.com/t/267295
mywaiting
2019-02-27 11:41:22 +08:00
@SakuraKuma 有现成的话,还是用现成的吧,自己造轮子不是不可以,就是麻烦一点。

我也是觉得很奇怪,这么基础的问题,怎么没有前人遇到过并且做几个轮子出来 [手动狗头~]
SakuraKuma
2019-02-27 11:44:44 +08:00
@mywaiting 因为貌似都是直接嵌入框架了, 还真没见过抽出来一个轮子的..
mywaiting
2019-02-27 12:01:58 +08:00
@SakuraKuma 其实 xgettext 这个轮子挺好的,无奈它就只支持那几种语言

Django 内部就是用 xgettext 实现的,就是 django manage.py makemessages 这个命令搞的事情。我迟点试试强制指定为 python 语言导出试试看,搞完回头可以写个博客再 Github 写个仓库骗 star [手动狗头~]
feiyuanqiu
2019-02-27 12:06:33 +08:00
facebook 开源了一个库 https://github.com/facebookincubator/fbt
triptipstop
2019-02-27 12:09:05 +08:00
laravel 自带
mywaiting
2019-02-27 15:31:09 +08:00
@xgfan @feiyuanqiu 这两个都是 javascript 的啊,我就是不想上 babel,不想搞一堆前端 build 的流程,要是上这个,那就简单很多了。感觉就几个命令的事情,结果要 install 一堆的 npm 包,累觉不爱
agagega
2019-02-27 15:44:47 +08:00
https://www.slideshare.net/mobile/idanielglh/strikinglyi18n

虽然是 Ruby 的,但是也可以参考
mywaiting
2019-02-27 17:04:26 +08:00
真是神奇了,竟然没有太多这样的实现,我还天真以为这样的实现应该遍大街都是

Django/laravel 框架确实有自带的,但是 Django 确实是调用了 GNU gettext 来完成提取翻译文本的任务的

顺便翻遍 Python,竟然只有 PyBabel 这个跟着 Flask 出来的库,但是经过实际的试用,HTML 提取翻译文本 这个功能实现得实在不怎么样

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

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

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

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

© 2021 V2EX