Автор Тема: UDF - добавление поддержки мультиязычности  (Прочитано 5321 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 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 и иметь следующий вид (слева - ключ, справа - текст ключа):
Цитировать
[Translation]
MAIN_TITLE = Main Title
BUTTON_TEXT = Button Text
LABEL_TEXT = Label Text

Достоинства UDF:
1. В коде, а также в UDF не нужно добавлять никаких переменных. Просто используются те функции, которые описаны выше (пример работы функций приведен ниже с комментариями).
2. Ассоциативность при работе с ключами.
3. Функции максимально оптимизированы.

Вообщем, смотрите пример.
Код/Пример:
(нажмите для показа/скрытия)
Скрины с результатом работы этого примера, а также все файлы(пример, UDF, lang-файлы) находятся во вложении в файле LangSupport.rar. В описании мог некоторые важные детали пропустить, так что если что, спрашивайте.

Автор: hunter

« Последнее редактирование: Июнь 21, 2010, 09:06:44 от kzru_hunter »

Русское сообщество AutoIt

UDF - добавление поддержки мультиязычности
« Отправлен: Май 31, 2010, 15:19:27 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Концепция неплохая, она мне даже немного нравится, но вот на ряду с плюсами по сравнению с другими идеями есть тут и пару минусов...

1) Нужно для каждого элемента писать название строки перевода.
2) Нет возможности присваивать в цикле значения элементам, а это очень важно в больших скриптах.


Добавлено: Май 31, 2010, 16:30:59
Хотя последнее конечно можно обойти написав значения в виде
Код: AutoIt [Выделить]
_GetLangText("CHECKBOX_1")
_GetLangText("CHECKBOX_2")

и т.д.
« Последнее редактирование: Май 31, 2010, 16:30:59 от CreatoR, Причина: Объединение сообщений »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144

  • Автор темы
  • Репутация: 49
    • Награды
CreatoR  [?]
Цитировать
1) Нужно для каждого элемента писать название строки перевода.
Ага, для наглядности ( чтобы взглянув на эту строку сразу всплыл перевод, придуманный для этого элемента )

Русское сообщество AutoIt

Re: UDF - добавление поддержки мультиязычности
« Ответ #2 Отправлен: Май 31, 2010, 16:45:59 »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3999
  • Репутация: 963
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
CreatoR  [?]
Цитировать
1) Нужно для каждого элемента писать название строки перевода.
В принципе все файлы перевода так и пишутся, для каждого элемента своя строка.
Просто теперь, нужен, будет редактор языковых файлов, и самое главное для каждого варианта свой. :)
По моему личному мнению, каждый всё равно будет подстраиваться под свои замыслы, видимо универсального решения нет. :)

Скорблю и помню.




Оффлайн kzru_hunter [?]

  • Осваивающий
  • **
  • Сообщений: 144

  • Автор темы
  • Репутация: 49
    • Награды
Garrett  [?]
Цитировать
Просто теперь, нужен, будет редактор языковых файлов
Хорошая идея. Типа надстройка для Scite? В этом вопросе не силен, т.к. не знаю, как следить в нём за функциями, на которых в данный момент установлен курсор.

[Добавлено]
Исправлен косяк, который был допущен в _GetLanguages в режиме 1
« Последнее редактирование: Июнь 01, 2010, 17:31:32 от kzru_hunter »

Русское сообщество AutoIt

Re: UDF - добавление поддержки мультиязычности
« Ответ #4 Отправлен: Май 31, 2010, 17:16:31 »

Оффлайн astati [?]

  • Новичок
  • *
  • Сообщений: 145
  • Репутация: 4
    • Награды
Re: UDF - добавление поддержки мультиязычности
« Ответ #5, Отправлен: Февраль 13, 2011, 12:50:52 »
Вопрос.
1)А как добавлять новые языки(к примеру французский)
2)И как изменять lng ? я так понимаю там хранятся переводы строк.

Оффлайн Viktor217 [?]

  • Осваивающий
  • **
  • Сообщений: 233
  • Репутация: 31
  • Пол: Мужской
    • Награды
Re: UDF - добавление поддержки мультиязычности
« Ответ #6, Отправлен: Февраль 13, 2011, 13:47:14 »
Вопрос.
1)А как добавлять новые языки(к примеру французский)
2)И как изменять lng ? я так понимаю там хранятся переводы строк.
1. Создаёшь новый лэнг-файл.
2. Правильно понимаешь, изменять можно простым блокнотом...

Русское сообщество AutoIt

Re: UDF - добавление поддержки мультиязычности
« Ответ #6 Отправлен: Февраль 13, 2011, 13:47:14 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
5386 Просмотров
Последний ответ Октябрь 18, 2009, 18:20:47
от snoitaleR
7 Ответов
6086 Просмотров
Последний ответ Май 31, 2010, 08:27:24
от CreatoR
7 Ответов
6514 Просмотров
Последний ответ Июнь 05, 2010, 18:10:12
от ynbIpb
2 Ответов
4649 Просмотров
Последний ответ Август 02, 2010, 12:26:18
от SECTOR
25 Ответов
18269 Просмотров
Последний ответ Июль 23, 2013, 00:38:25
от Astel064
5 Ответов
4643 Просмотров
Последний ответ Ноябрь 29, 2010, 14:38:41
от CreatiK
7 Ответов
4998 Просмотров
Последний ответ Декабрь 09, 2010, 18:21:10
от HelpMe
4 Ответов
3498 Просмотров
Последний ответ Февраль 13, 2011, 12:46:08
от AZJIO
4 Ответов
6758 Просмотров
Последний ответ Август 08, 2012, 14:29:47
от CreatoR
1 Ответов
914 Просмотров
Последний ответ Июнь 03, 2015, 13:56:07
от Prog