gpt4 book ai didi

Grails i18n UrlMappings

转载 作者:行者123 更新时间:2023-12-02 13:48:31 25 4
gpt4 key购买 nike

我正在处理以下问题。在我们的项目中,我们为同一个网站推出了不同的国际化域名。问题来自不同语言的 UrlMappings。例如:

  • 英文: name contact: "/contact"(controller: 'static', action: 'index') { id = '/contact' }
  • 德语:name deContact: "/kontakt"(controller: 'static', action: 'index') { id = '/contact' }

一次又一次地重复所有的代码。是否有将两个 url 映射分组以使用相同的 Controller 、操作和逻辑的解决方案?

例如,有类似这样的东西会很好:姓名联系人:“[/contact|/kontakt/etc..]”( Controller :'static', Action :'index'){id = '/contact'}提供调用相同代码的可选 url。

提前致谢

最佳答案

您可以让 UrlMapping 根据 LocalemessageSource 中读取映射名称,并在映射中使用相同名称。像这样的东西:

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' }
}
}

messages.properties

app.url.mapping.contact=联系人

messages_de.properties

app.url.mapping.contact=kontakt

您只需要在相应的消息源中继续添加其他locales 的条目即可。

注意:您可以通过在 resources.groovy as

中将默认 Locale 设置为 GERMANY 来进行测试
import org.springframework.web.servlet.i18n.FixedLocaleResolver
beans = {
localeResolver(FixedLocaleResolver, Locale.GERMANY) {
Locale.setDefault(Locale.GERMANY)
}
}

关于Grails i18n UrlMappings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com