Как правило организовывается папка с названием типа languages в неё добавляются локализованные папки ru, en, и т.д. Дальше технология следующая: Если у тебя ресурс требующий обязательной регистрации (например игра) то целесообразно метку языка ставить в базе пользователя и ему в опциях предоставить возможность выбора языка. Если у тебя нечто общего характера (например сайт предприятия) то целесообразно где нибудь в удобном месте расположить ссылки языковые и при клике на них загонять в куки пользователя метку языка, а затем её собственно и проверять... Можно также использовать комбинированный способ...
Сами языковые файлы можно организовать следующим образом:
Либо один файл на весь ресурс (в случае если на ресурсе немного текста), или несколько разных файлов которые будут вызываться каждый в своём конкретном случае.
Лучше всего заполнять языковые файлы в виде массива:
PHP:
$lang['идентификатор1'] = бла бла бла;
$lang['идентификатор2'] = ох ох ох;
Это удобно тем, что в коде скрипта сразу видно, что подгружается языковая переменная, к тому же иногда необходимо языковые переменные объявить глобально, в таком случае достаточно будет объявить только одну переменную
а не перечислять все переменные из файла...
Еще один + этого метода - можно организовать многомерный массив(например названия изделий одного вида)
PHP:
$lang['avto']['mazda'] = 'Мазда';
$lang['avto']['vaz'] = 'Жигули';
$lang['avto']['mersedes'] = 'Мерседес';
или
PHP:
$lang['mazda']['name'] = 'Мазда';
$lang['mazda']['description'] = 'Отличная машина от японского производителя...';
собственно изголяться можно по всякому...
Подгружается языковой файл как правило один раз в начале скрипта, который будет использовать переменные их этого файла, через функцию
PHP:
include('./path_to_file/main.ln');
Собственно в общих чертах всё...