Система Flash UI/Локализация UI

Материал из CryWiki Russia

(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «<parsererror>Ошибка синтаксического анализа XML: несоответствующий тег. Ожидается: </table>. Адре...»)
 
(4 промежуточные версии не показаны)
Строка 1: Строка 1:
-
<parsererror>Ошибка синтаксического анализа XML: несоответствующий тег. Ожидается: &lt;/table&gt;. Адрес: http://wiki.crymod.net/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_Flash_UI/%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_UI&action=edit&redlink=1 Строка 138, символ 52:<sourcetext>&lt;div class="panelMacro"&gt;&lt;table class="infoMacro"&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="http://freesdk.crydev.net/images/icons/emoticons/information.gif" alt="" border="0" height="16" width="16" align="absmiddle"/&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Note&lt;/b&gt;&lt;br/&gt;If you use translation labels for static textboxes you have to make them dynamic! Otherwise the translation doesn't work.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt; ---------------------------------------------------^</sourcetext></parsererror>
+
В CryENGINE встроена система локализации, которая позволяет локализировать текст UI. Система [[Локализация|локализации]] документирована в руководстве по созданию ресурсов.
 +
 
 +
Кроме того, строки локализации могут использовать различные шрифты и наборы глифов для каждого языка.
 +
 
 +
== Базовая структура каталогов ==
 +
{| class="crytable"
 +
! Папка !! Описание
 +
|-
 +
| Game\Libs\UI\*.gfx || Flash-ассеты
 +
|-
 +
| Game\Localized\<язык>.pak\Libs\UI\gfxfontlib.gfx || Библиотека шрифта для каждого языка
 +
|-
 +
| width="350px" | Game\Localized\<язык>.pak\Libs\UI\gfxfontlib_glyphs.gfx || Набор глифов для каждого языка
 +
|-
 +
| Game\Localized\<язык>.pak\Languages\*.xml || Таблицы перевода
 +
|}
 +
 
 +
== Строки локализации ==
 +
Строки локализации UI хранятся в электронной XML-таблице Microsoft Office Excel. Она просто хранит метки (ключи) и перевод.
 +
 
 +
== Таблица перевода ==
 +
Таблица перевода UI хранится в <tt>Game\Languages.xml</tt>. Система загружает все XML-файлы из этой папки при запуске или при смене языка.<br />
 +
Таблицs перевода для каждого языка должны быть сохранены в <tt>Game\Localized\<Язык>.pak\Languages.xml</tt>.<br />
 +
Для перевода UI в таблицах имеются колонки '''"KEY"''', '''"ORIGINAL TEXT"''' и '''"TRANSLATED TEXT"'''.
 +
 
 +
[[Файлы:Translation.png]]
 +
 
 +
== Передача локализованной строки во время выполнения ==
 +
Метки (''Label'') также подвергаются переводу, если они передаются как строки в динамические текстовые поля через <tt>Код\Flow Graph\LUA</tt>.
 +
 
 +
{{Код|заголовок=UIElements.xml|блок=<source lang="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></source>}}
 +
 
 +
{{Код|заголовок=C++|блок=<source lang="CPP">IFlashUIPtr pFlashUI = GetIFlashUIPtr();
 +
If (pFlashUI)
 +
{
 +
  IUIElement* pElement = pFlashUI->GetUIElement("MyElement");
 +
  If (pElement)
 +
      pUIElement->SetVariable("MyTextbox", SUIArguments("@любая_метка"));
 +
}</source>}}
 +
 
 +
== Библиотеки шрифтов и наборы глифов ==
 +
Рекомендуется использовать '''одну''' библиотеку шрифтов и набор глифов для всех Flash-ассетов. Одна из причин — меньше требование памяти, поскольку вам не придётся встраивать каждый шрифт в каждый Flash-файл. Также этот метод позволяет встраивать различные наборы глифов в разные языки.
 +
 
 +
Они также гарантируют, что вашему фирменному стилю будут соответствовать все ассеты UI, и изменить его легче простого, поскольку надо изменить всего лишь два файла для смены шрифта всего интерфейса.
 +
 
 +
=== Настройка gfxfontlib и gfxfontlib_glyphs ====
 +
Понадобятся два файла:
 +
 
 +
* gfxfontlib.gfx - Библиотека шрифта.
 +
* gfxfontlib_glyphs.gfx - Набор глифов.
 +
 
 +
Файл '''gfxfontlib.gfx''' определяет все ваши шрифты, которые используются в вашем интерфейсе.
 +
 
 +
Так как экспортированные шрифты в Flash всегда содержат каждый глиф для выбранного шрифта необходимо создать файл "gfxfontlib_glyphs.gfx'' ''', что позволит встраивать только те глифы, которые вы хотите.
 +
 
 +
=== Настройка gfxfontlib_glyphs.gfx ===
 +
Этот файл содержит каждый глиф для каждого шрифта, используемого в UI.<br />
 +
Создайте новый Flash-файл и назовите его '''gfxfontlib_glyphs.fla'''.<br />
 +
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:
 +
 
 +
<code>gfxexport.exe -c -i DDS -share_images -rescale hi gfxfontlib_glyphs.swf</code>
 +
 
 +
=== Setup gfxfontlib.gfx ===
 +
This file defines all fonts and font-styles for the UI.<br />
 +
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''').<br />
 +
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:
 +
 
 +
<code>gfxexport.exe -c -i DDS -share_images -rescale hi -strip_font_shapes gfxfontlib.swf</code>
 +
 
 +
=== 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:
 +
 
 +
<code>gfxexport.exe -c -i DDS -share_images -rescale hi -strip_font_shapes *.swf</code>
 +
 
 +
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:
 +
<tt>Game\Localized\<language>.pak\Libs\UI</tt>
 +
 
 +
{{Примечание|You have to reload the UI elements after switching to a different language.}}
 +
 
 +
 
 +
[[Категория:CryEngine 3 Free SDK:Пользовательский интерфейс]]

Текущая версия на 11:18, 28 сентября 2016

В 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.