docusaurus/lib/core/Doc.js
Richard Zhang a5e963dba1 Issue 305 broken link because of language fixes (#322)
* without having having to worry about site design.

Let me know if double having is intentional

* distinguish case of no translation and en lang

* prettier recommends

* distinguish case of no translation and en lang

* prettier recommends

* merge with latest origin/master changes

* typo

* link with language fixes

* do not show language dropdown if only one enabled

* check translation outside of LanguageDropDown.render
2017-12-19 17:44:43 -08:00

72 lines
2 KiB
JavaScript

/**
* 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 React = require('react');
const MarkdownBlock = require('./MarkdownBlock.js');
const translate = require('../server/translate.js').translate;
const editThisDoc = translate(
'Edit this Doc|recruitment message asking to edit the doc source'
);
const translateThisDoc = translate(
'Translate this Doc|recruitment message asking to translate the docs'
);
// inner doc component for article itself
class Doc extends React.Component {
render() {
let docSource = this.props.source;
if (this.props.version && this.props.version !== 'next') {
// If versioning is enabled and the current version is not next, we need to trim out "version-*" from the source if we want a valid edit link.
docSource = docSource.match(new RegExp(/version-.*\/(.*\.md)/, 'i'))[1];
}
let editLink = this.props.config.editUrl && (
<a
className="edit-page-link button"
href={this.props.config.editUrl + docSource}
target="_blank">
{editThisDoc}
</a>
);
// If internationalization is enabled, show Recruiting link instead of Edit Link.
if (
this.props.language &&
this.props.language != 'en' &&
this.props.config.translationRecruitingLink
) {
editLink = (
<a
className="edit-page-link button"
href={
this.props.config.translationRecruitingLink +
'/' +
this.props.language
}
target="_blank">
{translateThisDoc}
</a>
);
}
return (
<div className="post">
<header className="postHeader">
{editLink}
<h1>{this.props.title}</h1>
</header>
<article>
<MarkdownBlock>{this.props.content}</MarkdownBlock>
</article>
</div>
);
}
}
module.exports = Doc;