Як я можу розгорнути переклад користувальницького інтерфейсу?


12

Рядки, які я перекладаю на "Переклад користувальницького інтерфейсу" / admin / config / regional / translate, не можна експортувати за допомогою "Керування конфігурацією" / admin / config / development / configuration для мене. Я щось пропускаю?

Я хотів би автоматизувати цей процес за допомогою hook_update_Nабо drush cim -y.

Який правильний спосіб автоматичного розгортання "Перекладу користувальницького інтерфейсу" в Drupal 8?

  1. Чи варто це робити hook_update_N()?
  2. Чи слід створити якийсь спеціальний mytranslations.poфайл у мовній папці?

Я бачу, locale_translate_batch_import_files()що може бути використано.


Що ти закінчив?
Хлопчик Баукема

@RelaXNow, я ще не реалізував рішення. Імпорт / експорт перекладу інтерфейсу користувача AFAICS ще не автоматизований. Я планував поїхати з a hook_update_N. Погляньте на пропозицію @ Бердира.
мілковський

Чи знаєте ви про нову консоль Drupal та її команду translation:sync? На жаль, я не можу знайти детальної інформації про цю команду, але, можливо, вона робить те, що ви шукаєте.
Філіп Майкл

1
Я прокатував нам модуль для цього: drupal.org/project/customtranslations Приємно.
geek-merlin

У нашому випадку ми зробили тест із Potx ( github.com/kgaut/drupal-potx ), який працює лише з Drush. Щоб досягти цього "легко", ми зробили файл .sh, який виконує команду drush, щоб помістити файл перекладу в модулі / користувацькі / переклади для кожного модуля та кожної мови. Потім ці файли додаються до сховища проекту gitlab і їх можна легко імпортувати у виробництво під час розгортання ...
Промо

Відповіді:


6

Ви повинні зробити це самостійно. @rpayanm відповів, де ви можете це зробити вручну, вам потрібно буде подивитися код там, і, наприклад, реалізувати команди drush, які дозволяють експортувати та імпортувати його ще раз. Автоматизувати те, що потім відносно просто, експортуйте, синхронізуйте його на інший сервер та знову імпортуйте.

Схоже, що проект, який допомагає у тому, що існує: Друковані мовні команди .

Ви можете розмістити переклади за замовчуванням у модулі, але вони імпортуються лише при встановленні цього модуля. hook_update_N()призначений для запуску лише один раз, тому вам потрібно буде писати нову функцію кожного разу, коли ви хочете це зробити (і все-таки потрібно спочатку експортувати її).


3
drupal.org/project/drush_language тепер має версію D8 (dev).
Гюго

1
Ви можете перевірити форму, імпортувати переклади з /admin/config/regional/translate/importна core/modules/locale/src/Form/ImportForm.php.
rpayanm


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 / regional / translate / export), а потім імпортувати їх на інший сайт (admin / config / regional / translate / import).


1
Дякую. Я знаю, що це. Але це не автоматичне розгортання. Я хотів би автоматизувати цей процес за допомогою hook_update_Nабо drush cim -y. Я додам це до опису.
мілковський

1

Схоже, це також має бути можливо зробити, написавши сценарій для запуску команд із синхронізації локальної мережі Drush , хоча я сам не пробував цей модуль.


2
будь ласка, використовуйте коментарі для цього, це насправді не відповідь ...
mixerowsky

1
Я не був впевнений, правильно це чи ні, тому подумав, що слід опублікувати це як відповідь і дозволити іншим голосувати за це чи вгору. Будь ласка, проголосуйте, якщо ви вважаєте, що це неправильно.
bdsl

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.