Разработка расширения с локализованными ресурсами

Данный тип расширений предназначен для добавления локализованных строковых ресурсов, которые могут быть использованы в клиентских компонентах элементов управления и скриптах.

Чтобы создать расширение, добавляющее новые обработчики событий, выполните приведенную далее инструкцию.

  1. Создайте проект клиентского расширения без публикации.

  2. Создайте в папке 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 Импортируем необходимые сущности из модуля.

    В данном коде выполняется добавление двух ресурсов Resource_One и Resource_Two для языков русский (ru) и английский (en).

    Функция getLocalizedResources (можно использовать другое название) возвращает массив добавляемых локализованных ресурсов, в котором каждый элемент соответствует определённой локали. Например, следующий участок кода отвечает за добавление ресурсов для локали ru (русский):

    cultureMap["ru"] = {
        "Resource_One": "Пример",
        "Resource_Two": "Пример 2"
    };
  3. Измените содержимое файла 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 функцию.
  4. Соберите проект клиентского расширения командой npm run build.

  5. Скопируйте полученный файл %BuildDir%\extension.js на сервер Web-клиента в папку \%WebCinstallDir%\5.5\Site\Content\Modules\%Каталог Решения%.

    Обратитесь к разделу Создание и публикация клиентского расширения, чтобы получить больше информации, связанной со сборкой проекта.

    Получить значение локализованного ресурса в скрипте или клиентской части элемента управления можно из объекта resources:

    resources.Resource_One
    Проверить работоспособность расширения можно обратившись к resources.Resource_One из консоли отладки веб-браузера. Должно быть получено значение Пример.
  6. После завершения отладки соберите и опубликуйте на сервере 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)