2016-10-11 20 views
6

Uygulamaya i18n sağlamak için açısal çevirme kullanıyorum, etiketleri, düğme metinlerini vb. Düzgün şekilde çevirebiliyorum. Karşılaştığım sorun, seçili dil yerel ayarına göre tarihi değiştirmeye çalıştığım zamandı. Tarih, bir tarih seçiciden seçilir.Giriş metni (datepicker) değerini dinamik olarak açısal çeviriyi kullanarak nasıl tercüme edebilirim?

<input type="text" class="form-control" required="" ng-model="date" placeholder="{{ 'DATE_PLACEHOLDER' | translate }}" translate="{{ 'select_date'|translate:{date:date} }}"/> 

tutucu çeviri mükemmel çalışıyor, ama dilini değiştirmek yokken değişiklik tarihi biçimine olur:

tarih bir giriş elemanı içine seçilir. Geçerli senaryoyu açıklayan bir plunkr oluşturdum.

Plunker Link

Ben formlarına eklenen değerleri veya metinleri çevirebilir hangi bir yol önerin. Ayrıca, sayfanın yüklenmesinden hemen önce kilit değerlerin titremesinin nasıl üstesinden geleceğini bilmek istiyorum.

+0

gördün mü [bu] (http://stackoverflow.com/questions/29742365/how-to-) tercüme-a-tarih-nesne-kullanma-açısal-translate? – Corporalis

+0

evet Bunu gördüm, ama bu anı js kullanır ve kullanıyorum tarihleri ​​için sadece tüm yerelleri yüklemek zorunda olacak, hangi ben – Rishabh

+0

kullanarak lehine değilim Burada bir direktifte benzer bir uygulama http: // jsfiddle.net/7y3y9nq7/ Açısal çeviride bazı olaylar var; Bunu kullanmak için, https://angular-translate.github.io/docs/#/guide/18_events –

cevap

2
  1. İtalyan yerel ekle, ben http://forum.html.it/forum/showthread/t-2912577.html onu kopyalayarak:

    $.fn.datepicker.dates['it'] = { 
        days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"], 
        daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"], 
        daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"], 
        months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], 
        monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"], 
        today: "Oggi", 
        clear: "Cancella", 
        weekStart: 1, 
        format: "dd/mm/yyyy" 
    }; 
    
  2. en için en_EN biçiminden dil kodları için dönüştürme harita ekleyin:

    // language codes convertor map 
    var convertorMap = { 
        'en_US': 'en', 
        'it_IT': 'it' 
    }; 
    
  3. Dil değiştiricide işlevi, mevcut tarihçiyi kaldır ve yeni bir dil ile yeni bir tane başlat, veriyi güncellediğinden emin ol hem yeni biçimde e:

    <body ng-controller="Ctrl" class="ng-hide" ng-show="showView"> 
        ..... 
    </body> 
    

    ve denetleyici içinde:

    $scope.switchLanguage = function (key) { 
        var dp = $('#datePicker'); 
        // get current date 
        var currentDate = dp.datepicker('getDate'); 
    
        // update datepicker with new locale 
        dp.datepicker('remove'); 
        dp.datepicker({ 
        autoclose: true, 
        language: convertorMap[key] 
        }); 
        // restore current date according to the new locale 
        dp.datepicker('update', currentDate); 
    
        $translate.use(key); 
    }; 
    
  4. çeviri hazır olduğu zaman görünüm göstermek için, sarıcı eleman değiştirmek (I <body> kullanılan) gibi görünmek

    jQuery datepicker üzerinde
    // will be fired when the service is "ready" to translate (i.e. loading 1st language) 
    $translate.onReady(function() { 
        $scope.showView = true; 
    }); 
    
  5. ng model yönergesi hiçbir şey yapmaz, bu yüzden kaldırıldı ve Adde

    $('#datePicker').datepicker({ 
        autoclose: true 
    }) 
    // update ng model 
    .on('changeDate', function(e) { 
        $timeout(function() { 
        $scope.date = $('#datePicker').datepicker('getUTCDate'); 
        }); 
    }); 
    

sizin gibi konsol mesajında ​​görürseniz:.

pascalprecht.translate $ translateSanitization: Hayır sanitization stratejisi olmuştur d ng model güncelleme kodu datepicker işlevi başlangıç yapılandırdı. Bunun ciddi güvenlik sonuçları olabilir.

sonraki sürümlerde düzeltilebilir söylenir

: https://github.com/taigaio/taiga-front/issues/778

plunker: http://plnkr.co/edit/EGtHPG?p=preview

+0

kullanıyorum Güzel ve ayrıntılı bir çözüm için teşekkürler TranslatePartialLoader kullanan herkes için http://stackoverflow.com adresine bakın/questions/32123924/tercüme edilmemiş metnin titreme ile ilgili sorunları gidermek için açısal-çevir-fouc-sorunlar – Rishabh

+0

Ayrıca bkz. http://stackoverflow.com/questions/37247083/how-to-load-angular-translate-before- FOUC sorununun çözümü için herhangi bir ui-ile-ui-yönlendirici-çözüm görüntülenir. – Rishabh

İlgili konular