es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se pudo analizar la expresión de ICU. i18n utilizando Angular.

Tengo una matriz de elementos de menú de la barra lateral que quiero convertir a otro idioma.

A continuación se encuentra mi código:

left-menu.component.html

<ng-container *ngfor="let m of menuItems; let last = last">
    <a mat-list-item="" *ngfor="let page of m.pages" [routerlink]="page?.link" routerlinkactive="router-link-active">
        <mat-icon fontset="material-icons-outlined" style="padding-right: 10px;" [matbadge]="page?.alerts" matbadgeposition="after" matbadgecolor="warn" [matbadgehidden]="this.linkText && showMenuBadge(page)">
            {{page?.icon}}
        </mat-icon>
        <span [@animatetext]="linkText ? 'show' : 'hide'" [matbadge]="page?.alerts" matbadgeposition="after" matbadgecolor="warn" matbadgeoverlap="false" [matbadgehidden]="false" [matbadgehidden]="!this.linkText && showMenuBadge(page)" style="padding-left: 10px;" i18n="@@leftmenu">
            {page?.name, select, name {name}}
        </span>
    </a>
    <mat-divider *ngif="!last"></mat-divider>
</ng-container>

messages.hi-IN.xlf

<trans-unit id="leftmenu" datatype="html">
    <source>{VAR_SELECT, select, name {name}}
    <target state="final">{VAR_SELECT, select, Talent {कार्रवाई} Dashboard {डैशबोर्ड} Address {Adresse} City {Ville} State {Etat} Occupation {Occupation}}</target>
</trans-unit>

Estoy obteniendo el siguiente error aquí:

No se puede analizar la expresión ICU en el mensaje “{VAR_SELECT, select, Talent {कार्रवाई} Dashboard {डैशबोर्ड} Address {Adresse} City {Ville} State {Etat} Occupation {Occupation}}”

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que hay un problema con la expresión ICU en la cadena de mensaje. La expresión ICU se utiliza para el formato de mensajes y la pluralización en ngx-translate.

    En este caso, parece que se está utilizando la palabra clave select en la expresión ICU pero no se está interpretando correctamente. Para resolver este problema, puede intentar los siguientes pasos:

    1. Asegúrese de haber instalado las dependencias necesarias para ngx-translate e i18next.
    2. Revise su archivo app.module.ts para asegurarse de haber importado TranslocoModule y HttpClientModule.
    3. Revise su archivo messages.hi-IN.xlf para asegurarse de que el contenido traducido sea correcto y de que la expresión ICU esté formateada correctamente.
    4. En el archivo left-menu.component.html, asegúrese de utilizar la sintaxis correcta para hacer referencia al mensaje traducido. Debería verse así:
    <span [@animatetext]="linkText ? 'show' : 'hide'" [matbadge]="page?.alerts" matbadgeposition="after" matbadgecolor="warn" matbadgeoverlap="false" [matbadgehidden]="false" [matbadgehidden]="!this.linkText && showMenuBadge(page)" style="padding-left: 10px;" i18n="@@leftmenu">
       {{'leftmenu' | transloco:{VAR_SELECT: page?.name} }}
    </span>
    

    Tenga en cuenta que se utiliza el tubería transloco para hacer referencia al mensaje traducido, y se pasa el parámetro VAR_SELECT como argumento. Esto debería resolver el error y traducir correctamente los elementos del menú izquierdo al idioma seleccionado.

Comments are closed.