i18n 多方向 RTL angular
i18n multi-direction RTL angular
我正在使用 angular 4,我正在尝试将 i18n 技术应用到我的应用程序中,
问题是:我不知道应该在翻译文件 messages.ar.xlf 的什么地方写方向 LTR/RTL ,
即使我在原始 html 文件的每个标签中使用 i18n-dir dir="ltr" 提到它,我也没有得到文件中的方向 messages.xlf 由 cmd ng xi18n 提取,所以我无法更改页面的方向:/
新-post.component.html
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<h2 i18n="@@newPost" i18n-dir dir="ltr">New Post</h2>
<form [formGroup]="postForm" (ngSubmit)="onSavePost()">
<div class="form-group">
<label for="title" i18n="title" i18n-dir dir="ltr">Title</label>
<input type="text" id="title"
class="form-control" formControlName="title">
</div>
<div class="form-group">
<label for="content" i18n="content" i18n-dir dir="ltr">Content</label>
<textarea id="content"
class="form-control" formControlName="content">
</textarea>
</div>
<button class="btn btn-primary" [disabled]="postForm.invalid "
type="submit" i18n="save" dir="ltr">Save</button>
</form>
</div>
</div>
messages.xlf
<trans-unit id="newPost" datatype="html">
<source>New Post</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
<trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">6</context>
</context-group>
<note priority="1" from="description">title</note>
</trans-unit>
<trans-unit id="4ab4cb601522b9194922554d934c4c30bd93567d" datatype="html">
<source>Content</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">content</note>
</trans-unit>
<trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">
<source>Save</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">17</context>
</context-group>
<note priority="1" from="description">save</note>
</trans-unit>
糟糕:
我终于找到了答案,这很容易;)
app.component.html dir
中有一个 html 属性,可以取值 "rtl" 或 "ltr" 并相应地对齐其内容。
app.component.html
<app-header></app-header>
<div class="container" dir="{{textDir}}">
<router-outlet></router-outlet>
</div>
并且通过在 app.component.ts 和内部监听来自 TranslateService 的 onLangChange 事件,我们检查默认语言是否为阿拉伯语,然后将属性设置为 "rtl":
app.component.ts
import { Component } from '@angular/core';
import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
textDir: string = 'ltr';
constructor(private translate: TranslateService) {
//this is to determine the text direction depending on the selected language
this.translate.onLangChange.subscribe((event: LangChangeEvent) =>
{
if(event.lang == 'ar')
{
this.textDir = 'rtl';
}
else
{
this.textDir = 'ltr';
}
});
}
}
这对我来说很管用;
我通过 Dayana Jabif on this issue
找到了答案
我正在使用 angular 4,我正在尝试将 i18n 技术应用到我的应用程序中, 问题是:我不知道应该在翻译文件 messages.ar.xlf 的什么地方写方向 LTR/RTL , 即使我在原始 html 文件的每个标签中使用 i18n-dir dir="ltr" 提到它,我也没有得到文件中的方向 messages.xlf 由 cmd ng xi18n 提取,所以我无法更改页面的方向:/
新-post.component.html
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<h2 i18n="@@newPost" i18n-dir dir="ltr">New Post</h2>
<form [formGroup]="postForm" (ngSubmit)="onSavePost()">
<div class="form-group">
<label for="title" i18n="title" i18n-dir dir="ltr">Title</label>
<input type="text" id="title"
class="form-control" formControlName="title">
</div>
<div class="form-group">
<label for="content" i18n="content" i18n-dir dir="ltr">Content</label>
<textarea id="content"
class="form-control" formControlName="content">
</textarea>
</div>
<button class="btn btn-primary" [disabled]="postForm.invalid "
type="submit" i18n="save" dir="ltr">Save</button>
</form>
</div>
</div>
messages.xlf
<trans-unit id="newPost" datatype="html">
<source>New Post</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">3</context>
</context-group>
</trans-unit>
<trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">6</context>
</context-group>
<note priority="1" from="description">title</note>
</trans-unit>
<trans-unit id="4ab4cb601522b9194922554d934c4c30bd93567d" datatype="html">
<source>Content</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">11</context>
</context-group>
<note priority="1" from="description">content</note>
</trans-unit>
<trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">
<source>Save</source>
<context-group purpose="location">
<context context-type="sourcefile">app\posts\new-post\new-post.component.ts</context>
<context context-type="linenumber">17</context>
</context-group>
<note priority="1" from="description">save</note>
</trans-unit>
糟糕:
我终于找到了答案,这很容易;)
app.component.html dir
中有一个 html 属性,可以取值 "rtl" 或 "ltr" 并相应地对齐其内容。
app.component.html
<app-header></app-header>
<div class="container" dir="{{textDir}}">
<router-outlet></router-outlet>
</div>
并且通过在 app.component.ts 和内部监听来自 TranslateService 的 onLangChange 事件,我们检查默认语言是否为阿拉伯语,然后将属性设置为 "rtl":
app.component.ts
import { Component } from '@angular/core';
import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
textDir: string = 'ltr';
constructor(private translate: TranslateService) {
//this is to determine the text direction depending on the selected language
this.translate.onLangChange.subscribe((event: LangChangeEvent) =>
{
if(event.lang == 'ar')
{
this.textDir = 'rtl';
}
else
{
this.textDir = 'ltr';
}
});
}
}
这对我来说很管用;
我通过 Dayana Jabif on this issue
找到了答案