open-consul/ui/packages/consul-ui/app/services/i18n.js

33 lines
927 B
JavaScript

import IntlService from 'ember-intl/services/intl';
import { inject as service } from '@ember/service';
export const formatOptionsSymbol = Symbol();
export default class I18nService extends IntlService {
@service('env') env;
/**
* Additionally injects selected project level environment variables into the
* message formatting context for usage within translated texts
*/
formatMessage(value, formatOptions) {
formatOptions = this[formatOptionsSymbol](formatOptions);
return super.formatMessage(value, formatOptions);
}
[formatOptionsSymbol](options) {
const env = [
'CONSUL_HOME_URL',
'CONSUL_REPO_ISSUES_URL',
'CONSUL_DOCS_URL',
'CONSUL_DOCS_LEARN_URL',
'CONSUL_DOCS_API_URL',
'CONSUL_COPYRIGHT_URL',
].reduce((prev, key) => {
prev[key] = this.env.var(key);
return prev;
}, {});
return {
...options,
...env,
};
}
}