Локализация компонентов Microsoft Graph Toolkit
Локализация является важным аспектом разработки приложений для поддержки пользователей с различными языковыми требованиями во всем мире.
Чтобы пользовательский интерфейс отражал целевой язык, вы можете локализовать компоненты Microsoft Graph Toolkit.
Использование LocalizationHelper для добавления локализованных строк
Ни одна из строк в наборе средств не локализована, но вы можете предоставить собственные локализованные строки и управлять разными языками с помощью того же процесса, который используется для локализации приложения. Чтобы облегчить локализацию, набор средств Toolkit предоставляет статический класс LocalizationHelper
.
В примере ниже показано, как локализовать несколько компонентов.
import { LocalizationHelper } from "@microsoft/mgt-element";
LocalizationHelper.strings = {
noResultsFound: "لم نجد أي قنوات",
_components: {
"login": {
signInLinkSubtitle: "login",
signOutLinkSubtitle: "خروج",
},
"people-picker": {
inputPlaceholderText: "ابدأ في كتابة الاسم",
noResultsFound: "لم نجد أي قنوات", // will overwrite globally defined noResultsFound in people-picker component
loadingMessage: "...جار التحميل",
},
"teams-channel-picker": {
inputPlaceholderText: "حدد قناة",
noResultsFound: "local NoResultsFound Example",
// loadingMessage: is default string "Loading..." for this example since not defined globally or locally
},
"tasks": {
removeTaskSubtitle: "delete",
cancelNewTaskSubtitle: "canceltest",
newTaskPlaceholder: "newTaskTest",
addTaskButtonSubtitle: "addme",
},
"person-card": {
sendEmailLinkSubtitle: "ارسل بريد الكتروني",
startChatLinkSubtitle: "ابدأ الدردشة",
showExpandedDetailsButton: 'Show expanded details',
showMoreSectionButton: "أظهر المزيد", // global declaration
},
"person-card-contact": {
contactSectionTitle: "اتصل",
},
"person-card-organization": {
reportsToSectionTitle: "تقارير ل",
directReportsSectionTitle: "تقارير مباشرة",
organizationSectionTitle: "منظمة",
youWorkWithSubSectionTitle: "انت تعمل مع",
userWorksWithSubSectionTitle: "يعمل مع",
},
},
};
При присвоении strings
LocalizationHelper
свойства все компоненты автоматически подберут новые строки и повторно отрисовку, что позволяет динамически изменять строки.
Строки можно задать на глобальном уровне или на уровне компонента (с помощью свойства _components:
).
Строки
Вход
"login": {
signInLinkSubtitle: "Sign In",
signOutLinkSubtitle: "Sign Out"
}
Выбор людей
"people-picker": {
inputPlaceholderText: "Start typing a name",
noResultsFound: `We didn't find any matches.`,
loadingMessage: "Loading..."
}
Средство выбора каналов Teams
"teams-channel-picker": {
inputPlaceholderText: "Select a channel",
noResultsFound: `We didn't find any matches.`,
loadingMessage: "Loading..."
}
Задачи
"tasks": {
removeTaskSubtitle: "Delete Task",
cancelNewTaskSubtitle: "cancel",
newTaskPlaceholder: "Task...",
addTaskButtonSubtitle: "Add"
}
Основные задачи
"tasks-base": {
removeTaskSubtitle: "Delete Task",
cancelNewTaskSubtitle: "cancel",
newTaskPlaceholder: "Task...",
addTaskButtonSubtitle: "Add"
}
To Do
"todo": {
removeTaskSubtitle: "Delete Task",
cancelNewTaskSubtitle: "cancel",
newTaskPlaceholder: "Task...",
addTaskButtonSubtitle: "Add"
}
Карточка контакта
"person-card": {
sendEmailLinkSubtitle: "Send email",
startChatLinkSubtitle: "Start chat",
showMoreSectionButton: "Show more"
}
Контактные данные карточки контакта
"person-card-contact": {
contactSectionTitle: "Contact"
}
Организация карточки контакта
"person-card-organization": {
reportsToSectionTitle: "Reports to",
directReportsSectionTitle: "Direct reports",
organizationSectionTitle: "Organization",
youWorkWithSubSectionTitle: "You work with",
userWorksWithSubSectionTitle: "works with"
}
Сообщения карточки контакта
"person-card-messages": {
emailsSectionTitle: "Emails"
}
Файлы карточки контакта
"person-card-files": {
filesSectionTitle: "Files",
sharedTextSubtitle: "Shared"
}
Профиль карточки контакта
"person-card-profile": {
SkillsAndExperienceSectionTitle: "Skills & Experience",
AboutCompactSectionTitle: "About",
SkillsSubSectionTitle: "Skills",
LanguagesSubSectionTitle: "Languages",
WorkExperienceSubSectionTitle: "Work Experience",
EducationSubSectionTitle: "Education",
professionalInterestsSubSectionTitle: "Professional Interests",
personalInterestsSubSectionTitle: "Personal Interests",
birthdaySubSectionTitle: "Birthday",
currentYearSubtitle: "Current"
}
File
'file': {
modifiedSubtitle: 'Modified',
sizeSubtitle: 'Size'
};
File-List
"file-list": {
showMoreSubtitle: 'Show more items'
}