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)
这种情况可以通过某种方式解决,但恕我直言,真正的解决方案,没有任何肮脏的技巧是:
.container {
white-space: pre-line;
}
Run Code Online (Sandbox Code Playgroud)
预绕和预线之间存在显着差异。预换行将导致浏览器保留所有空格,因此您将获得第一行缩进。前一行会将我们的空白序列折叠成单个空白,并且不会发生缩进。
您可以在 MDN 文档中阅读更多相关内容,实际链接如下:
https://developer.mozilla.org/en-US/docs/Web/CSS/white-space
有用!而不是
{{'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)
您可以使用\ 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