All Projects → jasonmit → ember-i18n-cp-validations

jasonmit / ember-i18n-cp-validations

Licence: MIT license
ember-i18n support for ember-cp-validations

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to ember-i18n-cp-validations

Ember I18n Changeset Validations
ember-i18n support for ember-changeset-validations messages
Stars: ✭ 11 (-45%)
Mutual labels:  i18n, ember, internationalization, ember-addon
Ember Intl
Localization library for any Ember Application or Addon
Stars: ✭ 412 (+1960%)
Mutual labels:  i18n, ember, ember-addon
ember-qunit-assert-helpers
An ember-addon that provides additional QUnit 2.0 assertions specific to Ember.js.
Stars: ✭ 12 (-40%)
Mutual labels:  ember, ember-addon
ember-cli-string-helpers
Set of the String helpers extracted from DockYard's ember-composable-helpers.
Stars: ✭ 73 (+265%)
Mutual labels:  ember, ember-addon
ember-cli-mirage-graphql
A library for mocking GraphQL with Ember CLI Mirage
Stars: ✭ 24 (+20%)
Mutual labels:  ember, ember-addon
typesafe-i18n
A fully type-safe and lightweight internationalization library for all your TypeScript and JavaScript projects.
Stars: ✭ 1,227 (+6035%)
Mutual labels:  i18n, internationalization
ember-right-click-menu
An easy and flexible addon to add context menus anywhere in your application
Stars: ✭ 14 (-30%)
Mutual labels:  ember, ember-addon
ad localize
ADLocalize is a simple way to manage your localization files. Supported wording sources : CSVs and Google Sheets. Localization file generation available for iOS, Android, JSON (i18next), YAML and Java properties
Stars: ✭ 22 (+10%)
Mutual labels:  i18n, internationalization
ember-template-inspector
An ember add-on which opens the template file in the code editor while inspecting an element.
Stars: ✭ 15 (-25%)
Mutual labels:  ember, ember-addon
ember-fastboot-addon-tests
Addon testing support for Fastboot compatibility
Stars: ✭ 24 (+20%)
Mutual labels:  ember, ember-addon
ember-validity-modifier
Ember Octane addon to add custom validity (form validation) to form fields
Stars: ✭ 28 (+40%)
Mutual labels:  ember, ember-addon
msgtools
Tools for Developing Diagnostic Messages
Stars: ✭ 18 (-10%)
Mutual labels:  i18n, internationalization
ember-cli-nouislider
{{range-slider}} component for ember-cli powered by noUiSlider
Stars: ✭ 43 (+115%)
Mutual labels:  ember, ember-addon
ember-pipeline
Railway oriented programming in Ember
Stars: ✭ 17 (-15%)
Mutual labels:  ember, ember-addon
ember-emojione
EmojiOne helper and components for your Ember App
Stars: ✭ 16 (-20%)
Mutual labels:  ember, ember-addon
ember-vertical-timeline
A Vertical Timeline for Ember.js apps 🚀
Stars: ✭ 19 (-5%)
Mutual labels:  ember, ember-addon
laminas-i18n
Provide translations for your application, and filter and validate internationalized values
Stars: ✭ 40 (+100%)
Mutual labels:  i18n, internationalization
ember-resources
An implementation of Resources with some helpful utilities
Stars: ✭ 68 (+240%)
Mutual labels:  ember, ember-addon
ember-data-contentful
Ember Data adapter for contentful.com
Stars: ✭ 33 (+65%)
Mutual labels:  ember, ember-addon
ember-airtable
Boilerplate for quickly prototyping apps with Airtable, Node & Ember
Stars: ✭ 21 (+5%)
Mutual labels:  ember, ember-addon

ember-i18n-cp-validations

npm Version Build Status Ember Observer Score Ember badge

Adds support for ember-i18n in ember-cp-validations

Using ember-intl? See: jasonmit/ember-intl-cp-validations

Installation

  • ember install ember-i18n-cp-validations

Breaking changes between 2.x and 3.x for ember-i18n-cp-validations

  1. If your application implements it's own app/validators/messages.js you'll want to change the import reference from: ember-cp-validations/validators/messages to ember-i18n-cp-validations/validators/message
  2. Instantiating the initializer is no longer necessary for testing

Configuring

Implement the following validation messages across your translations:

