Pierwszym pomysłem który mi się nasuwa jest stworzenie tabeli w bazie o strukturze:
| id | route_name | language | translation_code | translation |
I Kolejno route_name trzyma nazwe route na którym dane tłumaczenie ma być użyte, language ofc język, translation_code coś dzięki czemu rozpoznasz jaki to ma być tekst, i samo translation które jest tłumaczeniem.
Myk polega na tym, że tworzysz jakiegoś bundla który pobiera wszystkie tłumaczenia dla danego routa i języka. Potem własna funkcja w twigu która z pobranych danych wyszukuje odpowiedni kod i zwraca odpowiednie tłumaczenie.
Plan nie jest idealny bo uniemożliwia używanie jednego tłumaczenia wiele razy (no chyba, że zrobisz umownego routa np. global i jego wartości będą pobierane wszędzie).
Trochę to pogmatwane, nie wiem jak się sprawdzi ale możesz w tą stronę pomyśleć jak nie znajdziesz alternatywy.