ui/config/ember-intl.js

169 lines
4.7 KiB
JavaScript

/* eslint-env node */
// Override translation-reducer to not tell us about missing 'none' keys
// var TranslationReducer = require('ember-intl/lib/broccoli/translation-reducer');
// function propKeys(object) {
// var result = [];
// var escaped;
// for (var key in object) {
// escaped = key.replace(/\./g, '\\.');
// if (object.hasOwnProperty(key)) {
// if (typeof object[key] === 'object') {
// result = result.concat(propKeys(object[key]).map(function (_key) {
// return escaped + '.' + _key;
// }));
// } else {
// result.push(escaped);
// }
// }
// }
// return result;
// }
// TranslationReducer.prototype.findMissingKeys = function(target, defaultTranslationKeys, locale) {
// var targetProps = propKeys(target);
// var log = this.options.log;
// var total = defaultTranslationKeys.length;
// var missing = {};
// defaultTranslationKeys.forEach(function (property) {
// if (targetProps.indexOf(property) === -1 && locale !== 'none') {
// missing[locale] = (missing[locale]||0) + 1;
// //log(property + '\' missing from ' + locale);
// }
// });
// Object.keys(missing).forEach(function(locale) {
// log(missing[locale] + ' keys missing in ' + locale);
// });
// };
module.exports = function(/* environment */) {
return {
/**
* The locales that the application needs to support.
*
* NOTE: this is optional and is automatically set *if* you store translations
* within the `inputPath` defined below.
*
* If you side load translations, you must then explicitly
* list out the locales. i.e: ['en-us', 'en-gb', 'fr-fr']
*
* @property locales
* @type {Array?}
* @default "null"
*/
locales: ['en-us', 'de-de'],
/**
* Merges the fallback l=ocale's translations into all other locales as a
* build-time fallback strategy.
*
* NOTE: a side effect of this option could result in missing translation warnings to be masked.
*
* @property fallbackLocale
* @type {String?}
* @default "null"
*/
fallbackLocale: 'en-us',
/**
* Path where translations are kept. This is relative to the project root.
* For example, if your translations are an npm dependency, set this to:
*`'./node_modules/path/to/translations'`
*
* @property inputPath
* @type {String}
* @default "'translations'"
*/
inputPath: 'translations',
/**
* Automatically inject the Intl.JS polyfill into index.html
*
* @property autoPolyfill
* @type {Boolean}
* @default "false"
*/
autoPolyfill: false,
/**
* Prevents the polyfill from being bundled in the asset folder of the build
*
* @property disablePolyfill
* @type {Boolean}
* @default "false"
*/
disablePolyfill: false,
/**
* Prevents the translations from being bundled with the application code.
* This enables asynchronously loading the translations for the active locale
* by fetching them from the asset folder of the build.
*
* See: https://ember-intl.github.io/ember-intl/docs/guide/asynchronously-loading-translations
*
* @property publicOnly
* @type {Boolean}
* @default "false"
*/
publicOnly: true,
/**
* Cause a build error if ICU argument mismatches are detected.
*
* @property errorOnNamedArgumentMismatch
* @type {Boolean}
* @default "false"
*/
errorOnNamedArgumentMismatch: false,
/**
* Cause a build error if missing translations are detected.
*
* See https://ember-intl.github.io/ember-intl/docs/guide/missing-translations#throwing-a-build-error-on-missing-required-translation
*
* @property errorOnMissingTranslations
* @type {Boolean}
* @default "false"
*/
errorOnMissingTranslations: false,
/**
* removes empty translations from the build output.
*
* @property stripEmptyTranslations
* @type {Boolean}
* @default false
*/
stripEmptyTranslations: false,
/**
* Add the subdirectories of the translations as a namespace for all keys.
*
* @property wrapTranslationsWithNamespace
* @type {Boolean}
* @default false
*/
wrapTranslationsWithNamespace: false,
/**
* Filter missing translations to ignore expected missing translations.
*
* See https://ember-intl.github.io/ember-intl/docs/guide/missing-translations#requiring-translations
*
* @property requiresTranslation
* @type {Function}
* @default "function(key,locale){return true}"
*/
requiresTranslation(/* key, locale */) {
return false;
}
};
};