Struts2 中的全局资源包 - 粒度最佳实践?
Global resource bundle in Struts2 - Granularity best practices ?
我有三个具有三个不同标签标题的页面。
Page 1 tab title name: Page One : Hello : Hi
Page 2 tab title name: Page Two : Hello : Hi
Page 3 tab title name: Page Three : Hello : Hi
实施和最佳实践哪个更好:
解决方案 #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
中每个页面的标题标签内
Page 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>
Page 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>
Page 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中每个页面的标题标签内:
Page 1:
<title><s:text name="tab.title.page.one"/></title>
Page 2:
<title><s:text name="tab.title.page.two"/></title>
Page 3:
<title><s:text name="tab.title.page.three"/></title>
我的 co-developer 认为 Hello
、Hi
、:
是可重用的。但它只是静态文本。它没有改变。哪个更好用实现,编码标准,performance-wise(笑)?谢谢!
这是我对完全国际化应用程序的体验。 尽可能不要为相同的值定义不同的键。
假设您想为 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或者动作变得很复杂,你不会有太大的收获。
所以我大体上同意你的看法,但你的大学方法应该考虑可重用的价值!
一些想法太长,无法放入评论中:
I18N 冒号没有任何意义:它会改变吗?不太可能。如果它 可能 ,请考虑使用自定义 tag/etc。结束 view-level 静态文本。
在密钥本身中使用非 I18N 文本有点奇怪,例如,使用 .greeting
而不是 .hello
。
page.number.one
似乎不必要地冗长,而不是 page.one
或只是 page1
。或者不是直接将其与选项卡挂钩,因为您可能希望 re-use 实际页面标题或标题,只需 page1.title
.
简而言之: 我完全支持可重用性,但 IMO 属性 文件对于您展示的很多内容来说都是错误的地方。使用自定义标记或实用程序方法来访问需要更改的实际属性。
(我实际上很喜欢将这样的东西保存在 I18N 数据库中,而不是 属性 文件中;使用简单的前端它们更容易处理,并且适当的缓存只是一样快。)
我有三个具有三个不同标签标题的页面。
Page 1 tab title name: Page One : Hello : Hi
Page 2 tab title name: Page Two : Hello : Hi
Page 3 tab title name: Page Three : Hello : Hi
实施和最佳实践哪个更好:
解决方案 #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
中每个页面的标题标签内Page 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>
Page 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>
Page 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中每个页面的标题标签内:
Page 1:
<title><s:text name="tab.title.page.one"/></title>
Page 2:
<title><s:text name="tab.title.page.two"/></title>
Page 3:
<title><s:text name="tab.title.page.three"/></title>
我的 co-developer 认为 Hello
、Hi
、:
是可重用的。但它只是静态文本。它没有改变。哪个更好用实现,编码标准,performance-wise(笑)?谢谢!
这是我对完全国际化应用程序的体验。 尽可能不要为相同的值定义不同的键。
假设您想为 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或者动作变得很复杂,你不会有太大的收获。
所以我大体上同意你的看法,但你的大学方法应该考虑可重用的价值!
一些想法太长,无法放入评论中:
I18N 冒号没有任何意义:它会改变吗?不太可能。如果它 可能 ,请考虑使用自定义 tag/etc。结束 view-level 静态文本。
在密钥本身中使用非 I18N 文本有点奇怪,例如,使用 .greeting
而不是 .hello
。
page.number.one
似乎不必要地冗长,而不是 page.one
或只是 page1
。或者不是直接将其与选项卡挂钩,因为您可能希望 re-use 实际页面标题或标题,只需 page1.title
.
简而言之: 我完全支持可重用性,但 IMO 属性 文件对于您展示的很多内容来说都是错误的地方。使用自定义标记或实用程序方法来访问需要更改的实际属性。
(我实际上很喜欢将这样的东西保存在 I18N 数据库中,而不是 属性 文件中;使用简单的前端它们更容易处理,并且适当的缓存只是一样快。)