mirror of
https://github.com/flarum/core.git
synced 2025-07-25 18:51:40 +02:00
Make punctuate
translatable, rename to punctuateSeries
This commit is contained in:
@@ -78,7 +78,7 @@ export default class Translator {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return translation;
|
return translation.filter(part => part);
|
||||||
}
|
}
|
||||||
|
|
||||||
return fallback || [key];
|
return fallback || [key];
|
||||||
|
@@ -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;
|
|
||||||
};
|
|
35
framework/core/js/lib/helpers/punctuateSeries.js
Normal file
35
framework/core/js/lib/helpers/punctuateSeries.js
Normal 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;
|
||||||
|
}
|
@@ -31,7 +31,7 @@ class ClientController extends BaseClientController
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
protected $translationKeys = ['core.admin'];
|
protected $translationKeys = ['core.admin', 'core.lib'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var ExtensionManager
|
* @var ExtensionManager
|
||||||
|
@@ -27,7 +27,7 @@ class ClientController extends AbstractClientController
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
protected $translationKeys = ['core.forum'];
|
protected $translationKeys = ['core.forum', 'core.lib'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
|
Reference in New Issue
Block a user