2016-11-30 69 views
0

我正在瀏覽所有的i18next documentation,但仍然很困惑如何做到這一點。到目前爲止,我複製了他們的例子,我有以下幾點。react-i18next:在一個文件中的所有命名空間+在裝飾器中傳遞命名空間

目錄結構:

locales 
->en 
    ->ns1.json 
    ->ns2.json 
->fr 
    ->ns1.json 
    ->ns2.json 

i18next配置:

i18n 
    .use(XHR) 
    .init({ 
    lng: 'en', 
    fallbackLng: 'en', 
    debug: false, 
    interpolation: { 
     escapeValue: false, 
    }, 
    }) 

我裝修我的部件,像這樣:

@translate(['ns1'], { wait: true }) 

所以,我對於語言的目錄,並不止一個文件每個命名空間。每個命名空間本質上都是一個視圖的翻譯。所以我大致從命名空間到React組件的映射。我想要做的就是把所有這些命名空間放在3個文件中(因爲我的所有組件都被分成應用程序的3個部分 - 管理員,用戶,公共)。這3個文件中的每一個都會有一堆命名空間。我希望每個組件仍然有一個名稱空間,所以我不僅要指定文件,還要指定裝飾器中的名稱空間,所以我不必每次都在我的translate函數中指定它。

這是否可能?如果沒有,我可以在一個文件中而不是3個所有命名空間?

回答

0

您可以添加多個命名空間的組織 - 此斷言那些得到加載渲染(或者等待它們設置等待選項時)

@translate(['ns1', 'ns2'], { wait: true })

NS1將在通過T功能的默認命名空間道具:

t('key') - >將在NS1搜索鍵

訪問NS2:

t('ns2:key') - >將在ns2中搜索關鍵字