put new line in string to translate

前端 未结 3 1746
小蘑菇
小蘑菇 2021-02-19 05:24

I\'m using ngx-translate.

How can I put a line break in a string to translate ?

In my template I have :

{{\'STRING_TO_TRANSLATE\' | translate}}
         


        
相关标签:
3条回答
  • 2021-02-19 06:05

    If you want <p></p> for \n\n and <br /> for \n, here's my solution:

    Step 1: Do as I say in this comment

    Step 2: Chain your pipes likes this:

    <div [innerHTML]="'YOUR_TRANSLATE_WITH_\n_OR_\n\n_GOES_HERE' | translate | nl2pbr"></div>
    

    More information about chaining pipes here: https://angular.io/guide/pipes#chaining-pipes

    0 讨论(0)
  • 2021-02-19 06:06

    You can use \n but you will have to provide some styling.

    So in your template use this:

    <div class="my-translated-paragraph">
        {{'STRING_TO_TRANSLATE' | translate}}
    </div>
    

    Your en.json:

    {
    "STRING_TO_TRANSLATE": "text on first line.\nText on second line"
    }
    

    Your (s)CSS file:

    .my-translated-paragraph{
        white-space: pre-wrap;
    }
    

    More info an the magic behind white-space: https://stackoverflow.com/a/42354356/3757110

    See also a github Issue about this: https://github.com/angular-translate/angular-translate/issues/595

    0 讨论(0)
  • 2021-02-19 06:10

    It works! But instead of

    {{'STRING_TO_TRANSLATE' | translate}}
    

    You should do

    <div [innerHTML]="'STRING_TO_TRANSLATE' | translate"></div>
    

    <br/>s should work just fine, but in other cases you may need some additional 'safe html pipe', i.e:

    import { Pipe, PipeTransform } from '@angular/core';
    import { DomSanitizer } from '@angular/platform-browser';
    
    @Pipe({name: 'mySafeHtmlPipe'})
    export class SafeHtmlPipe implements PipeTransform {
      constructor(private sanitizer: DomSanitizer) {
      }
    
      public transform(htmlContent) {
        return this.sanitizer.bypassSecurityTrustHtml(htmlContent);
      }
    }
    
    0 讨论(0)
提交回复
热议问题