2009-08-01 75 views

回答

6

我建议存储在资源文件中的UI特性(.resx),并有CurrentUICulture为每个请求的特定语言:

<globalization culture="auto" uiCulture="auto" /> 

如果你的网站是主要内容为导向,而不是面向业务的应用程序,基于语言的差异很大,您可能需要考虑为每种语言构建单独的一组页面,并根据Cookie或配置文件属性或Request.UserLanguages重定向用户。无法给全球化问题提供一个全面的处方。基于每个单独项目的性质,最好的体系结构有很大不同。

+0

网站是面向内容的 – Ahmed 2009-08-01 12:15:02

1

NLS是一个反复出现的要求,并且通常在询问有关NLS功能的问题时,要求的人不知道复杂性。 NLS通常分成(至少)2个区:在UI

  • NLS数据

  • 在你的情况

    • NLS,基于内容的网站,你可能甚至将第二点分成 - 由网站提供商生成的数据和 - 用户生成的数据。

      对于UI NLS,您可以使用Mehrdad提到的.resx机制,但您应该知道,本地化的每项工作都需要编辑源代码(即resx文件)。

      当我不得不开发一个多语言的web应用程序时,我因此选择在我的代码中处理NLS要求,并创建了一些镜像UI的NLS特定表(顺便说一句,这是写入graspx的动机:从aspx源文件中提取所有可见的文本,如Label.Text等)。有一个单独的应用程序来上传用户界面定义,并让翻译人员完成他们的工作。主应用程序具有翻译文本的导入功能。

      数据模型如下所示:Page - PageItems - PageItemTexts(引用语言),所以它非常简单。

      相同的模型可以应用于内容:而不是Page和PageItems,您只需拥有仅保存PK和标识符的ContentItems以及保存与语言相关的ContentItems文本的表格。

      此外,您可以定义某种语言回退链,以便未翻译的文本以原始语言或其他(密切相关的)语言显示。

      显示的语言可以通过浏览器提供的语言(HTTP_ACCEPT_LANGUAGE)来选择,但应允许被用户覆盖(例如通过组合框)。所选语言应存储在会话变量,cookie或数据库中(用于注册用户)。

    相关问题