Friendly_id和globalize - 如果缺少翻译,则使用slug的默认翻译

时间:2015-09-06 12:22:15

标签: ruby-on-rails friendly-id globalize

我已经整合了friendly_id gem和globalize,如果我在特定语言环境中翻译了slug,它的效果会很好。

但我想要实现的是对slug使用默认翻译,以防某些语言环境在翻译表中丢失。

因此,假设我有一个主要的语言环境MA,其中填充了slug并且我有一个EN语言环境,它缺少了。如果我要去EN版本,我想看看slu版的MA版本。

有办法怎么做?

谢谢,Miroslav

2 个答案:

答案 0 :(得分:1)

我最终通过编写应用程序帮助程序方法(其他解决方案对我不起作用)来解决这个问题。希望它会帮助某人。如果产品不存在翻译,它将使用主翻译(默认情况下在产品创建时创建),否则使用当前区域设置版本。

# application_helper.rb

def product_url(product)
    if product.translations.pluck(:locale).include?(I18n.locale.to_s)
      admin_translations_product_path(product)
    else
      I18n.with_locale(:ma) { admin_translations_product_path(product) }
    end
end

# index.html.erb
<%= link_to "#{t :button_admin_edit} #{locale.to_s.upcase}", product_url(product) %>

答案 1 :(得分:0)

我相信如果你使用这个附加宝石进行友好和全球化,这是为你处理的:https://github.com/norman/friendly_id-globalize/blob/master/README.md

它处理默认语言环境。我只是将您推荐给文档,但希望能够做到这一点。