SuperAPI AI 工具集

gettext-i18n

编程与开发

查看项目

更新于 10-15 22:16

技能介绍

用途:在 Elixir/Phoenix 应用中实现国际化(i18n),在添加翻译或支持多语言前使用。

主要能力:用 gettext/1、dgettext/2、ngettext/3 包裹面向用户的字符串;用 mix gettext.extract --merge 生成和更新 .pot/.po 文件;按请求设置语言并测试译文。

核心规则:只翻译面向用户的文本,不翻译日志和内部错误;错误文案用 dgettext 的独立 domain;可数内容用 ngettext,不要手写复数;插值用绑定(gettext("Hello %{name}", name: name)),不要用字符串插值,否则破坏提取;新增调用后重跑 mix gettext.extract --merge;每个请求用 Gettext.put_locale/2 设置语言,LiveView 的 mount 中也要调用;locale 输入必须对照允许列表校验。

设置:在 mix.exs 添加依赖 {:gettext, "~> 0.26"},并定义 backend: defmodule MyAppWeb.Gettext do use Gettext.Backend, otp_app: :my_app end

使用:import MyAppWeb.Gettext 后调用 gettext/1、dgettext/2 或 ngettext/3。翻译文件位于 priv/gettext/<locale>/LC_MESSAGES/<domain>.po,模板为 priv/gettext/<domain>.pot。提取可用 mix gettext.extract、mix gettext.merge priv/gettext 或 mix gettext.extract --merge,提取后确认新 msgid 的 msgstr 为空再补译文。

语言设置:推荐用 plug 按 params → session → 默认值解析,并校验允许列表后调用 Gettext.put_locale/2,再注册到 router 的 pipeline :browser。

限制:资料未提供性能、价格或其他平台支持等信息;只适用于 Elixir/Phoenix 与 Gettext 生态。