Я чувствую, что должны, по крайней мере, быть комментарии относительно принятых параметров и типы возврата с точки зрения того, каковы они.
можно пропустить детали реализации в случае, если имена функций описывают его полностью, для, например, sendEmail (..) ;
Я бы использовал модуль языковых файлов. С помощью gettext вам нужно указать локаль для каждого языка. Лучше всего иметь отдельные файлы .po / .mo для каждого модуля или больших частей вашего сайта.
Это мое мнение. : -)
Я обычно автоматизирую этот процесс и использую несколько языков в нескольких файлах, используя базу данных для редактирования сайта (используя простой поиск в базе данных). Это позволяет мне нанимать переводчиков, чтобы они могли легко проверить текущий перевод. В таком случае развертывание в производственной среде просто превращает базу данных в набор языковых файлов.
Исходя из опыта, я бы разбил языки по каждому файлу, так как накладные расходы на управление становятся тяжелыми, и появляется большая вероятность дублирования и ошибок.
Другое преимущество заключается в том, что использование структура каталогов и соглашение об именах. правильный язык можно выбрать программно легче, чем большой файл, и легче написать инструменты управления на более поздней стадии проекта.
Также стоит взглянуть на некоторые форматы, которые используют другие люди. . Многие из фреймворков используют такую структуру, Dashcode, Symfony, Zend и т. Д. И есть xml-формат xliff, который создан для обработки перевода и интегрируется со многими инструментами, которые используют переводчики.
Использование нескольких файлов - лучший способ, но все может быть дезорганизовано.
Мы только что запустили новую бесплатную службу под названием String, которая решает большинство проблем с управлением файлами на нескольких языках - как базовый лагерь для локализации. Вы можете либо импортировать существующие файлы, либо начать с нуля с ключами и строками в системе. Когда вы будете готовы, вы можете снова экспортировать файлы, чтобы запустить приложение. Он работает с форматами PHP (массив), PHP (определение), po, yaml, ini и .strings.
String позволяет легко сотрудничать с переводчиками - вы просто приглашаете их в проект и устанавливаете их языковые разрешения. Переводчики могут оставлять комментарии и вопросы к каждой строке, если им нужна дополнительная информация - и вы можете вернуть строки обратно с помощью функции History, если что-то не так.
В любом случае, достаточно коммерческого предложения! Проверьте это на http://mygengo.com/string - мы будем рады вашим отзывам.