【问题标题】:Steps to develop a multilingual web application开发多语言 Web 应用程序的步骤
【发布时间】:2010-11-30 06:04:28
【问题描述】:

开发多语言 Web 应用程序的步骤是什么?

我应该将语言文本和资源存储在数据库中还是应该使用属性文件或资源文件?

我知道我需要将 CurrentCulture 与 C# 单独与 CultureFormat 等一起使用。

我想知道您对构建多语言 Web 应用程序的步骤的看法。

不必特定于语言。我只是在寻找构建它的步骤。

【问题讨论】:

    标签: internationalization globalization


    【解决方案1】:

    具体机制因你开发的平台而异。

    作为一组粗略的工作项:

    1. 代码与内容分离。通常,资源在资源文件(在 dot net 中)的帮助下编译成程序集或存储在属性文件(在 java 中,尽管有其他选项)或其他位置,并由 ID 引用。如果您希望本地化成本合理,则需要避免在版本之间更改 ID,因为大多数本地化工具会将新 ID 视为新内容。
    2. 识别应用程序中对用户的区域设置做出假设的区域,尤其是日期/时间、货币、数字格式或输入。
    3. 为特定于语言环境的 CSS 内容创建一些机制;并非所有字体都适用于所有语言,并非所有字体大小都适用于所有语言。不要将自己描绘成强迫泰文以 8 pt 显示的角落。此外,至少两种语言的文本方向性将是从右到左。
    4. 设计您的页面内容,以便在出现的内容比您预期的多或少时合理地重排或调整大小。许多语言将短字符串从英语扩展 50-80%,将较长的内容扩展 30-40%(这是粗略的经验法则,而不是法律)。
    5. 确定您的 UI 设计师所做的文化假设,并尝试使它们更加中立,或者,如果您有钱和理智要烧掉,可以本地化。邮箱在所有地方看起来都不一样,手势也不是通用的,可爱、聪明或依赖视觉双关语的东西不一定能很好地传播。
    6. 为您支持的语言选择适当的编码。现在对发送到网络浏览器的所有内容都使用 UTF-8 是合理的,无论使用何种语言。
    7. 如果您要处理数据库中多种语言的内容,请为您的数据库选择适当的排序规则,或者启用备用排序规则。不区分大小写在许多语言中的工作方式与在英语中不同,并且在某些语言中可以接受不区分重音,但在其他语言中通常不合适。
    8. 如果您尝试支持搜索,请不要假设单词由空格分隔或句子由标点分隔。

    避免:

    1. 将本地化内容存储在数据库中,除非有非常非常好的理由。然后,再想一想。如果您的内容有些动态,并且每个地区的代表都需要对其进行自定义,那么将某些类别的内容与关联的区域设置 ID 一起存储可能是合理的。
    2. 尝试巧妙地处理字符串连接。此外,尽量不要假设关于多元化或计数的规则对每种文化都适用。至少确保字符串(和控件)的顺序可以使用您平台的典型格式字符串指定,或者如果您出于某种原因选择使用自己的本地化工具包,则可以在本地化工具包中详细记录。
    3. 假设本地化人员可以修复代码错误。这通常是不合理的,至少如果您想在合理的时间内以合理的成本交付产品的话;有时甚至是不可能的。

    【讨论】:

    • 很好的答案。我不同意你在数据库上存储内容。我对 .net 不太确定,但是当您对资源文件进行更改并因此编译为卫星程序集或程序集时,应用程序将不得不重新加载等。此外,如果它是门户网站或 CMS,我认为它会做得更多使用数据库存储本地化内容比使用资源或属性文件更有意义。你怎么看?
    • 这就是我所说的;如果您的内容是动态的,那么在数据库中使用区域设置 ID 标记内容可能是合理的。但是,我实际上已经看到存储在数据库中的“所有” UI 内容,甚至是不打算动态更改的菜单和项目,这导致了相当可观的资源利用率,用于除应用已升级。
    【解决方案2】:

    第一步是internationalize。第二步是localize。第三步是translate

    【讨论】:

      最近更新 更多