2017-08-04 148 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