Translation language respect current url (#734)

This commit is contained in:
Endilie Yacop Sucipto 2018-06-07 23:15:35 +08:00 committed by Joel Marcey
parent d04b3ca87b
commit ff93ba9853

View file

@ -33,11 +33,29 @@ class LanguageDropDown extends React.Component {
const enabledLanguages = env.translation const enabledLanguages = env.translation
.enabledLanguages() .enabledLanguages()
.filter(lang => lang.tag !== this.props.language) .filter(lang => lang.tag !== this.props.language)
.map(lang => ( .map(lang => {
<li key={lang.tag}> // build the href so that we try to stay in current url but change the language.
<a href={siteConfig.baseUrl + lang.tag}>{lang.name}</a> let href = siteConfig.baseUrl + lang.tag;
</li> 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 (
<li key={lang.tag}>
<a href={utils.getPath(href, this.props.cleanUrl)}>{lang.name}</a>
</li>
);
});
// if no languages are enabled besides English, return null // if no languages are enabled besides English, return null
if (enabledLanguages.length < 1) { if (enabledLanguages.length < 1) {
return null; return null;
@ -131,6 +149,8 @@ class HeaderNav extends React.Component {
<LanguageDropDown <LanguageDropDown
baseUrl={this.props.baseUrl} baseUrl={this.props.baseUrl}
language={this.props.language} language={this.props.language}
current={this.props.current}
cleanUrl={this.props.config.cleanUrl}
key="languagedropdown" key="languagedropdown"
/> />
); );