Перевод интерфейса
От: mikadi Россия  
Дата: 28.03.03 08:49
Оценка:
У нас тут встала задача — перевести программу на английский язык. Когда переводили сами — проблем не было
Но сейчас самим и времени нет, и перевод нужен с гарантированным качеством. Так что будем обращаться к профессиональным переводчикам.
С переводом справки (HTMLHelp) проблем нет. Есть проблема с переводом интерфейса программы (сообщений, диалогов, менюшек и т.п.). Проблема в том, каким образом встраивать переведенные строки в программу. Хочется эту процедуру упростить, чтобы не делать лишней работы.

Я тут вижу такие варианты:

  1. Отдать переводчику исходники (VC++) — пусть он прямо в ресурсах правит, с помощью Студии. Переводчик на такой вариант готов, а вот я — нет: совсем не хочется отдавать кому-то исходники.

  2. Переделать программу — все строки загружать не из ресурсов, а из какого-то внешнего текстового файла. Частично мы так и сделали (по другим причинам), но полностью на это переходить не будем — мороки много.

  3. Дать переводчику rc-файл, он его переведет, а мы потом вручную вставим в программу. Минусов тут два:
    а) переводчик во время перевода не сможет посмотреть, как это все будет выглядеть в программе
    б) нам придется потом проделать много работы, изменяя ресурсы.

  4. Воспользоваться какой-нибудь утилитой, типа Resource Hacker. Это вполне приличный вариант, но Resource Hacker при выгрузке ресурсов в rc-файл вместо символических имен констант (типа IDD_ABOUT) пишет их числовые значения (разумеется — откуда он символические имена возьмет-то?). Поэтому нам все равно придется при добавлении переведенных ресурсов пробелать много работы.
Может, кто-то уже сталкивался с такими проблемами?
Может, есть какая-то другая технология, или утилита, более навороченная, чем Resource Hacker?

Пока-что я остановился на варианте 4, но придется нам, наверное, писать свою утилиту, которая обновляет "правильный" (студийный) rc-файл на основе resource.h и переведенного rc-файлы.
Re: Перевод интерфейса
От: Denwer Россия  
Дата: 28.03.03 14:28
Оценка: 6 (1)
Здравствуйте, mikadi, Вы писали:

бла бла бла бла бла бла бла бла бла бла бла бла

А если дать только obj файлы и ресурсы, сделать мейк для перекомпиляции ресурсов и линковку потом.
Пусть правит ресурс а потом линкует и запускает.
Re: Перевод интерфейса
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 28.03.03 15:29
Оценка:
Здравствуйте, mikadi, Вы писали:

[]

M>Я тут вижу такие варианты:


M>

    []

    M>
  1. Переделать программу — все строки загружать не из ресурсов, а из какого-то внешнего текстового файла. Частично мы так и сделали (по другим причинам), но полностью на это переходить не будем — мороки много.
    M>

Эээ.. Имхо на данном этапе развития индустрии ПО надо _сразу_ предусматривать многоязычный интерфейс. Пусть только предусматривать на уровне архитектуры, но предусматривать. Иначе — вы правы, потом мороки будет много

З.Ы. И кстати, не так много и мороки Если программный продукт — утилита средней руки (под этими словами я подразумеваю "средний класс", т.е. не самая простая, но и не навороченная) — пару дней на пришлепывание сбоку (т.к. в старой архитектуре, судя по всему, не было этого предусмотрено) модуля поддержки мультиязычности, плюс пару дней — на вписывание кода. Все имхо с поправкой на то, что я занимался в свое время подобной проблемой.
Re[2]: Перевод интерфейса
От: mikadi Россия  
Дата: 28.03.03 15:39
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Здравствуйте, mikadi, Вы писали:


D>А если дать только obj файлы и ресурсы, сделать мейк для перекомпиляции ресурсов и линковку потом.

D>Пусть правит ресурс а потом линкует и запускает.

Надо подумать. В принципе, как разновидность варианта (1) может и получиться. Переводчику придется устанавливать VC, но это уже проблема решаемая. Спасибо за идею, я почему-то мимо нее прошел .
Re[2]: Перевод интерфейса
От: mikadi Россия  
Дата: 28.03.03 15:44
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Эээ.. Имхо на данном этапе развития индустрии ПО надо _сразу_ предусматривать многоязычный интерфейс. Пусть только предусматривать на уровне архитектуры, но предусматривать. Иначе — вы правы, потом мороки будет много


