Internationalization
To provided different languages support i18n lib is used. For feather reading please check it’s README.
Translation for Jennifer Models
You can use the Jennifer::Model::Base.human and Jennifer::Model::Base.human_attribute_name(attribute) to get translation for your model and attribute names. If there is no defined translation - it will be guessed by Inflector.humanize.
Model translation lookup
Firstly path jennifer.models.your_model_name will be checked. If there is no such - all ancestors will be iterated: jennifer.models.parent_model and feather. Otherwise - Inflector.humanize(i18n_key) will be invoked.
Also model name could be pluralized passing count as argument.
User.human(count: 2) # Customers
Attribute translation lookup
.human_attribute_name will use following lookup:
jennifer.attributes.[model_name].attributes.attribute_namejennifer.attributes.[parent_model_name].attributes.attribute_nameand so on for all ancestorsjennifer.attributes.attribute_name
Error message translation
Error messages of predefined validation helper macros are generated using Jennifer::Model::Errors#generate_message method and is retrieved from local files. Lets take a look how it will search blank error message:
jennifer.errors.[model_name].attributes.[attribute_name].blankjennifer.errors.[model_name].[attribute_name].blankjennifer.errors.[ancestor_model_name].attributes.[attribute_name].blankjennifer.errors.[ancestor_model_name].[attribute_name].blank(this and previous one will be repeated for all ancestors)jennifer.errors.[attribute_name].blankjennifer.errors.messages.blank
Based on this you can specify specific message for any error.
Interpolation
Some message accepts arguments to pe inserted into translation. Here is full list of them:
| Validation | Message | Interpolation | 
|---|---|---|
| confirmation | :confirmation | attribute | 
| length | :too_long | count | 
| length | :too_short | count | 
| length | :wrong_length | count | 
| numericality | :greater_than | value | 
| numericality | :greater_than_or_equal_to | value | 
| numericality | :equal_to | value | 
| numericality | :less_than | value | 
| numericality | :less_than_or_equal_to | value | 
| numericality | :other_than | value |