把新行放在字符串中进行翻译

Lev*_*Lev 5 translation ngx-translate angular

我正在使用ngx-translate.

如何在字符串中放置换行符进行翻译?

在我的模板中,我有:

{{'STRING_TO_TRANSLATE' | translate}}
Run Code Online (Sandbox Code Playgroud)

在我的en.json中:

{
"STRING_TO_TRANSLATE": "text on first line. <br> or \n don't work. Text on second line"
}
Run Code Online (Sandbox Code Playgroud)

Tyi*_*yra 9

这种情况可以通过某种方式解决,但恕我直言,真正的解决方案,没有任何肮脏的技巧是:

.container {
    white-space: pre-line;
}
Run Code Online (Sandbox Code Playgroud)

预绕和预线之间存在显着差异。预换行将导致浏览器保留所有空格,因此您将获得第一行缩进。前一行会将我们的空白序列折叠成单个空白,并且不会发生缩进。

您可以在 MDN 文档中阅读更多相关内容,实际链接如下:

https://developer.mozilla.org/en-US/docs/Web/CSS/white-space


Pij*_*rek 7

有用!而不是

{{'STRING_TO_TRANSLATE' | translate}}
Run Code Online (Sandbox Code Playgroud)

你应该做

<div [innerHTML]="'STRING_TO_TRANSLATE' | translate"></div>
Run Code Online (Sandbox Code Playgroud)

<br/>s 应该工作得很好,但在其他情况下你可能需要一些额外的'安全html管',即:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)


jvo*_*igt 7

您可以使用\ n,但必须提供一些样式。

因此,在模板中使用以下代码:

<div class="my-translated-paragraph">
    {{'STRING_TO_TRANSLATE' | translate}}
</div>
Run Code Online (Sandbox Code Playgroud)

您的en.json:

{
"STRING_TO_TRANSLATE": "text on first line.\nText on second line"
}
Run Code Online (Sandbox Code Playgroud)

您的CSS文件:

.my-translated-paragraph{
    white-space: pre-wrap;
}
Run Code Online (Sandbox Code Playgroud)

更多信息空格背后的魔力:https//stackoverflow.com/a/42354356/3757110

另请参见有关此问题的github问题:https : //github.com/angular-translate/angular-translate/issues/595