gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:31:13 24 4
gpt4 key购买 nike

我需要能够提供英语和几种亚洲语言的 flex 组件。看了flex的文档,好像要建几个swf的,感觉不对。

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

最佳答案

我想您知道如何本地化 Flex 应用程序的基础知识,但如果您想了解更多信息,这里有一个很好且全面的描述:Runtime Localization .

在 Flex 3 中,您可以通过三种方式解决问题:

  1. 将所有语言编译成SWF并在运行时切换语言
  2. 为每种语言编译一个单独的 SWF
  3. 将无语言或默认语言编译到 SWF 中并在运行时加载其他语言

第一个选项可能是最常见、最不复杂且没有太多缺点的选项。如果您有特殊需要,可以使用其他两个,例如必须不惜一切代价减小 SWF 的大小,或者需要在运行时从数据库加载所有字符串。

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

<Label text="{resourceManager.getString('mybundle', 'mystring")'}/>

这将在当前语言环境中从“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"];

使用上面显示的设置,资源管理器将首先查看瑞典语资源包,然后再查看美国英语资源包。您可以随时设置另一个顺序,这样做会立即更改应用程序中的所有文本。

我鼓励您阅读 the description I referred to above ,它更详细地解释了这一点,并且很可能以更容易理解的方式解释了这一点。它还解释了在使用 en_US 以外的区域设置编译应用程序之前如何做一些需要做的准备工作。

您遇到的另一个问题是字体。那个更棘手。最好的办法是拥有一种具有完整 Unicode 字符范围的字体,这样您只需要嵌入它就可以显示任何文本。但是,这意味着您的选择会受到更多限制。我知道 Windows 中至少有一个版本的 Aria 具有大量字符,而在 Mac 上有一个 Helvetica(我认为,或者可能是 Lucida Grande,或两者兼而有之)也有大部分字符您需要显示许多亚洲语言。

将所有语言嵌入同一个 SWF 通常不会增加文件大小,因为文本非常轻量,但字体绝对不是。嵌入整个 Unicode 版本的 Arial 会使 SWF 的文件大小增加几兆字节,这对 Web 应用程序来说很糟糕。根据具体情况,您可能必须为每种语言编译一个 SWF,因为否则字体数据会使 SWF 变得笨拙。

关于apache-flex - 在 Flex 应用程序中处理英文和中文的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/156610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com