代码之家  ›  专栏  ›  技术社区  ›  Larry K

如何测试应用程序的I_t_rn_t i_n_liz_t i_n?(国际化?)

  •  19
  • Larry K  · 技术社区  · 14 年前

    你如何测试你的应用程序是否符合I_?t_ rn_?t i_ n_liz_ t i_n?我告诉人们将unicode字符串i_t_rn_t i_n_liz_t i_n存储到每个字段中,然后查看输出是否正确显示。

    ——包括Excel报表中作为单元格内容的输出,以及文档、XML文件等的RTF格式。

    应该做什么其他测试?

    增加了@paddy的想法:

    也可以尝试从右向左的语言。例如,耶路撒冷的和平。应该看起来像:

    שלום ירושלים http://sandbox.kluger.com/shalom.jpg

    注意:stackoverflow的实现是正确的。如果文本与图像不匹配,那么您的浏览器、操作系统或代理可能有问题。

    另请注意:您不必更改或“设置”已经运行的应用程序来接受w欧洲字符或希伯来语示例。您应该能够将这些字符输入到应用程序中,并让它们正确地返回到您的输出中。如果你周围没有希伯来语键盘,复制并粘贴这个问题的例子到你的应用程序中。

    6 回复  |  直到 8 年前
        1
  •  6
  •   Paddy    14 年前

    选择文本从右向左读取的区域性,并为此设置系统-确保它正确读取(说起来容易做起来难…)。

        2
  •  4
  •   Community c0D3l0g1c    7 年前

    使用其中之一 the three "pseudo-locales" 自Windows Vista以来可用:

    三种不同的伪区域设置用于测试3种区域设置:

    基地 这个 qps-ploc 区域设置用于类似英语的伪 本地化。它的字符串是英文字符串的较长版本, 使用非拉丁和重音字符而不是普通脚本。 此外,简单的拉丁字符串应按与 这个区域。

    镜像 qpa-mirr 用于从右向左的伪数据,即 另一个值得测试的领域。

    东亚的 qps-asia 旨在利用大CJK字符 剧目,对测试也很有用。

    Windows将开始设置日期、时间、数字和货币的格式。 伪现场 这看起来很像英语,你可以用它工作,但当你不尊重当地环境时,这就足够明显了:

    [__ _ _ _ 3!!!!],8_ F[_ _ _ _![f] f 2006

        3
  •  3
  •   jcdyer Anand S Kumar    14 年前

    国际化不仅仅是Unicode处理。如果你知道的话,你还需要确保日期显示在用户时区的本地化位置上(并且确保有一种方法让人们告诉你他们的时区是什么)。

    测试时区处理的一个方便的事实是有两个时区( Pacific/Tongatapu Pacific/Midway )实际上相隔24小时。因此,如果时区处理得当,那么对于任何时间戳,这两个时区中的用户,日期都不应该相同。如果在测试中使用任何其他时区,结果可能会因运行测试套件的时间而异。

    您还需要确保日期和时间的格式符合用户的区域设置的要求,否则将解释日期呈现中的任何潜在模糊性(例如“05/11/2009(dd/mm/yyyy)”)。

        4
  •  3
  •   Kevin Panko Matthew Woodard    9 年前

    第一,学习 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets .

    确保您的应用程序可以处理 Turkish . 它有几个怪癖,打破了假定英语规则的应用程序。因为有四种字母“i”(虚线和无点、大写和小写),所以假定 uppercase(i) => I 在使用土耳其语规则时将被破坏,其中 uppercase(i) => Ä° .

    通常要做的是检查用户是否键入了命令 "exit" 通过使用 lowercase(userInput) == "exit" uppercase(userInput) == "EXIT" . 这在英语规则下是可以预期的,但在土耳其规则下会失败。 "exıt" != "exit" "EXÄ°T" != "EXIT" . 要正确地做到这一点,必须使用所有现代语言中内置的不区分大小写的比较例程。

        5
  •  2
  •   Synchro    11 年前

    “i_t_ rn_、t i_ n_ liz_ t i_n”是 真的? 要测试的字符串不正确,因为其中的所有字符也出现在ISO-8859-1中,因此该字符串完全可以工作,完全不需要任何Unicode支持!我不知道为什么当它的主要功能完全失效时,它会如此常用!

    即使是中文或希伯来文文本也不是一个好的选择(尽管从右到左本身就是一整罐蠕虫),因为它不一定包含任何超出3字节的utf-8之外的内容,奇怪的是,这在MySQL默认的utf-8实现(仅限于3字节字符)中是一个非常大的漏洞,直到通过在MySQL 5.5。如今,3byte utf-8最常见的用法之一是emojis,如下所示:【】。如果你在括号之间看不到一些非常小的彩色图片,恭喜你,你刚刚在你的Unicode堆栈中发现了一个漏洞!

        6
  •  1
  •   Ogre Psalm33    14 年前

    我从一个完全不同的角度思考这个问题。我不清楚我们做了什么,但在上一个项目中,我认为我们最终改变了区域设置(在“区域和语言选项”控制面板中?)以帮助我们确保本地化字符串正常工作。