Есть несколько способов решения этой проблемы. Ни один из них «лучший путь» и все они с проблемами в краткосрочной или долгосрочной перспективе.
Первое, что нужно сказать, это то, что многоязычные сайты нелегки, переводчики и милые люди, но с ними трудно работать, и большинство программистов видят проблему только как техническую. Существует также другое измерение, выходящее за рамки этого ответа, относительно того, переводите ли вы или локализуете. Это включает в себя изучение культурных ценностей целевой аудитории, а затем адаптацию языка, стиля, макета, цвета, шрифта и т. Д. К этой культуре. Наконец, не используйте MT, машинный перевод, для чего-либо серьезного или, если это необходимо, чтобы быть точным, и при приобретении переводчиков убедитесь, что они переводят с иностранного языка на свой родной язык, что означает, что они понимают все нюансы целевого языка.
правый. Решения. На основании того, что вы не хотите переписывать сайт, просто клонируйте ваш сайт и переведите копии на целевой язык. Предполагая, что база кода стабильна, вы можете использовать VCS для управления любыми изменениями кода. Вы можете настроить отдельные части сайта в соответствии с целевым языком, например, французский текст в среднем на 30% больше, чем эквивалентный текст на английском языке, поэтому использование одного сайта для этого означает, что у вас могут возникнуть проблемы с форматированием, и вам придется поменять разные CSS файлы в зависимости от языка. Это может показаться неуклюжим способом сделать это, но как долго эти сайты будут существовать? Расходы на управление этим способом могут быть меньше, чем другие варианты.
Второй способ без перестройки. Замените все содержимое на текущем сайте тегами, а затем поместите другой язык в таблицы файлов или базы данных, найдите требуемый язык пользователей (есть ли у вас зарегистрированные пользователи, которые могут сделать предпочтение, или вы хотите получить языковой тег браузера или это будет URL dot-com, точка-франк, точка-де, которая делает выбор), а затем замените теги на целевой язык. Затем вам нужно решить проблемы с размерами и изображениями отдельно. Это решение действует, когда фреймворки, такие как Symfony и Zend, реализуют l10n.
Тогда вы можете перестроить с помощью фреймворка или с gettext и, возможно, иметь более чистое решение, но помните, что фреймворки были разработаны для решения других проблем, а не перевода, и компонент перевода вошел в фреймворк как частичное решение, а не полное. *
Большая проблема со всеми решениями - постоянное обслуживание. Потому что у вас есть не только кодовая база, но и несколько языковых баз для обслуживания. Если вы все в одном решении не по-настоящему умны и эффективны, выполнение текущей задачи будет трудным.