читайте
php.net/gettext
php.net/setlocale
// не хотел пока прибегать к готовым решениям (вроде Gettext)
ух, не заметил ) но по личному же опыту скажу - если будете писать свое - уйдет куча времени, а толку будет мало. вы знаете особенности всех языков мира? значит решение будет заточено только на пару известных вам языков, и шишек набьете море.
по поводу языка из браузера - лучше предлагать переход на версию с этим языком, а сайт сделать в обоих версиях доступным всем. так более гуманнее (у меня, к примеру, система на английском) и дружелюбнее к ботам.
ну и стоит разделять интерфейс и контент. контент скорее всего будет различаться сильнее, чем кажется, поэтому может быть удобно не делать перевод каждой строки в базе/заводить поля, а использовать отдельную базу, либо фильтровать записи по отдельному полю с пометкой локали.