Wie kann ich die Übersetzung der Benutzeroberfläche bereitstellen?

12

Zeichenfolgen, die ich unter "Übersetzung der Benutzeroberfläche" / admin / config / regional / translate übersetze, können von "Configuration Management" / admin / config / development / configuration für mich nicht exportiert werden. Vermisse ich etwas

Ich möchte diesen Prozess mit hook_update_Noder automatisieren drush cim -y.

Was ist ein geeigneter Weg, um "User Interface Translation" in Drupal 8 automatisch bereitzustellen?

  1. Soll ich es machen hook_update_N()?
  2. Soll ich eine benutzerdefinierte mytranslations.poDatei im Sprachordner erstellen ?

Ich sehe, dass es locale_translate_batch_import_files()welche gibt, die verwendet werden könnten.

melkowski
quelle
Was hast du am Ende gemacht?
Junge Baukema
@RelaXNow, ich habe noch keine Lösung implementiert. Der AFAICS-Import / Export der Übersetzung der Benutzeroberfläche ist noch nicht automatisiert. Ich hatte vor, mit einem zu gehen hook_update_N. Schauen Sie sich @ Berdirs Vorschlag an.
Milkovsky
Kennen Sie die neue Drupal-Konsole und ihren Befehl translation:sync? Leider kann ich keine detaillierten Informationen zu diesem Befehl finden, aber vielleicht macht er das, wonach Sie suchen.
Philipp Michael
1
Ich habe uns dafür ein Modul gerollt: drupal.org/project/customtranslations Viel Spaß.
Geek-Merlin
In unserem Fall haben wir einen Test mit Potx ( github.com/kgaut/drupal-potx ) durchgeführt, der nur mit Drush ausgeführt wird. Um dies "einfach" zu erreichen, haben wir eine .sh-Datei erstellt, die den Befehl drush ausführt, um die Übersetzungsdatei für jedes Modul und jede Sprache in modules / custom / translations abzulegen. Diese Dateien werden dann zum Gitlab-Repository des Projekts hinzugefügt und können während einer Bereitstellung problemlos in die Produktion importiert werden ...
Promo

Antworten:

6

Das musst du selbst machen. @rpayanm hat geantwortet, wo Sie es manuell tun können. Sie müssen sich den Code dort ansehen und beispielsweise Drush-Befehle implementieren, mit denen Sie ihn exportieren und erneut importieren können. Das zu automatisieren ist dann relativ einfach, exportieren, mit dem anderen Server synchronisieren und erneut importieren.

Sieht aus wie ein Projekt, das dabei hilft: Drush Language Commands .

Sie können Standardübersetzungen in ein Modul einfügen, diese werden jedoch nur importiert, wenn Sie dieses Modul installieren. hook_update_N()ist so konzipiert, dass es nur einmal ausgeführt wird, sodass Sie jedes Mal eine neue Funktion schreiben müssen, wenn Sie dies möchten (und Sie müssen sie immer noch zuerst exportieren).

Berdir
quelle
3
drupal.org/project/drush_language hat jetzt eine D8 (dev) -Version.
Hugo
1
Sie können das Formular überprüfen die Übersetzungen importieren aus /admin/config/regional/translate/importauf core/modules/locale/src/Form/ImportForm.php.
Rpayanm
drupal.org/project/drush_language löst das Problem!
Milkowski
4

Hilfsfunktion zum Hinzufügen benutzerdefinierter Übersetzungen:

/**
 * 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();
}

Verwendung in einem Update-Hook:

/**
 * Add translations.
 */
function MYMODULE_update_8002() {
  MYMODULE_add_translation('Adjust', 'de', 'Anpassen');
}
melkowski
quelle
4

Sie können die von Ihrer Site A verwendeten übersetzten Zeichenfolgen exportieren (admin / config / regional / translate / export) und sie dann auf der anderen Site importieren (admin / config / regional / translate / import).

rpayanm
quelle
1
Danke. Ich weiß das. Es handelt sich jedoch nicht um eine automatische Bereitstellung. Ich möchte diesen Prozess mit hook_update_Noder automatisieren drush cim -y. Ich werde dies der Beschreibung hinzufügen.
Milkovsky
1

Es sieht so aus, als ob es auch möglich sein sollte, dies durch Schreiben eines Skripts zum Ausführen von Befehlen aus der Drush-Gebietsschemasynchronisierung zu tun , obwohl ich dieses Modul selbst nicht ausprobiert habe.

bdsl
quelle
2
Bitte verwenden Sie Kommentare dafür, es ist nicht wirklich die Antwort ...
mixerowsky
1
Ich war mir nicht sicher, ob es richtig war oder nicht, also dachte ich, ich sollte es als Antwort posten und andere Leute darüber abstimmen lassen. Bitte stimmen Sie ab, wenn Sie denken, dass es falsch ist.
BDSL
1

Wie aexl auf die Ausführungen zu der Frage erwähnt, können Sie das verwenden Benutzerdefinierte Übersetzungen Modul. Damit sollten Sie nur noch drush locale-updatein Ihr Bereitstellungsskript aufnehmen müssen.

bdsl
quelle