F>З.Ы. И кстати, не так много и мороки Если программный продукт — утилита средней руки (под этими словами я подразумеваю "средний класс", т.е. не самая простая, но и не навороченная) — пару дней на пришлепывание сбоку (т.к. в старой архитектуре, судя по всему, не было этого предусмотрено) модуля поддержки мультиязычности, плюс пару дней — на вписывание кода. Все имхо с поправкой на то, что я занимался в свое время подобной проблемой.


Речь не о том. Поддержка многоязычности у нас есть, с этим никаких проблем . Но кроме поддержки многоязычности нужна еще и сама многоязычность , то бишь переведенные "сторонним" человеком сообщения и т.п. как-то должны оказаться внутри программы . Я ищу варианты взаимодействия с переводчиком — чтобы вставить "результат его труда" в программу.
Re[3]: Перевод интерфейса
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 28.03.03 15:51
Оценка: 9 (2)
Здравствуйте, mikadi, Вы писали:

[]

M>Речь не о том. Поддержка многоязычности у нас есть, с этим никаких проблем . Но кроме поддержки многоязычности нужна еще и сама многоязычность , то бишь переведенные "сторонним" человеком сообщения и т.п. как-то должны оказаться внутри программы . Я ищу варианты взаимодействия с переводчиком — чтобы вставить "результат его труда" в программу.


Речь о том самом Если возможность мультиязычности предусмотрена архитектурой, то вы просите переводчика скачать и установить программу (а иначе нафик такой заочный перевод), и высылаете ему файлик вида:


[Главная форма]
Caption=Название моеу суперпроги # этот комментарий объясняет, что к чему...

[Вторая форма]
...


Идея более чем прозрачна...
Re[4]: Перевод интерфейса
От: Frostbitten Россия  
Дата: 28.03.03 19:19
Оценка:
Здравствуйте, Flamer, Вы писали:

F>
F>[Главная форма]
F>Caption=Название моеу суперпроги # этот комментарий объясняет, что к чему...
F>...
F>


F>Идея более чем прозрачна...


...а как же сплаши с нарисованным текстом, кнопки с нарисованым текстом, а такое иногда может быть не (пробел) обходимо (в смысле, нельзя обойти:) по историческим, например, причинам, а если учесть, что для различных языков может потребоваться чуть различный layout диалогов.

Тогда лучше resource-only dll'ы. Хотя идея передавать .obj'ы для последующей линковки весьма остроумна и мне очень пронравилась.
Re[5]: Перевод интерфейса
От: _wqwa США  
Дата: 29.03.03 08:19
Оценка:
Здравствуйте, Frostbitten, Вы писали:

F>Здравствуйте, Flamer, Вы писали:


F>>
F>>[Главная форма]
F>>Caption=Название моеу суперпроги # этот комментарий объясняет, что к чему...
F>>...
F>>


F>>Идея более чем прозрачна...


F>...а как же сплаши с нарисованным текстом, кнопки с нарисованым текстом, а такое иногда может

текст можно и на ходу на сплеши и на кнопки нарисовать, это не проблема.
F>быть не (пробел) обходимо (в смысле, нельзя обойти:) по историческим, например, причинам, а если учесть,
F>что для различных языков может потребоваться чуть различный layout диалогов.
Если имеется в виду просто подгонка размеров контролов под разные размеры текста на разных языках, то это тоже в рантайме посчитать можно (а GTK+, которую я сейчас пользую -- вообще этого не требует -- сама ресайзит все, как надо)

F>Тогда лучше resource-only dll'ы. Хотя идея передавать .obj'ы для последующей линковки весьма остроумна и мне очень пронравилась.


Может... Но я пока не вижу чем принципиально отличается такая ДЛЛ от файла(файлов) данных.
RSDN@Home
Кто здесь?!
Re[4]: Перевод интерфейса
От: mikadi Россия  
Дата: 29.03.03 08:51
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Речь о том самом Если возможность мультиязычности предусмотрена архитектурой, то вы просите переводчика скачать и установить программу (а иначе нафик такой заочный перевод), и высылаете ему файлик вида:


F>

F>[code]
F>[Главная форма]
F>Caption=Название моеу суперпроги # этот комментарий объясняет, что к чему...

Идея-то прозрачна, но делать так мы не будем. Пробовали как-то -- геморрой получается, если руками во всех диалогах, менюшках и т.п. строки выводить. В тексте получается много мусора (лишнего кода) и потом трудно править.
Наверное, лучше попробуем вариант с линковкой ресурсов к obj-ам.
Re: Перевод интерфейса
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 29.03.03 11:50
Оценка:
Здравствуйте, mikadi, Вы писали:

M>У нас тут встала задача — перевести программу на английский язык. Когда переводили сами — проблем не было

