Разумеется, в любой уважающей себя программе, будь-то веб или десктопный продукт, сами сообщения в коде жёстко не вбиты, они берутся из соответствующего файла(ов) сообщений текущего выбранного ланга.
E.g., в шаблонах для CMS Joomla сообщения выводятся так:
<?php echo JText::_('TPL_JOOMLA-SOME_TEXT'); ?>
Код TPL_JOOMLA-SOME_TEXT
это уникальный текстовый индекс сообщения в файле сообщений, который может называться, e.g., так «en-GB.tpl_foo_joomla.ini» и выглядеть, e.g., так:
TPL_JOOMLA-SOME_TEXT="Foo" TPL_JOOMLA-FOOTER_LINK_TEXT="All rights reserved." TPL_JOOMLA-FIELD_LOGOTEXT_DESC="Logo text" TPL_JOOMLA-FIELD_LOGOTEXTPOSITION_LABEL="Vertical offset of the logo text in px." TPL_JOOMLA-FIELD_LOGOTEXTPOSITION_DESC="" TPL_JOOMLA-FIELD_LOGOFONTSIZE_LABEL="Logo's fontsize in px." TPL_JOOMLA-FIELD_LOGOFONTSIZE_DESC=""
Как же быть с переменными в сообщениях? Здесь ключевую роль выполняет функция printf
и ей подобные, которые позволяют делать вывод текста с подстановкой. Именно через эту функцию перегоняются сообщения интерфейса при их выводе чтобы подставить в сообщение нужные переменные.
Вот, e.g., как выглядит часть текстового файла локализации программы, где каждое сообщение написано на отдельной строке и имеет свой уникальный числовой идентификатор:
5219,"Имя '%1' зарезервировано и не может быть использовано!" 5220,"Имя содержит недопустимый символ '%1'!" 5221,"Имя содержит недопустимый управляющий символ no.%1!" 5227,"Поиск прерван - достигнут заданный максимум дубликатов ( %1 )." 5229,"УДАЛЕН: %1" 5230,"Произошла ошибка при удалении файла '%1' внутри zip-файла '%2': %3"
Функция printf
и её аналоги есть во всех языках программирования.
Как видно, единого стандарта оформления файлов сообщений нет и каждый разработчик делает как хочет. Обычно для каждого сообщения используется отдельная строка. Индексы сообщений могут быть просто как числовые, так и текстовые. Проблема лишь в том как потом этот файл парсить и разбирать. Я был рекомендовал не придумывать свои собственные форматы записи текстовых сообщений, а использовать уже имеющиеся и распространённые стандарты записи данных в текстовые файлы, такие как XML, JSON, или хотя бы тот же CSV на худой конец. Такие форматы легко парсить и скорее всего вам даже не придётся писать парсер для них т.к. готовых парсеров для этих стандартов полно.