Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#1: 2010-02-05 17:37:35 ЛС | профиль | цитата
Есть предложение радикально поменять формат описания элемента (conf), а именно - использовать XML.

Рассмотрим для примера новую запись конфигурации элемента Button.ini (автор - Dilma, версия - 1.10):
code_16792.txt

Пояснения, если надо, дам позже.
карма: 1

0
файлы: 1code_16792.txt [1.9KB] [586]
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26061
Рейтинг: 2120
#2: 2010-02-05 17:48:29 ЛС | профиль | цитата
Вот опупеть его редактировать потом. Так я вручную редактирую и создаю, а в твоем случае, на это ПО надо, вручную запаришься редактировать. Но может Dilme и понравиться. И еще перевод писать придется, ссовсем здорово, а если я не силен в английских оборотах, это для меня совсем не русский
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#3: 2010-02-05 17:49:50 ЛС | профиль | цитата
iarspider, а где замер скорости разбора такого конфига супротив существующего? я что-то сомневаюсь в сравнимой скорости обработки файла, где нет практически ничего лишнего, и файла, где более 50% информации является мусором.
карма: 26
0
Ответов: 215
Рейтинг: 45
#4: 2010-02-05 17:50:26 ЛС | профиль | цитата
Мне бы тоже хотелось остаться в рамках ini
Просто надо продумать способ введения многоязычности

[off]Button.ini - Определяет кнопку по-умолчанию[/off]
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#5: 2010-02-05 17:51:42 ЛС | профиль | цитата
lev писал(а):
Просто надо продумать способ введения многоязычности

Да, вот над этим не помешает подумать основательно. Везде используют отдельные языковые файлы, может в конце описания приклейивать уникальный номер позиции точки и прикреплять соответствующий языковый файл, с переводами этих позиций. Это первое, что на ум пришло
карма: 22

0
Ответов: 4621
Рейтинг: 746
#6: 2010-02-05 17:52:15 ЛС | профиль | цитата
nesco писал(а):
Вот опупеть его редактировать потом

Поддерживаю
lev писал(а):
Мне бы тоже хотелось остаться в рамках ini
Просто надо продумать способ введения многоязычности

Поддерживаю
карма: 26

0
Администрация
Ответов: 15294
Рейтинг: 1518
#7: 2010-02-05 17:59:49 ЛС | профиль | цитата
lev писал(а):
Просто надо продумать способ введения многоязычности

в таком исполнении существует только единственный вариант поддержки многоязычности: таже методика, что и в библиотеках QT. Поясню - есть исходная(прошитая) строка в конфиге элемента, например, "Определяет кнопку по-умолчанию". Есть № наборов трансляций на № языков, состоящих из пар вида:
Определяет кнопку по-умолчанию=Defined default button

Среда при обращении к языкозависимым данным ищет пару, левая половина которой совпадает с тектом, который нужно перевести. Если находит, то вместо исходной строки подставляется ее перевод, иначе строка остается как есть. Именно таким образом локализуют скажем окружение Ubuntu Linux. Если искомые строки хранить в индексируемой базе, то потери на поиск будут минимальны.
карма: 26
0
Ответов: 215
Рейтинг: 45
#8: 2010-02-05 18:27:08 ЛС | профиль | цитата
Некоторые программы для подобных целей используют дублирующиеся ключи.
hint = ...
hint_en = ...
есть ключ с маркером языка - используем, нет - используем дефолтный

Но методика с *.lng файлами наверно более отработана
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#9: 2010-02-05 18:50:53 ЛС | профиль | цитата
с дублями ключей производительность падает пропорционально количеству языков, которые будут поддержаны. Способ перевода, который был описан мной выше имеет еще одно важное преимущество: исходные фразы можно выкладывать в специальный раздел сайта, где этим сможет заняться каждый желающий после чего всю накопленную информацию в автоматическом режиме помещать в сборку среды (так же, как это сейчас сделано с разделом wiki)
карма: 26
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2010-02-05 19:11:38 ЛС | профиль | цитата
Dilma писал(а):
Среда при обращении к языкозависимым данным ищет пару, левая половина которой совпадает с тектом, который нужно перевести

