Angular i18n 및 Angular Universal을 사용하는 서버측 렌더링: 섹션 1
Angular는 동일한 기능을 제공하는 모듈을 제공합니다.그러나 이 목적에 사용할 수 있는 다른 라이브러리에 비해 복잡합니다. 응용 프로그램과 통합할 수 있습니다.
여기서 Angular i18n을 사용하는 방법을 학습한 다음 다른 전략보다 우수한 이유를 설명하겠습니다.
Angular CLI 를 사용하여 다음 명령 실행
ng add @angular/localize
이렇게 하면 프로젝트에서 Angular의 현지화를 사용할 수 있습니다.다음은 번역을 위해 템플릿 파일에 정적 텍스트를 표시합니다.
<p i18n >Welcome to Angular Internationalization!</p>
i18n 속성을 임의의 요소의 임의의 속성과 함께 사용함으로써 번역에 원소 속성을 표시합니다.i18n attribute = "means | description@"구문을 사용하여 의미, 설명 및 사용자 정의 ID를 지정할 수도 있습니다.다음은 같은 예다.
<input type="password" i18n-placeholder ="passwordPlaceholder|Placeholder for Password@@001" placeholder="password" name="password" />
의미, 설명 및 Id는 선택 사항이며, 언급하지 않으면 Angular에서 자동으로 Id를 생성합니다.Angular는 로케일에 따라 데이터를 포맷하는 LOCALE ID 태그를 사용하는 데이터 변환 파이핑을 제공합니다.
{{amount | currency : 'en-US'}}
과 같은 LOCALE 매개변수를 추가합니다.사용 가능한 지역 목록은 this. 참조
현재, 우리는 이미 번역 템플릿을 준비했으니, 우리는 그것을 계속 처리할 수 있다.
소스 언어 파일 추출
Angular CLI 에서 다음 명령을 실행합니다.
ng xi18n
이것은 메시지라는 원본 언어 파일을 만들 것입니다.xlf는 프로젝트의 루트 디렉터리에 있습니다.xi18n 명령은 세 가지 번역 형식의 파일을 읽고 쓸 수 있습니다.
--format
명령 옵션을 사용하여 번역 형식을 명시적으로 지정할 수 있습니다.이 정보들.xlf는 다음과 같다.번역 단원이 있고 Id가 생성되어 있음을 주의하십시오.파일 위치와 줄 번호 같은 다른 메타데이터도 포착한다.
<trans-unit id="7d1069de6c435fab320e5305cbaf139af1b0189f" datatype="html">
<source>Welcome!</source>
<context-group purpose="location">
<context context-type="sourcefile">app/login/login.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
메시지를 복사합니다.xlf 파일을 만들고 이름을 바꿉니다.예를 들어 메시지 이름을 바꿀 수 있습니다.pa.xlf는 방차포어를 나타낸다.다음 코드 세션에 원본 언어의 텍스트를 번역하는 데 사용할 추가 목표 표시가 있음을 주의하십시오.
<trans-unit id="7d1069de6c435fab320e5305cbaf139af1b0189f" datatype="html">
<source>Welcome!</source>
<target> ਜੀ ਆਇਆਂ ਨੂੰ !</target>
<context-group purpose="location">
<context context-type="sourcefile">app/login/login.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
마찬가지로 모든 메시지의 모든 번역 단원에 목표 표시를 추가합니다.lang.xlf 파일, 응용 프로그램이 지원할 수 있는 언어 수입니다.구성에서 로케일 정의
각도에서.json,build 설정에서 모든 언어 환경에 대한 설정을 정의합니다.
en-US
은 영어의 Locale ID이며, 기타 언어는 here을 참조하십시오."en-US": {
"outputPath": "dist/browser/en",
"baseHref": "/en/",
"i18nLocale": "en-US",
"i18nFormat": "xlf",
"i18nFile": "src/messages.xlf",
"i18nMissingTranslation": "error",
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
}
}
},
outputPath
은 프로젝트 루트 디렉토리의 경로를 나타냅니다.실행되면 이 구축은 어디에서 생성됩니까?Angular i18n은 기본적으로
aot
을 지원합니다.baseHref
은 로케일을 탑재한 사이트의ref를 나타낸다.마찬가지로 각도 아래.json의 서비스 설정은 모든 언어 환경에 대한 서비스 설정을 정의합니다.이
production
은 기본값을, en-US
은 영어로 제공되는 애플리케이션을 나타냅니다.응용 프로그램이 지원하는 모든 지역을 포함해야 합니다.demoproject
은 이곳의 프로젝트 명칭이다."production": {
"browserTarget": "demoproject:build:production"
},
"en-US": {
"browserTarget": "demoproject:build:en-US"
},
Please note, that build and serve configurations are defined in angular.json for each locale, which indicates that, a separate build and deployment will be created and run for each locale.
이제 CLI의 다음 명령을 사용하여 원하는 로켈에서 애플리케이션을 구축하고 실행할 수 있습니다.다음은 방차포어의 한 예다.
ng build --configuration=pa-Guru && ng serve --configuration=pa-Guru
여러 언어 환경이 병행적으로 실행되기를 원한다면, 서버 명령을 사용하여 --port
스위치를 추가하여 서로 다른 언어 환경의 서로 다른 포트에서 응용 프로그램에 서비스를 제공하십시오.Angular i18n은 각 로켈마다 별도의 구축 및 배포를 통해 구현됩니다.하지만 Url 자체에서 로케일을 전환하는 것이 목표입니다.그 밖에 다른 더 간단한 사용 가능한 라이브러리보다 angular i18n 메커니즘을 선택하는 동기를 이해하는 것도 중요하다.
이것은 또 다른 박문에서 소개될 것이다.이것이 바로 서버 측의 렌더링이 작용하는 곳이다.
이 박문의 두 번째 부분.
Reference
이 문제에 관하여(Angular i18n 및 Angular Universal을 사용하는 서버측 렌더링: 섹션 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prabhjeet6/angular-i18n-and-server-side-rendering-40bo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)