gpt4 book ai didi

c# - 多语言 MVC 4 应用程序

转载 作者:可可西里 更新时间:2023-11-01 03:01:16 24 4
gpt4 key购买 nike

我现在正在创建一个新的应用程序,我希望一开始就把一切都做好,这样我就可以在未来与它一起成长。

我看过一些描述如何制作支持多语言的应用程序的指南,但我想不出哪一个可以使用。

有些教程很旧,不知道是不是过时了。

http://www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri http://geekswithblogs.net/shaunxu/archive/2012/09/04/localization-in-asp.net-mvc-ndash-upgraded.aspx http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx http://www.chambaud.com/2013/02/27/localization-in-asp-net-mvc-4/ https://github.com/turquoiseowl/i18n

我发现它们是两种存储语言数据的方式,要么在数据库中,要么在资源文件中。有什么优点/缺点?还有其他首选方式吗?

这就是我想要的:

  1. 易于维护(添加/更改/删除)
  2. 全面的语言支持。 ( View 、货币、时间/日期、jquery、注释等..)
  3. 启用更改语言。
  4. 自动检测语言。
  5. future 安全。

执行此操作的首选方法是什么?有什么好的教程是 2013 年的最佳实践吗?

最佳答案

我已经 written a blog post转换多语言 asp.net mvc 应用程序的以下方面:

数据库:我将表格分成两部分,一部分包含不可翻译的字段,另一部分包含需要翻译的字段。

Url Routes:我通常将文化保留在 URL 中,这样您就可以获得一个索引良好的 ML 站点。

routes.MapRoute(
name: "ML",
url: "{lang}/{controller}/{action}/{id}",
defaults: new { lang = "en-CA", controller = "Home", action = "Index", id = UrlParameter.Optional }
);

从 Controller 的基类中,您可以使该 {lang} 参数可用于您的 Controller 。有关所有详细信息,请参阅博客文章。

查询您的数据:您只需将 Culture 传递到您的存储库或数据库上下文。这个想法是创建一个 View 模型,合并您为翻译而分离的两个表。

public ActionResult Index(string id)
{
var vm = pages.Get(id, Language); // Language is the {lang} from the route
return View(vm);
}

您的观点:使用带有通用双字母语言代码的 .NET 资源文件,例如:HomePage.en.resx、HomePage.fr.resx。区域设置 en**-US**、en**-CA** 可用于格式化货币、日期、数字等。您的资源文件很可能与英语美国、加拿大等国家相同。

图片:使用像 imagename-en.png、imagename-fr.png 这样的格式。在您的 View 中,通过扩展方法使 {lang} 路由参数可用,并像这样显示您的图像:

<img src="/content/logos/imagename-@this.CurrentLanguage()" />

对于您所支持的语言,您可能还有一个完整的独立文件夹。示例:/content/en/imagename.png,/content/fr/imagename.png。

JavaScript::我通常会创建一个名为LanguagePacks的文件夹和一个名为Lang-en.js、Lang-fr.js的JS文件。这个想法是创建你可以在所有其他 JS 文件中使用的“静态”类:

// lang-en.js
var Lang = {
globalDateFormat = 'mm-dd-yy';
greeting: 'Hello'
};

在您的 View 中,加载正确的语言文件

<script type="text/javascript" src="/content/js/languagepacks/lang-@(this.CurrentLanguage()).js"></script>

来自 JavaScript 模块

// UI Module
var UI = function() {

function notify() {
alert(Lang.greeting);
}
return {
notify: notify
}
};

没有一种方法可以制作多语言网络应用程序。使用资源来翻译您的文本,它们可以在运行时快速交换。您有多个编辑器可以打开那些您可以传递给翻译器等的编辑器。

您可以查看博客文章并获得有关我如何执行此操作的详细示例。

关于c# - 多语言 MVC 4 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com