Merge pull request #217 from mabashian/6444-delete-group-error

Fixed group delete/promote message tense
This commit is contained in:
Michael Abashian
2017-08-11 09:23:53 -04:00
committed by GitHub
12 changed files with 161 additions and 103 deletions
@@ -4,48 +4,48 @@ function ComponentsStrings (BaseString) {
let t = this.t;
let ns = this.components;
ns.REPLACE = t('REPLACE');
ns.REVERT = t('REVERT');
ns.ENCRYPTED = t('ENCRYPTED');
ns.OPTIONS = t('OPTIONS');
ns.SHOW = t('SHOW');
ns.HIDE = t('HIDE');
ns.REPLACE = t.s('REPLACE');
ns.REVERT = t.s('REVERT');
ns.ENCRYPTED = t.s('ENCRYPTED');
ns.OPTIONS = t.s('OPTIONS');
ns.SHOW = t.s('SHOW');
ns.HIDE = t.s('HIDE');
ns.message = {
REQUIRED_INPUT_MISSING: t('Please enter a value.'),
INVALID_INPUT: t('Invalid input for this type.')
REQUIRED_INPUT_MISSING: t.s('Please enter a value.'),
INVALID_INPUT: t.s('Invalid input for this type.')
};
ns.form = {
SUBMISSION_ERROR_TITLE: t('Unable to Submit'),
SUBMISSION_ERROR_MESSAGE:t('Unexpected server error. View the console for more information'),
SUBMISSION_ERROR_PREFACE: t('Unexpected Error')
SUBMISSION_ERROR_TITLE: t.s('Unable to Submit'),
SUBMISSION_ERROR_MESSAGE:t.s('Unexpected server error. View the console for more information'),
SUBMISSION_ERROR_PREFACE: t.s('Unexpected Error')
};
ns.group = {
UNSUPPORTED_ERROR_PREFACE: t('Unsupported input type')
UNSUPPORTED_ERROR_PREFACE: t.s('Unsupported input type')
};
ns.label = {
PROMPT_ON_LAUNCH: t('Prompt on launch')
PROMPT_ON_LAUNCH: t.s('Prompt on launch')
};
ns.select = {
UNSUPPORTED_TYPE_ERROR: t('Unsupported display model type'),
EMPTY_PLACEHOLDER: t('NO OPTIONS AVAILABLE')
UNSUPPORTED_TYPE_ERROR: t.s('Unsupported display model type'),
EMPTY_PLACEHOLDER: t.s('NO OPTIONS AVAILABLE')
};
ns.textarea = {
SSH_KEY_HINT: t('HINT: Drag and drop an SSH private key file on the field below.')
SSH_KEY_HINT: t.s('HINT: Drag and drop an SSH private key file on the field below.')
};
ns.lookup = {
NOT_FOUND: t('That value was not found. Please enter or select a valid value.')
NOT_FOUND: t.s('That value was not found. Please enter or select a valid value.')
};
ns.truncate = {
DEFAULT: t('Copy full revision to clipboard.'),
COPIED: t('Copied to clipboard.')
DEFAULT: t.s('Copy full revision to clipboard.'),
COPIED: t.s('Copied to clipboard.')
}
}
@@ -3,17 +3,49 @@ import defaults from '../../assets/default.strings.json';
let i18n;
function BaseStringService (namespace) {
let t = i18n._;
const ERROR_NO_NAMESPACE = t('BaseString cannot be extended without providing a namespace');
const ERROR_NO_STRING = t('No string exists with this name');
const ERROR_NO_NAMESPACE = 'BaseString cannot be extended without providing a namespace';
const ERROR_NO_STRING = 'No string exists with this name';
if (!namespace) {
throw new Error(ERROR_NO_NAMESPACE);
}
this.t = t;
this[namespace] = {};
this.t = {};
/**
* To translate a singular string by itself or a string with context data, use `translate`.
* For brevity, this is renamed as `t.s` (as in "translate singular"). `t.s` serves a dual
* purpose -- it's to mark strings for translation so they appear in the `.pot` file after
* the grunt-angular-gettext task is run AND it's used to fetch the translated string at
* runtime.
*
* NOTE: View ui/src/i18n.js for where these i18n methods are defined. i18n is a wrapper around
* the library angular-gettext.
*
* @arg {string} string - The string to be translated
* @arg {object=} context - A data object used to populate dynamic context data in a string.
*
* @returns {string} The translated string or the original string in the even the translation
* does not exist.
*/
this.t.s = i18n.translate;
/**
* To translate a plural string use `t.p`. The `count` supplied will determine whether the
* singular or plural string is returned.
*
* @arg {number} count - The count of the plural object
* @arg {string} singular - The singular version of the string to be translated
* @arg {string} plural - The plural version of the string to be translated
* @arg {object=} context - A data object used to populate dynamic context data in a string.
*
* @returns {string} The translated string or the original string in the even the translation
* does not exist.
*/
this.t.p = i18n.translatePlural;
let t = this.t;
/*
* These strings are globally relevant and configured to give priority to values in
@@ -26,9 +58,9 @@ function BaseStringService (namespace) {
* Globally relevant strings should be defined here to avoid duplication of content across the
* the project.
*/
this.CANCEL = t('CANCEL');
this.SAVE = t('SAVE');
this.OK = t('OK');
this.CANCEL = t.s('CANCEL');
this.SAVE = t.s('SAVE');
this.OK = t.s('OK');
/**
* This getter searches the extending class' namespace first for a match then falls back to
@@ -37,8 +69,16 @@ function BaseStringService (namespace) {
*
* If no match is found, an error is thrown to alert the developer immediately instead of
* failing silently.
*
* The `t.s` and `t.p` calls should only be used where strings are defined in
* <name>.strings.js` files. To use translated strings elsewhere, access them through this
* common interface.
*
* @arg {string} name - The property name of the string (e.g. 'CANCEL')
* @arg {number=} count - A count of objects referenced in your plural string
* @arg {object=} context - An object containing data to use in the interpolation of the string
*/
this.get = name => {
this.get = (name, ...args) => {
let keys = name.split('.');
let value;
@@ -50,11 +90,11 @@ function BaseStringService (namespace) {
}
if (!value) {
throw new Error(ERROR_NO_STRING);
throw new Error(ERROR_NO_STRING + `: ${name}`);
}
});
return value;
return typeof value === 'string' ? value : value(...args);
};
}