dot.net的日文和简体中文版本开发细节展示

317 阅读5分钟

.NET是你构建所有应用程序的平台,而且有一个由数百万开发者组成的全球社区。但直到今天,.NET网站dot.net还只有英文版本。消除学习.NET的语言障碍使我们能够接触到这个全球社区。这就是为什么我们很高兴地宣布我们的网站今天又推出了两种语言版本。日语和简体中文。

Homepage of the site in Simplified Chinese, Announcing dot.net in Japanese and Simplified Chinese

我们还没有完成!你会注意到,我们的网站仍有一些组件仍然只有英文,我们将在未来几个月内努力将它们本地化。我们很想听到你对增加更多语言支持的反馈。请在下面的评论区告诉我们你的想法。

如果你发现网站有问题--无论是翻译问题还是其他类型的问题,请使用网站上的反馈按钮来报告它。我们非常重视反馈意见,我们会根据你的反馈意见不断地更新网站。你可以在桌面浏览器的右侧找到反馈按钮,或者在移动版本的页面底部找到。下面是一个桌面版的例子。

The purple feedback button on the desktop versions of the site, Announcing dot.net in Japanese and Simplified Chinese

实施细节

我们分几个阶段进行这个项目。

我们选择从我们的主资源库开始做这个项目,它包含了我们大部分的内容和代码。网站的那一部分使用ASP.NET Core Razor Pages。

项目的第一阶段包括对现有网站进行全球化,这一变化在几个月前就已经启动。该阶段对客户来说是透明的,因为全球化包括设计和实施一个文化和语言中立的应用程序。这包括了:

  • 将服务添加到中间件,如调用AddViewLocalizationUseRequestLocalization 方法。

  • 确保代码是文化中立的。

  • IViewLocalizer 注入到视图中(通过_ViewImports.cshtml 文件):

    @inject IViewLocalizer T;
    
  • 确定需要传递给IViewLocalizer 的字符串。 下图显示了我们的一个页面在全球化步骤之前和之后的情况:Code diff showing the before and after the globalization step, Announcing dot.net in Japanese and Simplified Chinese

关于ASP.NET Core中的全球化和本地化过程的更多信息,请参阅ASP.NET Core中的全球化和本地化

第二阶段包括对网站进行本地化,将英文资源翻译成日文和简体中文,通过适当的路由和错误处理添加对ja-JP和zh-CN文化的支持,并添加一个语言选择器。我们决定在这个阶段使用便携式对象(PO)文件和Orchard Core框架。我们很幸运,在我们开始这个项目的时候,微软的本地化团队刚刚完成了对PO文件的支持,所以这是一个完美的时机

PO文件是基于文本的文件,包含特定语言的翻译字符串。我们支持的每种语言都有一个PO文件。在前一阶段传递给IViewLocalizer 的每个字符串都成为该特定资源的密钥。比如说:

msgid "Microservices with .NET and Docker containers"
msgstr "具有 .NET 和 Docker 容器的微服务"

msgid "Learn to build independently deployable, highly scalable & resilient services using .NET and Docker on Linux, macOS, and Windows."
msgstr "了解如何在 Linux、macOS 和 Windows 上使用 .NET 和 Docker 独立构建可部署、高度可缩放和可复原的服务。"

你可以把PO文件看作是字符串字典,Orchard Core帮助我们映射这些键值,把数据提取到PO文件中。为了使用Orchard Core,我们只需添加一个对OrchardCore.Localization.CoreNuGet包的引用。每次我们更新网站上的内容时,字符串将被添加到英文resources.po文件中,其中包含空的msgstr 值。新的和更新的字符串将在网站上以英文显示,直到几天后我们收到本地化团队发回的翻译。

关于PO文件的更多信息,请参阅在ASP.NET Core中配置可移植对象的本地化

接下来的阶段将包括对其他网站组件进行本地化,并增加其他语言。

文化检测将如何在dot.net上工作

URL中的文化是由语言-区域对代码表示的。在这个版本中,该网站现在将支持以下语言:

  • en-US - 英语(美国)
  • ja-JP - 日语(日本)
  • zh-CN - 中文(简体,中国)

访问该网站的用户将能够使用带有或不带有文化的URL进行访问,例如:https://dotnet.microsoft.com/downloadhttps://dotnet.microsoft.com/ja-jp/download

如果请求中指定了文化,我们将以指定的文化提供内容。 如果请求中没有指定文化,那么我们需要通过以下过程来确定显示哪种文字:

  1. 该网站将查看用户是否有cookie,如果发现,它将重定向到该文化。如果用户以前访问过该.NET网站,该cookie就会存在。
  2. 如果没有发现cookie,网站会检查传入请求的Accept-Language HTTP头。该值表明客户喜欢的语言和地域。如果它是支持的值之一,我们将使用该文化显示内容。否则,我们将显示en-US文化。

如果你希望看到不同语言的内容,你可以使用页面底部的语言选择器改变语言。

总结

很多人参与了这个项目的实施。因此,非常感谢所有参与的人

我想特别指出的是,一些人在网站发布前参与审查,以确保翻译质量高,他们给我们发送了数百条反馈意见。

请继续关注进一步的改进,并让我们知道你的想法。我期待着在未来几个月与你分享更多的更新。