Показать сообщение отдельно
Старый Добавлено: 12.10.2014, 23:23
  (#42)
Akltaf
Постоялец
Пользователь
 
Аватар для Akltaf

По умолчанию

Уже пару часов размышляю, после того как скопировал со всеми цитатами ("2-мя этажами"), как более полно, правильно понять и ответить.
Цитата:
Сообщение от virtuOS Посмотреть сообщение
Мне казалось, что уже давал ответ на это: файл можно и нужно редактировать.

Снова видимо я не правильно написал. Меня в этом файле не редактирование, а именно возможность перевода интересовал.
И на счет перевода возможно тоже нужно уточнить. До меня и я дополнительно переводили именно за счет изменения "Кода" описанного у Вас ниже. Но, меняли в шапке файлов и переводили именно что есть в "только текст в двойных кавычках"
До меня в основном переводили за счет изменения через редакторов ресурсов, после задачу облегчали с помощью патчей.
Поскольку я стал делать свой вариант, и потому что мои изменения только через редактирования ресурсных файлов делать не возможно, я и перевод, до перевод стал делать в самих исходниках. За счет этого и стало возможным немного больше переводить. И осуществляется это путем создания отдельных вариантов на английском, на русском языках.
Цитата:
Файл virtualDub.ami содержит структуры (массивы) строковых констант. Когда приложению надо вывести какую-то форму, происходит загрузка данных из этой структуры. Например, строки 76-117 описывают структуру stringset 8 (в комментарии прописано описание kVDST_CaptureUI, т.е. видимо используется на форме захвата изображения. Capture переводится как захват). Если поискать текст kVDST_CaptureUI по файлам, то он обнаружится в файле captureui.cpp (capture - захват, ui - сокращение от user interface, пользовательский интерфейс). И в этом файле есть строка: enum { kVDST_CaptureUI = 8 }; (тот самый stringset 8 из virtualDub.ami). И в дальнейшем в этом файле для вывода на экран используются ссылки на элементы этой структуры.

Идея правильная. Возвращаясь к коду
Код:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
Насколько я понимаю после чтения форумов (могу ошибаться), AFX_TARG_ENU определяет региональные стандарты компьютера, на котором запускается файл. Если язык совпадает с английским (номер языка #0x409 в шестнадцатиричной системе или 1033 в десятичной системе), то загружается весь кусок файла со строки №19 до строки №3844. В принципе, для добавления русского языка надо после строки №3844 вставить точную копию всех строк из английской версии, после этого изменить условие входа на
Код:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32

Цитата:
и при желании переводить текстовое описание. Но переводить не всё подряд, а только текст в двойных кавычках.
Так можно перевести много элементов интерфейса, но не все. Файл virtualDub.ami останется без перевода.

Не уверен что все понимаю правильно. Вы описали конкретный файл, с конкретными порядковыми номерами строк в качестве примера (тогда вроде бы название файла было бы)? Для перевода отдельных слов, выражений, предложения, которые при переводе превращаются в абракадабру. Нужно во всех файлах где эти части использованы, нужно создавать копии из английского начиная с и до аналогичных строк? Даже если делать так с такими частями, которые не на большом количестве файлов встречаются, таких файлов могут оказаться довольно много.
Это не приведет в увеличению веса самого ВД?
А что и как будет определять какой вариант слова и пр. этих частей должен использоваться в конкретном месте при компиляции?
Как узнать с какими частями, файлами такой фокус нужно сделать? Проверять не попадает, не входит ли конкретное слово и пр. в структуры (массивы) строковых констант? Это может оказаться довольно трудоемким и большая часть работ может оказаться зря.
Для примера, я как то увлекся и стал переводить в разных диалоговых окнах "ОК". В нескольких файлах получилось удачно. 2-3 раза собрав убедился, все в порядке. А когда после очередной сборки файла, заметил абракадабру и пришлось довольно много возвращать обратно.
Цитата:
Интереснее было бы узнать планы по переходу на полную поддержку юникода. Тогда можно было бы исправлять текст, не опасаясь увидеть каракули в интерфейсе, т.к. юникод отображается у всех одинаково.

Нет ли способа такой поддержки самим ввести? Для это нужно все файлы переделывать, переписывать? Вопрос то разработчику можно попробовать задать. Но,
- я скорее всего не смогу изложить нормально, доходчиво и правильно;
- скорее всего никогда. Боюсь это большая работа по переделке, а его даже небольшие вещи не особо интересует. Он занимается от случая к случаю, довольно редко и совсем по чуть-чуть. И то, на мой взгляд, когда нужно какие-то свои идеи нужно опробовать перед применением их в каких платных вещах. Или на худой конец, редко когда, на недолго остается не занятым.

Последний раз редактировалось Akltaf; 12.10.2014 в 23:36..
Akltaf вне форума Отправить личное сообщение для Akltaf
Вверх
Ответить с цитированием
 
Время генерации страницы 0.05702 секунды с 12 запросами