Система 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".

Файлы:Translation.png

Передача локализованной строки во время выполнения

Метки (Label) также подвергаются переводу, если они передаются как строки в динамические текстовые поля через Код\Flow Graph\LUA.

UIElements.xml
<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>


C++
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.

Файл:Glyph file 1.png

Create an empty dummy MovieClip and mark it for “Export for runtime sharing”.

Файл:Glyph file 2.png

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”

Файл:Fontlib 1.png

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.

Файл:Fontlib 2.png

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.

Файл:Flash asset1.png

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.

Файл:Flash asset2.png

Примечание:
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.