多语言插件 🌐

我已提交一个 PR,(大部分)修复了此 bug!

当分类的 show_subcategory_list 选项处于激活状态时,它适用于分类名称、描述和子分类!
唯一剩余的问题是当 show_subcategory_list 关闭时的子分类 :purple_heart:

4 个赞

如果我想将论坛中的类别、类别描述和标签翻译成 10 种不同的语言,我必须为配置和更新创建和上传 3 x 10 = 30 个单独的文件。

我正在考虑将所有翻译放在一个文件中,结构如下:

categories:
  slug:
    _de: 德语名称
    _en: 英语名称
    .description:
       _de: 德语描述
       _en: 英语描述
tags:
  tag:
     ...

这将带来几个好处:

  • 所有翻译可以一次性更新
  • 翻译人员在翻译时可以看到上下文
  • 利用大型语言模型简化翻译任务

有人尝试过这样做吗?

我是否忽略了任何缺点?

关于初步实施,我将尝试编写一个插件来创建和更新 Multilingual::CustomTranslation 中的所有必需条目。

3 个赞

此插件需要升级。我想评估一下是否值得,以及需要做些什么。如果您对多语言功能感兴趣,请投票:

  • 我正在使用此插件,只想让它继续运行。
  • 我正在使用此插件,并希望获得更好/不同的功能或用户体验。
  • 我希望在 Discourse 中获得更好的多语言功能,但目前不使用此插件(请在下方解释)。
  • 以上都不是(请在下方解释您投票的原因)。
0 voters
2 个赞

我的回答“我希望 Discourse 具有更好的多语言功能,但不要使用此插件(请在下方解释)”是因为我们正在评估一个好的多语言选项。如果能找到您的工具,那就太好了。

正如您所问的需要什么,我将我为多语言支持的通用问题写的帖子放在这里:

我们有一个网站,只有一个域名和两种语言(德语、英语)。内容按 domain.org/de/[nameofsite]domain.org/en/[nameofsite] 分割。
我们有一个德语 Discourse 论坛,位于子域名 [germankeyword]-forum.domain.org
现在我们想添加一个英语论坛版本。
不幸的是,用于描述主题的英语关键词,我们想用于英语论坛([englishkeyword]-forum.domain.org),与德语关键词不同。德语关键词在英语中不起作用,英语关键词在德语中也不起作用。

问题:
是否可以运行一个(一个)Discourse 论坛,使用不同的子域名支持不同的语言,同时只使用一个账户管理?
或者我们是否必须创建一个全新的英语论坛,拥有自己的子域名和自己的账户管理?

我所说的“一个账户管理”是指只有一个用户数据库和一个登录供两种语言使用。
是否有可能避免用户在想使用两种语言时需要注册两次?

或者,如果我们想为同一个论坛的不同语言提供相同的登录,我们是否必须严格限制自己使用一个域名?

如果我们确实需要一个域名和一个论坛,是否有可能在帖子的链接名称中显示帖子的语言?

就像
https://meta.discourse.org/t/multilingual-plugin/*en/*142740/125
用于英语帖子,以及
https://meta.discourse.org/t/multilingual-plugin/*de/*142740/125
用于德语帖子?

如果我的问题太愚蠢,我很抱歉……

2 个赞

简而言之,不可以。

该插件的部分目标是允许不同的母语者在同一个论坛上交流,并自然地向他们展示他们偏好的语言。这原本就是该插件的意图。

是的,您可以让他们在同一个论坛上。如果您确实需要两个独立的论坛,您将不得不使用身份提供商,例如 auth0 或 okta,然后它为两个论坛提供身份验证。

这目前不是该插件的功能,但通过一些额外的工作可以实现。要完全实现您的设想,无论如何都需要进行额外的工作。您可以 在 coop.pavilion.tech 上给我发送私信

2 个赞

鉴于本次投票结果,我将于九月开始着手开发此插件的下一个主要版本。如果您有任何具体的功能需求,现在是时候提出了。该插件的下一个版本还将提供付费商业订阅,包含支持和其他福利。该插件将继续保持 100% 开源。

4 个赞

您可以运行两个实例,并使用 discourse connect 让其中一个实例处理身份验证。

1 个赞

作为非常小且困难的语系的一部分,我需要为我的芬兰语和爱沙尼亚语用户提供基于人工智能的翻译。主要语言之外的翻译服务非常糟糕。

不过,翻译成英语的质量会好一些。

4 个赞

我正在尝试使用 multilingual guest language switcher footer visible 设置,以便让社区的主要语言快速成为访客的界面语言。以下是我观察到的情况:

  1. 界面语言短列表栏仅在 multilingual guest language switcher 设置为 footer 时可见,而在设置为 header 时则不可见

    鉴于该栏在设置名称中也被称为“footer”(尽管它不在 Discourse 的页面底部,而是浮动在内容上,靠近窗口的右下角),这可能是符合预期的。不过,在提供大量界面语言的网站上(例如 Discourse 当前提供的所有语言),最好能有一个快速访问列表,让访客可以独立于完整语言选择菜单的位置来选择社区的主要语言。(而且我认为在 header 中放置一个菜单按钮比让一个浮动栏覆盖页面内容的随机部分要干净得多。)

    也许当选择 header 并选择 multilingual guest language switcher footer visible 中的语言时,可以将这些语言排在菜单的顶部并稍作突出显示?

  2. 该设置允许重新排序栏中选择的语言:

    然而,该栏似乎忽略了该顺序,而是按其两字母的短代码按字母顺序对语言进行排序:
    screenshot of the multilingual guest language switcher bar. The languages are (in that order), Arabic, German, English (US), French and Italian, all listed by their native names: "اللغة العربية", "Deutsch", "English (US)", "Français", "Italiano" and "简体中文"

    如果能遵守设置中配置的顺序(无论是默认情况下,还是通过额外的设置切换)就更好了。

1 个赞

另外,当 multilingual guest language switcher 设置为 header 时,语言列表菜单不可滚动(也不会受浏览器窗口高度限制),因此有些语言无法选择,因为它们恰好出现在浏览器下边缘之外。(Firefox 中的解决方法:按 Ctrl+滚轮缩放,以便整个菜单适应浏览器窗口。)

这是在“Multilingual”插件的 0.2.9 版本(ba63f9a)中出现的。

1 个赞

我们实例的先前管理员似乎已经在 \u003cdiscourse base URL\u003e/admin/multilingual/translations 上上传了一些 category_name.\u003clanguage code\u003e.yml

但它们似乎不起作用。 有没有办法查看或下载它们的内容,以便我可以修改它们并重新上传?

编辑:

它们现在可以正常工作了。(我不知道有什么变化。)如果将来需要修改它们,我仍然有兴趣下载它们(或者在服务器上访问它们,如果它们在那里)。

1 个赞

您好,我在两个站点上都安装了 discourse-multilingual
i18n.js 中出现 require 未定义的错误:

当我禁用 discourse-multilingual 时,错误没有发生。您能告诉我可能是什么原因造成的吗?
谢谢。

但我希望:

我在这个主题上遇到了第二个 bug。

我已经将简体中文替换为韩语
出现了一个铅笔图标,通知了更改。
但如果你查看编辑历史记录条目,就不会显示主题语言的更改。
即使在原始模式下,前后也都是相同的。

我认为这也是问题所在:

1 个赞

你好!

抱歉,这可能是一个奇怪的问题,但有什么地方可以看到这个插件的实际运行效果吗?我阅读了文档,也浏览了整个帖子,但大多数链接的示例网站似乎都无法正常工作或已更改。例如:Pavilionhttp://try.thepavilion.io/ 因此,我无法查看插件、语言切换器等提到的示例。

如果目前没有办法进行测试,是否有人能好心回答几个问题?:slightly_smiling_face:

  • 用户可以在注册时选择他们偏好的语言,以便论坛内容根据他们的选择自动过滤吗?
  • 是否可以将“LanguageSwitch”按钮更改为地球图标或其他图标?目前它似乎是一个日文字符,但由于我的论坛上没有人使用该语言,这可能会让用户感到困惑或让他们忽略它。
  • 我知道类别和描述可以翻译(如果我理解正确的话),但这是否也适用于子类别的子类别?此外,它是否可以应用于品牌标题中的元素(插件)?例如,“Products”一词是否可以被翻译,并根据用户选择的语言重定向到西班牙语或英语版本?我之所以这样问,是因为这是一个非常受欢迎的插件,我想知道它是否支持多语言插件。

抱歉问了这么多问题!我已尽力通过查看截图和文档来弄清楚一切。

看起来这个插件和 Discourse 3.5.0beta1 兼容不好,我不得不禁用它才能让论坛恢复正常。我在日志中没有发现任何信息,只有:

弃用通知:add_to_serializer 不应直接用于重写 include_* 方法。应使用 include_condition 关键字参数
在 /var/www/discourse/plugins/discourse-multilingual/plugin.rb 的第 314 行:in `block in activate!’

2 个赞

我遇到当前Discourse的错误500 / 抱歉:

ArgumentError(参数数量错误(传入2个,预期1个))
app/controllers/extra_locales_controller.rb:44:in `url'

回溯

plugins/discourse-multilingual/extensions/extra_locales_controller.rb:21:in `bundle_js_hash'
app/controllers/extra_locales_controller.rb:44:in `url'
plugins/discourse-multilingual/lib/multilingual/locale_loader.rb:30:in `preload_tag_translations'
plugins/discourse-multilingual/plugin.rb:77:in `block (2 levels) in activate!'

我的区域设置是 de_DE.UTF-8

顺便提一下:“反馈一个错误”上方的链接指向目前未知域名 discourse.pluginmanager.org

1 个赞

此插件现在肯定会导致我的网站崩溃。

1 个赞

该插件已更新,不会在最新版本的Discourse上出现问题。

14 个赞