Make punctuate translatable, rename to punctuateSeries

This commit is contained in:
Toby Zerner 2015-10-08 22:42:03 +10:30
parent 3a72037fd4
commit 223b6a4065
5 changed files with 38 additions and 31 deletions

View File

@ -78,7 +78,7 @@ export default class Translator {
}
});
return translation;
return translation.filter(part => part);
}
return fallback || [key];

View File

@ -1,28 +0,0 @@
/**
* The `punctuate` helper formats a list of strings (e.g. names) to read
* fluently in the application's locale.
*
* @example
* punctuate(['Toby', 'Franz', 'Dominion'])
* // Toby, Franz, and Dominion
*
* @param {Array} items
* @return {Array}
*/
export default function punctuate(items) {
const punctuated = [];
// FIXME: update to use translation
items.forEach((item, i) => {
punctuated.push(item);
// If this item is not the last one, then we will follow it with some
// punctuation. If the list is more than 2 items long, we'll add a comma.
// And if this is the second-to-last item, we'll add 'and'.
if (i < items.length - 1) {
punctuated.push((items.length > 2 ? ', ' : '') + (i === items.length - 2 ? ' and ' : ''));
}
});
return punctuated;
};

View File

@ -0,0 +1,35 @@
/**
* The `punctuateSeries` helper formats a list of strings (e.g. names) to read
* fluently in the application's locale.
*
* ```js
* punctuateSeries(['Toby', 'Franz', 'Dominion']) // Toby, Franz, and Dominion
* ```
*
* @param {Array} items
* @return {VirtualElement}
*/
export default function punctuateSeries(items) {
if (items.length === 2) {
return app.trans('core.lib.series_two_text', {
first: items[0],
second: items[1]
});
} else if (items.length >= 3) {
// If there are three or more items, we will join all of the items up until
// the second-to-last one with the equivalent of a comma, and then we will
// feed that into the translator along with the last two items.
const first = items
.slice(0, items.length - 2)
.reduce((list, item) => list.concat([item, app.trans('core.lib.series_glue_text')]), [])
.slice(0, -1);
return app.trans('core.lib.series_three_text', {
first,
second: items[items.length - 2],
third: items[items.length - 1]
});
}
return items;
}

View File

@ -31,7 +31,7 @@ class ClientController extends BaseClientController
/**
* {@inheritdoc}
*/
protected $translationKeys = ['core.admin'];
protected $translationKeys = ['core.admin', 'core.lib'];
/**
* @var ExtensionManager

View File

@ -27,7 +27,7 @@ class ClientController extends AbstractClientController
/**
* {@inheritdoc}
*/
protected $translationKeys = ['core.forum'];
protected $translationKeys = ['core.forum', 'core.lib'];
/**
* {@inheritdoc}