在wicket中设置指定的区域设置,其中默认设置(对于用户)不可用

在wicket中设置指定的区域设置,其中默认设置(对于用户)不可用,wicket,locale,Wicket,Locale,我有面向特定语言的属性文件(page_ru_ru.prop和page_en_GB.prop)。在这个页面上出现了一个名为en US的用户,他得到了一个异常,因为没有找到合适的语言环境。 如果用户没有任何可用的区域设置而没有默认的区域设置(page.prop),我可以用这种方式将somwhere检查为手动设置区域设置吗 如果我不清楚,请告诉我。如果您仅使用该语言创建属性文件,它将用于所有变体:因此,您可以创建一个页面en.properties,而不是页面en.properties,该文件将用于所有

我有面向特定语言的属性文件(page_ru_ru.prop和page_en_GB.prop)。在这个页面上出现了一个名为en US的用户,他得到了一个异常,因为没有找到合适的语言环境。 如果用户没有任何可用的区域设置而没有默认的区域设置(page.prop),我可以用这种方式将somwhere检查为手动设置区域设置吗
如果我不清楚,请告诉我。

如果您仅使用该语言创建属性文件,它将用于所有变体:因此,您可以创建一个
页面en.properties
,而不是
页面en.properties
,该文件将用于所有en*子本地

您还可以有一个普通的
页面.peroperties
,它将用于不属于更具体类别的所有人

更新:第二步,如何完全控制
Locale
选择

Wicket中的区域设置存储在
会话
对象中,可以使用
getLocale()
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" ) );
    }
  }
}

这就是您所追求的吗?

如果您仅使用该语言创建属性文件,它将用于所有变体:因此,您可以使用一个
页面en.properties
,而不是
页面en.properties
,它将用于所有en*sublocal

您还可以有一个普通的
页面.peroperties
,它将用于不属于更具体类别的所有人

更新:第二步,如何完全控制
Locale
选择

Wicket中的区域设置存储在
会话
对象中,可以使用
getLocale()
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" ) );
    }
  }
}

这就是你想要的吗?

谢谢你的回复,但这不是我想要的。我只希望有面向语言(o_o)的区域设置(page_en_GB,而不是page_en或page),如果用户提供的区域设置我不必使用我的区域设置中的某个。我能不能准确地做到这一点。@user600115好的,我会努力找到解决方案。谢谢你的回复,但这不是我想要的。我只希望有面向语言(o_o)的区域设置(page_en_GB,而不是page_en或page),如果用户提供的区域设置我不必使用我的区域设置中的某个。我能不能准确地做到这一点。@user600115好的,那我就试着找到解决办法。