npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ember-i18n-cp-validations

v3.1.0

Published

ember-i18n support for ember-cp-validations

Downloads

9,919

Readme

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

  • ember server
  • Visit your app at http://localhost:4200.

Running Tests

  • ember test
  • ember test --server

Building

  • ember build

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