Skip to content

golang i18n的不同思路 | Ming 的博客 #2

@feitian124

Description

@feitian124

https://p2y.top/posts/drafts/go-i18n/

传统的解决方案 i18n是软件开发中常见的一个需求, 很多流行的开发框架如 ruby on rails, springboot 对它有内置的支持。 rails 的 i18n 是其中的佼佼者, 我们看看它解决了哪些问题,是如何解决的。
i18n 资源文件 通常开发者需要按照框架的约定创建资源文件,一般会在目录或文件名中包含如 es, en 等 locale 信息,方便框架按需加载。
|---books |-----es.yml |-----en.yml |---users |-----es.yml |-----en.yml key 的定义和查找优先级 通常每个翻译文本会对应一个有意义的key,通过 key + locale 的组合得到当前 locale 下的翻译文本.
I18n.t 'activerecord.models.user' # => 'Customer' I18n.t 'activerecord.models.user' # => '客户' en: activerecord: models: user: "Customer" attributes: user: login: "Login" zh: activerecord: models: user: "客户" attributes: user: login: "登陆" 当项目到一定规模, key 的数量很多时,key 的命名就显得格外重要,否则重用 key 时很难查找。 而且除了用户自定义的 key, 框架一些内置的 key 如日期, 错误消息等, 也需要用户提供翻译。 所以 key 的命名 rails 也做了约定,如下

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions