在 after_initialize 外部自定义 auth 插件中的文本

我正试图让外部身份验证提供程序的身份验证按钮文本可配置。

但是,由于 auth_provider 调用必须在 after_initialize 之外(因为它必须在 OmniAuth 初始化之前加载),我遇到了一些障碍。

I18n 不起作用。
SiteSetting 尚不存在。

我发现 GlobalSetting 在这个阶段是可用的,但我更愿意使用上述方法之一,因为这些方法可以从管理员 Web 界面更改,而 GlobalSetting 不能。

有什么办法可以在这里使用 SiteSettingI18n 吗?

所以我有了

auth_provider title: 'with provider'

可以使用
auth_provider title: GlobalSetting.try(:name_of_setting)

但我希望使用
auth_provider title: SiteSetting.name_of_setting

auth_provider title: I18n.t('button_text_slug')

3 个赞

有人对此有什么建议吗?@sam@david

1 个赞

如果省略 title 参数,Discourse 将在运行时查找翻译字符串。然后,用户可以通过“自定义文本”界面进行自定义。这是我们在现代身份验证插件中采用的方法(尽管有些插件仍出于向后兼容性而使用旧方法)

5 个赞

太管用了!!谢谢!

2 个赞