Làm thế nào tôi có thể triển khai dịch giao diện người dùng?


12

Các chuỗi mà tôi dịch tại "Dịch giao diện người dùng" / admin / config / khu vực / dịch không thể xuất được bởi "Quản lý cấu hình" / admin / config / Development / configure cho tôi. Tui bỏ lỡ điều gì vậy?

Tôi muốn tự động hóa quá trình này với hook_update_Nhoặc drush cim -y.

Cách thích hợp để tự động triển khai "Dịch giao diện người dùng" trong Drupal 8 là gì?

  1. Tôi có nên làm điều đó trong hook_update_N()?
  2. Tôi có nên tạo một số mytranslations.potập tin tùy chỉnh trong thư mục ngôn ngữ?

Tôi thấy đó là locale_translate_batch_import_files()có thể được sử dụng.


Rốt cuộc bạn đã làm gì?
Cậu bé Baukema ngày

@RelaXNow, tôi chưa thực hiện giải pháp nào. Nhập / xuất bản dịch giao diện người dùng AFAICS chưa được tự động. Tôi dự định đi với a hook_update_N. Hãy xem gợi ý của @ Berdir.
milkovsky

Bạn có biết về Bảng điều khiển Drupal mới và lệnh của nó translation:synckhông? Thật không may, tôi không thể tìm thấy bất kỳ thông tin chi tiết nào về lệnh này nhưng có lẽ nó thực hiện những gì bạn đang tìm kiếm.
Philipp Michael

1
Tôi đã cung cấp cho chúng tôi một mô-đun cho điều đó: drupal.org/project/customtranslations Hãy vui vẻ.
geek-merlin

Trong trường hợp của chúng tôi, chúng tôi đã thực hiện một thử nghiệm với Potx ( github.com/kgaut/drupal-potx ) chỉ chạy với Drush. Để đạt được điều này "một cách dễ dàng", chúng tôi đã thực hiện một tệp .sh đang thực thi lệnh drush để đặt tệp dịch trong các mô-đun / tùy chỉnh / bản dịch cho từng mô-đun và từng ngôn ngữ. Sau đó, các tệp đó được thêm vào kho gitlab của dự án và có thể dễ dàng nhập vào sản xuất trong quá trình triển khai ...
Quảng cáo

Câu trả lời:


6

Bạn phải tự làm điều này. @rpayanm đã trả lời nơi bạn có thể thực hiện thủ công, bạn sẽ cần xem mã ở đó và ví dụ triển khai các lệnh drush cho phép bạn xuất và nhập lại mã. Tự động hóa việc đó tương đối dễ dàng, xuất, đồng bộ hóa với máy chủ khác và nhập lại.

Trông giống như một dự án giúp tồn tại: Lệnh ngôn ngữ Drush .

Bạn có thể đặt các bản dịch mặc định trong một mô-đun, nhưng chúng chỉ được nhập khi bạn cài đặt mô-đun đó. hook_update_N()được thiết kế để chỉ chạy một lần, vì vậy bạn sẽ cần phải viết một hàm mới mỗi lần bạn muốn làm điều đó (và bạn vẫn cần xuất nó trước).


3
drupal.org/project/drush_lingu hiện có phiên bản D8 (dev).
Hugo

1
Bạn có thể kiểm tra hình thức nhập bản dịch từ /admin/config/regional/translate/importtrên core/modules/locale/src/Form/ImportForm.php.
rpayanm

drupal.org/project/drush_lingu giải quyết vấn đề!
milkovsky

4

Chức năng trợ giúp để thêm các bản dịch tùy chỉnh:

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

Cách sử dụng trong hook hook:

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

4

Bạn có thể xuất các chuỗi dịch được sử dụng bởi trang web của bạn A (admin / config / khu vực / dịch / xuất) và sau đó nhập chúng trên trang web khác (admin / config / khu vực / dịch / nhập).


1
Cám ơn. Tôi biết cái này. Nhưng nó không phải là một triển khai tự động. Tôi muốn tự động hóa quá trình này với hook_update_Nhoặc drush cim -y. Tôi sẽ thêm điều này vào mô tả.
milkovsky 19/03/2015

1

Có vẻ như cũng có thể làm điều này bằng cách viết một tập lệnh để chạy các lệnh từ đồng bộ hóa miền địa phương Drush , mặc dù tôi đã không tự mình thử mô-đun đó.


2
vui lòng sử dụng nhận xét cho việc này, đây không thực sự là câu trả lời ...
mixerowsky

1
Tôi không chắc liệu nó có đúng hay không, vì vậy tôi nghĩ tôi nên đăng nó như một câu trả lời và để người khác bình chọn nó lên hay xuống. Hãy bỏ phiếu xuống nếu bạn nghĩ nó sai.
bdsl

1

Như aexl đã đề cập trên các nhận xét về câu hỏi, bạn có thể sử dụng mô-đun Dịch tùy chỉnh . Với điều đó bạn chỉ cần đưa drush locale-updatevào tập lệnh triển khai của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.