Превод на интерфейса на Delphi програма. Как ?
14 отговора
694 прегледа
Превод на интерфейса на Delphi програма. Как ?
Моето питане е към хора, които подържат своите Delphi програми с интерфейс на няколко езика. Например: български, английски, немски и т.н.
Аз се опитвам да ползвам вградения translation manager в Delphi-то, но той е адски бъгав и поддръжката на преводите е много трудна. Затова ме интересуват други по-стабилни алтернативи.
Та кажете какви компоненти или tool-чета ползвате за целта ?
Аз се опитвам да ползвам вградения translation manager в Delphi-то, но той е адски бъгав и поддръжката на преводите е много трудна. Затова ме интересуват други по-стабилни алтернативи.
Та кажете какви компоненти или tool-чета ползвате за целта ?
Balmsoft Polyglot 1.6 (969Kb)
Balmsoft Polyglot 1.6 (969Kb)
[линк]
Fрее
Ne sym go probval, no v ruskite saitove tozi problem chesto se obsyjda.
[линк]
Fрее
Ne sym go probval, no v ruskite saitove tozi problem chesto se obsyjda.
Редактирано от NikB на
Re: Превод на интерфейса на Delphi програма. Как ?
Здравей!
Понеже съм привърженик на собствените решения моето предложение е да си направиш програмата да ползва малко XML за да ти инициализира елементите които съдържат текстове от текстов фаил за съответния език. Така ще стане нещо подобно на скин и ще можеш да я разширяваш с нови езици без да я променяш а сама с добавянето на нов езиков фаил.
Понеже съм привърженик на собствените решения моето предложение е да си направиш програмата да ползва малко XML за да ти инициализира елементите които съдържат текстове от текстов фаил за съответния език. Така ще стане нещо подобно на скин и ще можеш да я разширяваш с нови езици без да я променяш а сама с добавянето на нов езиков фаил.
Re: Превод на интерфейса на Delphi програма. Как ?
Или пък с INI файл-че :) Записваш елементите (например caption-ите на Label-ите)във файла, като всеки обект се записва с отделен ред (запис) в INI файла. Бих го направил така, ако ми се налагаше, а и честно да си кажа на v_automation предложението също не е лошо. Но понеже ще ми е по-лесно с INI, предпочитам INI :)
На _FlashGet language-файловете са му инита, ако искаш отвори си един такъв файл и виж какво става въпрос..
Късмет
На _FlashGet language-файловете са му инита, ако искаш отвори си един такъв файл и виж какво става въпрос..
Късмет
Re: Превод на интерфейса на Delphi програма. Как ?
И какво ще стане в случая на превод на арабски или китайски ;-))))))) - един елемент може да заема различно място, също така ако има бутони с картинки които имат текст (позната ситуация ;-))))) те също трябва да бъдат преведени????
Освен това това което предлагаш ще трябва да се прави runtime - и веднъж ще се зареждат оригиналните ресурси, след което ще ги подменяш - доста бавно ми се струва. За съжаление повечето програми/компоненти ползват подобен подход - рядко са тези които боравят директно с ресурсите.
Мисля, че и друг път съм го казвал - най-добре е да се ползва вградената в Делфи процедура за превод/замяна на ресурсите - това е единствения смислен начин, защото превода не се основава само на смяна на caption-и !!!! А за това, че е бъгав - ами минава се на версия на Делфи в която работи - никога не съм го ползвал - просто съм го разглеждал - и не мога да кажа дали наистина има проблем.
---
Колкото повече, толкова повече.
Освен това това което предлагаш ще трябва да се прави runtime - и веднъж ще се зареждат оригиналните ресурси, след което ще ги подменяш - доста бавно ми се струва. За съжаление повечето програми/компоненти ползват подобен подход - рядко са тези които боравят директно с ресурсите.
Мисля, че и друг път съм го казвал - най-добре е да се ползва вградената в Делфи процедура за превод/замяна на ресурсите - това е единствения смислен начин, защото превода не се основава само на смяна на caption-и !!!! А за това, че е бъгав - ами минава се на версия на Делфи в която работи - никога не съм го ползвал - просто съм го разглеждал - и не мога да кажа дали наистина има проблем.
---
Колкото повече, толкова повече.
Re: Превод на интерфейса на Delphi програма. Как ?
PhantomAS,
проблема е че това нещо е бъгаво дори в Delphi 7.
Засега си разработвам проекта само в Delphi 5, защото на него Translation Managera горе-долу работи (поради един гаден bug в Delphi 6 и Delphi 7, който го няма в Delphi 5).
Идеята на Translation Managera на Borland е срахотна и много лесно се превежда с нея, но за съжаление за проект по-голям от 50 форми е трудно приложима (много се бави, пък и има бъгове).
Няма ли някой, който е реализирал многоезичен интерфейс на практика да се изкаже ?
проблема е че това нещо е бъгаво дори в Delphi 7.
Засега си разработвам проекта само в Delphi 5, защото на него Translation Managera горе-долу работи (поради един гаден bug в Delphi 6 и Delphi 7, който го няма в Delphi 5).
Идеята на Translation Managera на Borland е срахотна и много лесно се превежда с нея, но за съжаление за проект по-голям от 50 форми е трудно приложима (много се бави, пък и има бъгове).
Няма ли някой, който е реализирал многоезичен интерфейс на практика да се изкаже ?
Re: Превод на интерфейса на Delphi програма. Как ?
Дай повече инфо за този бъг - имам 6-ца и 7-ца инсталирани - ще го пробвам - ако трябва ще направя проект с 50+ форми. Другия вариант е да изкараш кода - и да ми пратиш само формите без код - за да видя дали проблема не ти идва от това че ползваш един и същи проект ??? Виж дали си си настройл да ти записва формите като текс - това решаваше някои проблеми при зареждането на "стари" dfm файлове от новите версии.
---
Колкото повече, толкова повече.
---
Колкото повече, толкова повече.
Re: Превод на интерфейса на Delphi програма. Как ?
Бъга е следния:
Репродуциране:
Delphi 6 sp2 и Delphi 7
1. Създаваш ново приложение.
2. Слагаш един DBGrid.
3. Добавяш някаква колонка в него.
4. На колонка променяш font-a на title да не е равен на Parent-a т.е. например му слагаш да е BOLD.
5. Създаваш езиците.
6. Статрираш приложението.
7. То чете ресурсите от ресурсния файл, не от EXE-то.
и получаваш следния Exception:
Exception EReadError in module LangTest.exe at 0002023B
Error reading DBGrid1.Columns: Error reading TColumn.Title.Font.Font: Property Font does not exists.
Забелязваш ли повторението на Font.Font ?
Това означаве, че вградения Translation Manager никой не го ползва, защото този бъг го има в Delphi 6 sp 2 и Delphi 7. А това е доста време такъв елементарн бъг да не бъде отсранен.
Друго в Delphi 6 и 7 не съм пробвал.
Сега за Delphi 5:
Другото лошо нещо е, че е много бавно update-ването на езиците. 2-3 мин. за проект от 50+ форми.
В Delphi 5 от време на време се получава загуба на превод в някои ресурси или пък не може да update-не правилно езиковите ресурси при промяна на оригиналната форма. Тогава почваш да вадиш от архиви стари ресурси и да кърпиш.
В transation manager-a на ресурсите пък забрави да работиш ако не си си махнал 'г.' от shotdatafomrat.
а и да не забравя: трябва всички форми да са затворени при update на езиците и да няма нищо изобразено в Object Inspector-a, защото иначе счупва езиковите ресурси.
Репродуциране:
Delphi 6 sp2 и Delphi 7
1. Създаваш ново приложение.
2. Слагаш един DBGrid.
3. Добавяш някаква колонка в него.
4. На колонка променяш font-a на title да не е равен на Parent-a т.е. например му слагаш да е BOLD.
5. Създаваш езиците.
6. Статрираш приложението.
7. То чете ресурсите от ресурсния файл, не от EXE-то.
и получаваш следния Exception:
Exception EReadError in module LangTest.exe at 0002023B
Error reading DBGrid1.Columns: Error reading TColumn.Title.Font.Font: Property Font does not exists.
Забелязваш ли повторението на Font.Font ?
Това означаве, че вградения Translation Manager никой не го ползва, защото този бъг го има в Delphi 6 sp 2 и Delphi 7. А това е доста време такъв елементарн бъг да не бъде отсранен.
Друго в Delphi 6 и 7 не съм пробвал.
Сега за Delphi 5:
Другото лошо нещо е, че е много бавно update-ването на езиците. 2-3 мин. за проект от 50+ форми.
В Delphi 5 от време на време се получава загуба на превод в някои ресурси или пък не може да update-не правилно езиковите ресурси при промяна на оригиналната форма. Тогава почваш да вадиш от архиви стари ресурси и да кърпиш.
В transation manager-a на ресурсите пък забрави да работиш ако не си си махнал 'г.' от shotdatafomrat.
а и да не забравя: трябва всички форми да са затворени при update на езиците и да няма нищо изобразено в Object Inspector-a, защото иначе счупва езиковите ресурси.
Re: Превод на интерфейса на Delphi програма. Как ?
По-горе ти препоръчаха компонента BalmSoft Polyglot. Преди известно време доста здраво го разрових и смея да твърдя, че е добър. Има си култирна инсталация и подробна документация. Проблема е единствено в това, че всички стрингове се съхраняват в обикновени текстови файлове, т.е. не можеш да ограничиш превода само до определни езици, а всеки ще може да си превежда програмата ти на собствения му език (това, рaзбира се, може да бъде и плюс).
Mixy
Mixy
Re: Превод на интерфейса на Delphi програма. Как ?
Непременно ще го пробвам.
Благодаря за мненията.
Благодаря за мненията.
Re: Превод на интерфейса на Delphi програма. Как ?
Дай пример как може да стане това ако имаш нещо под ръка.
Ако нямаш , дай някой линк.
Ако нямаш , дай някой линк.
Явно проблема съществува...
но има разрешение - или поне аз намерих - има проблем с първоначалното създаване на формите - не е коректно - и странното е, че не ги създава в текстови вид - dfm-тата де.
Обаче ако не те мързи - след всяка новосъздадена форма - можеш да я отвориш във всички езици - и да дадеш Ignore - на съобщението което се появява. След това десен бутон - Text DFM - и записваш - и от там нататък няма никакви ядове ;-)))) вярно, че за голям проект си е малко неприятно да се направи това за всички форми - ама при положение, че веднъж се прави - мисля, че може да се изтърпи.
---
Колкото повече, толкова повече.
Обаче ако не те мързи - след всяка новосъздадена форма - можеш да я отвориш във всички езици - и да дадеш Ignore - на съобщението което се появява. След това десен бутон - Text DFM - и записваш - и от там нататък няма никакви ядове ;-)))) вярно, че за голям проект си е малко неприятно да се направи това за всички форми - ама при положение, че веднъж се прави - мисля, че може да се изтърпи.
---
Колкото повече, толкова повече.
Re: Много добро попадение!
Много добро попадение! Още не съм го разгледал в детайли, но от пръв поглед, мисля, че е от най-добрите, които съм срещал!
Mixy
Mixy
Не забравяй основното....
че е БЕЗПЛАТНО и е със сорс!!!!!!!!!!!!!!!!!!!!!! Освен това можеш да си мигрираш от настоящия translation tool - към него до колкото разбрах - поддържа и миграция на по-ниски версии.
---
Колкото повече, толкова повече.
---
Колкото повече, толкова повече.