当前位置: 首页 > 知识库问答 >
问题:

如何在Angular I18n中管理不同语言的文本

晏华奥
2023-03-14

基于此处的原始文档https://angular.io/guide/i18n.src/app/app。组成部分html将只包含英文文本。信息。fr.xlf是具有法语文本的文件,但它是自动生成的,不建议触摸它。

如果我想有一个应用程序。组成部分使用法语文本而不是英语呈现的html,我在哪里指定法语消息“你好”等?

共有1个答案

萧德庸
2023-03-14

您必须在i18n提供程序中设置默认语言。ts,这里是一个例子,如果您的默认语言是法语(fr),您可以给它一个默认的翻译文件消息。xlf和

 ./locale/messages.${locale}.xlf 

对于其他语言,请记住,如果使用aot构建,i18n将无法工作

  import { TRANSLATIONS, TRANSLATIONS_FORMAT, LOCALE_ID } from '@angular/core';

 export function getTranslationProviders(): Promise<Object[]> {
 let locale = 'fr'; //set it here
 if (localStorage.getItem('Language') !== undefined) {
     locale = localStorage.getItem('Language');
 }

 // return no providers if fail to get translation file for locale
 const noProviders: Object[] = [];

 // No locale or U.S. English: no translation providers
 if (!locale || locale === 'fr') {
     return Promise.resolve(noProviders);
 }

 let translationFile = `./locale/messages.${locale}.xlf`;

 if (locale === 'fr') {
    translationFile = './messages.xlf';
 }

 return loadTranslationFile(translationFile)
    .then( (translations: string ) => [
        { provide: TRANSLATIONS, useValue: translations },
        { provide: TRANSLATIONS_FORMAT, useValue: 'xlf' },
        { provide: LOCALE_ID, useValue: locale }
    ])
    .catch(() => noProviders); // ignore if file not found
 }

 function loadTranslationFile(file) {
  return new Promise(function (resolve, reject) {
    const   xhr: XMLHttpRequest = new XMLHttpRequest();
    xhr.open('GET', file, false);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 200 || xhr.status === 0) {
                resolve(xhr.responseText);
            } else {
                reject({
                    status: xhr.status,
                    statusText: xhr.statusText
                });
            }
        } else {
            reject({
                status: xhr.status,
                statusText: xhr.statusText
            });                }
    };
    xhr.onerror = function () {
        reject({
            status: xhr.status,
            statusText: xhr.statusText
        });
    };
    xhr.send(null);
 });
}
 类似资料:
  • 我正在从事两个不同的项目,都使用不同的maven文件 当我在项目之间切换时,它会重新下载存储库文件夹中的所有maven依赖项,删除以前项目的依赖项 是否有任何方法可以使用两个,并为两个项目维护不同的存储库。

  • 问题内容: 我正在使用jsp和java编写程序,如何使用属性文件支持多种语言?顺便说一句,总是有\ u4345之类的东西,这是什么?他们怎么来的? 问题答案: 对于多种语言,请签出ResourceBundle类。 关于,这是Java黑暗而令人讨厌的遗留角落之一。属性文件必须使用ASCII,因此所有非ASCII字符都需要编码为(其Unicode值)。您可以使用native2ascii命令行工具将文件

  • 例如:在下面的代码中,如何以及在何处存储用于比较的数字“10”? 请原谅我没有提供足够的细节。如果我们扫描并从用户那里获取x,我们就知道如何为x分配内存,而不是直接用5初始化x。但是,如何为没有存储在任何变量中的字面数“10”分配内存呢?

  • 以下节目旨在复制一个基本的酒店客房预订方案。创建hotel number的实例后,通过调用checkIn()方法,程序检查是否有可用的房间,如果有,则保留房间。 但是,如果在分配完所有房间后,有人从一个房间(通过方法)退房,例如1号房间,然后试图入住该房间,则该方法无效。当调用hasRoomsAvailable()方法时会出现此问题,在这种情况下,由于currentRoomNumber是5,该方法

  • 1)手工测试人员并不是在一个故事中写出所有的测试用例,他们通常会为同一个特征创建不同的故事,那么在自动化过程中,我们的特征文件应该是怎样的呢?。 2)目前我可以说我们只是单元测试方法,但我们将如何处理系统测试的高端场景。如何处理一个完整的过程,例如“当我添加一个产品到购物车”,这实际上意味着客户已经在产品描述页面,并且在选择一个数量后将一个产品添加到购物车。我们目前已经构建了场景,如“我在产品页面

  • 问题内容: 我想在Django项目中有2个单独的管理站点。 我的意思是单独的-他们应该具有单独的用户身份验证,他们应该管理不同的模型,并且具有不同的外观和URL。 我想要这样做的原因是客户希望使用单独的部分来管理页面的CMS部分,并希望将其单独用作“后台”解决方案。 我考虑过只在项目树中创建一个od django.contrib.auth应用程序副本,以不同的方式命名它,并对两者使用单独的调用。这