Существует несколько способов решения этой проблемы. Ни один из них «лучший способ», и все они с проблемами в краткосрочной или долгосрочной перспективе. Самое первое, что можно сказать, это то, что многоязычные сайты нелегкие, переводчики и прекрасные люди, но с трудом работать, и большинство программистов рассматривают проблему как техническую. Существует также другое измерение, выходящее за рамки этого ответа, относительно того, выполняете ли вы перевод или локализуете. Это включает в себя изучение культурной атмосферы целевой аудитории, а затем адаптацию языка, стиля, макета, цвета, шрифта и т. Д. К этой культуре. Наконец, не используйте MT, машинный перевод, для чего-либо серьезного или если он должен быть точным, и при приобретении переводчиков убедитесь, что они переводят с иностранного языка на их родной язык, что означает, что они понимают все нюансы целевого языка.
Право. Решения. Исходя из того, что вы не хотите переписывать сайт, просто клонируйте свой сайт и переведите копии на целевой язык. Предполагая, что база кода стабильна, вы можете использовать VCS для управления любыми изменениями кода. Вы можете настроить отдельные части сайта так, чтобы они соответствовали целевому языку, например, французский текст в среднем на 30% больше, чем эквивалентный текст на английском языке, поэтому использование одного сайта для доставки означает, что вы можете (иметь) проблемы с форматированием и должны различный css-файл в и в зависимости от языка. Это может показаться неуклюжим способом сделать это, но как долго будут существовать сайты? Накладные расходы на управление этим способом могут быть меньше, чем другие варианты.
Второй путь без перестройки. Замените весь контент на текущем сайте тегами и затем поместите другой язык в файлы или таблицы db, обнюхайте нужный язык пользователей (у вас есть зарегистрированные пользователи, которые могут сделать предпочтение или вы хотите получить тег языка браузера, или это будет URL dot-com dot-fr, dot-de, который сделает выбор), а затем замените теги на целевой язык. Затем вам нужно решить проблемы с размерами и проблемы с изображениями отдельно. Это решение действует, когда такие платформы, как Symfony и Zend, реализуют l10n.
Затем вы можете перестроить с помощью фреймворка или с помощью gettext и, возможно, иметь более чистое решение, но помните, что фреймворки были предназначены для решения других проблем, а не для перевода, а компонент перевода пришел в рамки как частичное решение, а не полное.
Большой проблемой со всеми решениями является постоянное обслуживание. Потому что не только у вас есть база кода, но и несколько языковых баз для поддержки. Если вы все в одном решении не будете действительно умны и эффективны, то текущая задача будет сложной.
Я думаю, что это очень изящное решение, не знаю, почему у него всего 3 голоса. – 2013-04-07 01:18:41
Этот ответ должен быть сверху, так как он одновременно: простой и эффективный. – Ahmad 2016-01-06 10:20:17
Элегантный? Просто? О нет. @Veynom абсолютно прав, говоря, что он предназначен для небольших сайтов. Когда вы открываете свой код и видите переменные вместо текстовых строк на английском (или ваш первый язык), это становится все более громоздким для поддержания. – 2016-03-22 23:29:12