Jak wdrożyć tłumaczenie interfejsu użytkownika?

12

Ciągi, które tłumaczę na „Tłumaczenie interfejsu użytkownika” / admin / config / regional / translate, nie są dla mnie eksportowane przez „Zarządzanie konfiguracją” / admin / config / development / configuration. Czy coś brakuje?

Chciałbym zautomatyzować ten proces za pomocą hook_update_Nlub drush cim -y.

Jaki jest właściwy sposób automatycznego wdrażania „Tłumaczenie interfejsu użytkownika” w Drupal 8?

  1. Czy powinienem to zrobić hook_update_N()?
  2. Czy powinienem utworzyć niestandardowy mytranslations.poplik w folderze językowym?

Widzę, że locale_translate_batch_import_files()można by użyć.

Milkovsky
źródło
Co skończyłeś?
Boy Baukema
@RelaXNow, nie wdrożyłem jeszcze rozwiązania. Import / eksport AFAICS tłumaczenia interfejsu użytkownika nie jest jeszcze zautomatyzowany. Planowałem pójść z hook_update_N. Zobacz sugestię @ Berdir.
milkovsky
Czy wiesz o nowej konsoli Drupal i jej poleceniu translation:sync? Niestety nie mogę znaleźć szczegółowych informacji o tym poleceniu, ale może robi to, czego szukasz.
Philipp Michael
1
Rzuciłem nam moduł do tego: drupal.org/project/customtranslations Baw się dobrze.
geek-merlin
W naszym przypadku zrobiliśmy test z Potx ( github.com/kgaut/drupal-potx ), który działa tylko z Drush. Aby osiągnąć to „łatwo”, zrobiliśmy plik .sh, który wykonuje polecenie drush, aby umieścić plik tłumaczenia w modułach / niestandardowych / tłumaczeniach dla każdego modułu i każdego języka. Następnie pliki te są dodawane do repozytorium projektu gitlab i można je łatwo zaimportować do produkcji podczas wdrażania ...
Promo

Odpowiedzi:

6

Musisz to zrobić sam. @ rpayanm odpowiedział, gdzie możesz to zrobić ręcznie, musisz spojrzeć na kod tam, i na przykład zaimplementować polecenia drush, które pozwolą ci ponownie wyeksportować i zaimportować. Automatyzacja jest wtedy stosunkowo łatwa, eksportuj, synchronizuj ją z innym serwerem i importuj ponownie.

Wygląda na projekt, który pomaga w tym, że istnieje: Komendy języka Drush .

Możesz wstawić domyślne tłumaczenia do modułu, ale są one importowane tylko podczas instalacji tego modułu. hook_update_N()jest zaprojektowany, aby działać tylko raz, więc będziesz musiał napisać nową funkcję za każdym razem, gdy chcesz to zrobić (i nadal musisz ją najpierw wyeksportować).

Berdir
źródło
3
drupal.org/project/drush_language ma teraz wersję D8 (dev).
Hugo,
1
Można sprawdzić formę których przywóz z tłumaczenia /admin/config/regional/translate/importna core/modules/locale/src/Form/ImportForm.php.
rpayanm
drupal.org/project/drush_language rozwiązuje problem!
Milkovsky,
4

Funkcja pomocnicza, aby dodać niestandardowe tłumaczenia:

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

Zastosowanie w haku aktualizacji:

/**
 * Add translations.
 */
function MYMODULE_update_8002() {
  MYMODULE_add_translation('Adjust', 'de', 'Anpassen');
}
Milkovsky
źródło
4

Możesz wyeksportować przetłumaczone ciągi używane przez witrynę A (admin / config / regional / translate / export), a następnie zaimportować je na drugiej stronie (admin / config / regional / translate / import).

rpayanm
źródło
1
Dzięki. Wiem to. Ale to nie jest automatyczne wdrożenie. Chciałbym zautomatyzować ten proces za pomocą hook_update_Nlub drush cim -y. Dodam to do opisu.
Milkovsky
1

Wygląda na to, że powinno to być również możliwe, pisząc skrypt do uruchamiania poleceń z synchronizacji ustawień narodowych Drush , chociaż sam nie próbowałem tego modułu.

bdsl
źródło
2
proszę użyć do tego komentarzy, to nie jest tak naprawdę odpowiedź ...
mixerowsky
1
Nie byłem pewien, czy to prawda, czy nie, więc pomyślałem, że powinienem opublikować ją jako odpowiedź i pozwolić innym głosować w górę lub w dół. Głosuj, jeśli uważasz, że to źle.
bdsl,