Я наконец-то решил проблему с локалями для себя. Пример ниже
таблица catalogs:
__________________
id | code | name
1 | foo | бар
__________________
я решил в name хранить названия по умолчанию (например русский)
Когда считываю значение, перед тем как отправить на фронт достаю со словаря значение по catalog.{code} и передаю его вместо name из базы, если значение нет, проставляю name для всех локалей и передаю его.
Далее можно для всех локалей нормальное значение прописать.
join не использовал, по причине, что словари в кэше