Если вы хотите напрямую включить строки в программное обеспечение, вы можете использовать ключевое слово extern
:
// someHeader.h
namespace messages
{
extern const std::string WelcomeOnBoard; // declaration
}
// someHeader.cpp
#include "myproject/someHeader.h"
namespace messages
{
const std::string WelcomeOnBoard = "Welcome on Board!"; // definition
}
Основное преимущество пространств имен заключается в том, что вы можете разбивать свои сообщения на разные файлы., чтобы сгруппировать их в зависимости от какой-либо зоны и т. д.
Однако обычно вы так не делаете.
При кодировании строк в программном обеспечении возникают проблемы обслуживания и интернационализации.
- Вы хотите удалить запятую или исправить ошибку?Перекомпилируйте
- Вы хотите перевести игру на Швецию, потому что эта девушка, которую вы действительно хотите удивить, не очень хороша в английском?Ой ... удачи.
Поэтому в программном обеспечении вы обычно используете идентификаторы, которые отображаются в строки благодаря каркасу.Один из таких известных фреймворков - gettext
. Сообщения помещаются в файл .po
с приятным графическим интерфейсом для их редактирования и имеют ссылки на идентификаторы, которые сами являются предложениями из программного обеспечения.Например:
printf (gettext ("The amount is %0" PRId64 "\n"), number);
Интерфейсы GUI включают способы поиска уже существующих сообщений, а также включают функции нечетких переводов.