UPD. Натолкнулся на
похожий пост уже после того как написал свой, но тема локализации не раскрыта.
После перехода на Vmware Horizon версии 7 встала задача замены логотипа vmware на логотип компании и изменения приветственного текста. Далее описаны шаги по модификации и локализации портала VMware Horizon 7.
Важно!
Описанные действия не являются официальными рекомендациями поставщика решения VMware Horizon и при неправильных действиях могут сломать приложение. Обязательно делайте бекап сервера и изменяемых файлов перед модификацией. Также учтите, что при последующих обновлениях, данные изменения могут быть утеряны.
Основным документом по "кастомизации" является документ
VMware Horizon HTML Access Installation and Setup Guide, в котором нет ни слова о логотипе и уж тем более изменении текста или переводе элементов. Не понимаю, что мешало дописать документацию и предоставить возможность клиентам измененять страницы для собственных нужд. Очевидно же, что это многим требутся.
Оригинальная страница Vmware Horizon 7 выглядит достаточно хорошо, но логотип действительно просится на замену:
При изменении конфигурационных файлов для применения изменений требуется перезапуск службы VMware Horizon View Connection Server (wsbroker):
Но мне больше нравится остановка процесса ws_TomcatService.exe и запуск службы wstomcat, так получается быстрее:
Tomcat сам по себе тяжёлый и поэтому после запуска требуется время чтобы он начал отвечать на запросы браузера.
Кстати, если видите ошибку Network Timeout (599), значит служба лежит.
Логотип
Чтобы поменять логотип его на свой, замените файл logo.png и logo@2x.png в папке C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\webclient\icons-0000000\ (вместо 0000000 у вас будет версия компонента VMware Horizon 7 HTML Access). Там же лежит фоновое изображение bg_image.jpg, если вдруг захотите его заменить.
Файлы с 2x в имени рассчитаны на интерфейсы с увеличенной плотностью пикселей (retina).
Все стили описаны в файле C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\webclient\style.css, который при необходимости также можно поменять на свой вкус и цвет. Например, если у вас будет много текста в install.message.first и/или install.message.second, то текст будет переноситься браузером автоматически и он будет вылезать за белую плашку. Чтобы увеличить её размер отредактируйте свойство height в файле стилей:
Текст
Теперь перейдём к тексту. Скорее всего вам захочется изменить формулировки или добавить к английскому тексту информацию, например, о контактах службы поддержки.
Для английской страницы вам необходимо изменить файл bundle.properties в папке C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\WEB-INF\classes\com\vmware\vdi\installer\i18n\.
Пример со ссылкой mailto:
Минутка ликбеза: i18n это сокращение от английского internationalization, а 18 это число пропущенных букв в слове.
В процессе исследования оказалось, что портал поддерживает локализацию и, если найден соответствующий локализации браузера файл bundle_.properties, то портал выдаёт страницу на этом языке. Поэтому было решено добавить локализацию на русском и не переводить оригинальный файл.
Что бы добавить локализацию для русскоязычных посетителей, делаем копию файла bundle.properties и добавляем суфикс ru. Для русского языка файл будет называться bundle_ru.properties, для украинского - bundle_uk.properties и т.д.. Другие теги языков можно посмотреть по адресу
http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry.
После того как вы скопировали файл, перевели текст и применили изменения, вы как и я скорее всего расстроитесь увидев как текст отображается на самом деле:
Чтобы этого избежать, сконвертируем русский текст в unicode-последовательность и запишем в файле bundle_ru.properties вместо русского текста. Для конвертации можно использовать онлайн-инструменты
https://r12a.github.io/apps/conversion/ (поля Characters<-->JavaScript),
http://itpro.cz/juniconv/,
https://www.freeformatter.com/java-dotnet-escape.html:
Копируем значение из поля JavaScript и вставляем в файле вместо русского текста. Как видно, текст на английском и знаки остаются не тронутыми. После перезапуска сервера, текст на странице должен отображаться корректно.
Локализация
Поковырявшись ещё, я наткнулся на файлы полной локализации интерфейса в папке C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\webclient\locale\. Судя по содержимому файла, интерфейс портала поддерживает полный перевод всех элементов и надписей. Конечно, придётся попотеть - перевести около 400 строк на английском языке.
Шаги по переводу.
1. Делаем копию любого файла в папке C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\locale и называем его с кодом нужного языка, например ru.json. Почему любой? В каждом файле оригинальный текст продублирован на английском в поле msgid. Вам нужно открыть файл редактором и перевести то, что находится в ключе msgid, но перевод помещая в поле msgstr. Также в файле в разделе comments можно оставить комментарии и информацию о авторе.
В принципе файл не обязательно переводить, т.к. в нём содержатся лишь сообщения об ошибках, но он обязательно должен быть:
2. В папке C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\webclient\locale\ делаем копию файла en.json и называем его ru.json. В нём то и будет содержаться ваш перевод всех элементов интерфейса. Переводим элементы на которые хватит сил и терпения. Если в тексте встречается плейсхолдеры вида {0}, {1} и т.д., то их обязательно нужно сохранить иначе будут ошибки javascript runtime, что может в принципе сломать функционирование веб-интерфейса.
3. Теперь самое интересное - вмешаемся в работу скрипта, который отвечает за формирование интерфейса и определение доступных для отображения языков. Открываем в текстовом редакторе файл app-htmlaccess.6ec4051736bf6933c32f.js размещённый в папке C:\Program Files\VMware\VMware View\Server\broker\webapps\portal\webclient\. При использовании редактора следите, чтобы кодировка файла осталась UTF-8.
В файле ищем свойство supportedLocale, которое в оригинале записано так:
supportedLocale:{en:"en",es:"es",de:"de",fr:"fr",ja:"ja",ko:"ko",zh:"zh_CN","en-us":"en","es-es":"es","de-de":"de","fr-fr":"fr","ja-jp":"ja","ko-kr":"ko","zh-cn":"zh_CN","zh-hans":"zh_CN","zh-hant":"zh_TW","zh-tw":"zh_TW","zh-hk":"en","zh-mo":"en","zh-hans-hk":"en","zh-hant-hk":"en","zh-hans-mo":"en","zh-hant-mo":"en"}
Вы наверное уже понимаете чего здесь не хватает? Конечно же нашего родного! Добавляем элемент ru:"ru":
supportedLocale:{en:"en",ru:"ru",es:"es",de:"de",fr:"fr",ja:"ja",ko:"ko",zh:"zh_CN","en-us":"en","es-es":"es","de-de":"de","fr-fr":"fr","ja-jp":"ja","ko-kr":"ko","zh-cn":"zh_CN","zh-hans":"zh_CN","zh-hant":"zh_TW","zh-tw":"zh_TW","zh-hk":"en","zh-mo":"en","zh-hans-hk":"en","zh-hant-hk":"en","zh-hans-mo":"en","zh-hant-mo":"en"}
Важно! Свойство supportedLocale встречается в файле два раза абсолютно одинаковом виде. Обязательно исправьте в двух местах. Если этого не сделать, то интерфейс останется в английской локализации.
Перезапускаем службу или сервер и проверяем результат - переведённые элементы теперь на русском языке :
Ресурсы
http://nicksitblog.com/2017/08/customizing-vmware-horizon-connection-server-login-screen/ (столкнулся с постом только после написания своего. Ну да ладно)
https://docs.vmware.com/en/VMware-Horizon-HTML-Access/4.6/html-access-installation.pdfhttps://www.w3.org/International/articles/language-tags/http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry https://r12a.github.io/apps/conversion/https://www.freeformatter.com/java-dotnet-escape.htmlhttp://itpro.cz/juniconv/