【问题标题】:Global resource bundle in Struts2 - Granularity best practices ?Struts2 - Granularity 最佳实践中的全局资源包?
【发布时间】:2016-05-16 03:52:38
【问题描述】:

我有三个页面,三个不同的标签标题。

第 1 页标签标题名称: 第一页:您好:您好

第二页标签标题名称:第二页:你好:嗨

第三页标签标题名称:第三页:你好:嗨

哪个更好,实施和最佳实践明智:


解决方案 #1

在 global.properties 中

tab.title.page.number.one   = Page One 
tab.title.page.number.two   = Page Two
tab.title.page.number.three = Page Three
tab.title.colon             = :
tab.title.hello             = Hello 
tab.title.hi                = Hi

然后在jsp中每个页面的title标签里面

第 1 页:

<title>
    <s:text name="tab.title.page.number.one"/>
    <s:text name="tab.title.colon"/>
    <s:text name="tab.title.hello"/>
    <s:text name="tab.title.colon"/>
    <s:text name="tab.title.hi"/>
</title>

第 2 页:

<title>
    <s:text name="tab.title.page.number.two"/>
    <s:text name="tab.title.colon"/>
    <s:text name="tab.title.hello"/>
    <s:text name="tab.title.colon"/>
    <s:text name="tab.title.hi"/>
</title> 

第 3 页:

<title>
    <s:text name="tab.title.page.number.three"/>
    <s:text name="tab.title.colon"/>
    <s:text name="tab.title.hello"/>
    <s:text name="tab.title.colon"/>
    <s:text name="tab.title.hi"/>
</title>


解决方案 #2

在 global.properties 中

tab.title.page.one   = Page One : Hello : Hi  
tab.title.page.two   = Page Two : Hello : Hi
tab.title.page.three = Page Three : Hello : Hi

然后在jsp中每个页面的title标签里面:

第 1 页:

<title><s:text name="tab.title.page.one"/></title>

第 2 页:

<title><s:text name="tab.title.page.two"/></title>

第 3 页:

<title><s:text name="tab.title.page.three"/></title>

我的合作开发者认为HelloHi: 是可重复使用的。但它只是静态文本。它没有改变。哪个更好地使用实现,编码标准,性能方面(LOL)?谢谢!

【问题讨论】:

  • 我经常使用 autocompleter 按短名称使用标签,但您可以进行优化 LOL。并且不要多次使用s:text 以提高性能。

标签: java jsp struts2 internationalization resourcebundle


【解决方案1】:

这是我对完全 i18n 应用程序的体验。 您不应该尽可能多地为相同的值定义不同的键

考虑您要为user name 定义一个标签。

你可以这样做

lable.username=User Name

lable.inputform.username=User Name
lable.registeration.form.username=User Name
lable.activate.form.username=User Name

第一种方法要好得多,因为您在资源包中做的更少。 UserName 在整个应用程序中只是User Name,如果你想改变它,一个改变就足够了。

请考虑庞大的资源包,更难维护并且需要更多内存。资源包很快就会变得庞大:)

我也建议不要通过加键来造句:

例如

  lable.please+ lable.add + lable.your + lable.username 

把它变成:

form.message= Please add your user name

它会让你的jsp或者action变得很复杂,而且你不会有很多收获。

所以我大体上同意你的观点,但你的大学方法应该考虑可重用价值!

【讨论】:

    【解决方案2】:

    有几个想法太长,无法放入评论:

    I18N 冒号没有任何意义:它会改变吗?不太可能。如果它可能,考虑使用自定义标签/等。包装视图级静态文本。

    在密钥本身中使用非 I18N 文本有点奇怪,例如,使用 .greeting 而不是 .hello

    page.number.one 似乎是不必要的冗长,而不是 page.one 或只是 page1。或者不要直接将其固定到选项卡上,因为您可能希望将其重新用于实际的页面标题或标题,只需 page1.title

    简而言之:我完全赞成可重用性,但 IMO 属性文件对于您所展示的许多内容来说是错误的地方。使用自定义标记或实用方法来访问需要更改的实际属性。

    (实际上,我非常喜欢将这样的东西保存在 I18N 数据库中,而不是属性文件中;使用简单的前端更容易处理它们,并且使用适当的缓存同样快。)

    【讨论】:

      猜你喜欢
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 2023-03-23
      • 1970-01-01
      • 2010-12-24
      • 2020-04-30
      • 1970-01-01
      相关资源
      最近更新 更多