在wicket中设置指定的语言环境,其中默认(对于用户)不可用

use*_*115 1

我有仅针对特定语言的属性文件(page_ru_RU.prop和page_en_GB.prop).在这个页面上的用户使用locale en US - 他得到了例外,因为找不到合适的语言环境.我是否可以通过这种方式将somwhere检查到手动设置区域设置如果用户没有任何可用的区域设置而没有make default locale(page.prop)如果我不清楚,请告诉我.

biz*_*lop 5

如果您仅使用语言创建属性文件,它将用于所有变体:因此page_en_GB.properties,您可以使用a page_en.properties,它将用于所有en_*sublocales.

你也可以有一个普通的page.peroperties,用于不适合更具体类别的每个人.

更新:拿两个,如何Locale完全控制选择.

Wicket中的Locale存储在Session对象中,可以使用getLocale()and setLocale()方法进行操作.仅此一项可能会为您提供解决方案,但您也可以拦截对这些方法的调用以自动覆盖区域设置选择.

//this is your application class
public class MyApplication extends WebApplication {

  @Override      
  public Session newSession( Request req, Response res ) {
    return new MySession( req )
  }
}

//this is your session class
public class MySession extends WebSession {
  public MySession( Request req ) {
    super( req );
  }

  @Override
  public void setLocale( Locale locale ) {
    // your locale substitution code goes here, for example:
    if( locale.getLanguage().equals( "en" ) ) {
      super.setLocale( new Locale( "en", "GB" ) );
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是你想要的那种东西吗?