当前位置:  开发笔记 > 开发工具 > 正文

在Flex应用程序中处理英文和中文的最佳方法是什么?

如何解决《在Flex应用程序中处理英文和中文的最佳方法是什么?》经验,为你挑选了1个好方法。

我要求能够提供英语和几种亚洲语言的flex组件.我看过flex文档,似乎我必须构建几个swf,这感觉不对.

有谁知道用不同语言捆绑字符串资源和处理字体的简单实用的方法?



1> Theo..:

我想你知道如何本地化Flex应用程序的基础知识,但是如果你想了解更多,那么这里有一个很好的和全面的描述:运行时本地化.

在Flex 3中,您有三种方法可以解决问题:

    将所有语言编译到SWF中并在运行时切换语言

    为每种语言编译单独的SWF

    将无语言或默认语言编译到SWF中并在运行时加载其他语言

第一种选择可能是最常见的,最不复杂的并且没有很多缺点.如果您有特殊需求,可以使用另外两个,例如必须不惜一切代价降低SWF的大小,或者需要在运行时从数据库加载所有字符串.

要实现第一个选项,您需要为每种语言创建资源包(基本上是.properties位于以语言环境命名的目录中的多个文件,例如en_US表示美国英语,sv_SE表示瑞典语).在代码中,您通过调用资源管理器来引用字符串:

这将在当前语言环境中从"mybundle.properties"编译的资源包中检索名为"mystring"的字符串.

要确保每个语言环境实际编译到应用程序中,您需要添加-locale=en_US,sv_SE到编译器标志(但将en_US,sv_SE部件更改为您拥有资源包的语言).您还需要将目录的位置添加到源路径:( -source-path+=locale/{locale}" {locale}"部分将自动替换为-locale标志的值).

现在,您已将所有语言编译到SWF中,并可在运行时更改语言.这样做的方法是修改localeChain资源管理器的属性:

resourceManager.localeChain = ["sv_SE", "en_US"];

通过上面显示的设置,资源管理器将首先查看瑞典资源包,其次是美国英语.您可以随时设置其他订单,这样做会改变应用程序中的所有文本.

我鼓励你阅读我上面提到的描述,它更详细地解释了这一点,并且最有可能以更容易理解的方式解释.它还解释了在使用en_US以外的语言环境编译应用程序之前,如何做一些准备工作.

你遇到的另一个问题是字体.那个比较棘手.最好的方法是使用具有完整Unicode字符范围的字体,这样您只需要嵌入该字体,并且可以显示任何文本.但是,这意味着您的选择有限.我知道在Windows中至少有一个版本的Aria拥有大量的角色,在Mac上有一个Helvetica(我认为,或者它可能是Lucida Grande,或两者兼而有)也有大多数版本的你需要显示许多亚洲语言.

将所有语言嵌入到同一个SWF中通常对增加文件大小没什么影响,因为文本非常轻量级,但字体绝对不是.嵌入整个Unicode版本的Arial可以将SWF的文件大小增加几兆字节,这对于Web应用程序来说很糟糕.根据情况,您可能必须为每种语言编译一个SWF,因为字体数据会使SWF变得难以处理.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有