英语和一种以上语言的ASP.NET动态本地化

英语和一种以上语言的ASP.NET动态本地化,asp.net,localization,dynamic-data,Asp.net,Localization,Dynamic Data,我正在创建一个网站模板,该网站的所有者将能够选择英语以外的母语,并自己本地化一些内容。现在让我用实际情况更好地解释一下:我的网站将有英语和土耳其语(我的母语是土耳其语,但这应该是可变的,适用于任何非英语语言)版本的主要内容标题,如博客、项目、关于、联系人等,但是它们的数量和名称完全取决于用户的选择,因此我可以打开一个名为MySection的新部分,它的标题和土耳其语的本地翻译将存储在我的数据库中(使用EF)。此外,在数据库的“我的设置”中,还存储了母语代码(在本例中为“tr”)。根据浏览器发送网

我正在创建一个网站模板,该网站的所有者将能够选择英语以外的母语,并自己本地化一些内容。现在让我用实际情况更好地解释一下:我的网站将有英语和土耳其语(我的母语是土耳其语,但这应该是可变的,适用于任何非英语语言)版本的主要内容标题,如博客、项目、关于、联系人等,但是它们的数量和名称完全取决于用户的选择,因此我可以打开一个名为MySection的新部分,它的标题和土耳其语的本地翻译将存储在我的数据库中(使用EF)。此外,在数据库的“我的设置”中,还存储了母语代码(在本例中为“tr”)。根据浏览器发送网页内容的最模块化/有组织的方式是什么,如下所示:

在DB中,章节是以这种方式组织的(标题及其土耳其语翻译)(所有这些都是任意数量的,完全由用户创建):


另外,我的母语设置(我已经创建)设置为
tr
(这取决于网站所有者,也可以更改)。因此,根据用户的浏览器首选语言设置,我希望显示土耳其语内容,对于所有其他语言首选项,包括(显然)英语,我希望显示默认的英语内容。使用RESX文件,对静态内容的特定语言进行本地化非常简单,但在我的情况下,我既没有静态内容,也没有特定的已知母语,因此我的所有数据都来自数据库。我希望尽可能少地编写代码,并尽可能声明性地编写代码。这样做的最佳实践是什么?检查页面中本地语言和当前区域性的设置,如果它们相等,则发送本地语言,否则发送默认标题是唯一的方法吗?它肯定会工作,但如果我想把它扩展到网站的其他部分呢?我不希望站点上到处都是if和else,我需要某种集中的字符串映射系统。最好的方法是什么?

您可以通过检查
Thread.CurrentThread.CurrentUICulture
属性()

覆盖base
Pag
e中的InitializeCulture()方法,动态加载本地化内容。显然,您的所有页面都必须从PageBase类继承(从System.Web.UI.Page继承)。您可以通过web.config(请参见PageBaseType属性)来确保这一点。是的,通过创建自定义页面类(只需一点额外的工作),这一点就可以做到。
  Title     NativeTitle
  ---------------------
  BLOG      BLOG
  PROJECTS  PROJELER
  ABOUT     HAKKINDA