我正在使用Rails 3和Globalize3 0.2.0.beta4
理想情况下我需要:fr回退到:en,反之亦然.
有些情况下只有法语翻译可用,我需要显示它,即使语言环境是:en.
我试过了
config.i18n.fallbacks = { :fr => :en, :en => :fr }
Run Code Online (Sandbox Code Playgroud)
但有点不出所料,它导致堆栈级别太深的错误.
globalization ruby-on-rails internationalization globalize2 ruby-on-rails-3
I18n后备加载:
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
Run Code Online (Sandbox Code Playgroud)
现在有什么想法暂时禁用它吗?我有表单,我想编辑各种语言版本,并且使用后备我得到默认语言的字段,如果给定的翻译还没有.
ruby-on-rails internationalization globalize2 ruby-on-rails-3
我有这个架构:帖子belongs_to类别和类别has_many帖子.使用gem globalize3将帖子和类别全球化
class Post < ActiveRecord::Base
belongs_to :category
translates :title, :excerpt, :desc # globalize3
end
class Category < ActiveRecord::Base
has_many :posts
translates :name # globalize3
end
Run Code Online (Sandbox Code Playgroud)
在我的PostsController中,我获得了这行代码的所有帖子:
def index
@posts = Post.includes([:translations, {:category => :translations}])
end
Run Code Online (Sandbox Code Playgroud)
问题是我对类别转换表有n + 1个查询问题:
Post Load (0.3ms) SELECT "posts".* FROM "posts"
Post::Translation Load (0.3ms) SELECT "post_translations".* FROM "post_translations" WHERE ("post_translations".post_id IN (2,3,4))
# START n+1 query block
Category Load (1.9ms) SELECT "categories".* FROM "categories" WHERE ("categories"."id" IN (9,12,11))
Category::Translation Load (0.4ms) SELECT "category_translations".* FROM "category_translations" …Run Code Online (Sandbox Code Playgroud) 我在为同一表单中的模型数据提交多个区域设置翻译时遇到问题.例如:
发布模型:
translates :title
Run Code Online (Sandbox Code Playgroud)
如何在包含表单的"新"操作视图中发布,以便我可以同时提交我的标题:en locale和:fr locale例如?
谢谢.
ruby-on-rails internationalization globalize2 ruby-on-rails-3
这就是问题所在.在我的应用程序中,如果某些记录没有转换,则globalize2返回NIL字符串,而不是回退到default_locale.我想知道如何启用瘦功能?有没有人想到这一点?
问题似乎微不足道,但我找不到任何合理的解决方案.我有翻译存储在Globalize3转换表中的国家/地区列表.如何获取按名称排序的国家/地区列表?
国家/地区名称不直接存储在模型中,而是存储在单独的表中.有没有合理的方法对结果进行排序而不是手动sql查询,或者在AR查询完成后手动排序结果表?
我正在使用标准的Rails I18n API来本地化我们的一些视图.这工作得非常好,但我们现在有一些用于区域更改的用例en.
该API指南中提到,这是不直接支持,并应使用其他插件.但是,我想知道是否有一种更简单的方法可以做到这一点.
我已经拥有了en.yml,所以理论上我可以创建en-AU.yml并且en-US.yml有效克隆en.yml但是应用了一些区域变化.然后,我可以添加额外的English - American和English - Australian选择,我们的配置这将映射到新的区域特定的语言环境,并允许用户使用特定的区域语言环境.
我能想到的唯一问题是它不是DRY - 我会翻译所有常见的英语单词.我无法看到解决这个问题的方法.
这种方法还有其他任何缺点吗,或者我应该咬紧牙关并潜入其中一个插件,例如Globalize2?