Мульти строки и translation
Модератор: Модераторы
Мульти строки и translation
Сегодня начал переводить на другие языки свою программулину и прозрел, насколько я понял, lazarus не умеет переводить мульти строки
. Для перевода использую в модулях DefaultTranslator и mo файлы. В программе уже натыкано много Label с Caption и Hint с переносами на несколько строк. И как выяснилось такие компоненты не переводятся, на оф. wiki есть скудное и не совсем внятное упоминание об этом. Может я не прав, кто то сталкивался с подобной проблемой?
Мульти строки поддерживаются
вполне будет работать, только #13#10 будет заменено на \n
Но перевод TMemo1.lines с формы осуществлен не будет, переводятся только TTranslatedString, не TStrings
Код: Выделить всё
resourcestring;
rsmltext='Multi'+#13#10+
'multi'#13#10+
'line'#13#10;
...
TMemo1.text:=rsmltext;вполне будет работать, только #13#10 будет заменено на \n
Но перевод TMemo1.lines с формы осуществлен не будет, переводятся только TTranslatedString, не TStrings
- alexs
- долгожитель
- Сообщения: 4069
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
khvalera писал(а):В программе уже натыкано много Label с Caption и Hint с переносами на несколько строк
Всё нормально переводится. И одинарные строки. И многострочные метки.
В параметрах проекта включаешь i18n. В качестве папки вывода указываешь locale
Собираешь проект. Рядом с исполняемым файлом появляется папка locale. В ней будет файл с ресурсами *.pot. Копируешь его в файл соответсвующего языка - например project1.ru.po. Переводишь строки.
После этого запускаешь твой проект. Перевод будет. Если язык локали отличается от нужно тебе - можно указать явно язык - --lang ru
Если хочешь чтобы все эелементы с формы автоматически попадали в файл языковых ресурсов - проверь чтобы в инспекторе проекта на форме (по правому клику мышки) была включена i18n.
За #13#10 в оф. вики читал и пробовал, но не прокатило, не работает, может я что то упускаю, толи накосячили в новых сборках Лазарус.
Сделал тестовый пример, будет проще выяснить проблему.
Да, забыл написать, все проверялось под linux, сейчас попробую проверить и под Windows.
Добавлено спустя 9 минут 46 секунд:
Под Windows тот же результат, проверял на lazarus 2.02.
Сделал тестовый пример, будет проще выяснить проблему.
Да, забыл написать, все проверялось под linux, сейчас попробую проверить и под Windows.
Добавлено спустя 9 минут 46 секунд:
Под Windows тот же результат, проверял на lazarus 2.02.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Протормозил, услышав про многострочность - сразу в голове мемо засело. с каптионом и хинтом вообще проблем никаких нет.
Если используется штатный переводчик (т.е. просто uses ...DefaultTranslator,...) файлы po должны лежать рядом с ексешником или в захардкоженых лцлем подпапках languages, locale (надо глядеть исходники непомню все точно), папка которая указана в настройках проекта работает только при создании локалей лазарем.
у вас в настройках указана папка PO в рантайме она неподхватывается
Если используется штатный переводчик (т.е. просто uses ...DefaultTranslator,...) файлы po должны лежать рядом с ексешником или в захардкоженых лцлем подпапках languages, locale (надо глядеть исходники непомню все точно), папка которая указана в настройках проекта работает только при создании локалей лазарем.
у вас в настройках указана папка PO в рантайме она неподхватывается
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
в LCLTranslator есть
procedure SetDefaultLang(Lang: string; Dir: string = ''; ForceUpdate: boolean = true);
там и задается рантайм путь к языковым файлам.
procedure SetDefaultLang(Lang: string; Dir: string = ''; ForceUpdate: boolean = true);
там и задается рантайм путь к языковым файлам.
>>там и задается рантайм путь к языковым файлам.
а в DefaultTranslator она вызывается
соответственно все ищется по дефолтным путям, вызывайте сами, не юзайте DefaultTranslator
а в DefaultTranslator она вызывается
Код: Выделить всё
initialization
//It is safe to place code here as no form is initialized before unit
//initialization is made
SetDefaultLang('', '', '', false);
end.соответственно все ищется по дефолтным путям, вызывайте сами, не юзайте DefaultTranslator
zub писал(а):Протормозил, услышав про многострочность - сразу в голове мемо засело. с каптионом и хинтом вообще проблем никаких нет.
Если используется штатный переводчик (т.е. просто uses ...DefaultTranslator,...) файлы po должны лежать рядом с ексешником или в захардкоженых лцлем подпапках languages, locale (надо глядеть исходники непомню все точно), папка которая указана в настройках проекта работает только при создании локалей лазарем.
у вас в настройках указана папка PO в рантайме она неподхватывается
Добавлено спустя 11 минут 28 секунд:
zub писал(а):>>там и задается рантайм путь к языковым файлам.
а в DefaultTranslator она вызываетсяКод: Выделить всё
initialization
//It is safe to place code here as no form is initialized before unit
//initialization is made
SetDefaultLang('', '', '', false);
end.
соответственно все ищется по дефолтным путям, вызывайте сами, не юзайте DefaultTranslator
... проверил у меня не заработало!
положите туда PO и все заработает
он подхватывает MO из locale, что там у вас внутри MO переведено - мне посмотреть нечем - формат не текстовый. Возможно чтото нетак с лцлной MO читалкой или с форматом этих MO
он подхватывает MO из locale, что там у вас внутри MO переведено - мне посмотреть нечем - формат не текстовый. Возможно чтото нетак с лцлной MO читалкой или с форматом этих MO
zub писал(а):положите туда PO и все заработает
он подхватывает MO из locale, что там у вас внутри MO переведено - мне посмотреть нечем - формат не текстовый. Возможно чтото нетак с лцлной MO читалкой или с форматом этих MO
ТЕМА ЗАКРЫТА
... век живи, век учись, po из locale сработал
