Система Flash UI/Локализация UI
Материал из CryWiki Russia
В CryENGINE встроена система локализации, которая позволяет локализировать текст UI. Система локализации документирована в руководстве по созданию ресурсов.
Кроме того, строки локализации могут использовать различные шрифты и наборы глифов для каждого языка.
Содержание |
Базовая структура каталогов
Папка | Описание |
---|---|
Game\Libs\UI\*.gfx | Flash-ассеты |
Game\Localized\<язык>.pak\Libs\UI\gfxfontlib.gfx | Библиотека шрифта для каждого языка |
Game\Localized\<язык>.pak\Libs\UI\gfxfontlib_glyphs.gfx | Набор глифов для каждого языка |
Game\Localized\<язык>.pak\Languages\*.xml | Таблицы перевода |
Строки локализации
Строки локализации UI хранятся в электронной XML-таблице Microsoft Office Excel. Она просто хранит метки (ключи) и перевод.
Таблица перевода
Таблица перевода UI хранится в Game\Languages.xml. Система загружает все XML-файлы из этой папки при запуске или при смене языка.
Таблицs перевода для каждого языка должны быть сохранены в Game\Localized\<Язык>.pak\Languages.xml.
Для перевода UI в таблицах имеются колонки "KEY", "ORIGINAL TEXT" и "TRANSLATED TEXT".
Передача локализованной строки во время выполнения
Метки (Label) также подвергаются переводу, если они передаются как строки в динамические текстовые поля через Код\Flow Graph\LUA.
<UIElement name="MyElement"> <GFx file="MyElement.gfx" layer="2" alpha="1" > <Constraints> <Align mode="fullscreen" /> </Constraints> </GFx> <variables> <variable name="MyTextbox" varname="_root.TextLayer.TextBox.text"/> </variables> </UIElement>
IFlashUIPtr pFlashUI = GetIFlashUIPtr(); If (pFlashUI) { IUIElement* pElement = pFlashUI->GetUIElement("MyElement"); If (pElement) pUIElement->SetVariable("MyTextbox", SUIArguments("@любая_метка")); }
Библиотеки шрифтов и наборы глифов
Рекомендуется использовать одну библиотеку шрифтов и набор глифов для всех Flash-ассетов. Одна из причин — меньше требование памяти, поскольку вам не придётся встраивать каждый шрифт в каждый Flash-файл. Также этот метод позволяет встраивать различные наборы глифов в разные языки.
Они также гарантируют, что вашему фирменному стилю будут соответствовать все ассеты UI, и изменить его легче простого, поскольку надо изменить всего лишь два файла для смены шрифта всего интерфейса.
Настройка gfxfontlib и gfxfontlib_glyphs =
Понадобятся два файла:
- gfxfontlib.gfx - Библиотека шрифта.
- gfxfontlib_glyphs.gfx - Набор глифов.
Файл gfxfontlib.gfx определяет все ваши шрифты, которые используются в вашем интерфейсе.
Так как экспортированные шрифты в Flash всегда содержат каждый глиф для выбранного шрифта необходимо создать файл "gfxfontlib_glyphs.gfx ', что позволит встраивать только те глифы, которые вы хотите.
Настройка gfxfontlib_glyphs.gfx
Этот файл содержит каждый глиф для каждого шрифта, используемого в UI.
Создайте новый Flash-файл и назовите его gfxfontlib_glyphs.fla.
Create Dynamic Textboxes on the stage for each font and font-style and embed the needed characters.
Create an empty dummy MovieClip and mark it for “Export for runtime sharing”.
Export the gfxfontlib_glyphs.swf file with the following command:
gfxexport.exe -c -i DDS -share_images -rescale hi gfxfontlib_glyphs.swf
Setup gfxfontlib.gfx
This file defines all fonts and font-styles for the UI.
Create a new flash file and name it gfxfontlib.fla. Create new font symbols for each font and font-style in the library (Right-Click -> New font).
Choose font and style, give it a name and mark “Export for runtime sharing”
Create an empty MovieClip and mark it as “import for runtime sharing” (or just copy and paste the dummy MovieClip from the gfxfontlib_glyphs.fla). This step is necessary to create a dependency to the glyph file.
Export the gfxfontlib.swf file with the following command:
gfxexport.exe -c -i DDS -share_images -rescale hi -strip_font_shapes gfxfontlib.swf
Import fonts to any flash asset
Finally you need to import the exported fonts from gfxfontlib.gfx to your flash assets. You can just copy and paste them.
Export your flash assets with the following command:
gfxexport.exe -c -i DDS -share_images -rescale hi -strip_font_shapes *.swf
To use the fonts on your textboxes just choose them in the font dropdown list.
Примечание:
If you use translation labels for static textboxes you have to make them dynamic! Otherwise the translation doesn't work.
Different font libraries and glyph sets for different languages
Just create *gfxfontlib.gfx* and *gfxfontlib_glyphs.gfx* files for each language and place them under: Game\Localized\<language>.pak\Libs\UI
Примечание:
You have to reload the UI elements after switching to a different language.