@nzz/q-server
Version:
**Maintainer**: [Franco Gervasi](https://github.com/fgervasi)
76 lines (70 loc) • 2.32 kB
JavaScript
const Joi = require("../../../../helper/custom-joi.js");
module.exports = {
getGetToolsRoute: function() {
return {
path: "/editor/tools/locales/{lng}/translation.json",
method: "GET",
options: {
description: "Returns tool name translations for given language",
tags: ["api", "editor", "non-critical"],
validate: {
params: {
lng: Joi.string().required()
}
}
},
handler: (request, h) => {
const tools = request.server.settings.app.tools.get("");
// compute a translation.json file for use by i18next for the given language
// containing the tool name and it's localized label.
let translations = {};
for (let toolName in tools) {
const tool = tools[toolName];
if (
!tool.editor.hasOwnProperty("label_locales") ||
!tool.editor.label_locales.hasOwnProperty(request.params.lng)
) {
continue;
}
translations[toolName] =
tool.editor.label_locales[request.params.lng];
}
return translations;
}
};
},
getGetEditorConfigRoute: function(options) {
return {
path: "/editor/locales/{lng}/translation.json",
method: "GET",
options: {
description: "Returns editor translations for given language",
tags: ["api", "editor", "non-critical"],
validate: {
params: {
lng: Joi.string().required()
}
}
},
handler: (request, h) => {
// compute a translation.json file for use by i18next for the given language
let translations = {};
const previewSizes = options.editorConfig.previewSizes;
if (previewSizes) {
translations.preview = {};
for (let previewSizeName in previewSizes) {
const previewSize = previewSizes[previewSizeName];
if (
previewSize.hasOwnProperty("label_locales") &&
previewSize.label_locales.hasOwnProperty(request.params.lng)
) {
translations.preview[previewSizeName] =
previewSize.label_locales[request.params.lng];
}
}
}
return translations;
}
};
}
};