docusaurus/lib/server/translate.js
Eric Nakagawa bcba05ae03 Adds sitemap.xml. Adds 'Help Translate' to translatable strings. Error messages and fn name cleanups. (#136)
* added a note about needing more than one language to be enabled to allow for a drop down

* Removing debug statements

* Add 'Help Translate' to translatable strings, improves error messages around missing translated strings, calls write-translations on some routes

* Adds sitemap.xml to live server and build. Versioning not supported. -- Also did some file name and module cache cleanups.
2017-10-18 12:55:58 -07:00

47 lines
1.3 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 translation = require("./translation.js");
let language = "en";
/* handle escaped characters that get converted into json strings */
function parseEscapeSequences(str) {
return str
.replace(new RegExp("\\\\n", "g"), "\n")
.replace(new RegExp("\\\\b", "g"), "\b")
.replace(new RegExp("\\\\f", "g"), "\f")
.replace(new RegExp("\\\\r", "g"), "\r")
.replace(new RegExp("\\\\t", "g"), "\t")
.replace(new RegExp("\\\\'", "g"), "'")
.replace(new RegExp('\\\\"', "g"), '"')
.replace(new RegExp("\\\\", "g"), "\\");
}
function setLanguage(lang) {
language = lang;
}
function translate(str) {
if (
!translation[language] ||
!translation[language]["pages-strings"] ||
!translation[language]["pages-strings"][str]
) {
throw new Error(
"Text that you've identified for translation ('" +
str +
"') hasn't been added to the global list in 'en.json'. To solve this problem run 'yarn write-translations'."
);
}
return parseEscapeSequences(translation[language]["pages-strings"][str]);
}
module.exports = {
setLanguage: setLanguage,
translate: translate
};