2017-08-04 73 views
1

我正在尋找一種翻譯多種語言的完整網站(主頁,關於我們,產品頁面,聯繫人,常見問題......)的方法。該網站使用Firebase數據庫構建在ReactJS中。ReactJS多語言網站

我發現的所有例子都只是一個小小的翻譯,像一個問候或你怎麼樣,但完整的網站?我的最佳選擇是爲每種語言製作一個JS對象,並使用數百個可能有1000個模板字符串的工作嗎? (這絕對應該以'homepageContactSectionSubDiscription'或'homepageProductSectionFeaturesItemTwo'這樣的標籤結束)

+1

你應該使用https://github.com/yahoo/react-intl –

+1

你不看看這個? i8ln反應或反應本地化帶來大量資源。 – epascarello

+0

我個人直接使用https://www.i18next.com,很高興... – Leon

回答

2

您應該使用react-intl進行調查。 Github

您可以指定不同的語言文件:使用FormattedMessage

en.json

{ 
    "greeting": "Hello" 
} 

es.json

{ 
    "greeting": "Hola" 
} 

然後你的組件中使用它們:

import { FormattedMessage } from 'react-intl'; 
... 
<FormattedMessage id="greeting" /> 

React intl爲您的應用程序提供了一個包裝器,以允許指定不同的語言及其關聯的消息。

ReactDOM.render(
    <IntlProvider locale="en"> 
     <App /> 
    </IntlProvider>, 
    document.getElementById('app') 
); 

一個重要的注意,這不會對你進行翻譯,但爲您提供從基於指定locale不同的語言文件拉動的方法。

如果你發現自己有一個非常大的語言文件,你可以將它分成不同的部分。例如,我可能有兩個文件,home.jsonsettings.json,我可以設置訪問爲home.{unique_id}settings.{another_unique_id}

+0

是的,但這又是一個簡單的問候。我在談論數百個元素。我是否必須爲每個元素賦予一個唯一的ID,如「homepageProductSectionFeaturesItemTwo」? – Thore

+0

@好的,沒有可以爲你提供翻譯的服務,儘管你可能會爲翻譯產生費用。我傾向於通過頁面/組件來分解我的語言文件,類似於您在React中執行的操作,併爲單獨的文件提供常用的單詞/短語,這些文件將被多次使用。 – Matthew

+0

@Thore此外,每個元素應該有一個唯一的ID。 – Matthew