2008-12-08 22 views
3

我目前正致力于将现有的Web应用程序转换为支持其他语言(即威尔士语)。我建议的方法是将所有显示的文本提取到属性文件中,然后使用JSTL fmt标签访问文本。我应该如何构造jsps使用的资源包属性文件?

我的问题是:这些属性文件应该如何构造?我知道他们需要在Web应用程序的类路径上,而不是直接将它们存储在WEB-INF/classes中,我宁愿在构建步骤中将它们复制到那里。这使我在如何在颠覆中存储文件方面有很大的灵活性。由于它们与jsps紧密结合,创建一个新的顶层目录(例如资源)并镜像该文件夹下的jsp结构是一个好主意吗?这将使我喜欢

resources/jsp/index.properties 
resources/jsp/index_cy.properties 

结构这似乎是一个合理的方法,它是可扩展为类属性文件太多,如果他们被要求:那么

resources/com/mycompany/myapp/CustomObject.properties 
resources/com/mycompany/myapp/CustomObject_cy.properties 

构建过程可以复制所有这些文件都放入WEB-INF /类中,准备打包成war文件。

这种方法是否符合行业标准?这是我现在的公司的第一个多语言应用程序,所以它可能被用作所有其他人的蓝图。

编辑:有人指出,这种做法可能会导致很多不同的属性文件复制的字符串。虽然这是真的,但它只会与jsps中存在的重复字符串一样多。从jsp到属性文件有一个明确的映射,这是以更好的属性文件重复为代价的吗?

回答

2

是符合行业标准的这种做法?这是我现在的公司的第一个多语言应用程序,所以它可能被用作所有其他人的蓝图。

是的,我认为它是。

我相信Maven的创建以下目录结构:

 
src 
    +- main 
    | |- java 
    | |- resources 
    +- test 
     |- java 
     |- resources 

,让你的代码和单元测试之间的干净的分离,然后与Java代码和资源,如属性文件等

0

我不确定在资源文件和使用它们的代码文件之间建立太强的连接是个好主意,因为它可能会导致不必要的重复使用文本。

当文本由第三方翻译,因为同样的表达,在不同的文件中出现多次的时候,可能有不同的翻译,这样可以大大迷惑用户,这是特别有问题的。

我会单独构建资源文件,并试图找到一个本身具有合理意义的组织,例如, UiLabels.properties,ErrorMessages.properties。

+0

这是一个很好的观点,因为相同的标签通常会跨多个jsps使用。 – 2008-12-08 12:28:12

+0

但是,当前的说法是,只要它出现在多个页面上(或者在同一页上甚至多于一次),相同的字符串就会被复制。所以我会试图为字符串的每个实例创建一个唯一的键,以允许上下文的灵活性。 – 2008-12-08 15:42:28

2

有人指出,这 方法可能会导致大量的重复 串在各种 属性文件。虽然这是真的,但 只会与 jsps中当前存在的字符串一样多的 字符串。从jsp到属性文件有一个明确的 映射,在 属性文件中的一些重复的代价是更好吗?

是的,这总是更好。虽然可以在不同的地方/ JSP中以英文重复使用字符串,但在其他语言中仍可能无法使用。本地化字符串的重复使用也可能会在不相关的组件之间产生不必要且棘手的依赖关系。 译员还需要了解他们在您的应用程序中翻译的文本的使用情况。

相关问题