在过去的几天里,我一直在为我用 MVC 编写的 web 应用程序实现本地化。
有 3 个主要任务可以解决我可以指出的 Lozalization “问题”:
有几种方法可以完成我探索过的每项任务,我正在努力在它们之间进行选择。
有两个我感兴趣的问题:
请写出一种方法与另一种方法的优点\缺点。
1. 存储
资源文件:
XML文件:
<string key="myAppName">
<heIL>some Hebrew value</heIL>
<enUS>some English value</enUS>
</string>
2. 服务器端访问
3. 客户端访问
这就是它变得有趣且有时变得复杂的地方。
我在这里探索了两个选项,但我不确定如何进行。
服务器端生成的脚本:
<script>
中添加一个服务器脚本渲染块标签 这是使用 Razor 引擎的示例。
<script type="text/javascript">
k_CultureInfo = "@CultureInfo.CurrentCulture.Name";
K_ApplicationName = "@MyStrings.SomeStringKey";
....
</script>
自定义 HTTP 处理程序:
我在这里的博客文章中找到了这个想法:Localize text in JavaScript files in ASP.NET这里
最佳答案
资源文件:
使用 resx 格式。翻译工具将无法处理您建议的格式,因为它在同一文件中包含多种语言。典型的翻译工具会获取一个源文件,并在翻译后为每种语言生成一个匹配文件。我会不惜一切代价避免你建议的格式。
如果要使用 XML,请使用每种语言的单个文件。此外,无论您选择何种格式,请确保为每个句段包含上下文注释以帮助翻译人员。
服务器端访问
使用 resx 并节省定义图层的时间
客户端访问
在我看来,服务器端生成的脚本更简单,更符合服务器端访问。
文化切换机制
我假设您是在询问逻辑而不是 UI。最常用的方法是获取用户的浏览器语言设置。如果语言设置为您的应用程序中不存在的语言,请回退到您的默认语言。您还想设置一个带有用户选择的 cookie(以防他们手动更改语言),以便下次向他们显示他们选择的语言。
关于asp.net - 本地化 .NET Web 应用程序的最佳方式(服务器端和客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744362/