Приложение C # для чтения и перевода других приложений - PullRequest
3 голосов
/ 16 февраля 2011

Я пытаюсь создать Помощник по переводу, который может читать в другом скомпилированном приложении C # (.exe) и отображать формы из EXE, отображаются отдельно, рядом с таблицей рядом с английским столбцом, который покажет отображаются текущие английские слова и еще один столбец для значения, которое может ввести переводчик. После завершения переводов переводчик может экспортировать переводы в файл resx, добавить его в проект, а также в виде файла Excel для записи.

Я новичок в C # и, следовательно, не уверен, что моя структура верна, я спроектировал так, чтобы dll вставлялся в .exe во время компилятора, и затем, используя эту dll, приложение перевода может извлечь строку. Это работает для большинства строк, но застревает там, где есть несколько строк, которые могут появляться в одном и том же текстовом поле в разное время [например, отключен, подключен и т. д.]. Я пытался искать везде, но не могу найти информацию о том, как я смогу извлечь все строки из приложения и определить, к какой форме они принадлежат, чтобы создать мое приложение?

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

Я читаю в exe, используя Reflection, и из Интернета понял, что мне нужно использовать mirror.emit для изменения формы. но я нахожу, что каждое ядро, которое идентифицируется из формы, извлекается как экземпляр, следовательно, изменение строки - это изменение только экземпляра строк, а не экземпляра самой формы. следовательно, я не могу так правильно отобразить.

Я пытался решить последние два вопроса в течение 3 недель. Заранее спасибо за помощь в решении этой проблемы.

1 Ответ

0 голосов
/ 17 февраля 2011

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

textBox.Text = GetCorrectText(connection.State);

GetCorrectText может выглядеть так:

string GetCorrectText(ConnectionState state)
{
    return string.Format(Resources.ConnectionState, state);
}

Resources.ConnectionState может быть «Соединение в состоянии {0}».

Это простой пример, но вам нужно знать или извлекать много вещей:

  1. Свойство text класса TextBox - это строка, которая отображается пользователю
  2. Метод GetCorrectText возвращает текст, поэтому вам нужно его проанализировать.
  3. Метод string.Format возвращает текст. Теперь вам нужно либо жестко закодировать это для строки. Формат должен использовать первый параметр в качестве отображаемого текста, либо вам придется анализировать строку. Формат, чтобы узнать этот факт.

В примере показано что-то еще: вы не сможете перевести всю отображаемую строку, потому что часть ее является именем значения перечисления.

Я хочу показать вам, что вам нужно идти на компромиссы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...