Импорт/экспорт
Пользовательский Импорт/Экспорт
Если вы работаете с кастомным движком, отличным от i18next, LSDE позволяет настроить ваш собственный middleware. Таким образом, вы сможете импортировать ваши данные в формат LSDE и, наоборот, экспортировать формат LSDE в вашу собственную структуру.
Как это работает?
- Включите расширенный режим, чтобы отобразить настраиваемые параметры.
- Определите здесь фильтр импорта файлов:
- Укажите расширения файлов, которые LSDE должен включить в поиск.
- Укажите имена или ключевые слова, которые должны содержаться в названиях файлов.
Примечание
Эти опции поддерживают регулярные выражения (Regex). Например: /filename\\d+/ найдет все файлы с именем «filename», за которым следует число (например: filename004).
Вы можете выбрать предварительно настроенные парсеры для определенных фреймворков. Эти middleware могут быть отредактированы в любой момент в соответствии с вашими потребностями. Если вам нужно написать собственный middleware, это делается здесь.
Эти опции позволяют усилить безопасность и определить стандарт структуры ваших файлов локализации:
- Monolithic: означает, что все ваши языки сгруппированы в одном единственном файле.
- Locale dans les dossiers parents (Локаль в родительских папках): указывает на то, что язык определяется родительской папкой.
- Locale dans le nom de fichier (Локаль в имени файла): указывает на то, что язык должен присутствовать в названии файла.
- При выборе middleware вам необходимо реализовать код для импорта и экспорта. Эти вкладки позволяют переключаться между двумя интерфейсами.
Интерфейс middleware
Для импорта ваш парсер должен возвращать LSDE следующий интерфейс: return { valuesEntries, metasEntries, nameSpacePackage }
interface ILocalizationImportResult {
metasEntries: [
i18nKey:string,
value: IStructureMetaData
][];
valuesEntries: [
i18nKey:string,
[language:string, text:string][]
][];
nameSpacePackage: [
ns:string,
[language:string, filePath:string][]
][];
}Вы должны собрать этот объект на основе файлов, найденных LSDE и переданных в параметрах. Интерфейс полученных файлов следующий:
interface ILocalizationImportParams {
files: {
/** filename without extension */
filename: string;
/** full path of the file */
path: string;
/** file content */
datafile: string;
/** parent folder of the file */
parentFolder: string;
/** directory of the file */
pathWithoutFilename: string;
/** ext with dot ex: '.json' */
type: string;
metadata: {
modifiedTime: Date;
accessedTime: Date;
createdTime: Date;
fileSize: number;
inode: number;
}
}[]
}Для экспорта LSDE передает вам следующий интерфейс, позволяющий воссоздать вашу собственную структуру данных:
interface ILocalizationExportParams {
files: ILocalizationImportParams['files']
// ReadonlyMap<LSI18NKey, ReadonlyMap<language, text>>
valuesEntriesMap: ReadonlyMap<string, ReadonlyMap<string, string>>;
metasEntries: ILocalizationImportResult['metasEntries'];
nameSpacePackage: ILocalizationImportResult['nameSpacePackage'];
}Вы должны вернуть следующую структуру:
interface ILocalizationExportResult {
i18nFiles: {
locale: Locales;
src: string,
data: unknown;
}[];
}Примечание
Объект data будет содержать структуру, которую вы создали для вашего игрового движка или для специфических нужд вашего проекта.
