2016-02-24 2 views
7

मैंने हाल ही में very interesting article को @yearofmoo द्वारा Angular2 रेंडरर के बारे में पढ़ा है। इसने मुझे एक विचार दिया कि Renderer के साथ i18n करना संभव हो सकता है। मूल रूप से इस समारोह का उपयोग करें:i18n करने के लिए रेंडरर का उपयोग करना?

createText(parentElement: any, value: string): any { 
    // this is called for every text node in the template 
    } 

और बस अलग भाषा के लिए यह मैप करके value परिणत:

let es = { "Hello": "Hola" } 

value = "Hello" 
value = es[value] 

मैं issues और design docs पर संक्षिप्त देखा, लेकिन इस खरगोश की मांद नीचे जाने से पहले मैं जाँच करने के लिए चाहता था अगर किसी के पास इसका कोई अनुभव है।

क्या कोई समस्या है जो इसे काम करने से रोक सकती है? जिस तरह से मुझे पता नहीं है उस पर कुछ तोड़ने वाले परिवर्तन? इस दृष्टिकोण के बारे में राय?

+0

ऐसे मुद्दों के बारे में कोई समस्या नहीं होनी चाहिए क्योंकि वेबवर्कर्स सुरक्षित होने के बाद से हमें प्रस्तुत करना चाहिए। परिवर्तन तोड़ना ... निश्चित रूप से नहीं कह सकता, मुझे नहीं लगता कि रेंडरर समय के साथ भारी रूप से बदल रहा है, अगर यह बिल्कुल करता है। i18n को व्यावहारिक रूप से समर्थित किया जाएगा, जो मेरे लिए "स्टॉपर" जैसा होगा, लेकिन यह मेरी राय है और कोणीय 2 के साथ खेलना गलत नहीं है। –

+0

गुंटर और थिएरी के साथ सहमत, सस्का साझा करने के लिए धन्यवाद! – Langley

+0

एनपी लोग (; @EricMartinez, आधिकारिक समर्थन के लिए अच्छा बिंदु, उम्मीद है कि वे इसे बहुत जटिल/मजबूत नहीं बनाते हैं। मैं अब के लिए लिप्यंतरण के लिए रेंडरर के साथ खेलने की कोशिश करूंगा ... – Sasxa

उत्तर

1

हम एक विक्रेता द्वारा प्रदान किए गए अनुवाद को सेट करने के लिए रेंडरर का उपयोग करते हैं।

import { Directive, ElementRef, Input, Renderer, OnInit} from '@angular/core'; 
import { TranslateService } from './translate.service'; 

@Directive({ selector: '[translate]' }) 
export class TranslateDirective implements OnInit{ 

    @Input() translate :string; 

    constructor(private el: ElementRef, private renderer: Renderer, private _translateService : TranslateService) {} 

    ngOnInit(): void { 
     this.renderer.setText(this.el.nativeElement,this._translateService.instant(this.translate)); 
    } 
} 

डेमो

के लिए plunker देखें उम्मीद है कि यह है कि क्या तुम कहाँ की तलाश में है।

संबंधित मुद्दे