add i18n registry for JS utils
This commit is contained in:
parent
ffef0b94bc
commit
c2d01e9489
@ -1067,6 +1067,7 @@ siteLayout' headingOverride widget = do
|
|||||||
-- JavaScript services
|
-- JavaScript services
|
||||||
addScript $ StaticR js_services_utilRegistry_js
|
addScript $ StaticR js_services_utilRegistry_js
|
||||||
addScript $ StaticR js_services_httpClient_js
|
addScript $ StaticR js_services_httpClient_js
|
||||||
|
addScript $ StaticR js_services_i18n_js
|
||||||
-- addScript $ StaticR js_utils_alerts_js
|
-- addScript $ StaticR js_utils_alerts_js
|
||||||
-- addScript $ StaticR js_utils_asidenav_js
|
-- addScript $ StaticR js_utils_asidenav_js
|
||||||
-- addScript $ StaticR js_utils_asyncForm_js
|
-- addScript $ StaticR js_utils_asyncForm_js
|
||||||
|
|||||||
31
static/js/services/i18n.js
Normal file
31
static/js/services/i18n.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Global I18n registry that stores and serves translations.
|
||||||
|
// Each translation must have a unique ID.
|
||||||
|
window.I18n = (function() {
|
||||||
|
|
||||||
|
var translations = {};
|
||||||
|
|
||||||
|
function addTranslation(id, translation) {
|
||||||
|
translations[id] = translation;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addManyTranslations(manyTranslations) {
|
||||||
|
Object.keys(manyTranslations).forEach(function(key) {
|
||||||
|
addTranslation(key, manyTranslations[key]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTranslation(id) {
|
||||||
|
return translations[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
// public API
|
||||||
|
return {
|
||||||
|
add: addTranslation,
|
||||||
|
addMany: addManyTranslations,
|
||||||
|
get: getTranslation,
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
})();
|
||||||
@ -35,13 +35,16 @@ function setupDatepicker(wrapper) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// this global I18N object will be picked up automatically by the setup util
|
if (I18n) {
|
||||||
window.I18N = {
|
I18n.addMany({
|
||||||
filesSelected: 'Dateien ausgewählt', // TODO: interpolate these to be translated
|
filesSelected: 'Dateien ausgewählt',
|
||||||
selectFile: 'Datei auswählen',
|
selectFile: 'Datei auswählen',
|
||||||
selectFiles: 'Datei(en) auswählen',
|
selectFiles: 'Datei(en) auswählen',
|
||||||
asyncFormFailure: 'Da ist etwas schief gelaufen, das tut uns Leid.<br>Falls das erneut passiert schicke uns gerne eine kurze Beschreibung dieses Ereignisses über das Hilfe-Widget rechts oben.<br><br>Vielen Dank für deine Hilfe',
|
asyncFormFailure: 'Da ist etwas schief gelaufen, das tut uns Leid.<br>Falls das erneut passiert schicke uns gerne eine kurze Beschreibung dieses Ereignisses über das Hilfe-Widget rechts oben.<br><br>Vielen Dank für deine Hilfe',
|
||||||
};
|
});
|
||||||
|
} else {
|
||||||
|
throw new Error('I18n JavaScript service is missing!');
|
||||||
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
window.utils.setup('flatpickr', document.body, { setupFunction: setupDatepicker });
|
window.utils.setup('flatpickr', document.body, { setupFunction: setupDatepicker });
|
||||||
|
|||||||
Reference in New Issue
Block a user