【问题标题】:Change Datatables interface language with angular translate switch使用角度翻译开关更改数据表界面语言
【发布时间】:2018-02-28 08:28:27
【问题描述】:

在我的angularjs 应用程序中,我使用angular translate 更改语言

$scope.changeLanguage = function (langKey) {
    $translate.use(langKey);
    tmhDynamicLocale.set(langKey);
};

app.config(function (tmhDynamicLocaleProvider) {
    tmhDynamicLocaleProvider.localeLocationPattern('bower_components_steora/angular-i18n/angular-locale_{{locale}}.js');
});

在 HTML 中,我为选定的语言调用函数,并用翻译的项目设置我的 json。

<div class="jezik">
     <a class="languageSelect" ng-click="changeLanguage('hr')" translate="BUTTON_LANG_HR"></a> | 
     <a class="languageSelect" ng-click="changeLanguage('en')" translate="BUTTON_LANG_EN"></a> | 
     <a class="languageSelect" ng-click="changeLanguage('es')" translate="BUTTON_LANG_ESP"></a> | 
     <a class="languageSelect" ng-click="changeLanguage('de')" translate="BUTTON_LANG_DE"></a> | 
     <a class="languageSelect" ng-click="changeLanguage('it')" translate="BUTTON_LANG_IT"></a> | 
     <a class="languageSelect" ng-click="changeLanguage('fr')" translate="BUTTON_LANG_FR"></a>
</div>

我的问题是,如何更改angular datatables 界面语言与应用程序语言相同? 当我更改我的应用程序语言时,我需要更改数据表语言,我的意思是“显示条目”、“搜索:”、“显示 20 个条目中的 1 到 10 个”等。

我找到了this,但是如何通过更改角度翻译语言在同一点击中更改数据表语言?

我也发现了这个plnkr,但我需要进行全局更改,不仅在一个状态。 Thnx 并为我的英语感到抱歉

