我按照gem文档页面中的说明安装并设置了routing-filter。 https://github.com/svenfuchs/routing-filter
适用于默认语言环境。例如,如果我将默认语言环境设置为:en,则该站点为英语,如果我将默认语言环境设置为:zh,则该站点为中文。
www.site.com/zh/home(默认语言环境路径/ en自动添加到网址)
但是如何让我的网站支持两种语言?
当默认语言环境为:zh时,我试图通过用“en”代替“zh”来更改URL,但页面仍然是中文,而不是英文。
这是路由过滤器gem不支持的吗? 如果没有,我可以使用其他一些宝石吗?
或者我没有正确设置路由过滤器gem吗?
谢谢!
答案 0 :(得分:2)
阅读完源代码后,我会看到这个宝石正在做什么。
以下是源代码中的注释。
Locale过滤器从头开始提取匹配/:locale的段 识别的路径并将页面参数公开为params [:locale]。当一个 如果生成路径,则过滤器会相应地将段添加到路径中 page参数传递给url helper。
incoming url: /de/products
filtered url: /products
params: params[:locale] = 'de'
您可以像这样安装过滤器:
# in config/routes.rb
Rails.application.routes.draw do
filter :locale
end
要使您的named_route帮助器或url_for添加区域设置段 可以使用:
products_path(:locale => 'de')
url_for(:products, :locale => 'de'))
我在application_controller.rb中添加了所需的逻辑,所以它一切正常。
答案 1 :(得分:0)
如果您只想在当前页面中切换区域设置,那么您就不需要放入路径。只是代码DT <- cbind(DT,z = ifelse(DT[, .I] %in% my.rows , T, NA))
> DT
# x y z
# 1: A 2 NA
# 2: B 6 NA
# 3: C 5 TRUE
# 4: D 8 NA
# 5: E 9 TRUE
# 6: F 4 NA
# 7: G 1 TRUE
# 8: H 7 NA
# 9: I 10 NA
#10: J 3 NA
或url_for(:locale => 'de')
所以我像这样编码我的翻译导航。不妨用这段代码节省你的时间:)
url_for(params.merge(:locale => 'ko'))
或
<nav id="trans-nav">
<%= link_to 'KOR', url_for(params.merge(:locale => 'ko')), :class => ('active' if I18n.locale.to_s == 'ko' ) %>
<%= link_to 'ENG', url_for(params.merge(:locale => 'en')), :class => ('active' if I18n.locale.to_s == 'en' ) %>
<%= link_to 'CHI', url_for(params.merge(:locale => 'cn')), :class => ('active' if I18n.locale.to_s == 'cn' ) %>
</nav>