徽章和群组如何本地化(多语言)?

徽章和群组如何本地化(多语言)?在设置过程中,我注意到徽章和群组的标题不会随主题语言切换。我该如何使徽章和群组跟随主题切换?

3 个赞

本地化自定义徽章和群组的功能尚不存在——目前只有帖子、分类和标签可以本地化。

好的,谢谢。但是为什么这个网站(meta.discourse.org)上的徽章会随着主题一起切换语言呢?这是由翻译功能引起的吗?我建议官方团队为徽章、群组和标签添加多语言自定义设置;否则,多语言用户将无法理解徽章、群组和标签的内容。

2 个赞

每个站点上都有一些通过 Crowdin 进行国际化 (i18n) 的种子徽章。

自定义徽章将名称/描述作为纯文本存储在数据库中。当调用 I18n.t(国际化功能)并传入像 badges.my_custom_badge.name 这样的键时,没有匹配的翻译,因此它会回退到存储的数据库值——所有语言环境使用相同的文本。

有一个变通方法是管理员可以为自定义徽章键手动为每种语言环境添加翻译。

您可以在 \u003cyour site\u003e/admin/customize/site_texts 定制您的站点文本。


给您的具体步骤

  1. 创建徽章
  • 前往 /admin/badges → 新建徽章
  • 像往常一样设置名称、描述、图标等
  1. 查找 i18n 键
  • 键的模式是 badges.{snake_case_name}.name
  • snake_case_name 是小写的徽章名称,空格替换为下划线
  • 因此 “Pokémon Master” → badges.pokémon_master.name
  1. 添加翻译覆盖
  • 前往 /admin/customize/site_texts
  • 搜索 badges.pokémon_master
  • 您会看到如下键:
    • badges.pokémon_master.name
    • badges.pokémon_master.description
    • badges.pokémon_master.long_description
  • 切换到目标语言环境(例如 简体中文),点击该键,输入翻译后的文本
  1. 对每种语言环境重复
  • 在下拉菜单中切换语言环境,为每种需要的语言添加翻译
    • .name - 徽章标题
    • .description - 显示在徽章卡上的简短描述
    • .long_description - 显示在徽章详情页面的完整描述

english

japanese

4 个赞

hi!感谢回复!请问第二步查找“i18n key”是如何实现的,我没有找到i18n key的位置。

1 个赞

你不是真正地“找到”它,而是根据你将要给徽章的名称来推导出它。(将更新第二步,使用“推导”代替“找到”)

因此,如果你使用“Bug Finder”作为徽章名称,键将是 badges.bug_finder.name

1 个赞

不知道什么原因,在`/admin/customize/site_texts`无论搜索什么内容都提示No matching site texts found,请问您知道是什么原因导致的吗?

1 个赞

哦抱歉,我需要更正我之前的步骤!
站点文本管理页面(/admin/customize/site_texts)只能找到 Discourse 翻译文件中已经存在的键。因此,像 badges.pokémon_master.name 这样的自定义徽章键在那里不存在,搜索它们将返回空结果(这就是您遇到的问题)。

我分享的截图来自我通过 Rails 控制台创建翻译条目的设置。我提供的管理界面步骤将无法按原样工作。很抱歉造成了混淆。如果您有控制台访问权限,实际可行的方法是为自定义徽章创建翻译覆盖:

# 键的模式是:badges.{name_in_snake_case}.{name|description|long_description}
# 例如,对于名为“Pokemon Master”的徽章:
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.name", "宝可梦大师")
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.description", "你的描述")

通过控制台创建后,翻译将出现在 /admin/customize/site_texts 中,此后可以从那里编辑。

如果您没有控制台访问权限,目前这是不可能的。正如 @awesomerobot 之前提到的,自定义徽章的本地化尚不支持。

2 个赞