MFC: loadstring с использованием cstring
У меня есть приложение на основе диалогов, написанное на VC++ с использованием Visual Studio 6. Это простое приложение с очень небольшим количеством текстов, но теперь они должны поддерживать несколько языков. Поскольку это не так много текстов, план состоит в том, чтобы добавить все различные языки в одну строковую таблицу с уникальным идентификатором. Итак, теперь пример Строковой таблицы выглядит следующим образом,
STRINGTABLE BEGIN IDS_STRING_OK_BUTTON_ENG "OK" //English text IDS_STRING_EXIT_BUTTON_ENG "Exit" //English text IDS_STRING_OK_BUTTON_FRA "D'accord" //French text IDS_STRING_EXIT_BUTTON_FRA "Sortie" //French text END
Теперь у меня есть функция, которая возвращает строку, основанную на настройках языка ОС.
CString strLang = ""; //Retrieves the system default locale identifier LCID lcid = GetSystemDefaultLCID(); //Determine the language identifier from the locale identifier LANGID langid = LANGIDFROMLCID(lcid); //Does many processing here........ //................................. //................................. // So if English is the OS language then this function will return "_ENG".
Что я уже пробовал:
Теперь в другой части кода этот уникальный идентификатор языка объединяется с другой строкой, чтобы найти текст конкретного языка.
CString okButton = "IDS_STRING_OK_BUTTON" + m_strLanguageIndex; //Here m_strLanguageIndex for example will be "_ENG"
Последняя строка будет такой
IDS_STRING_OK_BUTTON_ENG
Таким образом, я могу иметь только одну строковую таблицу со всеми различными языками, а затем использовать описанный выше метод для создания уникального идентификатора ресурса.
Но теперь проблема заключается в том, что идентификаторы ресурсов в файле resource.h являются целыми числами. Таким образом, приведенная выше строка C не имеет смысла для поиска соответствующего текста.
Так что я не уверен, что это сработает. Я просто выбрасываю его, чтобы посмотреть, есть ли у кого-нибудь лучшие идеи или есть какие-либо предложения, чтобы заставить вышеприведенный метод работать.
Я не хочу создавать несколько библиотек DLL для каждого языка, так как это простое диалоговое приложение.