【问题讨论】:

    标签: javascript jquery angularjs angular-datatables


    【解决方案1】:

    制作函数,传递翻译项目。从 localstorage 检查 key 并为所选语言提供数据

    function selectedLanguageLocalStorage(localStorage) {
    for (key in localStorage) {
        if (key == "NG_TRANSLATE_LANG_KEY"){
            langKey = localStorage[key];
            if (langKey == "en") {
                var language = {
                    "sEmptyTable":     "No data available in table",
                    "sInfo":           "Showing _START_ to _END_ of _TOTAL_ entries",
                    "sInfoEmpty":      "Showing 0 to 0 of 0 entries",
                    "sInfoFiltered":   "(filtered from _MAX_ total entries)",
                    "sInfoPostFix":    "",
                    "sInfoThousands":  ",",
                    "sLengthMenu":     "Show _MENU_ entries",
                    "sLoadingRecords": "Loading...",
                    "sProcessing":     "Processing...",
                    "sSearch":         "Search:",
                    "sZeroRecords":    "No matching records found",
                    "oPaginate": {
                        "sFirst":    "First",
                        "sLast":     "Last",
                        "sNext":     "Next",
                        "sPrevious": "Previous"
                    },
                    "oAria": {
                        "sSortAscending":  ": activate to sort column ascending",
                        "sSortDescending": ": activate to sort column descending"
                    }
                }
            }else if (langKey == "it"){
                var language = {
                    "sEmptyTable":     "Nessun dato presente nella tabella",
                    "sInfo":           "Vista da _START_ a _END_ di _TOTAL_ elementi",
                    "sInfoEmpty":      "Vista da 0 a 0 di 0 elementi",
                    "sInfoFiltered":   "(filtrati da _MAX_ elementi totali)",
                    "sInfoPostFix":    "",
                    "sInfoThousands":  ".",
                    "sLengthMenu":     "Visualizza _MENU_ elementi",
                    "sLoadingRecords": "Caricamento...",
                    "sProcessing":     "Elaborazione...",
                    "sSearch":         "Cerca:",
                    "sZeroRecords":    "La ricerca non ha portato alcun risultato.",
                    "oPaginate": {
                        "sFirst":      "Inizio",
                        "sPrevious":   "Precedente",
                        "sNext":       "Successivo",
                        "sLast":       "Fine"
                    },
                    "oAria": {
                        "sSortAscending":  ": attiva per ordinare la colonna in ordine crescente",
                        "sSortDescending": ": attiva per ordinare la colonna in ordine decrescente"
                    }
                }
            }
            else if (langKey == "de"){
                var language = {
                    "sEmptyTable":      "Keine Daten in der Tabelle vorhanden",
                    "sInfo":            "_START_ bis _END_ von _TOTAL_ Einträgen",
                    "sInfoEmpty":       "0 bis 0 von 0 Einträgen",
                    "sInfoFiltered":    "(gefiltert von _MAX_ Einträgen)",
                    "sInfoPostFix":     "",
                    "sInfoThousands":   ".",
                    "sLengthMenu":      "_MENU_ Einträge anzeigen",
                    "sLoadingRecords":  "Wird geladen...",
                    "sProcessing":      "Bitte warten...",
                    "sSearch":          "Suchen",
                    "sZeroRecords":     "Keine Einträge vorhanden.",
                    "oPaginate": {
                        "sFirst":       "Erste",
                        "sPrevious":    "Zurück",
                        "sNext":        "Nächste",
                        "sLast":        "Letzte"
                    },
                    "oAria": {
                        "sSortAscending":  ": aktivieren, um Spalte aufsteigend zu sortieren",
                        "sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
                    },
                    select: {
                            rows: {
                            _: '%d Zeilen ausgewählt',
                            0: 'Zum Auswählen auf eine Zeile klicken',
                            1: '1 Zeile ausgewählt'
                            }
                    }
                }
            }
            else if (langKey == "es"){
                var language = {
                    "sProcessing":     "Procesando...",
                    "sLengthMenu":     "Mostrar _MENU_ registros",
                    "sZeroRecords":    "No se encontraron resultados",
                    "sEmptyTable":     "Ningún dato disponible en esta tabla",
                    "sInfo":           "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
                    "sInfoEmpty":      "Mostrando registros del 0 al 0 de un total de 0 registros",
                    "sInfoFiltered":   "(filtrado de un total de _MAX_ registros)",
                    "sInfoPostFix":    "",
                    "sSearch":         "Buscar:",
                    "sUrl":            "",
                    "sInfoThousands":  ",",
                    "sLoadingRecords": "Cargando...",
                    "oPaginate": {
                        "sFirst":    "Primero",
                        "sLast":     "Último",
                        "sNext":     "Siguiente",
                        "sPrevious": "Anterior"
                    },
                    "oAria": {
                        "sSortAscending":  ": Activar para ordenar la columna de manera ascendente",
                        "sSortDescending": ": Activar para ordenar la columna de manera descendente"
                    }
                }
            }
            else if (langKey == "fr"){
                var language = {
                    "sProcessing":     "Traitement en cours...",
                    "sSearch":         "Rechercher&nbsp;:",
                    "sLengthMenu":     "Afficher _MENU_ &eacute;l&eacute;ments",
                    "sInfo":           "Affichage de l'&eacute;l&eacute;ment _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments",
                    "sInfoEmpty":      "Affichage de l'&eacute;l&eacute;ment 0 &agrave; 0 sur 0 &eacute;l&eacute;ment",
                    "sInfoFiltered":   "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
                    "sInfoPostFix":    "",
                    "sLoadingRecords": "Chargement en cours...",
                    "sZeroRecords":    "Aucun &eacute;l&eacute;ment &agrave; afficher",
                    "sEmptyTable":     "Aucune donn&eacute;e disponible dans le tableau",
                    "oPaginate": {
                        "sFirst":      "Premier",
                        "sPrevious":   "Pr&eacute;c&eacute;dent",
                        "sNext":       "Suivant",
                        "sLast":       "Dernier"
                    },
                    "oAria": {
                        "sSortAscending":  ": activer pour trier la colonne par ordre croissant",
                        "sSortDescending": ": activer pour trier la colonne par ordre d&eacute;croissant"
                    }
                }
            }
            else if (langKey == "hr"){
                var language = {
                    "sEmptyTable":      "Nema podataka u tablici",
                    "sInfo":            "Prikazano _START_ do _END_ od _TOTAL_ rezultata",
                    "sInfoEmpty":       "Prikazano 0 do 0 od 0 rezultata",
                    "sInfoFiltered":    "(filtrirano iz _MAX_ ukupnih rezultata)",
                    "sInfoPostFix":     "",
                    "sInfoThousands":   ",",
                    "sLengthMenu":      "Prikaži _MENU_ rezultata po stranici",
                    "sLoadingRecords":  "Dohvaćam...",
                    "sProcessing":      "Obrađujem...",
                    "sSearch":          "Pretraži:",
                    "sZeroRecords":     "Ništa nije pronađeno",
                    "oPaginate": {
                        "sFirst":       "Prva",
                        "sPrevious":    "Nazad",
                        "sNext":        "Naprijed",
                        "sLast":        "Zadnja"
                    },
                    "oAria": {
                        "sSortAscending":  ": aktiviraj za rastući poredak",
                        "sSortDescending": ": aktiviraj za padajući poredak"
                    }
                }
            }
        }
    }
    return language;
    };    
    

    在 DTOptions 中我调用函数

    vm.dtOptions = DTOptionsBuilder.newOptions().withLanguage(selectedLanguageLocalStorage(localStorage))
    

    这样,我需要将相同的数据放到我使用数据表的所有 ctrl 中。当更改语言时,我需要刷新以获取此翻译数据。如果有人对此有解决方案,请写信。谢谢

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2020-07-06
      • 2015-01-31
      • 2018-01-10
      • 1970-01-01
      相关资源
      最近更新 更多