AngularJS Example:

by knalli

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<div ng-app="myApp" ng-controller="ctrl">
    <header>
        <button ng-click="toggleLang()">Toggle Language</button>
        <h1>{{ 'HEADLINE' | translate }}</h1>
        <h3>{{ 'SUB_HEADLINE' | translate }}</h3>
        <p>By <a href="http://twitter.com/PascalPrecht">{{ 'AUTHOR_NAME' | translate }}</a> - <a href="http://github.com/angular-translate/angular-translate">{{ 'GITHUB_LINK_TEXT' | translate }}</a></p>
    </header>
    <section>
        <h2>{{ 'GETTING_STARTED_HEADLINE' | translate }}</h2>
        <h3>{{ 'HEADLINE_FILTER' | translate}}</h3>
        <p>{{ 'INFO_TEXT_TRANSLATE_FILTER' | translate }}</p>
        <h5>{{ 'HEADLINE_USAGE' | translate}}</h5>        
        <pre><code ng-non-bindable>&lt;ANY&gt;{{ 'TRANSLATION_ID' | translate }}&lt;/ANY&gt;</code></pre>
        <h4>{{ 'HEADLINE_FILTER_DYN_VALUES' | translate }}</h4>
        <p>{{ 'INFO_TEXT_TRANSLATE_FILTER_2' | translate }}</p>
        <p>{{ 'INFO_TEXT_TRANSLATE_FILTER_3' | translate }}</p>
        <pre><code ng-non-bindable>$translateProvider.translations({
    'T_ID': 'Lorem ipsum {{value}}'
});</code></pre>
        <p>{{ 'INFO_TEXT_TRANSLATE_FILTER_4' | translate }}</p>
        <pre><code ng-non-bindable>// Passing values via string expression
&lt;ANY&gt;{{ 'TD_ID' | translate:'{"value": 3}' }}&lt;/ANY&gt;

// Passing values via scope object
&lt;ANY&gt;{{ 'TD_ID' | translate:anyObjectOnScope }}&lt;/ANY&gt;            
</code></pre>
        <h3>{{ 'HEADLINE_DIRECTIVE' | translate }}</h3>
        <p>{{ 'INFO_TEXT_TRANSLATE_DIRECTIVE' | translate }}</p>
        
        <pre><code ng-non-bindable>&lt;ANY translate&gt;TRANSLATION_ID&lt;/ANY&gt; // Use content as translation id
&lt;ANY translate="TRANSLATION_ID"&gt;&lt;/ANY&gt; // Pass translation id as attribute value
&lt;ANY translate&gt;{{translationIdOnScope}}&lt;/ANY&gt; // Use content as translation id with string interpolation
&lt;ANY...

JavaScript

// angular-translate 2.0.1
angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.use(c.get(b)):angular.isString(a.preferredLanguage())?a.use(a.preferredLanguage()):c.set(b,a.use()):angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p={},q=[],r=a,s=[],t=!1,u="translate-cloak",v=!1,w=".",x=function(){var a=window.navigator;return(a.language||a.browserLanguage||a.systemLanguage||a.userLanguage||"").split("-").join("_")},y=function(a){for(var b=[],d=angular.lowercase(a),e=0,f=q.length;f>e;e++)b.push(angular.lowercase(q[e]));if(b.indexOf(d)>-1)return d;if(c&&c[a]){var g=c[a];if(b.indexOf(angular.lowercase(g))>-1)return g}var h=a.split("_");return h.length>1&&b.indexOf(angular.lowercase(h[0]))>1?h[0]:void 0},z=function(a,b){if(!a&&!b)return p;if(a&&!b){if(angular.isString(a))return p[a]}else angular.isObject(p[a])||(p[a]={}),angular.extend(p[a],A(b));return this};this.translations=z,this.cloakClassName=function(a){return a?(u=a,this):u};var A=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)a.hasOwnProperty(e)&&(h=a[e],angular.isObject(h)?A(h,b.concat(e),c,e):(f=b.length?""+b.join(w)+w+e:e,b.length&&e===d&&(g=""+b.join(w),c[g]="@:"+f),c[f]=h));return c};this.addInterpolation=function(a){return s.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return k=a,this},this.useSanitizeValueStrategy=function(a){return t=a,this},this.preferredLanguage=function(a){return a?(b=a,this):b},this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return...