사용자 인터페이스 번역을 어떻게 배포 할 수 있습니까?


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()사용할 수있는 것이 보입니다 .


무엇을하셨습니까?
Boy Baukema

@RelaXNow, 아직 솔루션을 구현하지 않았습니다. 사용자 인터페이스 변환의 AFAICS 가져 오기 / 내보내기는 아직 자동화되지 않았습니다. 나는 함께 갈 계획 hook_update_N이었다. @Berdir의 제안을 살펴보십시오.
milkovsky

새로운 Drupal Console과 명령에 대해 알고 translation:sync있습니까? 불행히도이 명령에 대한 자세한 정보를 찾을 수 없지만 원하는 것을 수행 할 수 있습니다.
Philipp Michael

1
나는 우리가 그것을위한 모듈을 압연 : drupal.org/project/customtranslations이 재미를.
geek-merlin

우리의 경우 Drush 로만 실행되는 Potx ( github.com/kgaut/drupal-potx ) 로 테스트를 수행 했습니다. 이 "쉽게"달성하기 위해 drush 명령을 실행하는 .sh 파일을 수행하여 각 모듈 및 언어에 대한 변환 파일을 모듈 / 사용자 정의 / 번역에 넣었습니다. 그런 다음 해당 파일이 프로젝트의 gitlab 저장소에 추가되고 배치 중에 프로덕션에서 쉽게 가져올 수 있습니다.
Promo

답변:


6

이 작업을 직접 수행해야합니다. @rpayanm은 수동으로 할 수있는 곳에서 대답했습니다. 코드를보고 예를 들어 다시 내보내고 가져올 수있는 drush 명령을 구현해야합니다. 자동화가 비교적 쉬우 며, 내보내고, 다른 서버와 동기화 한 후 다시 가져옵니다.

존재하는 데 도움이되는 프로젝트처럼 보입니다 : Drush Language Commands .

기본 번역을 모듈에 넣을 수 있지만 해당 번역을 설치할 때만 가져옵니다. 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

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 / regional / translate / export)을 내 보낸 다음 다른 사이트 (admin / config / regional / translate / import)로 가져올 수 있습니다.


1
고마워. 나는이 사실을 알고. 그러나 자동 배포는 아닙니다. hook_update_N또는 로이 프로세스를 자동화하고 싶습니다 drush cim -y. 이것을 설명에 추가하겠습니다.
milkovsky

1

그 모듈을 직접 시도하지는 않았지만 Drush locale sync 에서 명령을 실행하는 스크립트를 작성 하여이 작업을 수행 할 수도있는 것처럼 보입니다 .


2
이것에 대한 의견을 사용하십시오, 그것은 실제로 대답이 아닙니다 ...
mixerowsky

1
그것이 옳은지 확신 할 수 없었으므로 답으로 게시하고 다른 사람들이 투표를하거나 거절하도록해야한다고 생각했습니다. 당신이 잘못 생각하면 투표하십시오.
bdsl

1

으로 aexl 질문에 대한 코멘트에 언급, 당신은 사용할 수있는 사용자 정의 번역 모듈을. 이를 통해 drush locale-update배포 스크립트 에 포함하면됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.