kzru_hunter
Осваивающий
- Сообщения
- 144
- Репутация
- 49
AutoIt: 3.3.6.0
Версия: 1.0 исправленная
Категория: Разное
Описание: UDF для добавления в ваш скрипт поддержки мультиязычности.
Описание функций в UDF:
1) _SetLanguage($LangFile)
Считывает выбранный lang-файл (указывать файл без расширения) в память, как бы устанавливая его текущим для последующего использования функции _GetLangText.
2) _GetLangText($Key)
Получает текст ключа текущего lang-файла
3) _GetLanguages($mode = 1)
Получает все доступные языки из папки Langs.
При этом есть 2 вида возвращаемых значений:
Первое: возвращает массив с названиями языков, при этом в нулевом индексе будет хранится кол-во языков (пример, array[0] = 2, array[1] = "english", array[2] = "russian").
Второе: возвращает языки в виде строки, разделенных между собой специальным разделителем (по умолчанию символ |), например, "english|russian"
Все lang-файлы при этом должны находится в папке Langs и иметь следующий вид (слева - ключ, справа - текст ключа):
Достоинства UDF:
1. В коде, а также в UDF не нужно добавлять никаких переменных. Просто используются те функции, которые описаны выше (пример работы функций приведен ниже с комментариями).
2. Ассоциативность при работе с ключами.
3. Функции максимально оптимизированы.
Вообщем, смотрите пример.
Код/Пример:
Скрины с результатом работы этого примера, а также все файлы(пример, UDF, lang-файлы) находятся во вложении в файле LangSupport.rar. В описании мог некоторые важные детали пропустить, так что если что, спрашивайте.
Автор: hunter
Версия: 1.0 исправленная
Категория: Разное
Описание: UDF для добавления в ваш скрипт поддержки мультиязычности.
Описание функций в UDF:
1) _SetLanguage($LangFile)
Считывает выбранный lang-файл (указывать файл без расширения) в память, как бы устанавливая его текущим для последующего использования функции _GetLangText.
2) _GetLangText($Key)
Получает текст ключа текущего lang-файла
3) _GetLanguages($mode = 1)
Получает все доступные языки из папки Langs.
При этом есть 2 вида возвращаемых значений:
Первое: возвращает массив с названиями языков, при этом в нулевом индексе будет хранится кол-во языков (пример, array[0] = 2, array[1] = "english", array[2] = "russian").
Второе: возвращает языки в виде строки, разделенных между собой специальным разделителем (по умолчанию символ |), например, "english|russian"
Все lang-файлы при этом должны находится в папке Langs и иметь следующий вид (слева - ключ, справа - текст ключа):
[Translation]
MAIN_TITLE = Main Title
BUTTON_TEXT = Button Text
LABEL_TEXT = Label Text
Достоинства UDF:
1. В коде, а также в UDF не нужно добавлять никаких переменных. Просто используются те функции, которые описаны выше (пример работы функций приведен ниже с комментариями).
2. Ассоциативность при работе с ключами.
3. Функции максимально оптимизированы.
Вообщем, смотрите пример.
Код/Пример:
Код:
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include "LangUDF.au3"
Opt("GUIOnEventMode", 1)
; ------------------------ СОЗДАНИЕ ФОРМЫ ---------------------------
$Form1 = GUICreate("Title", 324, 210, -1, -1)
$Button1 = GUICtrlCreateButton("", 12, 16, 123, 25)
$Label1 = GUICtrlCreateLabel("", 16, 48, 100, 17)
$Combo1 = GUICtrlCreateCombo("", 180, 168, 109, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
$Label2 = GUICtrlCreateLabel("", 180, 148, 119, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
; -----------------------------------------------------------------
; -- Устанавливаем вызовы функций при наступлении событий --
GuiSetOnEvent($GUI_EVENT_CLOSE,"_Exit")
GuiCtrlSetOnEvent($Combo1,"_ChangeLanguage")
; ----------------------------------------------------------
$Languages = _GetLanguages(2) ; получаем строку, состоящую из языков, разделенных между собой "|"
GUICtrlSetData($Combo1,$Languages,"Russian") ; заносим языки в Combo
; --------- Устанавливаем выбранный lang-файл текущим ---------
_SetLanguage("Russian") ; russian
;_SetLanguage("English")
If @error Then
MsgBox(16,"Error","Error opening of lang-file")
Exit
EndIf
; -------------------------------------------------------------
; ------ Устанавливаем значения элементам из текущего lang-файла -------
WinSetTitle($Form1,"",_GetLangText("MAIN_TITLE"))
GuiCtrlSetData($Button1,_GetLangText("BUTTON_TEXT"))
GuiCtrlSetData($Label1,_GetLangText("LABEL_TEXT"))
GuiCtrlSetData($Label2,_GetLangText("CHOOSE_LANG"))
; ------------------------------------------------------------------------------------------------
; --- Показываем форму на экране ---
GUISetState(@SW_SHOW)
; ----------------------------------
While 1
Sleep(30)
WEnd
; ----------- Функция смены языка на форме -----------------------
Func _ChangeLanguage()
Local $LangFile = GuiCtrlRead($Combo1)
_SetLanguage($LangFile)
WinSetTitle($Form1,"",_GetLangText("MAIN_TITLE"))
GuiCtrlSetData($Button1,_GetLangText("BUTTON_TEXT"))
GuiCtrlSetData($Label1,_GetLangText("LABEL_TEXT"))
GuiCtrlSetData($Label2,_GetLangText("CHOOSE_LANG"))
EndFunc
; ----------------------------------------------------------------
Func _Exit()
Exit
EndFunc
Автор: hunter