我已经集成了friendly_id gem 和globalize,如果我在特定的语言环境中有slug 的翻译,它就可以正常工作。
但是我想要实现的是对 slug 使用默认翻译,以防某些语言环境的翻译表中缺少它。
因此,假设我有一个主语言环境 MA,其中填充了 slug,并且我有一个 EN 语言环境,但它丢失了。如果我去 EN 版,我想看 MA 版的 slug。
有没有办法做到这一点?
谢谢, 米罗斯拉夫
我已经集成了friendly_id gem 和globalize,如果我在特定的语言环境中有slug 的翻译,它就可以正常工作。
但是我想要实现的是对 slug 使用默认翻译,以防某些语言环境的翻译表中缺少它。
因此,假设我有一个主语言环境 MA,其中填充了 slug,并且我有一个 EN 语言环境,但它丢失了。如果我去 EN 版,我想看 MA 版的 slug。
有没有办法做到这一点?
谢谢, 米罗斯拉夫
我最终通过编写一个应用程序帮助方法来解决这个问题(其他解决方案对我不起作用)。希望它会帮助某人。如果产品不存在翻译,它将使用主翻译(在创建产品时默认创建),否则使用当前语言环境版本。
# 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) %>
我相信如果您使用此附加 gem 进行友好 ID 和全球化,这将为您处理:https ://github.com/norman/friendly_id-globalize/blob/master/README.md
它处理默认语言环境。我只是将您推荐给文档,但希望这样做。