The ejschedule control uses internationalized languages and there is an error loading the schedule?
你好
我使用 ejschedule 控件,启用了国际化语言。标题语言已经转换成中文,但是日历里的年份和月份无法应用。这是为什么?我参考了您发来的国际化语言标准,全部复制进去,还是出现了如图所示的问题?该如何解决?
注意:我也看了你的参考链接,发现这些语言没有被引用或实例化
https://ej2.syncfusion.com/angular/documentation/schedule/localization
import frNumberData from '@syncfusion/ej2-cldr-data/main/fr-CH/numbers.json';
import frtimeZoneData from '@syncfusion/ej2-cldr-data/main/fr-CH/timeZoneNames.json';
import frGregorian from '@syncfusion/ej2-cldr-data/main/fr-CH/ca-gregorian.json';
import frNumberingSystem from '@syncfusion/ej2-cldr-data/supplemental/numberingSystems.json';
Hi aquan,
The trim issue occurred due to missing culture files during localization.
Kindly refer to the documentation below to resolve the issue:
Documentation Link:
Frequently asked questions in Angular Schedule
component | Syncfusion
You can update the higher node version like (18.X.X) or (20.X.X). Also, you can globalize the Schedule with the other culture by following the steps.
UG: Localization in Angular Schedule component | Syncfusion
We require the below files to localize the Schedule.
- ca-gregorian.json
- numbers.json
- timeZoneNames.json
- numberingSystems.json
1. You can get the above files by Installing the CLDR-Data package by using the below command.
>> npm install cldr-data –save
Once the installation is completed you can find the files required to localize the Schedule for each culture from the directory as shown below.
You can get ca-gregorian.json, numbers.json, and timeZoneNames.json files from the directory as shown below.
You can get the numberingSystems.json file from the directory as shown below. This file is common for all cultures.
2. Now use the loadCultureFiles method to load the culture-specific CLDR JSON data using Ajax as shown in the below code snippet.
[app.component.ts]
|
import { extend, loadCldr, L10n, setCulture } from '@syncfusion/ej2-base'; import * as numberingSystems from './culture-files/numberingSystems.json'; import * as gregorian from './culture-files/ca-gregorian.json'; import * as numbers from './culture-files/numbers.json'; import * as timeZoneNames from './culture-files/timeZoneNames.json'; |
3. Load the locale words as shown below using the load method of L10n. You can find the localized word for the different cultures from the below repository.
ej2-local: https://github.com/syncfusion/ej2-locale
[app.component.ts]
|
loadCldr(numberingSystems, gregorian, numbers, timeZoneNames); L10n.load({
fr: { schedule: { day: "journée", week: "La semaine", workWeek: "Semaine de travail", month: "Mois", agenda: "Ordre du jour", weekAgenda: "Agenda de la semaine", workWeekAgenda: "Agenda de la semaine de travail", monthAgenda: "Agenda du mois", today: "Aujourd'hui", noEvents: "Pas d'événements", emptyContainer: "Aucun événement n'est prévu ce jour-là.", allDay: "Toute la journée", start: "Début", end: "Fin", more: "plus", close: "Fermer", cancel: "Annuler", noTitle: "(Pas de titre)", delete: "Supprimer", deleteEvent: "Cet evènement", deleteMultipleEvent: "Supprimer plusieurs événements", selectedItems: "Articles sélectionnés", deleteSeries: "Série entière", edit: "Éditer", editSeries: "Série entière", editEvent: "Cet evènement", createEvent: "Créer", subject: "Matière", addTitle: "Ajouter un titre", moreDetails: "Plus de détails", save: "sauvegarder", editContent: "Comment aimeriez-vous changer le rendez-vous de la série?", deleteContent: "Voulez-vous vraiment supprimer cet événement?", deleteMultipleContent: "Voulez-vous vraiment supprimer les événements sélectionnés?", newEvent: "Nouvel évènement", title: "Titre", location: "Emplacement", description: "La description", timezone: "Fuseau horaire", startTimezone: "Démarrer le fuseau horaire", endTimezone: "Fin du fuseau horaire", repeat: "Répéter", saveButton: "sauvegarder", cancelButton: "Annuler", deleteButton: "Supprimer", recurrence: "Récurrence", wrongPattern: "Le modèle de récurrence n'est pas valide.", seriesChangeAlert: "Voulez-vous annuler les modifications apportées à des instances spécifiques de cette série et les associer à nouveau à l'ensemble de la série?", createError: "La durée de l'événement doit être plus courte que sa fréquence. Raccourcissez la durée ou modifiez le modèle de récurrence dans l'éditeur d'événements de récurrence.", sameDayAlert: "Deux occurrences du même événement ne peuvent pas se produire le même jour.", editRecurrence: "Modifier la récurrence", repeats: "Répète", alert: "Alerte", startEndError: "La date de fin sélectionnée se produit avant la date de début.", invalidDateError: "La valeur de date entrée n'est pas valide.", blockAlert: "Les événements ne peuvent pas être planifiés dans l'intervalle de temps bloqué.", ok: "D'accord", yes: "Oui", no: "Non", occurrence: "Occurrence", series: "Séries", previous: "précédent", next: "Prochain", timelineDay: "Jour de la chronologie", timelineWeek: "Semaine chronologique", timelineWorkWeek: "Semaine de travail", timelineMonth: "Mois de la chronologie", timelineYear: "Année de la chronologie", editFollowingEvent: "Événements suivants", deleteTitle: "Supprimer l'événement", editTitle: "Modifier l'événement", beginFrom: "Commencer à partir de", endAt: "Fin à" }, recurrenceeditor: { none: "Aucun", daily: "du quotidien", weekly: "Hebdomadaire", monthly: "Mensuel", month: "Mois", yearly: "Annuel", never: "Jamais", until: "Jusqu'à", count: "Compter", first: "Premier", second: "Seconde", third: "Troisième", fourth: "Quatrième", last: "Dernier", repeat: "Répéter", repeatEvery: "Répétez tous les", on: "Répéter sur", end: "Fin", onDay: "journée", days: "Journées)", weeks: "Semaines)", months: "Mois)", years: "Ans)", every: "chaque", summaryTimes: "fois)", summaryOn: "sur", summaryUntil: "jusqu'à", summaryRepeat: "Répète", summaryDay: "journées)", summaryWeek: "semaines)", summaryMonth: "mois)", summaryYear: "ans)", monthWeek: "Mois Semaine", monthPosition: "Position du mois", monthExpander: "Expander mois", yearExpander: "Expander année", repeatInterval: "Intervalle de répétition" }, calendar: { today: "Aujourd'hui" } }
}); |
4. Set the locale property to the Schedule.
[app.component.html]
|
<ejs-schedule #scheduleObj height='650px' [(selectedDate)]="selectedDate" [eventSettings]="eventSettings" locale="fr"> |
Sample link: https://stackblitz.com/edit/angular-schedule-fr-locale-sample-ngagzyxz-b4jvwpsk?file=app.component.ts
Don't hesitate to get in touch if you require further help or more information.
Regards
Saritha S.
Regards,
Saritha S.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Regards,
Sivakumar S
From: Saritha Sankar <[email protected]>
Sent: Wednesday, June 18, 2025 11:42 AM
To: Sivakumar ShunmugaSundaram <[email protected]>
Cc: Vijay Ravi <[email protected]>
Subject: Response for F197000
Hi @Sivakumar ShunmugaSundaram
Review the below response.
Status: WFC
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Hi aquan,
The trim issue occurred due to missing culture files during localization.
Kindly refer to the documentation below to resolve the issue:
Documention Link: Frequently
asked questions in Angular Schedule component | Syncfusion
You can update the higher node version like (18.X.X) or (20.X.X). Also, you can globalize the Schedule with the other culture by following the steps.
UG: Localization in Angular Schedule component | Syncfusion
We require the below files to localize the Schedule.
- ca-gregorian.json
- numbers.json
- timeZoneNames.json
- numberingSystems.json
1. You can get the above files by Installing the CLDR-Data package by using the below command.
>> npm install cldr-data –save
Once the installation is completed you can find the files required to localize the Schedule for each culture from the directory as shown below.
You can get ca-gregorian.json, numbers.json, and timeZoneNames.json files from the directory as shown below.
You can get the numberingSystems.json file from the directory as shown below. This file is common for all cultures.
2. Now use the loadCultureFiles method to load the culture-specific CLDR JSON data using Ajax as shown in the below code snippet.
[app.component.ts]
|
import { extend, loadCldr, L10n, setCulture } from '@syncfusion/ej2-base'; import * as numberingSystems from './culture-files/numberingSystems.json'; import * as gregorian from './culture-files/ca-gregorian.json'; import * as numbers from './culture-files/numbers.json'; import * as timeZoneNames from './culture-files/timeZoneNames.json'; |
3. Load the locale words as shown below using the load method of L10n. You can find the localized word for the different cultures from the below repository.
ej2-local: https://github.com/syncfusion/ej2-locale
[app.component.ts]
|
loadCldr(numberingSystems, gregorian, numbers, timeZoneNames); L10n.load({
fr: { schedule: { day: "journée", week: "La semaine", workWeek: "Semaine de travail", month: "Mois", agenda: "Ordre du jour", weekAgenda: "Agenda de la semaine", workWeekAgenda: "Agenda de la semaine de travail", monthAgenda: "Agenda du mois", today: "Aujourd'hui", noEvents: "Pas d'événements", emptyContainer: "Aucun événement n'est prévu ce jour-là.", allDay: "Toute la journée", start: "Début", end: "Fin", more: "plus", close: "Fermer", cancel: "Annuler", noTitle: "(Pas de titre)", delete: "Supprimer", deleteEvent: "Cet evènement", deleteMultipleEvent: "Supprimer plusieurs événements", selectedItems: "Articles sélectionnés", deleteSeries: "Série entière", edit: "Éditer", editSeries: "Série entière", editEvent: "Cet evènement", createEvent: "Créer", subject: "Matière", addTitle: "Ajouter un titre", moreDetails: "Plus de détails", save: "sauvegarder", editContent: "Comment aimeriez-vous changer le rendez-vous de la série?", deleteContent: "Voulez-vous vraiment supprimer cet événement?", deleteMultipleContent: "Voulez-vous vraiment supprimer les événements sélectionnés?", newEvent: "Nouvel évènement", title: "Titre", location: "Emplacement", description: "La description", timezone: "Fuseau horaire", startTimezone: "Démarrer le fuseau horaire", endTimezone: "Fin du fuseau horaire", repeat: "Répéter", saveButton: "sauvegarder", cancelButton: "Annuler", deleteButton: "Supprimer", recurrence: "Récurrence", wrongPattern: "Le modèle de récurrence n'est pas valide.", seriesChangeAlert: "Voulez-vous annuler les modifications apportées à des instances spécifiques de cette série et les associer à nouveau à l'ensemble de la série?", createError: "La durée de l'événement doit être plus courte que sa fréquence. Raccourcissez la durée ou modifiez le modèle de récurrence dans l'éditeur d'événements de récurrence.", sameDayAlert: "Deux occurrences du même événement ne peuvent pas se produire le même jour.", editRecurrence: "Modifier la récurrence", repeats: "Répète", alert: "Alerte", startEndError: "La date de fin sélectionnée se produit avant la date de début.", invalidDateError: "La valeur de date entrée n'est pas valide.", blockAlert: "Les événements ne peuvent pas être planifiés dans l'intervalle de temps bloqué.", ok: "D'accord", yes: "Oui", no: "Non", occurrence: "Occurrence", series: "Séries", previous: "précédent", next: "Prochain", timelineDay: "Jour de la chronologie", timelineWeek: "Semaine chronologique", timelineWorkWeek: "Semaine de travail", timelineMonth: "Mois de la chronologie", timelineYear: "Année de la chronologie", editFollowingEvent: "Événements suivants", deleteTitle: "Supprimer l'événement", editTitle: "Modifier l'événement", beginFrom: "Commencer à partir de", endAt: "Fin à" }, recurrenceeditor: { none: "Aucun", daily: "du quotidien", weekly: "Hebdomadaire", monthly: "Mensuel", month: "Mois", yearly: "Annuel", never: "Jamais", until: "Jusqu'à", count: "Compter", first: "Premier", second: "Seconde", third: "Troisième", fourth: "Quatrième", last: "Dernier", repeat: "Répéter", repeatEvery: "Répétez tous les", on: "Répéter sur", end: "Fin", onDay: "journée", days: "Journées)", weeks: "Semaines)", months: "Mois)", years: "Ans)", every: "chaque", summaryTimes: "fois)", summaryOn: "sur", summaryUntil: "jusqu'à", summaryRepeat: "Répète", summaryDay: "journées)", summaryWeek: "semaines)", summaryMonth: "mois)", summaryYear: "ans)", monthWeek: "Mois Semaine", monthPosition: "Position du mois", monthExpander: "Expander mois", yearExpander: "Expander année", repeatInterval: "Intervalle de répétition" }, calendar: { today: "Aujourd'hui" } }
}); |
4. Set the locale property to the Schedule.
[app.component.html]
|
<ejs-schedule #scheduleObj height='650px' [(selectedDate)]="selectedDate" [eventSettings]="eventSettings" locale="fr"> |
Sample link: https://stackblitz.com/edit/angular-schedule-fr-locale-sample-ngagzyxz-b4jvwpsk?file=app.component.ts
Don't hesitate to get in touch if you require further help or more information.
Regards
Saritha S.
HI Saritha
<ejs-schedule #scheduleObj height='650px' [(selectedDate)]="selectedDate" [eventSettings]="eventSettings"
locale="zh-Hans">
This is my environment. When I use "zh-Hans", the language of the header is already loaded, but the schedule will load
Hi aquan,
We have checked and validated your reported query. Based on your request, we have prepared a sample using the "zh-Hans" culture with the proper usage of cldr-data. You should not encounter any issues if the cldr-data files are loaded correctly.
Please refer
to the shared sample and use it as a reference. Ensure that you are loading the
necessary cldr-data files properly in your application, as demonstrated in the
sample.
Sample link: https://stackblitz.com/edit/angular-wgsxaaw8-r1fuohzf?file=src%2Fapp.component.html,src%2Fapp.component.ts
Output screenshot:
Don't hesitate to get in touch if you require further help or more information.
Regards,
Vijay
HI Vijay
Maybe it was because my previous version was not unified. After all the versions were unified, there was no problem with language conversion.
Thank you
Hi Aquan,
Thanks for the update. Please get back to us if you need any other assistance.
Regards,
Vijay