Имейте язык текущего пользователя как свойство вашего пользовательского объекта (или любой другой шаблон, который вы используете для отслеживания пользователя). Когда вы запрашиваете в БД строки, добавьте условное выражение для извлечения языка текущего пользователя, если оно доступно.
В этом примере я поместил language_id в $_SESSION
; Обычно я не отслеживаю пользователей таким образом, но я думаю, что концепция проиллюстрирована. В вашей базе данных каждый продукт будет иметь несколько записей для каждого языка, при этом 0 будет сайтом по умолчанию (предположительно, английский). Запрос захватит позицию, зависящую от языка, или вернется к сайту по умолчанию, если недоступен элемент для конкретного языка.
// the id of the item you're after
$item_id = 1;
$sql = 'SELECT id, name FROM product_names WHERE item_id = '.$item_id.' AND (language_id = '.$_SESSION['user']['language'].' OR language_id = 0) ORDER BY language_id DESC LIMIT 1';
Я использую эту же концепцию для общих строк вокруг сайта - у меня есть таблица базы данных с именем "content_strings" с полями id, text и language_id.