mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-26 07:58:34 +02:00
113 lines
3 KiB
JavaScript
113 lines
3 KiB
JavaScript
var _ = require('underscore');
|
|
var constants = require('../util/constants');
|
|
var util = require('../util');
|
|
var GlobalState = require('../util/globalState');
|
|
|
|
var strings = require('../intl/strings').strings;
|
|
|
|
var getDefaultLocale = exports.getDefaultLocale = function() {
|
|
return 'en_US';
|
|
};
|
|
|
|
var getLocale = exports.getLocale = function() {
|
|
if (GlobalState.locale) {
|
|
return GlobalState.locale;
|
|
}
|
|
return getDefaultLocale();
|
|
};
|
|
|
|
// lets change underscores template settings so it interpolates
|
|
// things like "{branchName} does not exist".
|
|
var templateSettings = _.clone(_.templateSettings);
|
|
templateSettings.interpolate = /\{(.+?)\}/g;
|
|
var template = exports.template = function(str, params) {
|
|
return _.template(str, params, templateSettings);
|
|
};
|
|
|
|
var str = exports.str = function(key, params) {
|
|
params = params || {};
|
|
// this function takes a key like "error-branch-delete"
|
|
// and parameters like {branchName: 'bugFix', num: 3}.
|
|
//
|
|
// it sticks those into a translation string like:
|
|
// 'en': 'You can not delete the branch {branchName} because' +
|
|
// 'you are currently on that branch! This is error number + {num}'
|
|
//
|
|
// to produce:
|
|
//
|
|
// 'You can not delete the branch bugFix because you are currently on that branch!
|
|
// This is error number 3'
|
|
|
|
var locale = getLocale();
|
|
if (!strings[key]) {
|
|
console.warn('NO INTL support for key ' + key);
|
|
return 'NO INTL support for key ' + key;
|
|
}
|
|
|
|
if (!strings[key][locale]) {
|
|
if (key !== 'error-untranslated') {
|
|
return str('error-untranslated');
|
|
}
|
|
return 'No translation for the key "' + key + '"';
|
|
}
|
|
|
|
return template(
|
|
strings[key][locale],
|
|
params
|
|
);
|
|
};
|
|
|
|
var getIntlKey = exports.getIntlKey = function(obj, key) {
|
|
if (!obj || !obj[key]) {
|
|
throw new Error('that key ' + key + 'doesnt exist in this blob' + obj);
|
|
}
|
|
if (!obj[key][getDefaultLocale()]) {
|
|
console.warn(
|
|
'WARNING!! This blob does not have intl support:',
|
|
obj,
|
|
'for this key',
|
|
key
|
|
);
|
|
}
|
|
|
|
return obj[key][getLocale()];
|
|
};
|
|
|
|
exports.todo = function(str) {
|
|
return str;
|
|
};
|
|
|
|
var getDialog = exports.getDialog = function(obj) {
|
|
var defaultLocale = getDefaultLocale();
|
|
return getIntlKey(obj, 'dialog') || obj.dialog[defaultLocale];
|
|
};
|
|
|
|
var getHint = exports.getHint = function(level) {
|
|
return getIntlKey(level, 'hint') || str('error-untranslated');
|
|
};
|
|
|
|
var getName = exports.getName = function(level) {
|
|
return getIntlKey(level, 'name') || str('error-untranslated');
|
|
};
|
|
|
|
var getStartDialog = exports.getStartDialog = function(level) {
|
|
var startDialog = getIntlKey(level, 'startDialog');
|
|
if (startDialog) { return startDialog; }
|
|
|
|
// this level translation isnt supported yet, so lets add
|
|
// an alert to the front and give the english version.
|
|
var errorAlert = {
|
|
type: 'ModalAlert',
|
|
options: {
|
|
markdown: str('error-untranslated')
|
|
}
|
|
};
|
|
var startCopy = _.clone(
|
|
level.startDialog[getDefaultLocale()] || level.startDialog
|
|
);
|
|
startCopy.childViews.unshift(errorAlert);
|
|
|
|
return startCopy;
|
|
};
|
|
|
|
|