2015-09-06 59 views
0

我已经整合了friendly_id gem和全球化,如果我在特定语言环境中翻译slug,它就可以工作。Friendly_id和全球化 - 如果翻译缺失,使用缺省翻译

但是我想实现的是使用默认翻译slug以防在某些语言环境的翻译表中缺少它。

因此,让我说我有一个主要语言环境马塞尔塞满了,我有一个EN语言环境,它缺少。如果我要去EN版本,我想看到MA版本的slu。。

有没有办法如何做到这一点?

感谢,米罗斯拉夫

回答

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) %> 
0

我相信,如果您使用此为您处理这个附加创业板friendlyid和全球化:https://github.com/norman/friendly_id-globalize/blob/master/README.md

它处理的默认语言环境。我只是将您引用到文档中,但希望这样做。

+0

谢谢汤姆。我浏览了文档并尝试了很多方法,但都没有为我工作。如果它们不以当前语言存在,而是不适用于产品URL,则它可以正常加载文本的默认翻译。最后我用辅助方法做了它,它工作得很好(但也许有更优雅的解决方案)。 – Miroslav