mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-04 15:24:23 +01:00
158 lines
5.1 KiB
JavaScript
158 lines
5.1 KiB
JavaScript
|
/*!
|
||
|
* angular-translate - v2.8.1 - 2015-10-01
|
||
|
*
|
||
|
* Copyright (c) 2015 The angular-translate team, Pascal Precht; Licensed MIT
|
||
|
*/
|
||
|
(function (root, factory) {
|
||
|
if (typeof define === 'function' && define.amd) {
|
||
|
// AMD. Register as an anonymous module unless amdModuleId is set
|
||
|
define(["messageformat"], function (a0) {
|
||
|
return (factory(a0));
|
||
|
});
|
||
|
} else if (typeof exports === 'object') {
|
||
|
// Node. Does not work with strict CommonJS, but
|
||
|
// only CommonJS-like environments that support module.exports,
|
||
|
// like Node.
|
||
|
module.exports = factory(require("messageformat"));
|
||
|
} else {
|
||
|
factory(MessageFormat);
|
||
|
}
|
||
|
}(this, function (MessageFormat) {
|
||
|
|
||
|
angular.module('pascalprecht.translate')
|
||
|
|
||
|
/**
|
||
|
* @ngdoc property
|
||
|
* @name pascalprecht.translate.TRANSLATE_MF_INTERPOLATION_CACHE
|
||
|
* @requires TRANSLATE_MF_INTERPOLATION_CACHE
|
||
|
*
|
||
|
* @description
|
||
|
* Uses MessageFormat.js to interpolate strings against some values.
|
||
|
*/
|
||
|
.constant('TRANSLATE_MF_INTERPOLATION_CACHE', '$translateMessageFormatInterpolation')
|
||
|
|
||
|
/**
|
||
|
* @ngdoc object
|
||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation
|
||
|
* @requires pascalprecht.translate.TRANSLATE_MF_INTERPOLATION_CACHE
|
||
|
*
|
||
|
* @description
|
||
|
* Uses MessageFormat.js to interpolate strings against some values.
|
||
|
*
|
||
|
* Be aware to configure a proper sanitization strategy.
|
||
|
*
|
||
|
* See also:
|
||
|
* * {@link pascalprecht.translate.$translateSanitization}
|
||
|
* * {@link https://github.com/SlexAxton/messageformat.js}
|
||
|
*
|
||
|
* @return {object} $translateMessageFormatInterpolation Interpolator service
|
||
|
*/
|
||
|
.factory('$translateMessageFormatInterpolation', $translateMessageFormatInterpolation);
|
||
|
|
||
|
function $translateMessageFormatInterpolation($translateSanitization, $cacheFactory, TRANSLATE_MF_INTERPOLATION_CACHE) {
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var $translateInterpolator = {},
|
||
|
$cache = $cacheFactory.get(TRANSLATE_MF_INTERPOLATION_CACHE),
|
||
|
// instantiate with default locale (which is 'en')
|
||
|
$mf = new MessageFormat('en'),
|
||
|
$identifier = 'messageformat';
|
||
|
|
||
|
if (!$cache) {
|
||
|
// create cache if it doesn't exist already
|
||
|
$cache = $cacheFactory(TRANSLATE_MF_INTERPOLATION_CACHE);
|
||
|
}
|
||
|
|
||
|
$cache.put('en', $mf);
|
||
|
|
||
|
/**
|
||
|
* @ngdoc function
|
||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation#setLocale
|
||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolation
|
||
|
*
|
||
|
* @description
|
||
|
* Sets current locale (this is currently not use in this interpolation).
|
||
|
*
|
||
|
* @param {string} locale Language key or locale.
|
||
|
*/
|
||
|
$translateInterpolator.setLocale = function (locale) {
|
||
|
$mf = $cache.get(locale);
|
||
|
if (!$mf) {
|
||
|
$mf = new MessageFormat(locale);
|
||
|
$cache.put(locale, $mf);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @ngdoc function
|
||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation#getInterpolationIdentifier
|
||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolation
|
||
|
*
|
||
|
* @description
|
||
|
* Returns an identifier for this interpolation service.
|
||
|
*
|
||
|
* @returns {string} $identifier
|
||
|
*/
|
||
|
$translateInterpolator.getInterpolationIdentifier = function () {
|
||
|
return $identifier;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @deprecated will be removed in 3.0
|
||
|
* @see {@link pascalprecht.translate.$translateSanitization}
|
||
|
*/
|
||
|
$translateInterpolator.useSanitizeValueStrategy = function (value) {
|
||
|
$translateSanitization.useStrategy(value);
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @ngdoc function
|
||
|
* @name pascalprecht.translate.$translateMessageFormatInterpolation#interpolate
|
||
|
* @methodOf pascalprecht.translate.$translateMessageFormatInterpolation
|
||
|
*
|
||
|
* @description
|
||
|
* Interpolates given string against given interpolate params using MessageFormat.js.
|
||
|
*
|
||
|
* @returns {string} interpolated string.
|
||
|
*/
|
||
|
$translateInterpolator.interpolate = function (string, interpolationParams) {
|
||
|
interpolationParams = interpolationParams || {};
|
||
|
interpolationParams = $translateSanitization.sanitize(interpolationParams, 'params');
|
||
|
|
||
|
var interpolatedText = $cache.get(string + angular.toJson(interpolationParams));
|
||
|
|
||
|
// if given string wasn't interpolated yet, we do so now and never have to do it again
|
||
|
if (!interpolatedText) {
|
||
|
|
||
|
// Ensure explicit type if possible
|
||
|
// MessageFormat checks the actual type (i.e. for amount based conditions)
|
||
|
for (var key in interpolationParams) {
|
||
|
if (interpolationParams.hasOwnProperty(key)) {
|
||
|
// ensure number
|
||
|
var number = parseInt(interpolationParams[key], 10);
|
||
|
if (angular.isNumber(number) && ('' + number) === interpolationParams[key]) {
|
||
|
interpolationParams[key] = number;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
interpolatedText = $mf.compile(string)(interpolationParams);
|
||
|
interpolatedText = $translateSanitization.sanitize(interpolatedText, 'text');
|
||
|
|
||
|
$cache.put(string + angular.toJson(interpolationParams), interpolatedText);
|
||
|
}
|
||
|
|
||
|
return interpolatedText;
|
||
|
};
|
||
|
|
||
|
return $translateInterpolator;
|
||
|
}
|
||
|
$translateMessageFormatInterpolation.$inject = ['$translateSanitization', '$cacheFactory', 'TRANSLATE_MF_INTERPOLATION_CACHE'];
|
||
|
|
||
|
$translateMessageFormatInterpolation.displayName = '$translateMessageFormatInterpolation';
|
||
|
return 'pascalprecht.translate';
|
||
|
|
||
|
}));
|