Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

angular-gettext

Package Overview
Dependencies
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-gettext - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

4

dist/angular-gettext.js

@@ -22,3 +22,5 @@ angular.module('gettext', []);

var key, val, _results;
this.strings[language] = {};
if (!this.strings[language]) {
this.strings[language] = {};
}
_results = [];

@@ -25,0 +27,0 @@ for (key in strings) {

@@ -1,1 +0,1 @@

angular.module("gettext",[]),angular.module("gettext").factory("gettextCatalog",["gettextPlurals",function(a){var b;return b=function(){function b(){this.debug=!1,this.strings={},this.currentLanguage="en"}var c;return c=function(a,b){return a?"[MISSING]: "+b:b},b.prototype.setStrings=function(a,b){var c,d,e;this.strings[a]={},e=[];for(c in b)d=b[c],"string"==typeof d?e.push(this.strings[a][c]=[d]):e.push(this.strings[a][c]=d);return e},b.prototype.getString=function(a){var b,d;return(null!=(b=this.strings[this.currentLanguage])?null!=(d=b[a])?d[0]:void 0:void 0)||c(this.debug,a)},b.prototype.getPlural=function(b,d,e){var f,g,h;return f=a(this.currentLanguage,b),g=(null!=(h=this.strings[this.currentLanguage])?h[d]:void 0)||[],g[f]||c(this.debug,1===b?d:e)},b}(),new b}]),angular.module("gettext").directive("translate",["gettextCatalog","$interpolate","$parse",function(a,b,c){return{compile:function(d,e){var f,g;return f=function(a,b){throw new Error("You should add a "+a+" attribute whenever you add a "+b+" attribute.")},e.translatePlural&&!e.translateN&&f("translate-n","translate-plural"),e.translateN&&!e.translatePlural&&f("translate-plural","translate-n"),g=d.html(),function(f){var h,i;return h=c(e.translateN),i=function(){var c,i,j;return i=d.html(),j=e.translatePlural?a.getPlural(h(f),g,e.translatePlural):a.getString(g),c=b(j)(f),i!==c?d.html(c):void 0},f.$watch(i)}}}}]),angular.module("gettext").factory("gettextPlurals",function(){return function(a,b){switch(a){case"ay":case"bo":case"cgg":case"dz":case"fa":case"id":case"ja":case"jbo":case"ka":case"kk":case"km":case"ko":case"ky":case"lo":case"ms":case"my":case"sah":case"su":case"th":case"tt":case"ug":case"vi":case"wo":case"zh":return 0;case"is":return 1!=b%10||11==b%100?1:0;case"jv":return 0!=b?1:0;case"mk":return 1==b||1==b%10?0:1;case"ach":case"ak":case"am":case"arn":case"br":case"fil":case"fr":case"gun":case"ln":case"mfe":case"mg":case"mi":case"oc":case"tg":case"ti":case"tr":case"uz":case"wa":case"zh":return b>1?1:0;case"lv":return 1==b%10&&11!=b%100?0:0!=b?1:2;case"lt":return 1==b%10&&11!=b%100?0:b%10>=2&&(10>b%100||b%100>=20)?1:2;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return 1==b%10&&11!=b%100?0:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?1:2;case"mnk":return 0==b?0:1==b?1:2;case"ro":return 1==b?0:0==b||b%100>0&&20>b%100?1:2;case"pl":return 1==b?0:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?1:2;case"cs":case"sk":return 1==b?0:b>=2&&4>=b?1:2;case"sl":return 1==b%100?1:2==b%100?2:3==b%100||4==b%100?3:0;case"mt":return 1==b?0:0==b||b%100>1&&11>b%100?1:b%100>10&&20>b%100?2:3;case"gd":return 1==b||11==b?0:2==b||12==b?1:b>2&&20>b?2:3;case"cy":return 1==b?0:2==b?1:8!=b&&11!=b?2:3;case"kw":return 1==b?0:2==b?1:3==b?2:3;case"ga":return 1==b?0:2==b?1:7>b?2:11>b?3:4;case"ar":return 0==b?0:1==b?1:2==b?2:b%100>=3&&10>=b%100?3:b%100>=11?4:5;default:return 1!=b?1:0}}});
angular.module("gettext",[]),angular.module("gettext").factory("gettextCatalog",["gettextPlurals",function(a){var b;return b=function(){function b(){this.debug=!1,this.strings={},this.currentLanguage="en"}var c;return c=function(a,b){return a?"[MISSING]: "+b:b},b.prototype.setStrings=function(a,b){var c,d,e;this.strings[a]||(this.strings[a]={}),e=[];for(c in b)d=b[c],"string"==typeof d?e.push(this.strings[a][c]=[d]):e.push(this.strings[a][c]=d);return e},b.prototype.getString=function(a){var b,d;return(null!=(b=this.strings[this.currentLanguage])?null!=(d=b[a])?d[0]:void 0:void 0)||c(this.debug,a)},b.prototype.getPlural=function(b,d,e){var f,g,h;return f=a(this.currentLanguage,b),g=(null!=(h=this.strings[this.currentLanguage])?h[d]:void 0)||[],g[f]||c(this.debug,1===b?d:e)},b}(),new b}]),angular.module("gettext").directive("translate",["gettextCatalog","$interpolate","$parse",function(a,b,c){return{compile:function(d,e){var f,g;return f=function(a,b){throw new Error("You should add a "+a+" attribute whenever you add a "+b+" attribute.")},e.translatePlural&&!e.translateN&&f("translate-n","translate-plural"),e.translateN&&!e.translatePlural&&f("translate-plural","translate-n"),g=d.html(),function(f){var h,i;return h=c(e.translateN),i=function(){var c,i,j;return i=d.html(),j=e.translatePlural?a.getPlural(h(f),g,e.translatePlural):a.getString(g),c=b(j)(f),i!==c?d.html(c):void 0},f.$watch(i)}}}}]),angular.module("gettext").factory("gettextPlurals",function(){return function(a,b){switch(a){case"ay":case"bo":case"cgg":case"dz":case"fa":case"id":case"ja":case"jbo":case"ka":case"kk":case"km":case"ko":case"ky":case"lo":case"ms":case"my":case"sah":case"su":case"th":case"tt":case"ug":case"vi":case"wo":case"zh":return 0;case"is":return 1!=b%10||11==b%100?1:0;case"jv":return 0!=b?1:0;case"mk":return 1==b||1==b%10?0:1;case"ach":case"ak":case"am":case"arn":case"br":case"fil":case"fr":case"gun":case"ln":case"mfe":case"mg":case"mi":case"oc":case"tg":case"ti":case"tr":case"uz":case"wa":case"zh":return b>1?1:0;case"lv":return 1==b%10&&11!=b%100?0:0!=b?1:2;case"lt":return 1==b%10&&11!=b%100?0:b%10>=2&&(10>b%100||b%100>=20)?1:2;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return 1==b%10&&11!=b%100?0:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?1:2;case"mnk":return 0==b?0:1==b?1:2;case"ro":return 1==b?0:0==b||b%100>0&&20>b%100?1:2;case"pl":return 1==b?0:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?1:2;case"cs":case"sk":return 1==b?0:b>=2&&4>=b?1:2;case"sl":return 1==b%100?1:2==b%100?2:3==b%100||4==b%100?3:0;case"mt":return 1==b?0:0==b||b%100>1&&11>b%100?1:b%100>10&&20>b%100?2:3;case"gd":return 1==b||11==b?0:2==b||12==b?1:b>2&&20>b?2:3;case"cy":return 1==b?0:2==b?1:8!=b&&11!=b?2:3;case"kw":return 1==b?0:2==b?1:3==b?2:3;case"ga":return 1==b?0:2==b?1:7>b?2:11>b?3:4;case"ar":return 0==b?0:1==b?1:2==b?2:b%100>=3&&10>=b%100?3:b%100>=11?4:5;default:return 1!=b?1:0}}});
{
"name": "angular-gettext",
"version": "0.0.2",
"version": "0.0.3",
"description": "Gettext support for Angular.js",

@@ -33,3 +33,7 @@ "main": "index.js",

"grunt-contrib-concat": "~0.3.0"
},
"repository": {
"type": "git",
"url": "git://github.com/rubenv/angular-gettext.git"
}
}

