Итак, для моего приложения настроена небольшая система перевода, где мы генерируем список всех строк, помеченных как переводимые, помещаем их в CSV в качестве шаблона перевода, а затем переводчик заполняетследующий столбец с переводами.
Проблема, которую я пытаюсь решить, состоит в том, как извлечь набор отмеченных строк из кодовой базы, чтобы автоматизировать генерацию шаблона перевода.
Пример строкиКод c # выглядит примерно так:
textBoxName.Text = string.Format(Translate.tr("Create {0}"), NextAutoName());
И c ++ будет выглядеть так:
info_out << tr( L"Grip weights range from {0} to {1}" )(low_weight)(high_weight) << endl;
На стороне c ++ при построении списка строк для генерации шаблона используется синтаксический анализатор c ++ (см. мой предыдущий вопрос ), который выполняется как часть внешних сборок по всему коду C ++ в проекте.По сути, любая строка, помещаемая в вызов tr (), автоматически извлекается.
Есть ли лучшее решение для c #, чем написание другого парсера?Я хотел бы получить список строк, который создается во время компиляции, или тот, к которому я могу получить доступ во время выполнения.A List<string>
было бы замечательно.
Я бы хотел сохранить один и тот же формат файла перевода, потому что это значительно упрощает координацию двух сторон.Как и следовало ожидать, мы используем много строк.
Сейчас в c ++ гораздо удобнее поддерживать шаблон перевода в актуальном состоянии - мне просто нужно убедиться, что строки, которые я хочу перевести, обернуты в tr (), а анализатор обрабатывает все остальное.В c # я в настоящее время вручную проверяю все строки и обновляю фиктивную функцию на стороне c ++ новыми строками.Я близок к тому, чтобы сломать и написать еще один парсер.Я надеялся, что c #, с его высокоуровневыми функциями, мог бы сделать лучше здесь.