mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Update after review comments
Updated write function to be asynchronous
This commit is contained in:
parent
e17653dd04
commit
eaf35ab392
2 changed files with 56 additions and 27 deletions
|
@ -6,9 +6,12 @@ import path from 'path';
|
|||
import process from 'child_process';
|
||||
import Promise from 'bluebird';
|
||||
|
||||
const join = Promise.join;
|
||||
const readdir = Promise.promisify(fs.readdir);
|
||||
const readFile = Promise.promisify(fs.readFile);
|
||||
const stat = Promise.promisify(fs.stat);
|
||||
const writeFile = Promise.promisify(fs.writeFile);
|
||||
const mkdirpAsync = Promise.promisify(mkdirp);
|
||||
|
||||
const TRANSLATION_FILE_EXTENSION = 'json';
|
||||
const TRANSLATION_STORE_PATH = kibanaPackage.__dirname + '/fixtures/translations';
|
||||
|
@ -37,24 +40,18 @@ const registerTranslations = function (pluginTranslationPath) {
|
|||
let languageList = [];
|
||||
const translationStorePath = getTranslationStoragePath();
|
||||
|
||||
return getPluginTranslationDetails(pluginTranslationPath, translationFiles, languageList).then(function () {
|
||||
try {
|
||||
if (!fs.existsSync(translationStorePath)) {
|
||||
mkdirp.sync(translationStorePath);
|
||||
}
|
||||
for (let fileIndx in translationFiles) {
|
||||
if (!translationFiles.hasOwnProperty(fileIndx)) continue;
|
||||
const translationFile = translationFiles[fileIndx];
|
||||
return join(createTranslationDirectory(translationStorePath),
|
||||
getPluginTranslationDetails(pluginTranslationPath, translationFiles, languageList),
|
||||
function () {
|
||||
return Promise.map(translationFiles, (translationFile) => {
|
||||
const translationFileName = getFileName(translationFile);
|
||||
const translationJson = require(translationFile);
|
||||
const fileToWrite = translationStorePath + '/' + translationFileName;
|
||||
saveTranslationToFile(fileToWrite, translationJson);
|
||||
}
|
||||
} catch (err) {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
|
||||
return getTranslationJsonToWrite(fileToWrite, translationJson).then((jsonToWrite) => {
|
||||
return writeFile(fileToWrite, JSON.stringify(jsonToWrite));
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const getRegisteredLanguageTranslations = function (language) {
|
||||
|
@ -76,8 +73,14 @@ const getRegisteredLanguageTranslations = function (language) {
|
|||
};
|
||||
|
||||
function saveTranslationToFile(translationFullFileName, translationToAddJson) {
|
||||
let jsonToWrite = [];
|
||||
if (fs.existsSync(translationFullFileName)) {
|
||||
return getTranslationJsonToWrite(translationFullFileName).then(function (jsonToWrite) {
|
||||
return writeFile(translationFullFileName, JSON.stringify(jsonToWrite));
|
||||
});
|
||||
}
|
||||
|
||||
function getTranslationJsonToWrite(translationFullFileName, translationToAddJson) {
|
||||
return stat(translationFullFileName).then((stats) => {
|
||||
let jsonToWrite = [];
|
||||
const currentTranslationJson = require(translationFullFileName);
|
||||
jsonToWrite = currentTranslationJson;
|
||||
for (let key in translationToAddJson) {
|
||||
|
@ -87,10 +90,17 @@ function saveTranslationToFile(translationFullFileName, translationToAddJson) {
|
|||
jsonToWrite[attrName] = attrValue;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
jsonToWrite = translationToAddJson;
|
||||
}
|
||||
fs.writeFileSync(translationFullFileName, JSON.stringify(jsonToWrite));
|
||||
return jsonToWrite;
|
||||
}).catch(function (e) {
|
||||
return translationToAddJson;
|
||||
});
|
||||
}
|
||||
|
||||
function createTranslationDirectory(translationStorePath) {
|
||||
return stat(translationStorePath).then((stats) => {
|
||||
}).catch(function (e) {
|
||||
return mkdirpAsync(translationStorePath);
|
||||
});
|
||||
}
|
||||
|
||||
function getFilesRecursivelyFromTopDir(topDir, translationFiles, languageList) {
|
||||
|
@ -124,6 +134,7 @@ function getTranslationDetailsFromDirectory(dir, translationFiles, languageList)
|
|||
function getTranslationDetailsFromFile(fullFileName, translationFiles, languageList) {
|
||||
const fileName = getFileName(fullFileName);
|
||||
const fileExt = fileName.split('.').pop();
|
||||
|
||||
if (fileName === fileExt) return;
|
||||
if (fileExt !== TRANSLATION_FILE_EXTENSION) return;
|
||||
translationFiles.push(fullFileName);
|
||||
|
|
|
@ -1,15 +1,33 @@
|
|||
import { i18n } from './i18n';
|
||||
|
||||
let registerTranslations = function (pluginTranslationPath, cb) {
|
||||
i18n.registerTranslations(pluginTranslationPath, cb);
|
||||
/*
|
||||
Manages the language translations for Kibana. Responsible for loading translated content per language.
|
||||
|
||||
API:
|
||||
|
||||
Register translations:
|
||||
registerTranslations(<path_to_where_translations_are>)
|
||||
The path specified and its sub-directories will be traversed and all translations files will be bundled into one translation file per language and stored in the Kibana data directory. Returns a Promise object.
|
||||
|
||||
Fetch the list of currently supported languages:
|
||||
Promise getRegisteredTranslationLanguages()
|
||||
Returns a Promise object which will contain on resolve a list of all languages as language codes for which translations are registered
|
||||
|
||||
Fetch a specific language translated content bundle:
|
||||
Promise getRegisteredLanguageTranslations(<language_code>)
|
||||
Returns a Promise object which will contain on resolve a JSON object of all registered translations for the language code specified
|
||||
*/
|
||||
|
||||
let registerTranslations = function (pluginTranslationPath) {
|
||||
return i18n.registerTranslations(pluginTranslationPath);
|
||||
};
|
||||
|
||||
let getRegisteredLanguageTranslations = function (language, cb) {
|
||||
i18n.getRegisteredLanguageTranslations(language, cb);
|
||||
let getRegisteredLanguageTranslations = function (language) {
|
||||
return i18n.getRegisteredLanguageTranslations(language);
|
||||
};
|
||||
|
||||
let getRegisteredTranslationLanguages = function (cb) {
|
||||
i18n.getRegisteredTranslationLanguages(cb);
|
||||
let getRegisteredTranslationLanguages = function () {
|
||||
return i18n.getRegisteredTranslationLanguages();
|
||||
};
|
||||
|
||||
module.exports.registerTranslations = registerTranslations;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue