Skip to content
This repository has been archived by the owner on Jan 29, 2024. It is now read-only.

Commit

Permalink
feat(): shortcuts and links\n\nShortcuts creates a shorter translatio…
Browse files Browse the repository at this point in the history
…nId if the last key equals the one before(foo.bar.bar -> foo.bar). Also added support for linking one translationID to another by prepending '@:'. So if foo.bar = '@:chuck.norris', then the value for chuck.norris will be retrieved instead.
  • Loading branch information
komakino committed Nov 8, 2013
1 parent 9302cce commit f9f2cf2
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/service/translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY',
return this;
};

var flatObject = function (data, path, result) {
var flatObject = function (data, path, result, prevKey) {
var key, keyWithPath, val;

if (!path) {
Expand All @@ -111,9 +111,15 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY',
if (!data.hasOwnProperty(key)) continue;
val = data[key];
if (angular.isObject(val)) {
flatObject(val, path.concat(key), result);
flatObject(val, path.concat(key), result, key);
} else {
keyWithPath = path.length ? ("" + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key) : key;
if(path.length && key === prevKey){
// Create shortcut path (foo.bar == foo.bar.bar)
keyWithShortPath = "" + path.join(NESTED_OBJECT_DELIMITER);
// Link it to original path
result[keyWithShortPath] = '@:' + keyWithPath;
}
result[keyWithPath] = val;
}
}
Expand Down Expand Up @@ -581,6 +587,10 @@ angular.module('pascalprecht.translate').provider('$translate', ['$STORAGE_KEY',

// if the translation id exists, we can just interpolate it
if (table && table.hasOwnProperty(translationId)) {
// If using link, rerun $translate with linked translationId and return it
if(angular.isString(table[translationId]) && table[translationId].substr(0,2) === '@:'){
return $translate(table[translationId].substr(2),interpolateParams,interpolationId);
}
return Interpolator.interpolate(table[translationId], interpolateParams);
}

Expand Down

0 comments on commit f9f2cf2

Please sign in to comment.