GithubHelp home page GithubHelp logo

tehmaestro / ember-i18n-cp-validations Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jasonmit/ember-i18n-cp-validations

0.0 2.0 0.0 44 KB

ember-i18n support for ember-cp-validations

License: MIT License

JavaScript 85.31% HTML 14.69%

ember-i18n-cp-validations's Introduction

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

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",
    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 ammend your translation files to be nested under the validationErrors object instead of errors.

// app/validators/messages.js

import ValidatorsMessages from 'ember-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 will be invoked every time a validation occurs.
  placeholder(model) {
    // inject i18n into your model, optional..
    return get(model, 'i18n').t('age');
  }
})
errors: {
  blank: '{{placeholder}} cannot be blank!'
}

Testing

A common issue, across every ember project relying on initializers, is how do you tests code dependent on an initializer being invoked.

To work around this, invoke the initializer during the setup for your test dependent on the initializer.

import { moduleForComponent, test } from 'ember-qunit';
import initialize from 'ember-i18n-cp-validations/initialize';

moduleForComponent('x-product', 'XProductComponent', {
  integration: true,
  setup() {
    initialize(this);
  }
});

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/.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.