// app/locales/en/translations.js

export default {
  errors: {
    description: "This field",
    inclusion: "{{description}} is not included in the list",
    exclusion: "{{description}} is reserved",
    invalid: "{{description}} is invalid",
    confirmation: "{{description}} doesn't match {{on}}",
    accepted: "{{description}} must be accepted",
    empty: "{{description}} can't be empty",
    blank: "{{description}} can't be blank",
    present: "{{description}} must be blank",
    collection: "{{description}} must be a collection",
    singular: "{{description}} can't be a collection",
    tooLong: "{{description}} is too long (maximum is {{max}} characters)",
    tooShort: "{{description}} is too short (minimum is {{min}} characters)",
    before: "{{description}} must be before {{before}}",
    after: "{{description}} must be after {{after}}",
    wrongDateFormat: "{{description}} must be in the format of {{format}}",
    wrongLength: "{{description}} is the wrong length (should be {{is}} characters)",
    notANumber: "{{description}} must be a number",
    notAnInteger: "{{description}} must be an integer",
    greaterThan: "{{description}} must be greater than {{gt}}",
    greaterThanOrEqualTo: "{{description}} must be greater than or equal to {{gte}}",
    equalTo: "{{description}} must be equal to {{is}}",
    lessThan: "{{description}} must be less than {{lt}}",
    lessThanOrEqualTo: "{{description}} must be less than or equal to {{lte}}",
    otherThan: "{{description}} must be other than {{value}}",
    odd: "{{description}} must be odd",
    even: "{{description}} must be even",
    positive: "{{description}} must be positive",
    date: "{{description}} must be a valid date",
    onOrAfter: '{{description}} must be on or after {{onOrAfter}}',
    onOrBefore: '{{description}} must be on or before {{onOrBefore}}',
    email: "{{description}} must be a valid email address",
    phone: "{{description}} must be a valid phone number",
    url: "{{description}} must be a valid url"
  }
};

Customizing the prefix

To change the errors prefix key from errors to any other key, such as validationErrors you simply add the following to app/validators/messages.js. Now just amend your translation files to be nested under the validationErrors object instead of errors.

// app/validators/messages.js

import ValidatorsMessages from 'ember-i18n-cp-validations/validators/messages';

export default ValidatorsMessages.extend({
  prefix: 'validationErrors'
});

Translating Validator description

To translate the description of a Validator specify the descriptionKey to match a key in your translations.

// app/models/user.js

import { validator, buildValidations } from 'ember-cp-validations';

const Validations = buildValidations({
  username: validator('presence', {
    presence: true,
    descriptionKey: 'key.for.username'
  })
});
// app/locales/en/translations.js

export default {
  key: {
    for: {
      username: 'Username'
    }
  }
}

// app/locales/sv/translations.js

export default {
  key: {
    for: {
      username: 'Användarnamn'
    }
  }
}

Overriding default translation key

By default, translations will be resolved to validatorPrefix.validatorType. If you need to override this functionality entirely and specify your own message key, you can do so with messageKey on the validator object.

// app/models/user.js

import { validator, buildValidations } from 'ember-cp-validations';

const Validations = buildValidations({
  username: validator('presence', {
    presence: true,
    messageKey: 'username.missing'
  })
});

Passing attributes into translation

Passing attributes into your translation is supported.

Similar to passing attributes via through to the t method: i.e., i18n.t('errors.blank', { placeholder: i18n.t('age') }) you can also do this with your validator definition.

validator('presence', {
  presence: true,
  placeholder: Ember.computed('model.age', 'model.i18n.locale', {
    // inject i18n into your model, optional..
    return get(model, 'i18n').t('age');
  })
})
errors: {
  blank: '{{placeholder}} cannot be blank!'
}

Disabling Missing Translation Warnings

To suppress console warnings for missing translations, you can do so by setting i18n.suppressWarnings in config/environment;

// config/environment.js
module.exports = function(environment) {
  const ENV = {};

  if (environment === 'test') {
    ENV.i18n = ENV.i18n || {};
    ENV.i18n.suppressWarnings = true;
  }

  return ENV;
}

Questions?

Please open a GitHub an issue.

Running

Running Tests

  • ember test
  • ember test --server

Building

  • ember build

For more information on using ember-cli, visit http://www.ember-cli.com/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].