Comment déployer la traduction de l'interface utilisateur?

12

Les chaînes que je traduis dans "Traduction de l'interface utilisateur" / admin / config / regional / translate ne sont pas exportables pour moi par "Gestion de la configuration" / admin / config / development / configuration. Suis-je en train de manquer quelque chose?

Je voudrais automatiser ce processus avec hook_update_Nou drush cim -y.

Quelle est la bonne façon de déployer automatiquement la "traduction de l'interface utilisateur" dans Drupal 8?

  1. Dois-je le faire en hook_update_N()?
  2. Dois-je créer un mytranslations.pofichier personnalisé dans le dossier de langue?

Je vois qu'il y a locale_translate_batch_import_files()ce qui pourrait être utilisé.

milkovsky
la source
Qu'avez-vous fini par faire?
Boy Baukema
@RelaXNow, je n'ai pas encore implémenté de solution. L'importation / exportation AFAICS de la traduction de l'interface utilisateur n'est pas encore automatisée. J'avais prévu d'y aller avec un hook_update_N. Jetez un œil à la suggestion de @ Berdir.
milkovsky
Connaissez-vous la nouvelle console Drupal et sa commande translation:sync? Malheureusement, je ne trouve aucune information détaillée sur cette commande, mais elle fait peut-être ce que vous recherchez.
Philipp Michael
1
Je nous ai roulé un module pour ça: drupal.org/project/customtranslations Amusez-vous.
geek-merlin
Dans notre cas, nous avons fait un test avec Potx ( github.com/kgaut/drupal-potx ) qui ne fonctionne qu'avec Drush. Pour y parvenir "facilement", nous avons créé un fichier .sh qui exécute la commande drush pour placer le fichier de traduction dans les modules / custom / translations pour chaque module et chaque langue. Ces fichiers sont ensuite ajoutés au référentiel gitlab du projet et peuvent être facilement importés en production lors d'un déploiement ...
Promo

Réponses:

6

Vous devez le faire vous-même. @rpayanm a répondu où vous pouvez le faire manuellement, vous devrez y regarder le code, et par exemple implémenter des commandes drush qui vous permettront de l'exporter et de l'importer à nouveau. Automatiser cela est alors relativement facile, exporter, synchroniser avec l'autre serveur et réimporter.

Ressemble à un projet qui aide à ce qui existe: Drush Language Commands .

Vous pouvez placer des traductions par défaut dans un module, mais celles-ci ne sont importées que lorsque vous installez ce module. hook_update_N()est conçu pour ne s'exécuter qu'une seule fois, vous devrez donc écrire une nouvelle fonction chaque fois que vous le souhaitez (et vous devez toujours l'exporter en premier).

Berdir
la source
3
drupal.org/project/drush_language a désormais une version D8 (dev).
Hugo
1
Vous pouvez vérifier la forme qui importent les traductions à partir /admin/config/regional/translate/importde core/modules/locale/src/Form/ImportForm.php.
rpayanm
drupal.org/project/drush_language résout le problème!
milkovsky
4

Fonction d'assistance pour ajouter des traductions personnalisées:

/**
 * Helper to manually add a single translation string.
 *
 * @param string $source_string
 *   Source string.
 * @param string $langcode
 *   The langcode.
 * @param string $translated_string
 *   Translated string.
 */
function MYMODULE_add_translation($source_string, $langcode, $translated_string) {
  // Find existing source string.
  $storage = \Drupal::service('locale.storage');
  $string = $storage->findString(['source' => $source_string]);
  if (is_null($string)) {
    $string = new SourceString();
    $string->setString($source_string);
    $string->setStorage($storage);
    $string->save();
  }
  // Create translation. If one already exists, it will be replaced.
  $translation = $storage->createTranslation([
    'lid' => $string->lid,
    'language' => $langcode,
    'translation' => $translated_string,
  ]);
  $translation->save();
}

Utilisation dans un hook de mise à jour:

/**
 * Add translations.
 */
function MYMODULE_update_8002() {
  MYMODULE_add_translation('Adjust', 'de', 'Anpassen');
}
milkovsky
la source
4

Vous pouvez exporter les chaînes traduites utilisées par votre site A (admin / config / regional / translate / export) puis les importer sur l'autre site (admin / config / regional / translate / import).

rpayanm
la source
1
Merci. Je sais ça. Mais ce n'est pas un déploiement automatique. Je voudrais automatiser ce processus avec hook_update_Nou drush cim -y. Je vais ajouter cela à la description.
milkovsky
1

Il semble qu'il devrait également être possible de le faire en écrivant un script pour exécuter des commandes à partir de la synchronisation locale Drush , même si je n'ai pas essayé ce module moi-même.

bdsl
la source
2
veuillez utiliser des commentaires pour cela, ce n'est pas vraiment la réponse ...
mixerowsky
1
Je ne savais pas si c'était correct ou non, alors j'ai pensé que je devais l'afficher comme réponse et laisser les autres voter ou non. Veuillez voter contre si vous pensez que c'est faux.
bdsl
1

Comme l' aexl l'a mentionné dans les commentaires sur la question, vous pouvez utiliser le module Traductions personnalisées . Avec cela, vous devriez simplement avoir besoin d'inclure drush locale-updatedans votre script de déploiement.

bdsl
la source