Move custom translation strings to its own file (#775)

This commit is contained in:
Joel Marcey 2018-06-14 17:25:29 -07:00 committed by GitHub
parent fd9a3ffb6d
commit 608e2c85a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 6 deletions

View file

@ -93,6 +93,41 @@ The script will include text from the following places:
* header link `label` strings in `siteConfig.js` * header link `label` strings in `siteConfig.js`
* strings wrapped in the `<translate>` tag in any `.js` files inside `pages` * strings wrapped in the `<translate>` tag in any `.js` files inside `pages`
### Custom Translation Strings
If you want to add additional custom translation strings, or override any of the strings that get produced by the script that creates the `website/i18n/en.json` file, you can add a `website/data/custom-translation-strings.json` file. The file should have form of:
```json
{
"localized-strings": {
"id": "string",
"id2": "string2"
},
"pages-strings" : {
"id3": "string3",
"id4": "string4"
}
}
```
where `localized-strings` represent strings in your documentation content and `pages-strings` represents metadata in your documentation (e.g., title, links, etc).
Here is an example:
```json
{
"_comment": "This file is used to provide custom strings for translations, including overriding defaults",
"localized-strings": {
"translation": "Translations and Localization"
},
"pages-strings" : {
"Help Translate|recruit community translators for your project": "Help Us Translate"
}
}
```
See the generated `website/i18n/en.json` for an example.
## How Strings Get Translated ## How Strings Get Translated
Docusaurus itself does not do any translation from one language to another. Instead, it integrates [Crowdin](https://crowdin.com/) to upload translations and then downloads the appropriately translated files from Crowdin. Docusaurus itself does not do any translation from one language to another. Instead, it integrates [Crowdin](https://crowdin.com/) to upload translations and then downloads the appropriately translated files from Crowdin.

View file

@ -20,13 +20,13 @@ const babylon = require('babylon');
const traverse = require('babel-traverse').default; const traverse = require('babel-traverse').default;
const sidebars = require(CWD + '/sidebars.json'); const sidebars = require(CWD + '/sidebars.json');
let currentTranslations = { let customTranslations = {
'localized-strings': {}, 'localized-strings': {},
'pages-strings': {}, 'pages-strings': {},
}; };
if (fs.existsSync(CWD + '/i18n/en.json')) { if (fs.existsSync(CWD + '/data/custom-translation-strings.json')) {
currentTranslations = JSON.parse( customTranslations = JSON.parse(
fs.readFileSync(CWD + '/i18n/en.json', 'utf8') fs.readFileSync(CWD + '/data/custom-translation-strings.json', 'utf8')
); );
} }
@ -158,11 +158,11 @@ function execute() {
'Translate'; 'Translate';
translations['pages-strings'] = Object.assign( translations['pages-strings'] = Object.assign(
translations['pages-strings'], translations['pages-strings'],
currentTranslations['pages-strings'] customTranslations['pages-strings']
); );
translations['localized-strings'] = Object.assign( translations['localized-strings'] = Object.assign(
translations['localized-strings'], translations['localized-strings'],
currentTranslations['localized-strings'] customTranslations['localized-strings']
); );
writeFileAndCreateFolder( writeFileAndCreateFolder(
CWD + '/i18n/en.json', CWD + '/i18n/en.json',

View file

@ -0,0 +1,9 @@
{
"_comment": "This file is used to provide custom strings for translations, including overriding defaults",
"localized-strings": {
"translation": "Translations and Localization"
},
"pages-strings" : {
"Help Translate|recruit community translators for your project": "Help Us Translate"
}
}