Forem Hacktoberfest:让我们国际化!
翻译通知过滤器 #14884
我们最近发布了 Forem 国际化的基础功能。初期,这意味着管理员可以设置其 Forem 的默认语言环境,以防其主要面向西班牙语或葡萄牙语社区。从长远来看,个人用户很可能能够设置所有 Forem 的显示方式,从而覆盖默认设置。
但我们不要试图一次性完成所有这些事情。
目前,我们正在接受对国际化的迭代改进。
如何立即为 Forem 国际化做出贡献
在初始构建阶段,我们目前仅支持两种语言:英语和法语。一旦我们完成了更多基础架构的建设,添加更多语言将非常有可能,但目前我们并不希望看到人们为添加新语言做出贡献,更希望看到他们将硬编码的英文文本转换为可翻译的变量。
贡献示例
我们不会针对每个可能的可翻译区域设置单独的问题,因为大多数挑战在于发现可翻译元素。
您可以访问 DEV 的法语版本,dev.to/locale/fr
了解其在生产环境中的运作方式。我们并不期望管理员定义的副本能够翻译,但我们希望应用程序定义的副本能够翻译。
根据我对代码库的了解,我可以访问法语主页并发现一些未翻译的副本。
我搜索了整个项目,发现该代码可在app/views/layouts/_main_nav.html.erb
...
<nav class="mb-6 <% unless user_signed_in? %>mt-4<% end %>" id="main-navigation" aria-label="<%= community_name %>">
<ul class="default-navigation-links sidebar-navigation-links spec-sidebar-navigation-links">
<li>
<a href="<%= root_path %>" class="crayons-link crayons-link--block">
<%= inline_svg_tag("twemoji/house.svg", class: "crayons-icon crayons-icon--default", aria_hidden: true) %>
Home
</a>
</li>
<li>
<% unless user_signed_in? %>
<a href="<%= sign_up_path %>" class="crayons-link crayons-link--block fw-bold">
<%= inline_svg_tag("twemoji/handshake.svg", class: "crayons-icon crayons-icon--default", aria_hidden: true) %>
Sign In/Up
</a>
<% end %>
</li>
<% default_nav_links.each do |link| %>
<%= render "layouts/sidebar_nav_link", link: link %>
<% end %>
</ul>
</nav>
这就是有趣的地方。在翻译过程中,我们乐于以翻译的名义简化Sign In/Up
流程——作为项目负责人,我这么说比较容易,但我真的认为我们可以完全取消这个按钮。它就在上面那个行动号召的正下方。
因此,我发现了两个调整的机会:
- 翻译“家”。
Sign in/Up
全部移除。
我们的团队可能不同意删除Sign in/Up
,但只要只是小改动,我认为在拉取请求审核时发现这一点是可以的。我们可能会要求您不要修改 ,而只修改“主页”——但我们会拭目以待。开源领域有很多细微的差别。
这是我调整后的文件:
<nav class="mb-6 <% unless user_signed_in? %>mt-4<% end %>" id="main-navigation" aria-label="<%= community_name %>">
<ul class="default-navigation-links sidebar-navigation-links spec-sidebar-navigation-links">
<li>
<a href="<%= root_path %>" class="crayons-link crayons-link--block">
<%= inline_svg_tag("twemoji/house.svg", class: "crayons-icon crayons-icon--default", aria_hidden: true) %>
<%= t("core.home") %>
</a>
</li>
<% default_nav_links.each do |link| %>
<%= render "layouts/sidebar_nav_link", link: link %>
<% end %>
</ul>
</nav>
请注意,我将“Home”替换为<%= t("core.home") %>
。t
是 Rails 视图助手,是...的缩写。I18n.translate
这就是您在视图中需要做的所有事情,但您的工作还没有完成!
更改本地化 YAML 文件,像这样...
# config/locales/en.yml
en:
core:
.....
home: "Home"
# config/locales/fr.yml
fr:
core:
.....
home: "Page D'Accueil"
这些文件中的值应该按字母顺序排列。
“Home” 字面意思是“住所”,或者可能是“maison”,但在互联网环境下,我认为“Page D'Accueil” 更合适。
这个项目仍处于初始基础架构阶段,因此我们无需在所有翻译上都做到完美。请尽力而为。因此,我们暂时不会扩展法语和英语测试语言以外的版本。
就是这样!如果您提交了上述 PR,我们很可能会接受。请阅读我们的文档,以便更好地了解如何以不同的方式做出贡献。随着我们项目这部分的发展,期待更多关于如何为国际化做出贡献的帖子。
🤓 完整说明请参阅我们的文档 I18n 文档。
🍂 更多 Forem 问题被标记为 Hacktoberfest 合格
编码愉快!
鏂囩珷鏉ユ簮锛�https://dev.to/devteam/forem-hacktoberfest-let-s-internationalize-404n