3 votes

Ajouter manuellement des clés de traduction gettext

Je crée un projet avec le phoenixframework et j'utilise gettext pour ajouter des traductions. La commande mix gettext.extract --merge récupère toutes les clés de traduction des contrôleurs et des modèles et les stocke dans le fichier .pot y .po des dossiers.

Mais j'ai des clés de traduction dans un fichier de configuration, que j'utilise comme options de sélection dans un formulaire. Pour l'instant, j'ai une liste de clés : [:key1, :key2, key3, ..., keyN] .

J'ai maintenant besoin d'une liste de mots-clés pour afficher les traductions et sélectionner les clés à l'aide de la boîte de sélection. Mon résultat est le suivant : [{"translation 1": key1}, {"translation 2": key2}, {"translation 3": key3}, ..., {"translation N": keyN}] .

Problème :

Je ne dois pas toucher mon .pot et je ne peux pas écrire mes clés de traduction dans mes fichiers de .po car ils seront perdus après l'exécution de la commande ci-dessus. Les fichiers seront écrasés.

Existe-t-il un moyen d'ajouter des traductions manuellement afin que je puisse exécuter la commande pour récupérer les nouvelles traductions de mon projet sans perdre les traductions ajoutées manuellement ?

3voto

guitarman Points 2487

Il existe une solution et elle fonctionne avec l'élixir get text implementation out of the box.

Le mot-clé est : domaine

J'ai d'abord créé un nouveau fichier pot avec toutes mes clés de traduction :

msgid ""
msgstr ""
"Language: en\n"

msgid "key1"
msgstr ""

msgid "key2"
msgstr ""

# ... and so on ...

Mon fichier s'appelle additionals.pot . Ensuite, j'exécute mix gettext.extract --merge . J'ai maintenant un additionals.po dans chaque répertoire de langue, où j'ajoute maintenant mes traductions.

Dans mon projet, j'utilise maintenant l'option dgettext du module Gettext au lieu de gettext . dgettext me permet de spécifier un domaine qui est le nom de base du nouveau fichier additionals.po fichier.

Gettext.dgettext(<MyProjectName>.Gettext, "additionals", "key1")
# => "translation 1"

C'est tout et tout fonctionne comme prévu.

Aquí est un article intéressant sur Gettext. Rechercher Domaines pour trouver une autre description comment dgettext est utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X