Il y a trois points à gérer :
1] Le premier truc à gérer sera l'inversion des mots selon la langue, il te faudra un système de variable
Ex : $this->translate('Fille de %ans ans', array('%ans'=>18)); // 18 years girl ou 18 year old girl
--
2] Il faut faire gaffe à la clé de traduction que tu vas utiliser.
Par exemple, si la clé de traduction est ton texte
Ex : $this->translate('Ceci est un texte en français');
Tu peux avoir des soucis lors de la traduction de certains mots au pluriel :
Ex : $this->translate('%mois mois', array('%mois'=>1)) // 1 month
Ex : $this->translate('%mois mois', array('%mois'=>3)) // 3 months
Problème, la clé étant 'mois', on ne sait pas si on doit utiliser le pluriel ou le singulier.
Il te faudra une technique pour désambiguiser la clé de traduction.
--
3] Le dernier facteur à prendre en compte est que certaines langues possèdent des pluriels multiples, comme le russe (trois pluriels) ou le polonais (7 pluriels). Ce point peut être particulièrement compliqué à gérer.
--
D'une manière générale, les domaines couverts par la langue source et la langue de destination ne connaissent pas de bijection, il y aura toujours des approximations. L'idéal serait d'avoir comme langue source la langue la plus compliquée, mais je doute que ça soit une solution facile à gérer au quotidien ^.^