Вот что я использовал для мультиязычных сайтов на Yii2:
"codemix/yii2-localeurls": "*",
"zelenin/yii2-i18n-module": "dev-master",
"omgdef/yii2-multilingual-behavior": "~2.0"
Первый пакет генерирует URL в зависимости от языка. Можно задать язык по-умолчанию.
Можно задать исключения для определенных URL, для которых не нужно делать редирект на языковую версию. Например, это актуально для /api.
Второй пакет выносит все языковые фразы в БД и создает отдельный URL /translations, через который можно переводить непереведенные фразы.
Третий пакет позволяет на лету создавать модель с переводом, чтобы для модели подтягивались данные на нужном языке. Например, у вас статья на 2 языках, и это расширение само определяет какой язык выбран у пользователя и какой языковой вариант статьи отобразить.