【发布时间】:2016-01-06 08:36:51
【问题描述】:
我有现有的网络应用程序 (Spring MVC)。我需要为所有内容制作 i18n。
管理语言的要求是直接在 URL 中使用语言代码。所以对于现有的 URL:
http://example.com/product1
我需要创建 N 个 虚拟 URL,例如
http://example.com/EN/product1
http://example.com/FR/product1
我正在研究实现此目的的不同选项。我发现的一个肮脏的解决方案是使用拦截器,它将检查 URL 中的语言代码,删除语言代码,创建一个有效的 URL 并设置重定向。但是太丑了……
实现这一点的最佳方法是什么?
【问题讨论】:
-
这个范围很广。并且将取决于很多事情......并且可能是由于意见,所以你可能会被关闭
-
使用 url 重写机制,将新的 url 翻译成你在后端理解的东西(旧的 URL)。
-
我不认为基于过滤器的出色解决方案如此难看,因为它将 i18n url 处理保持在一个位置,并且不会在应用程序的任何地方传播它。当然,它应该进行内部转发而不是重定向,并且还需要操作构造的 URL(来自 jsp)。
-
Core Spring 团队正在考虑这个问题以支持本机 - github.com/spring-projects/spring-framework/issues/25791
标签: spring spring-mvc internationalization