Bagaimana saya bisa menggunakan terjemahan antarmuka pengguna?

12

String yang saya terjemahkan pada "Terjemahan antarmuka pengguna" / admin / config / regional / translate tidak dapat diekspor oleh "Manajemen konfigurasi" / admin / config / pengembangan / konfigurasi untuk saya. Apakah saya melewatkan sesuatu?

Saya ingin mengotomatiskan proses ini dengan hook_update_Natau drush cim -y.

Apa cara yang tepat untuk menyebarkan "Terjemahan antarmuka pengguna" secara otomatis di Drupal 8?

  1. Haruskah saya melakukannya hook_update_N()?
  2. Haruskah saya membuat beberapa mytranslations.pofile khusus di folder bahasa?

Saya melihat ada locale_translate_batch_import_files()yang mungkin digunakan.

milkovsky
sumber
Apa yang akhirnya kamu lakukan?
Bocah Baukema
@RelaXNow, saya belum mengimplementasikan solusi. Impor / ekspor terjemahan antarmuka pengguna AFAICS belum otomatis. Saya berencana untuk pergi dengan hook_update_N. Lihatlah saran @ Berdir.
milkovsky
Apakah Anda tahu tentang Konsol Drupal yang baru dan perintahnya translation:sync? Sayangnya saya tidak dapat menemukan informasi terperinci tentang perintah ini, tetapi mungkin melakukan apa yang Anda cari.
Philipp Michael
1
Saya menggulirkan kami sebuah modul untuk itu: drupal.org/project/customtranslations Selamat bersenang-senang.
geek-merlin
Dalam kasus kami, kami melakukan tes dengan Potx ( github.com/kgaut/drupal-potx ) yang berjalan hanya dengan Drush. Untuk mencapai ini "dengan mudah" kami melakukan file .sh yang menjalankan perintah drush untuk meletakkan file terjemahan dalam modul / custom / terjemahan untuk setiap modul dan setiap bahasa. Kemudian file-file itu ditambahkan ke repositori gitlab proyek dan dapat dengan mudah mengimpor dalam produksi selama ...
Promo

Jawaban:

6

Anda harus melakukan ini sendiri. @rpayanm menjawab di mana Anda dapat melakukannya secara manual, Anda perlu melihat kode di sana, dan misalnya menerapkan perintah drush yang memungkinkan Anda untuk mengekspor dan mengimpornya lagi. Mengotomasi yang relatif mudah, ekspor, sinkronkan ke server lain, dan impor lagi.

Sepertinya proyek yang membantu yang ada: Drush Language Commands .

Anda dapat menempatkan terjemahan default dalam modul, tetapi hanya diimpor ketika Anda menginstal modul itu. hook_update_N()dirancang untuk hanya berjalan sekali, jadi Anda harus menulis fungsi baru setiap kali Anda ingin melakukannya (dan Anda masih perlu mengekspornya terlebih dahulu).

Berdir
sumber
3
drupal.org/project/drush_language sekarang memiliki versi D8 (dev).
Hugo
1
Anda dapat memeriksa formulir yang mengimpor terjemahan dari /admin/config/regional/translate/importpada core/modules/locale/src/Form/ImportForm.php.
rpayanm
drupal.org/project/drush_language menyelesaikan masalah!
milkovsky
4

Fungsi pembantu untuk menambahkan terjemahan khusus:

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

Penggunaan dalam kait pembaruan:

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

Anda dapat mengekspor string terjemahan yang digunakan oleh situs A Anda (admin / config / regional / translate / ekspor) dan kemudian mengimpornya di situs lain (admin / config / regional / translate / impor).

rpayanm
sumber
1
Terima kasih. Saya tahu ini. Tetapi ini bukan penyebaran otomatis. Saya ingin mengotomatiskan proses ini dengan hook_update_Natau drush cim -y. Saya akan menambahkan ini ke deskripsi.
milkovsky
1

Sepertinya itu juga harus dilakukan dengan menulis skrip untuk menjalankan perintah dari sinkronisasi lokal Drush , meskipun saya belum mencoba modul itu sendiri.

bdsl
sumber
2
tolong gunakan komentar untuk ini, itu sebenarnya bukan jawaban ...
mixerowsky
1
Saya tidak yakin apakah itu benar atau tidak, jadi saya pikir saya harus mempostingnya sebagai jawaban dan membiarkan orang lain memilihnya naik atau turun. Harap beri suara jika menurut Anda itu salah.
bdsl
1

Seperti aexl disebutkan pada komentar pada pertanyaan, Anda dapat menggunakan Kustom Translations modul. Dengan itu Anda hanya perlu memasukkan drush locale-updatedalam skrip penerapan Anda.

bdsl
sumber