Kullanıcı arayüzü çevirisini nasıl dağıtabilirim?


12

"Kullanıcı arabirimi çevirisi" / admin / config / bölgesel / çevirme'de çevirdiğim dizeler benim için "Yapılandırma yönetimi" / admin / config / development / configuration tarafından dışa aktarılamaz. Bir şey mi kaçırıyorum?

Bu işlemi hook_update_Nveya ile otomatikleştirmek istiyorum drush cim -y.

"Kullanıcı arabirimi çevirisi" ni Drupal 8'de otomatik olarak dağıtmanın doğru yolu nedir?

  1. Bunu yapmalı mıyım hook_update_N()?
  2. mytranslations.poDil klasöründe bazı özel dosyalar oluşturmalı mıyım ?

locale_translate_batch_import_files()Kullanılabilecek olanı görüyorum .


En sonunda ne yapmaya karar verdin?
Çocuk Baukema

@RelaXNow, henüz bir çözüm uygulayamadım. AFAICS kullanıcı arayüzü çevirisinin içe / dışa aktarımı henüz otomatik değildir. İle gitmeyi planladım hook_update_N. @ Berdir'in önerisine bir göz atın.
milkovsky

Yeni Drupal Konsolunu ve komutunu biliyor musunuz translation:sync? Ne yazık ki bu komut hakkında ayrıntılı bilgi bulamıyorum ama belki de aradığınızı yapıyor.
Philipp Michael

1
Bunun için bize bir modül attım: drupal.org/project/customtranslations İyi eğlenceler.
geek-merlin

Bizim durumumuzda sadece Drush ile çalışan Potx ( github.com/kgaut/drupal-potx ) ile bir test yaptık. Bu "kolayca" elde etmek için, her modül ve her dil için modül / custom / translation olarak çeviri dosyasını koymak için drush komutunu uygulayan bir .sh dosyası yaptık. Daha sonra bu dosya projenin gitlab deposuna eklenir ve dağıtım sırasında üretimde kolayca içe aktarılabilir ...
Promo

Yanıtlar:


6

Bunu kendiniz yapmak zorundasınız. @rpayanm, manuel olarak yapabileceğiniz yere cevap verdi, oradaki koda bakmanız ve örneğin tekrar içe ve dışa aktarmanıza izin veren drush komutlarını uygulamanız gerekecek. Daha sonra bu işlemi otomatikleştirmek, dışa aktarın, diğer sunucu ile senkronize edin ve tekrar içe aktarın.

Bu konuda yardımcı olan bir projeye benziyor: Drush Language Commands .

Bir modüle varsayılan çeviriler koyabilirsiniz, ancak bunlar yalnızca o modülü kurduğunuzda içe aktarılır. hook_update_N()yalnızca bir kez çalışacak şekilde tasarlanmıştır, bu nedenle her yapmak istediğinizde yeni bir işlev yazmanız gerekir (ve yine de önce dışa aktarmanız gerekir).


3
drupal.org/project/drush_language artık D8 (dev) versiyonuna sahip.
Hugo

1
Şu /admin/config/regional/translate/importandan itibaren çeviri aktarma formunu kontrol edebilirsiniz core/modules/locale/src/Form/ImportForm.php.
18:45, rpayanm


4

Özel çeviriler eklemek için yardımcı işlev:

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

Güncelleme kancasındaki kullanım:

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

4

A siteniz tarafından kullanılan çevrilmiş dizeleri dışa aktarabilirsiniz (admin / config / bölgesel / tercüme / dışa aktarma) ve sonra bunları diğer siteye (admin / config / bölgesel / tercüme / içe aktarma) alabilirsiniz.


1
Teşekkür. Bunu biliyorum. Ancak bu otomatik bir dağıtım değildir. Bu işlemi hook_update_Nveya ile otomatikleştirmek istiyorum drush cim -y. Bunu açıklamaya ekleyeceğim.
milkovsky

1

Bu modülü kendim denememiş olsam da, Drush yerel senkronizasyonundan komutları çalıştırmak için bir komut dosyası yazarak bunu yapmak mümkün olmalı gibi görünüyor .


2
lütfen bunun için yorumları kullanın, bu gerçekten cevap değil ...
mixerowsky

1
Doğru olup olmadığından emin değildim, bu yüzden bir cevap olarak göndermem ve diğer insanların aşağı veya yukarı oy vermesine izin vermeyi düşündüm. Bunun yanlış olduğunu düşünüyorsanız lütfen oy verin.
bdsl

1

Sorudaki yorumlarda belirtildiği gibi , Özel Çeviriler modülünü kullanabilirsiniz. Bununla sadece drush locale-updatedağıtım betiğinize dahil etmeniz gerekir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.