在哪里定义我想在grails中支持的语言的语言环境?

时间:2014-07-03 08:13:27

标签: grails internationalization

我用过

<form method="get">
  <g:localeSelect name="lang" value="${locale}"/>
  <input type="submit" value="Change locale"/>
</form>

更改我网站的语言。 Too much languages in the list
但是在哪里可以定义哪些语言出现在选择列表中?目前有大约50种语言,但我只想要英语,德语,意大利语和法语。但我不知道在哪里指定它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Grails localeSelect标记的实现方式如下所示。如您所见,localeSelect标记始终使用所有可用的区域设置,使用Locale.getAvailableLocales()检索。

 /**
 * A helper tag for creating locale selects.<br/>
 *
 * eg. &lt;g:localeSelect name="myLocale" value="${locale}" /&gt;
 *
 * @emptyTag
 *
 * @attr name REQUIRED The name of the select
 * @attr value The set locale, defaults to the current request locale if not specified
 */
Closure localeSelect = { attrs ->
    attrs.from = Locale.getAvailableLocales()
    attrs.value = (attrs.value ?: RCU.getLocale(request))?.toString()
    // set the key as a closure that formats the locale
    attrs.optionKey = { it.country ? "${it.language}_${it.country}" : it.language }
    // set the option value as a closure that formats the locale for display
    attrs.optionValue = {it.country ? "${it.language}, ${it.country},  ${it.displayName}" : "${it.language}, ${it.displayName}" }

    // use generic select
    out << select(attrs)
}

您可以轻松创建自己的标记,以根据Grails selectLocale代码和Grails manual on creating your own tags选择区域设置。

以下代码使用传递给代码的availableLocales列表作为属性,或使用availableLocales中找到的session列表。标记代码的其余部分与Grails原始localeSelect标记完全相同。如果您希望最常使用一种语言,也可以自定义语言的顺序。

class LanguageTagLib {

    static namespace = "lang"  

    Closure myLocaleSelect = { attrs ->
        attrs.from = attrs.availableLocales ?: session.availableLocales ?: []
        attrs.value = (attrs.value ?: RCU.getLocale(request))?.toString()
        // set the key as a closure that formats the locale
        attrs.optionKey = { it.country ? "${it.language}_${it.country}" : it.language }
        // set the option value as a closure that formats the locale for display
        attrs.optionValue = {it.country ? "${it.language}, ${it.country},  ${it.displayName}" : "${it.language}, ${it.displayName}" }

        // use generic select
        out << g.select(attrs)
    }
}

.gsp模板中,您现在可以使用<lang:myLocaleSelect ... />来包含区域设置选择器。