我正在处理以下问题。在我们的项目中,我们为同一网站启动了不同的国际化域名。
问题在于不同语言的 UrlMappings。
例如:
- 英文:姓名联系人:“/contact”(controller: 'static', action: 'index') { id = '/contact' }
- 德语:name deContact: "/kontakt"(controller: 'static', action: 'index') { id = '/contact' }
一遍又一遍地重复所有代码。是否有解决方案将两个 url 映射分组以使用相同的控制器、操作和逻辑?
例如,如果有类似的东西就好了:
姓名联系人:“[/contact|/kontakt/etc..]”(控制器:'static',操作:'index'){ id = '/contact' }
提供调用相同代码的可选网址。
提前致谢
您可以拥有UrlMapping
从中读取映射名称messageSource
per Locale
并在映射中使用相同的内容。就像是:
UrlMapping.groovy
import org.springframework.context.i18n.LocaleContextHolder as LCH
class UrlMappings {
static mappings = {
def i18nContact = getGrailsApplication().getMainContext().getMessage('app.url.mapping.contact', [] as Object[], 'contact', LCH.getLocale())
"/${i18nContact}"(controller: 'static', action: 'index') { id = '/contact' }
}
}
消息.属性
app.url.mapping.contact=联系人
messages_de.properties
app.url.mapping.contact=联系
您只需要继续添加其他条目locales
在相应的消息源中。
Note:您可以通过设置默认值进行相同的测试Locale
前往德国resources.groovy
as
import org.springframework.web.servlet.i18n.FixedLocaleResolver
beans = {
localeResolver(FixedLocaleResolver, Locale.GERMANY) {
Locale.setDefault(Locale.GERMANY)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)