在Tapestry中使用Locale

时间:2013-12-10 14:36:32

标签: tapestry

我的项目有两种语言( en,fi )。但是当我尝试访问一个没有语言环境的文件时,它会指向 en 页面。但onActiavat如果用户未选择任何内容,我强迫persistentLocale fi 。这将使页面中的所有链接指向 fi 页面,但不会指向当前页面。有关如何实现这一目标的任何建议。我不希望浏览器语言是默认语言或其他任何东西。系统将通过读取用户配置文件强制用户登录语言。但在登录前如果用户未选择任何语言首选项(如果是persistentLocale.get() == null),我想显示 fi 页面。

2 个答案:

答案 0 :(得分:1)

将其放入您的模块中。此代码修饰了ThreadLocale,如果没有设置threadLocale,则将threadLocale设置为您喜欢的语言环境(没有语言环境的URL)。

@Decorate(serviceInterface = ThreadLocale.class)    
public ThreadLocale decorateThreadLocale(final ThreadLocale threadLocale,
        final PersistentLocale persistentLocale)
{
    return new ThreadLocale()
    {
        @Override
        public void setLocale(Locale locale)
        {
            threadLocale.setLocale(locale);
        }

        @Override
        public Locale getLocale()
        {
            if (!persistentLocale.isSet())
            {
                setLocale(new Locale("fi"));
            }
            return threadLocale.getLocale();
        }

    };
}

答案 1 :(得分:1)

为什么不将您的芬兰语翻译放在page.properties中,并将您的英文翻译放在page_en.properties