Страница 1 из 1
Доступ к элементам формы
Добавлено: 11 Август 2015, 18:39
pansoft
Добрый день всем!
Возможно ли в С9 такое:
Loop i#=1 to 10
?button&i#{prop:text}='....'
End
Или
Loop i=элементФормы то ЭлементыФормы
If i=button then
i{prop:text}='...'
End
End
Вообще нужно перебрать все кнопки на форме и изменить их надписи на них.
Заранее благодарен!
Доступ к элементам формы
Добавлено: 11 Август 2015, 20:43
kreator
Пользуйся.
Код: Выделить всё
SetLanguage Routine
if GLO:Language=1
exit
end
if ~GLO:Language
Language" = 'RU'
else
Language" = choose(GLO:Language,'EN','IT','DE','FR','ES','PT')
end
0{prop:Text} = getini(0{prop:Text},Language",0{prop:Text},GLO:LanguageFile)
0{prop:MSG} = getini(0{prop:MSG},Language",0{prop:MSG},GLO:LanguageFile)
qty# = create(0,CREATE:prompt)
if qty#
destroy(qty#)
loop i#=1 to (qty#-1)
case i#{prop:Type}
of CREATE:button
orof CREATE:tab
orof CREATE:group
orof CREATE:prompt
i#{prop:Text} = getini(i#{prop:Text},Language",i#{prop:Text},GLO:LanguageFile)
i#{prop:MSG} = getini(i#{prop:MSG},Language",i#{prop:MSG},GLO:LanguageFile)
i#{prop:Tip} = getini(i#{prop:Tip},Language",i#{prop:Tip},GLO:LanguageFile)
of CREATE:list
orof CREATE:combo
i#{prop:MSG} = getini(i#{prop:MSG},Language",i#{prop:MSG},GLO:LanguageFile)
i#{prop:Tip} = getini(i#{prop:Tip},Language",i#{prop:Tip},GLO:LanguageFile)
j# = 1
loop
if i#{proplist:Exists, j#}=True
i#{proplist:Header, j#} = getini(i#{proplist:Header, j#},Language",i#{proplist:Header, j#},GLO:LanguageFile)
j# += 1
else
break
end
end
end
end
end
Может список контролов неполный. Только начало.
Доступ к элементам формы
Добавлено: 12 Август 2015, 5:51
pansoft
Огромное спасибо! То что надо!
Доступ к элементам формы
Добавлено: 12 Август 2015, 6:02
Игорь Столяров
kreator писал(а): Только начало.
Вот если бы ты к этому коду прикрутил перевод интерфейса по словарю - было бы супер ...

Доступ к элементам формы
Добавлено: 12 Август 2015, 10:30
kreator
Игорь Столяров писал(а):Вот если бы ты к этому коду прикрутил перевод интерфейса по словарю - было бы супер ...

Ну а как по словарю? Сейчас храню фразы. Воспользоваться гугловским сервисом перевода? В интерфейсе нужны максимально точные формулировки исходя из специфики функционала программы. Боюсь на машинный перевод нельзя положиться. Или не о том речь?
Доступ к элементам формы
Добавлено: 12 Август 2015, 10:40
Игорь Столяров
kreator писал(а):Или не о том речь?
Именно о том. Это мечта всей жизни - создать автоматизированную систему перевода интерфейса программы.
В принципе, я уже как-то думал на эту тему, можно пойти следующим путем:
1. Как показано в твоем примере - пробегаем по всем окнам и формируем список (БД) уникальных
названий на русском: строки, кнопки, шапки списков и т.д. Без учета регистра естественно.
2. Выгружаем в текст, натравливаем на него какой переводчик и получаем значения на нескольких языках.
3. Загружаем обратно в БД, корректируем смысловую нагрузку вручную (тонкости перевода)
4. Все. Далее все-то же самое, просто значение подставляет из БД, в зависимости от выбранного языка,
с учетом заглавных букв, знаков препинания и т.д.

Доступ к элементам формы
Добавлено: 12 Август 2015, 11:34
kreator
У меня тоже в этом направлении мысли были. На начальном этапе нет времени усложнять, проект и так горит. А так я согласен. По пунктам:
1. Хранить словарь (естественно, фразы) в БД.
2. Сделать интерфейс для удобоваримого перевода всего что есть на экране. Не уверен, что нужен машинный переводчик, лучше сразу к спецу.
3. Структура словаря (вызывает вопрос). Сейчас я сделал "глобальные фразы", типа "Add" всегда "Добавить". В Clarione есть класс Translate, так вот там привязка к конкретному окну. Я поначалу посчитал это ни к чему. Но в последствии столкнулся с тем, что одинаковые фразы на английском языке на разных окнах нужно по разному "перевести". Вот этот момент тоже неплохо бы как-то обыграть. Но жёсткая привязка к окну тоже не нужна, зачем плодить одинаковые записи.