2013-10-26 2 views
4

Как я могу перевести текст в директиве pagination Bootstrap UI?Перевести Angular-UI pagination

Я перекрытая константы, как это для французского перевода:

angular.module('myapp', ['ui.bootstrap']) 
    .constant('paginationConfig', { 
     itemsPerPage: 10, 
     boundaryLinks: false, 
     directionLinks: true, 
     firstText: 'Premier', 
     previousText: 'Précédent', 
     nextText: 'Suivant', 
     lastText: 'Dernier', 
     rotate: true 
    }) 

Но первостепенных констант, кажется, плохая идея ...

Что такое правильный способ (если таковые имеются), чтобы сделать это?

ответ

7

Вместо overiding весь постоянный объект, который вы можете изменить его свойства в run метода

var app=angular.module('myapp', ['ui.bootstrap']); 

app.run(function(paginationConfig){ 
    paginationConfig.firstText='MY FIRST'; 
    paginationConfig.previousText='YOUR TEXT'; 

}) 

DEMO

В новой версии ui.bootstrap вы должны использовать

uibPaginationConfig 

insted of

paginationConfig 
+1

Хорошо, спасибо. Я попробовал app.run, прежде чем задавать вопрос, но я забыл ввести paginationConfig как идиот. – Maxence

+0

не чувствую себя плохо ... Я чему-то научился, делая это ... много препятствий вдоль кривой углового обучения – charlietfl

+0

Привет, Чарлиетф, я столкнулся с той же проблемой. С вашим решением я могу перевести текст с разбивкой по страницам. Но что, если мой выбор языка динамичен, как я могу использовать директиву translate в таком сценарии? – dip

2

Я использую ui.bootstrap.pagination вместе с модулем углового перевода (спасибо @PascalPrecht за эту замечательную библиотеку). Однако одной из проблем, которая препятствует динамическому обновлению, является использование One-time binding expression в шаблоне по умолчанию «template/pagination/pagination.html». Поэтому я использовал атрибут «шаблон-url» для pagination directive, чтобы использовать модифицированный шаблон для разбивки на страницы без одноразовой привязки.

5

Настройки могут быть предоставлены в качестве атрибутов в <uib-pagination> или глобально настроены через uibPaginationConfig.

Например:

angular.module('app',['ui.bootstrap']).config(['uibPaginationConfig', 
              function(uibPaginationConfig){ 
uibPaginationConfig.previousText="‹"; 
uibPaginationConfig.nextText="›"; 
uibPaginationConfig.firstText="«"; 
uibPaginationConfig.lastText="»";}]); 
1

Просто используйте

$translateChangeSuccess event on $rootScope. 

var $translate = $filter('translate'); 

$rootScope.$on('$translateChangeSuccess' , function(){ 
    paginationConfig.firstText = $translate('First'); 
    paginationConfig.lastText = $translate('Last'); 
    paginationConfig.previousText = $translate('Previous'); 
    paginationConfig.nextText = $translate('Next'); 
}); 
0

если вы смотрите внутри директивы вы можете увидеть параметры директивы:

scope: { 
    totalItems: '=', 
    firstText: '@', 
    previousText: '@', 
    nextText: '@', 
    lastText: '@', 
    ngDisabled:'=' 
} 

Таким образом, вы можете пройти параметр директивы как ниже:

<pagination ng-if="logs" max-size="10" 
    force-ellipses="true" 
    boundary-links="true" 
    first-text="{{translated-word}}" 
    last-text="{{translated-word}}" 
    next-text="{{translated-word}}" 
    previous-text="{{translated-word}}" 
    class="pagination-sm"> 
</pagination> 
Смежные вопросы