/** * Copyright (c) 2017-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const CWD = process.cwd(); const React = require('react'); const fs = require('fs'); const classNames = require('classnames'); const siteConfig = require(CWD + '/siteConfig.js'); const translation = require('../../server/translation.js'); const env = require('../../server/env.js'); const translate = require('../../server/translate.js').translate; const setLanguage = require('../../server/translate.js').setLanguage; const readMetadata = require('../../server/readMetadata.js'); readMetadata.generateMetadataDocs(); const Metadata = require('../metadata.js'); const utils = require('../utils.js'); const extension = siteConfig.cleanUrl ? '' : '.html'; // language dropdown nav item for when translations are enabled class LanguageDropDown extends React.Component { render() { setLanguage(this.props.language || 'en'); let helpTranslateString = translate( 'Help Translate|recruit community translators for your project' ); // add all enabled languages to dropdown const enabledLanguages = env.translation .enabledLanguages() .filter(lang => lang.tag !== this.props.language) .map(lang => { // build the href so that we try to stay in current url but change the language. let href = siteConfig.baseUrl + lang.tag; if ( this.props.current && this.props.current.permalink && this.props.language ) { href = siteConfig.baseUrl + this.props.current.permalink.replace( `/${this.props.language}/`, `/${lang.tag}/` ); } else if (this.props.current.id && this.props.current.id !== 'index') { href = siteConfig.baseUrl + lang.tag + '/' + this.props.current.id; } return (
  • {lang.name}
  • ); }); // if no languages are enabled besides English, return null if (enabledLanguages.length < 1) { return null; } // Get the current language full name for display in the header nav const currentLanguage = env.translation .enabledLanguages() .filter(lang => lang.tag === this.props.language) .map(lang => lang.name); // add Crowdin project recruiting link if (siteConfig.translationRecruitingLink) { enabledLanguages.push(
  • {helpTranslateString}
  • ); } return (
  • {currentLanguage}
      {enabledLanguages}