Разработка расширения с локализованными ресурсами
Данный тип расширений предназначен для добавления локализованных строковых ресурсов, которые могут быть использованы в клиентских компонентах элементов управления и скриптах.
Чтобы создать расширение, добавляющее новые обработчики событий, выполните приведенную далее инструкцию.
-
Создайте проект клиентского расширения без публикации.
-
Создайте в папке
src
файл TypeScript (.ts
,.tsx
) со следующим содержимым:import { ILocalizationsMap } from "@Docsvision/webclient/System/ILocalizationsMap"; (1) export function getLocalizedResources(): ILocalizationsMap { let cultureMap: ILocalizationsMap = {}; cultureMap["en"] = { "Resource_One": "Sample", "Resource_Two": "Sample 2" }; cultureMap["ru"] = { "Resource_One": "Пример", "Resource_Two": "Пример 2" }; return cultureMap; }
1 Импортируем необходимые сущности из модуля. -
Измените содержимое файла
Index.ts
.import { getLocalizedResources } from "./LocalizedResource"; (1) import { extensionManager } from "@Docsvision/webclient/System/ExtensionManager"; import { ILocalizationsMap } from "@Docsvision/webclient/System/ILocalizationsMap"; extensionManager.registerExtension({ (2) name: "Client extension with localization", version: "1.0", getLocalizations(): ILocalizationsMap { return getLocalizedResources(); } })
1 Добавьте строку импорта функции getLocalizedResources из добавленного в 2 файла (в примере — LocalizedResource). 2 Добавьте в registerExtension функцию getLocalizations, которая должна вызывать импортированную в 1 функцию. -
Соберите проект клиентского расширения командой
npm run build
. -
Скопируйте полученный файл
%BuildDir%\extension.js
на сервер Web-клиента в папку\%WebCinstallDir%\5.5\Site\Content\Modules\%Каталог Решения%
.Проверить работоспособность расширения можно обратившись к resources.Resource_One
из консоли отладки веб-браузера. Должно быть получено значение Пример. -
После завершения отладки соберите и опубликуйте на сервере Web-клиента "релизную версию" клиентского расширения. "Релизная версия" собирается командой
npm run build:prod
.
import { $RequestManager } from "@Docsvision/webclient/System/$RequestManager";
import { urlStore } from "@Docsvision/webclient/System/UrlStore";
import { serviceName } from "@Docsvision/webclient/System/ServiceUtils";
export class CardService {
constructor(private services: $RequestManager) {
}
exists(cardId: string): Promise<boolean> { (1)
let url = urlStore.urlResolver.resolveApiUrl("Exists", "CardService"); (2)
url = url + "?cardId=" + cardId;
return this.services.requestManager.get<boolean>(url);
}
}
export type $CardService = { cardService: CardService };
export const $CardService = serviceName((s: $CardService) => s.cardService); (3)