Localization 如何在wicket中自定义属性文件夹
在我的应用程序中,我有大约20页,每一页有大约4个属性文件,每种语言。现在,所有属性都必须位于与is*相同的目录中。java文件。是否有选择改变?我想创建新的目录属性,并在这里添加所有属性文件。或者是否有在一个文件中添加所有本地化邮件的选项?问题是在a.hmtl页属性中“name”的值为“a”,而在另一个页面中,b.html的键与另一个值相同:“name”的值为“b” 我想补充一点Localization 如何在wicket中自定义属性文件夹,localization,wicket,Localization,Wicket,在我的应用程序中,我有大约20页,每一页有大约4个属性文件,每种语言。现在,所有属性都必须位于与is*相同的目录中。java文件。是否有选择改变?我想创建新的目录属性,并在这里添加所有属性文件。或者是否有在一个文件中添加所有本地化邮件的选项?问题是在a.hmtl页属性中“name”的值为“a”,而在另一个页面中,b.html的键与另一个值相同:“name”的值为“b” 我想补充一点 this.getResourceSettings().addResourceFolder("/pr
this.getResourceSettings().addResourceFolder("/properties");
但是没有成功请看一下屏幕上的示例。有几种不同的方法来归档。我相信你会找到一个适合你需要的
简短版本:为了获得最大的控制权,您必须将自己的控件与自己的控件一起编写,并将wicket设置为在Application.init()中使用它们。请查看上的示例。有几种不同的方法来归档。我相信你会找到一个适合你需要的 简短版本:为了获得最大的控制权,您必须将自己的控件与自己的控件一起编写,并将wicket设置为在Application.init()中使用它们 现在,所有属性都必须位于与is*相同的目录中。java文件 一点也不需要,属性文件不必紧挨着java文件。按照默认查找算法扫描属性文件,如中所述:
WicketApplication.properties.xml
WicketApplication_en.properties.xml
WicketApplication_zh.properties.xml
WicketApplication_de.properties.xml
此方法使您无需查看多个本地化文件,并避免了由复杂的消息覆盖规则引起的错误
现在,所有属性都必须位于与is*相同的目录中。java文件
一点也不需要,属性文件不必紧挨着java文件。按照默认查找算法扫描属性文件,如中所述:
WicketApplication.properties.xml
WicketApplication_en.properties.xml
WicketApplication_zh.properties.xml
WicketApplication_de.properties.xml
这种方法使您无需查看多个本地化文件,并避免了由复杂的消息覆盖规则引起的错误。我没有找到更简单的解决方案。我编写自己的类,在其中更改属性的路径:
package org.toursys.web.finder;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.locator.ResourceStreamLocator;
public class CustomResourceStreamLocator extends ResourceStreamLocator {
@Override
protected IResourceStream locateByClassLoader(Class<?> clazz, final String path) {
String newPath = path;
if (newPath.endsWith(".properties")) {
newPath = path.substring(0, path.lastIndexOf("/")) + "/properties" + path.substring(path.lastIndexOf("/"));
}
IResourceStream stream = super.locateByClassLoader(clazz, newPath);
if (stream == null) {
stream = super.locateByClassLoader(clazz, path);
}
return stream;
}
}
package org.toursys.web.finder;
导入org.apache.wicket.util.resource.IResourceStream;
导入org.apache.wicket.util.resource.locator.ResourceStreamLocator;
公共类CustomResourceStreamLocator扩展了ResourceStreamLocator{
@凌驾
受保护的IResourceStream locateByClassLoader(类clazz,最终字符串路径){
字符串newPath=path;
if(newPath.endsWith(“.properties”)){
newPath=path.substring(0,path.lastIndexOf(“/”)+“/properties”+path.substring(path.lastIndexOf(“/”);
}
IResourceStream=super.locateByClassLoader(clazz,newPath);
if(流==null){
stream=super.locateByClassLoader(clazz,path);
}
回流;
}
}
然后我将这个流定位器添加到我的应用程序中我没有找到更简单的解决方案。我编写自己的类,在其中更改属性的路径:
package org.toursys.web.finder;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.locator.ResourceStreamLocator;
public class CustomResourceStreamLocator extends ResourceStreamLocator {
@Override
protected IResourceStream locateByClassLoader(Class<?> clazz, final String path) {
String newPath = path;
if (newPath.endsWith(".properties")) {
newPath = path.substring(0, path.lastIndexOf("/")) + "/properties" + path.substring(path.lastIndexOf("/"));
}
IResourceStream stream = super.locateByClassLoader(clazz, newPath);
if (stream == null) {
stream = super.locateByClassLoader(clazz, path);
}
return stream;
}
}
package org.toursys.web.finder;
导入org.apache.wicket.util.resource.IResourceStream;
导入org.apache.wicket.util.resource.locator.ResourceStreamLocator;
公共类CustomResourceStreamLocator扩展了ResourceStreamLocator{
@凌驾
受保护的IResourceStream locateByClassLoader(类clazz,最终字符串路径){
字符串newPath=path;
if(newPath.endsWith(“.properties”)){
newPath=path.substring(0,path.lastIndexOf(“/”)+“/properties”+path.substring(path.lastIndexOf(“/”);
}
IResourceStream=super.locateByClassLoader(clazz,newPath);
if(流==null){
stream=super.locateByClassLoader(clazz,path);
}
回流;
}
}
然后我将这个流定位器添加到我的应用程序中你的意思是没有.xml,对吗?但翻译应该取决于页面。在页面a.html中,名为“login”的键应与页面b.html中的键不同。是否有实现此功能的选项?Xml-p