@tradeshift/ng-translate-t
v1.0.0
Published
Angular 1.x module to provide convenient translation directives.
Downloads
1
Readme
ng-translate-t
Angular 1.x module to provide convenient translation directives.
The problem
Using translations across views in Angular apps is tedious and error prone with
$scope
variables, and angular specific with existing libraries like
angular-translate
.
This solution
We provide configurable directives, t
and t-attrs
, focusing on extracting
the metadata for the translations, and allowing you to specify your own lookup
method.
The directives extract the text
, dynamic params
, context
and shouldEscape
from the attributes.
Table of contents
Installation
Install via npm
npm i ng-translate-t
Usage
Register the module
// recommended w/ commonJS module:
angular.module('app', [require('ng-translate-t')]);
// UMD / browser use:
angular.module('app', ['ng-translate-t']);
Configure your translation provider:
app
.config($translateProvider => {
// Set your preferred translation function here:
$translateProvider.setTranslationFunction((text, params, context, shouldEscape) => {
// Our translators are lazy, so we translate everything to "42".
return '42';
});
});
See the example for a demo app.
API
$translateProvider.setTranslationFunction(fn: TranslationFunction): void
Replaces the translationFunction
with fn
. Defaults to window.t
.
Types:
TranslationFunction
:(text, params, context, shouldEscape): string
Params:
text
:string
is the extracted string for translationparams
:{[k: string]: string}
are parameters to pass to do e.g. dynamic pluralizationcontext
:string
gives context to translators and allows different translations of the sametext
based on context, e.g. whether it's for a form or an imageshouldEscape
:boolean
allows conditional escaping (HTML or other) where needed
t
directive
Used to replace the contents (innerHTML
) of an element with translated strings.
If the element has children, their attributes are replaced with a ref="1"
count
(in depth-first order), in order to preserve translation hashes when e.g. style attributes change.
Attributes:
[t-[param]]
:string
. Any attribute starting witht-
will become aparams
key (camelCased), with the value read from$scope
under the corresponding key.[t-context]
:string
passed totranslationFunction
ascontext
[t-escape]
:boolean
passed totranslationFunction
asshouldEscape
<t>Translatable string</t>
<div t>Translatable string</div>
<!-- passing down $scope.oranges as orangesCount -->
<div t t-oranges-count="oranges">
You have {orangesCount} {orangesCount, plural,
one {orange}
other {oranges}
}
</div>
[t-attrs]
directive
Used to replace attributes of an element with translated strings.
Attributes:
[t-attrs]
:string
comma delimited string of attributes to replace with translations.[t-context]
:string
passed totranslationFunction
ascontext
[t-escape]
:boolean
passed totranslationFunction
asshouldEscape
<div t-attrs="title" title="Translatable string"></t>
<img t-attrs="alt,title" title="Translated title" alt="Translated alt" src="#" />
License
ISC. Copyright (c) 2018, Tradeshift.