@@ -7,4 +7,101 @@ # angular-gettext - gettext utilities for angular.js

Documentation: TODO
## Getting started
Add angular-gettext to your project:
1. Grab the files, either by copying the files from the `dist` folder or (preferably) through bower: `bower install --save angular-gettext`.
2. Include the angular-gettext source files in your app:
```html
<script src="bower_components/angular-gettext/dist/angular-gettext.min.js"></script>
```
3. Add a dependency to angular-gettext in your Angular app:
```js
angular.module('myApp', ['gettext']);
```
You can now start using the `translate` directive to mark strings as translatable.
Next steps:
* Annotate strings with the `translate` directive.
* Extract strings from the source code.
* Translate strings
* Integrate translated strings back into the application.
* Set the correct language for translations.
## Using the `translate` directive
Strings are marked as translatable using the `translate` directive. Here's a simple example:
```html
<h1 translate>Hello!</h1>
```
This div will automatically be translated using the translated strings (which we'll define later on). For instance, in Dutch, it might read `Hallo!`.
### Plurals
Plural strings can be annotated using two extra attributes: `translate-n` and `translate-plural`:
```html
<div translate translate-n="count" translate-plural="{{count}} boats">One boat</div>
```
The general format is:
```html
<div translate translate-n="COUNTEXPR" translate-plural="PLURALSTR">SINGULARSTR</div>
```
Depending on the value of `COUNTEXPR`, either the singular string or the plural string will be selected.
### Interpolation
Full interpolation support is available in translated strings, so the following will work as expected:
```html
<div translate>Hello {{name}}!</div>
```
## Extracting strings
Use [`grunt-angular-gettext`](https://github.com/rubenv/grunt-angular-gettext) to extract strings from your HTML templates into a `.pot` catalog.
## Translate strings
Use a tool like [poedit](http://www.poedit.net/), [Pootle](http://pootle.translatehouse.org/) or [Transifex](https://www.transifex.com/) to translate the strings.
## Setting translated strings
You can set translated strings by injecting the `gettextCatalog` and using the `setStrings` method.
As an example, you may have the following code in your application:
```js
angular.module('myApp').run(function (gettextCatalog) {
// Load the strings automatically during initialization.
gettextCatalog.setStrings('nl', {
'Hello': 'Hallo',
'One boat': ['Een boot', '{{count}} boats']
});
});
```
Converting translated `.po` files into angular-compatible JavaScript files can be done automatically using the [`grunt-angular-gettext`](https://github.com/rubenv/grunt-angular-gettext) module.
## Setting the language
Set the language by setting a language code on the catalog:
```js
angular.module('myApp').run(function (gettextCatalog) {
gettextCatalog.currentLanguage = 'nl';
});
```
You can do this anywhere in your application, the use of a `run` block above is just an example.
## Contributing

@@ -11,0 +108,0 @@ All code lives in the `src` folder and is written in CoffeeScript. Try to stick to the style conventions used in existing code.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc