Files
mixtape/zero.Web/App/Services/localization.js
T

50 lines
874 B
JavaScript
Raw Normal View History

import { extend as _extend, each as _each } from 'underscore';
2020-04-06 13:24:46 +02:00
export default {
localize(key, options)
2020-04-06 13:24:46 +02:00
{
let params = _extend({
force: false,
tokens: {}
}, options || {});
2020-04-06 13:24:46 +02:00
if (!key)
{
return '';
}
const hasAtSign = key.indexOf('@') === 0;
if (!params.force && !hasAtSign)
2020-04-06 13:24:46 +02:00
{
return this.replaceTokens(key, params.tokens);
2020-04-06 13:24:46 +02:00
}
key = hasAtSign ? key.slice(1) : key;
const value = zero.translations[key];
2020-04-06 13:24:46 +02:00
if (!value || typeof value !== 'string')
2020-04-06 13:24:46 +02:00
{
return '[' + key + ']';
}
return this.replaceTokens(value, params.tokens);
},
replaceTokens(value, tokens)
{
if (!value || value.indexOf('{') < 0)
{
return value;
}
_each(tokens, (replacement, key) =>
{
value = value.replace("{" + key + "}", replacement);
});
2020-04-06 13:24:46 +02:00
return value;
}
};