ฉันจะปรับใช้การแปลส่วนต่อประสานกับผู้ใช้ได้อย่างไร


12

เงื่อนไขที่ฉันแปลที่ "การแปลส่วนต่อประสานกับผู้ใช้" / admin / config / region / แปลไม่สามารถส่งออกได้โดย "การจัดการการกำหนดค่า" / admin / config / development / configuration สำหรับฉัน ฉันพลาดอะไรไปรึเปล่า?

ผมอยากจะทำให้กระบวนการนี้ด้วยหรือhook_update_Ndrush cim -y

วิธีที่เหมาะสมในการปรับใช้ "การแปลส่วนต่อประสานผู้ใช้" ใน Drupal 8 โดยอัตโนมัติคืออะไร

  1. ฉันควรทำยังhook_update_N()ไงดี?
  2. ฉันควรสร้างmytranslations.poไฟล์ที่กำหนดเองในโฟลเดอร์ภาษาหรือไม่

ฉันเห็นว่ามีสิ่งlocale_translate_batch_import_files()ที่อาจใช้


คุณทำอะไรลงไป?
Boy Baukema

@RelaXNow ฉันยังไม่ได้ใช้โซลูชันเลย AFAICS การนำเข้า / ส่งออกการแปลส่วนต่อประสานกับผู้ใช้ยังไม่เป็นไปโดยอัตโนมัติ hook_update_Nผมวางแผนที่จะไปกับ ดูข้อเสนอแนะของ @ Berdir
milkovsky

คุณรู้เกี่ยวกับ Drupal Console ใหม่และคำสั่งของมันtranslation:syncหรือไม่? น่าเสียดายที่ฉันไม่สามารถหาข้อมูลโดยละเอียดเกี่ยวกับคำสั่งนี้ได้ แต่อาจเป็นสิ่งที่คุณต้องการ
Philipp Michael

1
ฉันกลิ้งโมดูลให้เรา: drupal.org/project/customtranslationsขอให้สนุก
geek-merlin

ในกรณีของเราเราทำการทดสอบด้วย Potx ( github.com/kgaut/drupal-potx ) ที่ใช้งานกับ Drush เท่านั้น เพื่อให้บรรลุ "ง่าย" เราได้ไฟล์. sh ซึ่งกำลังเรียกใช้คำสั่ง drush เพื่อวางไฟล์การแปลในโมดูล / กำหนดเอง / การแปลสำหรับแต่ละโมดูลและแต่ละภาษา จากนั้นไฟล์เหล่านั้นจะถูกเพิ่มลงในที่เก็บ gitlab ของโครงการและสามารถนำเข้าได้อย่างง่ายดายในการผลิตในระหว่างการปรับใช้ ...
โปรโมชั่น

คำตอบ:


6

คุณต้องทำสิ่งนี้ด้วยตัวเอง @rpayanm ตอบว่าคุณสามารถทำได้ด้วยตนเองคุณจะต้องดูโค้ดที่นั่นและตัวอย่างเช่นใช้คำสั่ง drush ที่อนุญาตให้คุณส่งออกและนำเข้าอีกครั้ง อัตโนมัติที่ค่อนข้างง่ายส่งออกซิงค์กับเซิร์ฟเวอร์อื่นและนำเข้าอีกครั้ง

ดูเหมือนว่าโครงการที่จะช่วยให้มีที่มีอยู่: Drush ภาษาคำสั่ง

คุณสามารถใส่การแปลเริ่มต้นในโมดูล แต่สิ่งเหล่านั้นจะถูกนำเข้าเฉพาะเมื่อคุณติดตั้งโมดูลนั้น hook_update_N()ได้รับการออกแบบให้ทำงานเพียงครั้งเดียวดังนั้นคุณจะต้องเขียนฟังก์ชั่นใหม่ทุกครั้งที่ต้องการ (และคุณยังต้องส่งออกก่อน)


3
drupal.org/project/drush_languageขณะนี้มีรุ่น D8 (dev)
Hugo

1
คุณสามารถตรวจสอบรูปแบบที่นำเข้าการแปลจากบน/admin/config/regional/translate/import core/modules/locale/src/Form/ImportForm.php
rpayanm

drupal.org/project/drush_languageแก้ปัญหาได้!
milkovsky

4

ฟังก์ชั่นตัวช่วยเพื่อเพิ่มการแปลที่กำหนดเอง:

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

การใช้งานในเบ็ดการปรับปรุง:

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

4

คุณสามารถส่งออกสตริงการแปลที่ใช้โดยไซต์ของคุณ A (admin / config / region / translate / export) จากนั้นนำเข้าสตริงเหล่านั้นบนไซต์อื่น ๆ (admin / config / region / translation / import /)


1
ขอบคุณ. ฉันรู้ว่านี้. แต่ไม่ใช่การปรับใช้อัตโนมัติ ผมอยากจะทำให้กระบวนการนี้ด้วยหรือhook_update_N drush cim -yฉันจะเพิ่มสิ่งนี้ลงในคำอธิบาย
milkovsky

1

ดูเหมือนว่าควรจะทำได้ด้วยการเขียนสคริปต์เพื่อเรียกใช้คำสั่งจากการซิงค์โลแคล Drushถึงแม้ว่าฉันไม่ได้ลองใช้โมดูลตัวเอง


2
โปรดใช้ความคิดเห็นสำหรับสิ่งนี้ไม่ใช่คำตอบจริงๆ ...
mixerowsky

1
ฉันไม่แน่ใจว่ามันถูกหรือไม่ดังนั้นฉันคิดว่าฉันควรโพสต์ไว้เป็นคำตอบและให้คนอื่นโหวตขึ้นหรือลง โปรดลงคะแนนถ้าคุณคิดว่ามันผิด
bdsl

1

ในฐานะที่เป็นaexlกล่าวถึงในความคิดเห็นในคำถามที่คุณสามารถใช้กำหนดเองการแปลโมดูล ด้วยสิ่งที่คุณควรจะต้องรวมdrush locale-updateไว้ในสคริปต์การใช้งานของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.