Перевод программы на другой язык
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Перевод программы на другой язык
Есть программа которую нужно перевести по максиму на другой язык с перспективой на несколько языков.
Если есть кто с этим сталкивался, укажите правильное направление, чтобы не перебирать все что есть и сэкономить кучу времени.
Будут рад услышать рабочие готовые решения, шаблоны и все что связано с сабжом (бесплатные, платные).
Спасибо за внимание.
Если есть кто с этим сталкивался, укажите правильное направление, чтобы не перебирать все что есть и сэкономить кучу времени.
Будут рад услышать рабочие готовые решения, шаблоны и все что связано с сабжом (бесплатные, платные).
Спасибо за внимание.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Перевод программы на другой язык
ScriptPlayer. Схема такая - в файле настроек пишем все тексты для каждой процедуры (ниже пример для русского, можно иметь много таких секций для каждого языка):
В глобальных настройках указываем, с каким языком будем работать:
Всё, никаких пересборок не надо.
Код: Выделить всё
<!-- Localization -->
<language name="Russian">
<!-- Main -->
<procedure name="Main">
<!-- File menu -->
<field name="?MENU1">Файл</field>
<field name="?PrintSetup">Установка принтера ...</field>
<field name="?Exit">Выход</field>
<!-- Edit menu -->
<field name="?MENU2">Правка</field>
<field name="?Cut">Вырезать</field>
<field name="?Copy">Копировать</field>
<field name="?Paste">Вставить</field>
<!-- Trees menu -->
<field name="?Trees">Роща</field>
<field name="?BrowseClassTree">Берёза</field>
<field name="?BrowseStudentsTree">Рябина</field>
<!-- Browse menu -->
<field name="?MENU3">Списки</field>
<field name="?BrowseStudents">Студенты</field>
<field name="?BrowseTeachers">Преподы</field>
<field name="?BrowseClasses">Классы</field>
<field name="?BrowseEnrollment">Регистрация</field>
<field name="?BrowseCourses">Курсы</field>
<field name="?BrowseMajors">Специализация</field>
<field name="?BrowseUpdateGrades">Статистика</field>
<!-- Reports cmenu -->
<field name="?ReportMenu">Отчёты</field>
<field name="?PrintENR:StuSeq">Расписания студентов</field>
<field name="?ReportsTeacherClassSchedules">Расписания преподавателей</field>
<field name="?PrintENR:SeqStu">Посещаемость</field>
<field name="?PrintCOU:KeyDescription">Регистрация</field>
<field name="?ReportsCourseEnrollmentSummary">Регистрация (суммарн.)</field>
<field name="?ReportsFinalGrades">Итоговаые оценки</field>
<field name="?ReportsStudentIDs">Студенты</field>
<!-- Window menu -->
<field name="?MENU4">Окно</field>
<field name="?Tile">Плитка</field>
<field name="?Cascade">Каскад</field>
<field name="?Arrange">Выровнять иконы</field>
<!-- Help menu -->
<field name="?MENU5">Справка</field>
<field name="?Helpindex">Содержание</field>
<field name="?HelpSearch">Поиск...</field>
<field name="?HelpOnHelp">Как пользоваться спарвкой</field>
</procedure>
<procedure name="BrowseStudents">
<!-- Window title -->
<field>Студенты</field>
<!-- Buttons -->
<field name="?Insert:2">Добавить</field>
<field name="?Change:2">Изменить</field>
<field name="?Delete:2">Удалить</field>
<field name="?Close">Закрыть</field>
<field name="?Help">Справка</field>
</procedure>
</language>
Код: Выделить всё
<global logfile="school.log" language="Russian">
<event name="OpenWindow">
<!-- CharSet:Cyrillic for all windows -->
<action name="SetProp">
<property name="FontCharSet" charset="Cyrillic"></property>
</action>
</event>
</global>
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Перевод программы на другой язык
Я делал немного не так. Изначально текст контролов окна на английском. Есть ini файл. Там что-то вот такое:
Есть глобальная переменная, отвечающая за язык. При открытии окна вот такой код:
Немного простовато. По-правильному конечно лучше привязаться к конкретному окну (может быть ситуация, например, когда английский "ОК" может быть и "Сохранить" и "Выбрать" и т.д.). Ещё была идея хранить это всё в БД.
Код: Выделить всё
[Acceptance by Customer]
RU=Приёмка Заказчиком
IT=Accettazione da Cliente
[Exit]
RU=Выход
IT=Uscita
[Help]
RU=Справка
IT=Aiuto
[Add]
RU=Добавить
IT=Aggiungere
[History]
RU=История
IT=Storia
Код: Выделить всё
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
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 1702
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Перевод программы на другой язык
Спасибо, шикарно сделано, с конечной суммой не совсем понятно, там еще к этому требуется для xml шаблоны.Дед Пахом писал(а): ↑10 Октябрь 2020, 16:20 ScriptPlayer. Схема такая - в файле настроек пишем все тексты для каждой процедуры (ниже пример для русского, можно иметь много таких секций для каждого языка):
...
Всё, никаких пересборок не надо.
Спасибо, вроде просто, а почему сразу не использовали для этого (QuickWinTranslator.inc и *.clw)?kreator писал(а): ↑10 Октябрь 2020, 17:12 Я делал немного не так. Изначально текст контролов окна на английском. Есть ini файл. Там что-то вот такое:
...
Немного простовато. По-правильному конечно лучше привязаться к конкретному окну (может быть ситуация, например, когда английский "ОК" может быть и "Сохранить" и "Выбрать" и т.д.). Ещё была идея хранить это всё в БД.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Перевод программы на другой язык
Да, нужен EasyXML, а конечную сумму можно и обсудить.gopstop2007 писал(а): ↑17 Октябрь 2020, 14:50 с конечной суммой не совсем понятно, там еще к этому требуется для xml шаблоны.
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Перевод программы на другой язык
Что-то мне там не понравилось. Уже не вспомню. Возможно то, что нужно привязываться к окну. Привязка к окну - оно, да, универсальней, но работы по переводу сильно больше. Всё же надо было сделать ещё вчера.gopstop2007 писал(а): ↑17 Октябрь 2020, 14:50 Спасибо, вроде просто, а почему сразу не использовали для этого (QuickWinTranslator.inc и *.clw)?
Вот сделать бы параметр окна "необязательным". Если нет его, то брать какие-то глобальные значения. Вот мысль, что пару "Add/Добавить" надо заполнять для всех практически окон, не давала покоя.
We are hard at work… for you.