M>Но сейчас самим и времени нет, и перевод нужен с гарантированным качеством. Так что будем обращаться к профессиональным переводчикам.

Имхо, проще написать пару-тройку утилит по переводу ресурсов из EXE, DLL-файлов в INI-файл и наоборот. Или поискать нечто подобное.

В Delphi я пользуюсь ITE. Минус у него только один --- зачастую переводчиками программы являются добровольцы, а им не хочеться для перевода устанавливать программу правки ресурсов. Давно мечтаю написать мечтаю вроде Res Hacker-а, но как утилиту командной строки для генерации и обновления ресурсных DLL.
Re[6]: Перевод интерфейса
От: Frostbitten Россия  
Дата: 29.03.03 12:57
Оценка: 4 (1)
Здравствуйте, _wqwa, Вы писали:

F>>...а как же сплаши с нарисованным текстом, кнопки с нарисованым текстом, а такое иногда может

W>текст можно и на ходу на сплеши и на кнопки нарисовать, это не проблема.

Это все вы говорите првильные вещи. Но на сплаше хочется извратиться и откинуть от текста тень (жестоко упрощаю, но я думаю проблема ясна).

Стоит к этому добавить что в программа хромышленной автоматизацци (я этим немного занимаюсь) на кнопках обычно нарисованы символы (пиктограмки, значки), без или с буквами, но текст там является частью символа (значка), а эти символы определяются стандартами ли, традициями ли, но различны для различных культур, в общем случае я не могу согласиться с тем, что перевод интерфейса можно свести к переводу текстовых строк.

W>Если имеется в виду просто подгонка размеров контролов под разные размеры текста на разных языках, то это тоже в рантайме посчитать можно (а GTK+, которую я сейчас пользую -- вообще этого не требует -- сама ресайзит все, как надо)


Ну это частный слачай. Иногда приходиться все-таки и переставить местами пару контролов, а где-то в комбобоксе слишком длинные названия получаются и хочется чтобы они не только при выпадении видны были, но и "так".

F>>Тогда лучше resource-only dll'ы. Хотя идея передавать .obj'ы для последующей линковки весьма остроумна и мне очень пронравилась.

W>Может... Но я пока не вижу чем принципиально отличается такая ДЛЛ от файла(файлов) данных.

Нет, ну resource-only dll вообще не очень хороша, так как если локализация "влита" в exe'шник, это можно использовать для ограничения экспорта ( %) я имею в виду модель типа MS Office — то есть удобнее иметь несколько локализованных версий за разные цены, чем одну, но с набором локализаций к ней) и отдельные файлы тоже в этом смысле не очень подходят.

Такое мое imho.
Re: Перевод интерфейса
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.03.03 17:17
Оценка:
Здравствуйте, mikadi, Вы писали:

Вынести все строки в отдельный текстовый (лучше хмл) файл, а потом прицепить этот файл как ресурс.
... << RSDN@Home 1.0 beta 6 (np: тихо) >>
AVK Blog
Re: Перевод интерфейса
От: Dr_Sh0ck Беларусь  
Дата: 02.04.03 01:05
Оценка:
Здравствуйте, mikadi, Вы писали:

M>Может, есть какая-то другая технология, или утилита, более навороченная, чем Resource Hacker?


Restorator
Do not fake yourself ;)
ICQ#: 198114726
Re: Перевод интерфейса
От: SergeyIT Россия  
Дата: 03.04.03 11:01
Оценка:
Здравствуйте, mikadi, Вы писали:

M>Пока-что я остановился на варианте 4, но придется нам, наверное, писать свою утилиту, которая обновляет "правильный" (студийный) rc-файл на основе resource.h и переведенного rc-файлы.


Лет 6 назад писал я утилиту на Delphi для редактирования разноязыковых (до 8 языков) RC файлов для большого проекта, написанного на BC5. Утилита предназначалась для переводчиков (внешних и внутренних) не знакомых с программированием
1. Пердусматривалась возможность редактирования только строк, которые показываются в интерфейсе, но всех выбранных языков сразу.
2. Примерная отрисовка меню и диалогов с визуализацией редактируемого элемента типа как в Workshop.
4. Изменение размеров и положения контролов.
3. Экспорт картинок и редактируемых строк в MS WinWord.

Заняла у меня эта работа в сумме около 8 недель.
Так что вперед
Извините, я все еще учусь
Re[7]: Перевод интерфейса
От: _wqwa США  
Дата: 03.04.03 12:06
Оценка:
Логично...
Не позволю себе с Вами не согласиться
RSDN@Home
Кто здесь?!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.