2016-02-24 6 views
7

Angular2 Rendererについては、@yearofmooさんが最近読んだvery interesting articleです。 Rendererでi18nを実行できる可能性があるという考えがありました。私はissuesdesign docsで簡単に見えたが、このウサギの穴を下に行く前に私がチェックしたいレンダラを使用してi18nを実行しますか?

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

value = "Hello" 
value = es[value] 

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

と単に別の言語にマッピングすることによってvalueを変換:基本的にこの機能を使用します誰かがこれについて何か経験があるならば。

これが動作しないようにする問題がありますか?私が気づいていない方法でいくつかの急激な変化?このアプローチに関する意見はありますか?

+0

レンダラーはウェブワーカーにとって安全であるため、使用する必要があるものは問題ではありません。変化を壊す...確かに言うことはできませんが、レンダラーはまったく時間がたつと大きく変化するとは思わない。 i18nは私には「ストッパ」のようになりますが、それは私の意見であり、angular2で遊ぶことはまったく間違いではありません。 –

+0

GünterとThierryと合意して、Sasxaを共有してくれてありがとう! – Langley

+0

NPの男(;。@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を参照してください。

関連する問題