มีวิธีรับภาษาที่ใช้ในปัจจุบันในคอนโทรลเลอร์ (ไม่มี$translateProvider
) หรือไม่?
ไม่พบสิ่งใดใน$translate
บริการ
มีวิธีรับภาษาที่ใช้ในปัจจุบันในคอนโทรลเลอร์ (ไม่มี$translateProvider
) หรือไม่?
ไม่พบสิ่งใดใน$translate
บริการ
คำตอบ:
$translate.use()
เป็นผู้ตั้งรับและตั้งรับ
ดูการสาธิตนี้ในลิงก์ของเอกสาร:
$translate.use()
คือหนทางที่จะไป นอกจากนี้เมื่อเรียกใช้ตัวโหลดแบบอะซิงโครนัสคุณอาจต้องการใช้$translate.proposedLanguage()
ซึ่งส่งคืนคีย์ภาษาของภาษาที่โหลดอยู่ แต่ยังโหลดไม่เสร็จ
$translate.use()
ไม่ได้ตั้งค่า $translate.proposedLanguage()
ให้ฉันใช้ภาษาที่ถูกต้อง
$translate.proposedLanguage()
ใน app.config? ฉันมีเพียง $ translateProvider และฉันต้องการค้นหาผลลัพธ์ของฟังก์ชันนี้ในการกำหนดค่าไม่ใช่ในคอนโทรลเลอร์ในภายหลัง คุณมีความคิด? ขอบคุณมาก
proposedLanguage()
เมื่อใช้ angular-translate-loader-static-files ฉันสังเกตเห็นว่า$translate.proposedLanguage()
ส่งคืนundefined
เมื่อใช้ภาษาเริ่มต้นในขณะที่$translate.use()
ส่งคืนภาษาที่เสนอเสมอ
ดังนั้นฉันจึงแก้ไขโดยใช้:
var currentLang = $translate.proposedLanguage() || $translate.use();
$translate.use()
ดูเหมือนจะไม่ทำงานกับการโหลดครั้งแรกของแอพเพื่อรับภาษาที่เลือกล่าสุดจากที่เก็บข้อมูล: $translate.storage().get( $translate.storageKey() )
หรือเพียงแค่
$translate.proposedLanguage();
$translate
บริการมีวิธีการที่เรียกว่าpreferredLanguage()
การกลับมาว่าสิ่งที่คุณต้องการ การกลับมาของฟังก์ชันนี้คือสตริงของภาษาเช่น 'en'
ฉันเขียนตัวอย่างให้คุณที่นี่:
angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){
$scope.changeLanguage = function (langKey) {
$translate.use(langKey);
};
$scope.getCurrentLanguage = function () {
$translate.preferredLanguage();
};
}])
translate.currentLang ใช้เพื่อตรวจสอบภาษาที่เลือกในปัจจุบันใน i18n
ฉันคิดว่านี่เป็นวิธีที่ดีกว่าในการกำหนดภาษา -
$window.navigator.language || $window.navigator.userLanguage
อาจจะไม่เกี่ยวข้องกัน แต่อาจมีประโยชน์ ใน angular2 + วิธีเข้าถึงภาษาปัจจุบันคือ
...
import { TranslateService } from '@ngx-translate/core';
export class MyComponent implements OnInit {
constructor(private translate: TranslateService) {}
ngOnInit() {
translate.use('it');
const currentLang = this.translate.currentLang;
}
}
{ "LANG_CODE": "en" }
และใช้translate
ตัวกรองใน ดูตามปกติเช่น:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>