Как поместить строки в stringtables в MFC? - PullRequest
2 голосов
/ 10 апреля 2009

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

У кого-нибудь есть идея получше, чем вручную просматривать сотни файлов и делать случайные ошибки на этом пути?

Есть ли какой-нибудь продукт, чтобы помочь?

У кого-нибудь есть опыт в этом деле?

Ответы [ 2 ]

2 голосов
/ 06 октября 2009

Я знаю, что уже слишком поздно, но только для поисковой системы.
Функция CString позволяет инициализировать ее из идентификатора ресурса.

CString((LPCTSTR)IDS_RESOURCE_ID)
2 голосов
/ 10 апреля 2009

Конечно, это утомительный процесс. Я участвовал в таких усилиях много лет назад. Мы сделали это вручную. Вы, вероятно, можете написать какой-то общий код, который делает загрузку, проверку и т. Д. Довольно чистыми с минимальным раздуванием.

Я не знаю ни одного продукта, который бы сделал это для вас.

CStrings может быть вашим другом - с помощью члена LoadString ().

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

Если вы предпочитаете не использовать CString, то вывод из std :: string и использование глобальной LoadString () также работает нормально.

как для инструментов: не уверен, что они будут работать для вашего случая http://www.modelmakertools.com/articles/hard-coded-strings.html

очевидно, этот инструмент может найти все строки в ваших exe-файлах: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx Затем вы можете найти их и заменить.

Я думаю, что написание инструмента было бы довольно просто - найдите символ "и затем создайте запись в файле rc, которая соответствует файлу .cpp или .h, из которого он получен. У вас будет много проблем, но это только начало. Вы можете заменить текст или вставить комментарии и т. д. Вы можете использовать номер строки и имя файла для идентификатора / имени ресурса в #include.

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