0

从性能和内存的角度来看,本地化属性文件的最佳实践是什么?

几个大文件还是很多小文件?
使用属性文件或编译的属性类文件?

示例场景:
我有一个包含大约 150 个 .jsp 文件的应用程序。
每个 jsp 文件使用 5 到 50 个键。
按键总数为 1500个。
每个按键被翻译成 25 种语言。

我想四个解决方案:

1) 使用一些但很大的属性文件(例如:'Bundle_da.properties' 之类的文件)
有 25 个属性文件,每个文件有 1500 个键。
所有 150 个 .jsp 文件都包含相同的属性文件。
这样,所有 .jsp 文件将包含所有 1500 个键,其中它可能只使用 5 到 50 个键。

2) 使用一些但较大的属性类文件(例如,'public class Bundle_da extends ListResourceBundle...')
有 25 个类,每个类有 1500 个键。
所有 150 个 .jsp 文件都包含同一个类。
这样,所有 .jsp 文件将包含所有 1500 个键,其中它可能只使用 5 到 50 个键。

3) 使用许多但很小的属性文件
每个 .jsp 文件将只包含该特定文件所需的键。
属性文件的数量将是 150 x 25 = 3750
这样,所有 .jsp 文件将只包含实际使用的密钥。(即 5 到 50 个键)。

4) 使用 .jsp 特定的属性类。
每个 .jsp 特定包类将仅包含该特定 .jsp 文件所需的键。
属性类的数量将是 150 x 25 = 3750
这样,所有 .jsp 文件将只包含实际使用的键。(即 5 到 50 个键)。

两个问题:
性能的角度来看,这 4 种解决方案中的哪一种是首选解决方案?
内存的角度来看,这 4 种解决方案中哪一种在 Web 服务器上分配的内存更少?

提前谢谢你
艾伦

4

1 回答 1

0

我们有一个较大的桌面应用程序。任何为最终用户消费而设计的文本消息都包含在代码中的某些标记中。perl 脚本扫描所有 *.C 文件并提取标记的字符串以生成 .po 文件,它还从 rsc 文件中提取字符串。我们最终得到两个 .po 文件,一个用于 .C 字符串,另一个用于 .rsc 字符串。总共有大约 16,000 个字符串,.po 文件被转换为每种语言的 .mo 文件,每个 .mo 文件大约 600K,因此每种语言 1.2Mb。

您的情况可能有所不同,但我们从来没有理由担心文件大小。我关心的是降低本地化子系统的复杂性。例如,在我们的案例中,我宁愿让我们的翻译人员填写两个 .po 文件中的空白,而不是可能包含最终用户文本消息的 100 多个文件。

注意每个 .po 文件大约 400K。

于 2012-10-22T09:18:40.173 回答