Пишу самописный движок одного сайта.
Не буду даже объяснять насколько нелепа затея.
Просто несколько вопросов, которые Вам лучше самому себе задать и ответить:
- С какими цмс и фреймворками Вы уже работали и насколько глубоко их знаете ?
- С каким кол-вом проектов в целом уже сталкивались, какие сложности возникали ?
- На какой тип проектов рассчитана Ваша cms ?
- Какие готовые решения будете брать за основу ?
Думаю, конечно, что Вы почти ни с чем не работали еще и даже не очень представляете, как спроектировать более-менее гибкую и надежную систему, ну да ладно, это Ваше уже дело.
Какой htaccess ? А если "сайт взлетит" и придется nginx поставить ? :) Ладно, шучу, не взлетит ни сайт, ни cms, так что за это не беспокойтесь :)
По сути Вашего вопроса.
У Вас должен быть слой, который отвечает за сопоставление запроса к некоторому контроллеру/действию/методу/еще чему-то. Назовем данный слой Router.
А у Router'a может быть такая логика: если после домена идёт /(ru|en|pl), то установить в сессию или куку соответсвующее значение текущего языка.
В коде, где выводите какой-либо текст, то оборачиваете этот текст в метод перевода. Например, пусть это будет статический метод Translator::trans($message). Внутри статического метода берёте из сессии/куки текущий язык и смотрите есть ли данное сообщение для такого языка. Ну а дальше развивайте логику, как хотите.