2

私は次の問題を扱っています。私たちのプロジェクトでは、同じ Web サイトに対して異なる国際化ドメインを立ち上げました。問題は、さまざまな言語の UrlMappings に付属しています。例えば:

  • 英語: name contact: "/contact"(controller: 'static', action: 'index') { id = '/contact' }
  • ドイツ語: name deContact: "/kontakt"(controller: 'static', action: 'index') { id = '/contact' }

すべてのコードを何度も繰り返します。同じコントローラー、アクション、およびロジックを使用するために両方の URL マッピングをグループ化するソリューションはありますか?

たとえば、次のようなものがあると便利です: name contact: "[/contact|/kontakt/etc..]"(controller: 'static', action: 'index') { id = '/contact' }同じコードを呼び出すオプションの URL を指定します。

前もって感謝します

4

3 に答える 3

4

perUrlMappingからマッピング名を読み取り、マッピングで同じものを使用できます。何かのようなもの:messageSourceLocale

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対応するメッセージ ソースにその他のエントリを追加し続ける必要があります。

注: asで デフォルトLocaleを GERMANY に設定することで、同じことをテストできます。resources.groovy

import org.springframework.web.servlet.i18n.FixedLocaleResolver
beans = {
    localeResolver(FixedLocaleResolver, Locale.GERMANY) {
        Locale.setDefault(Locale.GERMANY)
    }
}
于 2013-05-03T19:55:05.580 に答える