To add i18 support for your app you need to define what text you would like to translate. The best way to define your text is to store it in external config file. For example:
function config($translateProvider) {
    $translateProvider
        .translations('en', {
            // Define all menu elements
            DASHBOARD: 'Dashboard',
            GRAPHS: 'Graphs',
            MAILBOX: 'Mailbox',
        })
        .translations('es', {
            // Define all menu elements
            DASHBOARD: 'Salpicadero',
            GRAPHS: 'Gráficos',
            MAILBOX: 'El correo',
        });
    $translateProvider.preferredLanguage('en');
}
                    Next you need to add html indicators in all place you want to use i18.
    <span > { { 'MISCELLANEOUS' | translate } } </span>
                    Next you need to add plugin module to your main app module:
 */
(function () {
    angular.module('inspinia', [
        'pascalprecht.translate',       // Angular Translate
    ])
})();
                    After that if you want to change the language you just need to add buttons and fire the $translate.use(langKey) function.
<a class="btn btn-white set_en" ng-click="changeLanguage('en')" > Set EN language</a>
<a class="btn btn-white set_es" ng-click="changeLanguage('ns')" > Set ES language</a>
                        
function translateCtrl($translate, $scope) {
    $scope.changeLanguage = function (langKey) {
        $translate.use(langKey);
        $scope.language = langKey;
    };
}
                        More info about specific function and configuration options you can find on official angular-translate documentation.
Set of the 780 flag icons for all countries. All flags are avalible with 16x16, 32x32 and 64x64 size.