如何在代码中使用Angular 2 Translate服务管道?

时间:2018-08-07 18:26:26

标签: angular typescript pipe translate angular-translate

这是东西...我在我的应用中使用的是angular 4模板,它具有良好的翻译服务。 问题是我不知道如何在代码中使用该管道。

在HTML中,只需放入{ "keys": ["shift+ctrl+c"], "command": "copy_with_spaces", } ,然后, 该服务转到一些JSON文件以查找文本并进行翻译。

这是我组件中的代码。

class AmazonController extends Controller
{
 public function handleBounceOrComplaint(Request $request)
 {
   Log::info($request->json()->all());
   $data = $request->json()->all();
   if($request->json('Type') == 'SubscriptionConfirmation')
   Log::info("SubscriptionConfirmation came at: ".$data['Timestamp']);
   if($request->json('Type') == 'Notification'){
   $message = $request->json('Message');
   switch($message['notificationType']){
    case 'Bounce':
      $bounce = $message['bounce'];
      foreach ($bounce['bouncedRecipients'] as $bouncedRecipient){
        $emailAddress = $bouncedRecipient['emailAddress'];
        $emailRecord = WrongEmail::firstOrCreate(['email' => $emailAddress, 'problem_type' => 'Bounce']);
        if($emailRecord){
          $emailRecord->increment('repeated_attempts',1);
        }
      }
      break;
      case 'Complaint':
      $complaint = $message['complaint'];
      foreach($complaint['complainedRecipients'] as $complainedRecipient){
        $emailAddress = $complainedRecipient['emailAddress'];
        $emailRecord = WrongEmail::firstOrCreate(['email' => $emailAddress, 'problem_type' => 'Complaint']);
        if($emailRecord){
          $emailRecord->increment('repeated_attempts',1);
        }
      }
      break;
      default:
      // Do Nothing
      break;
    }
  }
  return Response::json(['status' => 200, "message" => 'success']);
 }
}

是的,我把所有需要的东西都放进了模块中,因为它可以在HTML中工作...但是我不知道如何在代码中调用它。

我正在寻找如何解决问题的方法,结果发现:

<span>{{ this.variable | traslate }}</span>

有人知道怎么称呼吗?

1 个答案:

答案 0 :(得分:1)

您基本上有 3 choices

如果您完全确定您的翻译文件已经加载,并且您不想在使用语言更改时自动更新翻译,请使用

  

translate.instant('ID')

如果您不确定加载状态,但不需要更新语言,请使用translate.get('ID')。它为您提供了一个可观察的对象,可在翻译加载后返回翻译并终止该可观察对象。

如果您想不断更新(例如,当一种语言更改时),请使用translate.stream('ID')-它返回一个可观察的内容,并发出翻译更新。如果不需要它,请确保将其丢弃。

这假定您已经在组件中注入了TranslationService作为翻译。

例如

export class AppComponent {
    constructor(translate: TranslateService) {
        translate.get('hello.world').subscribe((text:string) => {console.log(text});
    }
}

您必须在订阅中将转换分配给数据数组