diff --git a/README.md b/README.md index 1ffc63b..5770551 100644 --- a/README.md +++ b/README.md @@ -454,9 +454,10 @@ For convenience `translate` can be imported directly in JavaScript files for cas ```js import {translate} from 'vue-gettext'; -const {gettext: $gettext} = translate; +const {gettext: $gettext, gettextInterpolate} = translate; -let str = $gettext('Hello'); +const str = $gettext('Hello, %{name}'); +const interpolated = gettextInterpolate(str, { name: 'Jerom' }) ``` # Elsewhere diff --git a/src/interpolate.js b/src/interpolate.js index 94f2b59..4eeb745 100644 --- a/src/interpolate.js +++ b/src/interpolate.js @@ -35,7 +35,7 @@ const MUSTACHE_SYNTAX_RE = /\{\{((?:.|\n)+?)\}\}/g */ let interpolate = function (msgid, context = {}, disableHtmlEscaping = false) { - if (!_Vue.config.getTextPluginSilent && MUSTACHE_SYNTAX_RE.test(msgid)) { + if (_Vue && !_Vue.config.getTextPluginSilent && MUSTACHE_SYNTAX_RE.test(msgid)) { console.warn(`Mustache syntax cannot be used with vue-gettext. Please use "%{}" instead of "{{}}" in: ${msgid}`) } diff --git a/src/translate.js b/src/translate.js index 4cc69ad..d5cbe99 100644 --- a/src/translate.js +++ b/src/translate.js @@ -1,4 +1,5 @@ import plurals from './plurals' +import interpolate from './interpolate' const SPACING_RE = /\s{2,}/g @@ -182,6 +183,19 @@ const translate = { } }, + /** + * Allows to use interpolation outside the Vue + * + * @example + * import {translate} from 'vue-gettext'; + * + * const {gettext, gettextInterpolate} = translate; + * + * let translated = gettext('%{ n } foos', n) + * let interpolated = gettextInterpolate(translated, {n: 5}) + */ + gettextInterpolate: interpolate.bind(interpolate), + } export default translate