【问题标题】:Website translation architecture and implementation网站翻译架构与实现
【发布时间】:2011-03-18 19:20:24
【问题描述】:

我正在执行一个项目,其中一个网站应该支持多语言。 现在,这个网站应该每天为大约 500K+ 的访问者提供服务,所以它一定是超级高效的。

我创建了一个参数表 {[ID],[Name]} 和一个链接表 {[objectID],[parameterID],[languageID],[value]}。我认为这是部署多语言支持同时有权为每种语言翻译不同参数的最佳方式。

据我所知,服务器的内存比物理硬盘快得多。因此,我计划为我的翻译架构存储 ASP.NET 应用程序状态对象。 (http://msdn.microsoft.com/en-us/library/ms178594.aspx)

到目前为止,我的计划听起来如何?有什么建议吗?

【问题讨论】:

  • 感谢大家的cmets,非常感谢!我很了解资源提供者,但我想让我的客户轻松添加和修改这些值,更不用说添加新的语言/翻译了。有没有办法将资源提供者连接到通用 MSSQL 表?值将被写入表中,提供者应将它们加载到内存中。在添加语言时,将重新加载值。
  • 请编辑您的问题以提供更多信息。 Stack Overflow 不是论坛,答案仅供解决您的问题的信息使用。

标签: asp.net sql architecture translation


【解决方案1】:

如果您打算制作支持多种语言的应用程序,您的即时反应应该让 .net 为您完成工作。我在你的问题中读到的是你正在设置一些东西来支持它。您应该知道,当您想要开发多语言环境时,本地化是必经之路。

看看这个msdn article,它应该能让你对这个主题有一个大致的了解。

【讨论】:

    【解决方案2】:

    因此,本地化应用程序可以分为两个部分:

    • 本地化业务逻辑实体。
    • 本地化所有其他内容。

    在问题中,我看到与业务实体本地化相关的词。为此,我同意将实体与其本地化分开的概念。

    第 1 部分 - 本地化实体

    我个人在数据库中这样做:

    table Entity {EntityID, Name} -this is the entity-related table.
    table EntityByLang {EntityID, LanguageID, Name} -this is the localized version of the table for each supported language.
    

    这种方式允许我为每个可本地化的属性(如 Name 及其本地化)设置默认值(如果在本地化表中可用)。剩下的就是 - 您需要实现数据访问层,该层将 Name 本地化为当前用户语言或默认值(如果语言或翻译不适用于给定语言)。

    第 2 部分 - 本地化其他所有内容

    在这里,在性能方面没有其他选择,我建议使用某种静态资源。就我个人而言,我使用可用于标准 asp.net 应用程序的静态资源。

    从架构的角度来看,不要直接从你的 UI 代码中引用本地化代码,像这样(我不喜欢):

    var translation = HttpContext.Current.GetGlobalResourceObject("hello");
    //excuse me, if I don't exactly remember the GetGlobalResourceObject() method name...
    

    相反,我建议使用这种方法:

    var translation = AppContext.GetLocalizationService().Translate("hello");
    

    其中:AppContext - 某种外观/工厂(实际上是抽象外观/工厂的实现)。 GetLocalizationService - 最初返回某种ILocalizationService,实现后返回StaticResLocalizationService(实现ILocalizationService)。这种方式允许从一种本地化切换到另一种本地化。特别是 StaticResLocalizationService 与 asp.net 静态资源一起使用

    抱歉,示例代码混乱,但我希望你能理解我的方法。

    我希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      我建议创建自定义资源提供程序,您可以在此处阅读更多内容:

      http://msdn.microsoft.com/en-us/library/aa905797.aspx

      使用此模型,您可以利用现有的 asp .net 本地化功能

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 2013-04-07
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多