А не слишком ли это медленно Вот в тотале, да и во многих других, я встречал именно языковые файлы с нумерацией
карма: 22

0
Ответов: 215
Рейтинг: 45
#11: 2010-02-05 19:12:58 ЛС | профиль | цитата
С ручными правками вот будет не очень удобно, в двух местах придётся править.
Есть ещё способы нумерованного сопоставления переводов, но тогда мы опять потеряем читабельность.
или можно как в HiasmInt u - en завести дубли папки conf - conf_lng
[offtop]Почему пропорционально? Да, мы потеряем время на считывание названий ключей пропорционально их количеству, но уже потом мы проверяем наличие языкового ключа и дефолтный при его отсутствии, а не все ключи заново. Я не очень хорошо знаю алгоритмику поиска ключа в ini, но не думаю, что тормоза при подобной реализации должны быть так заметны[/offtop]

Просто хочется рассмотреть максимум вариантов, вдруг, самому в будущем пригодится.
карма: 0

0
Ответов: 4641
Рейтинг: 334
#12: 2010-02-05 19:23:27 ЛС | профиль | цитата
[offtop]
lev писал(а):
[off]
lev, для офтопа есть ссответсвующий тег offtop[/offtop]
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5446
Рейтинг: 323
#13: 2010-02-05 19:37:30 ЛС | профиль | цитата
[offtop]Однако бурная реакция получилась...[/offtop]

nesco писал(а):

Вот опупеть его редактировать потом. Так я вручную редактирую и создаю, а в твоем случае, на это ПО надо, вручную запаришься редактировать. Но может Dilme и понравиться. И еще перевод писать придется, ссовсем здорово, а если я не силен в английских оборотах, это для меня совсем не русский

Создавать - через ECreator, редактировать не так уж и сложно (мелкие правки вручную, большие - через тот же ECreator). Перевод: если не владеешь - не делай, это не обязательный узел.

Dilma писал(а):

iarspider, а где замер скорости разбора такого конфига супротив существующего? я что-то сомневаюсь в сравнимой скорости обработки файла, где нет практически ничего лишнего, и файла, где более 50% информации является мусором.

Замер не проводил. Думаю, разница, если и будет, то незначительная.




Синтаксис XML-файла строился с прицелом на human readability: вместо +@* перед именем метода/свойства - атрибут узла, вместо числовых идентификаторов типов - названия, и т.п.

Можно будет создать связи между свойствами и методами - привет nesco и его StringTableMT / MStrTbl!

Используя тег <link> можно будет сделать быстрое редактирование связанных свойств. Например, можно будет "визуально" привязать к событию onClick у ListBox-а св-во DataType (в области с описанием события текст DataType будет ссылкой, по нажатию на которую откроется редактор св-ва

По поводу формирования строк для перевода: я предложил лишь один из возможных вариантов. Другой вариант:
в фале элемента
<Hint file="global" id="def_btn"/>
...
<Hint file="button" id="flat"/>

В глобальном "словаре":
...
<entry id="def_btn">
<string lang="ru">русский текст</string>
<string lang="en">english text</string>
</entry>

В словаре для "button":
...
<entry id="flat">
<string lang="ru">русский текст</string>
<string lang="en">english text</string>
</entry>

Такие словари можно точно так же выкладывать для всеобщего редактирования.




Господа nesco и lev: вот объясните мне, чем редактирование (замечу - созданием должен ECreator заниматься) xml-файла так уж сложнее, чем ini-файла?
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#14: 2010-02-05 19:44:27 ЛС | профиль | цитата
iarspider, а ты не заметил, что, пока, большинство против такого решения
Да и вообще, мы когда-нибудь остановимся с глобальными новшествами, ставящими все с ного на голову
карма: 22

0
Ответов: 5446
Рейтинг: 323
#15: 2010-02-05 19:45:21 ЛС | профиль | цитата
nesco, так что, сразу лапки к верху? Не-е, я ещё побарахтаюсь - авось придём к консенсусу...
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)