放宽用户名中允许字符的限制是最古老的功能请求之一。从 Discourse 2.3.0.beta9 开始,终于可以在用户名和组名中使用 Unicode 字符了。
新增站点设置
有两个新的站点设置:allowed unicode username characters(允许的 Unicode 用户名字符)和 unicode usernames(Unicode 用户名)。
allowed unicode username characters 允许您仅允许特定的 Unicode 字符(例如 [äöüßÄÖÜẞ] 或 \p{Greek})。默认情况下,Discourse 允许字母(Ll / Lm / Lo / Lt / Lu)、标记(Mc, Me, Mn)和数字(Nd, Nl),但_不包括_ No。此设置可以限制这些字符,但无法添加额外的字符。此外,也无法禁止 ASCII 字母和数字。
您应根据社区的需求进行定制,仅允许社区所用语言所需的字符和脚本。
如果您想了解更多关于正则表达式中的 字符类 和 字符属性 的信息,请参阅 Ruby 文档。
unicode usernames 默认处于禁用状态,我们强烈建议您在启用它之前先配置 allowed unicode username characters 设置,以防止 同形用户名欺骗。
允许的示例值:
- zh_CN 中文:
[\p{Han}] - zh_TW 中文:
[\p{Han}] - ko 仅韩语:
[\p{Hangul}] - jp 日语:
[\p{Han}\p{Katakana}\p{Hiragana}] - jp 日语(仅限片假名):
[\p{Katakana}] - fi 芬兰语:
[åäöÅÄÖ] - cs 捷克语:
[ěščřžýáíéóůúďťň]
字母头像服务
字母头像服务已更新,我们添加了对生成最常用脚本头像的支持。如果您发现您的语言缺少头像,欢迎在 GitHub 上提交拉取请求,从 Google Noto 字体 系列中添加字体。
仅当启用了 external system avatars enabled(启用外部系统头像)站点设置时,才能启用 unicode usernames,因为内部头像生成器不支持 Unicode。如果您无法或不想依赖外部服务,可以运行自己的 字母头像服务 实例。
须知…
Discourse 在验证用户名长度(min username length 和 max username length 站点设置)时,计算的是 字素簇(“用户感知的字符”),而不是 Unicode 码位。字母头像服务也使用用户名的第一个字素簇来生成头像。
您还应该查看 reserved usernames(保留用户名)站点设置。既然您的论坛现在支持用户名中的 Unicode,您可能需要添加额外的保留用户名。
反馈
您是否为社区启用了 Unicode 用户名?我们很希望能听到您的反馈。
此外,我们想为 Discourse 支持的每种语言设置 unicode username character whitelist(Unicode 用户名字符白名单)的合理默认值。欢迎在回复中建议正则表达式。
