3

我正在製作一個使用apartment gem的多租戶應用程序。我已經設置好了,一切都按預期工作。我還使用帶有活動記錄後端的Rails Internationalization(I18n)來存儲翻譯。我的當前設置I18n沒有使用公寓寶石軌道加載翻譯

轉換表

class CreateTranslations < ActiveRecord::Migration[5.0] 
    def change 
    create_table :translations do |t| 
     t.string :locale 
     t.string :key 
     t.text :value 
     t.text :interpolations 
     t.boolean :is_proc, default: false 

     t.timestamps 
    end 
    end 
end 

Apartment.rb配置

我已經在所有住戶增加了翻譯模型來排除模型的列表,以便其全球

Apartment.configure do |config| 

    # Add any models that you do not want to be multi-tenanted, but remain in the global (public) namespace. 
    # A typical example would be a Customer or Tenant model that stores each Tenant's information. 
    # 
    config.excluded_models = %w{ User Workspace Translation } 
end 

在我的翻譯表我有翻譯英語(默認)和挪威語。在主域中,一切都按預期在英語和挪威語之間切換,但是一旦我加載租戶,所有翻譯都會丟失。在控制檯中演示:

> Apartment::Tenant.switch! # switch to main tenant 
> I18n.locale = :en # use English translations 
> I18n.t('home.members_label') 
    => "Show Members" 

> Apartment::Tenant.switch! "elabs" # switch to a different tenant 
> I18n.t('home.members_label') 
    => "translation missing: en.home.members_label" 

我不確定譯文在租用環境中時爲何缺失。我正在弄清楚在excluded_models列表中的翻譯模型應該做的伎倆,但似乎有什麼地方是錯的。任何線索?由於

回答

0

Translation模型在I18n::Backend::ActiveRecord::Translation實際上說明,因此有可能你就必須以添加一個擴展,在模型文件夾或嘗試做以下,看看是否能工作的模型:

config.excluded_models = %w{ User Workspace I18n::Backend::ActiveRecord::Translation } 

或者可能是

Translation = I18n::Backend::ActiveRecord::Translation 
config.excluded_models = %w{ User Workspace Translation }