ユーザーインターフェイス翻訳を展開するにはどうすればよいですか?


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 2016

@RelaXNow、私はまだソリューションを実装していません。ユーザーインターフェース翻訳のAFAICSインポート/エクスポートはまだ自動化されていません。で行くつもりだったhook_update_N。@Berdirの提案をご覧ください。
milkovsky 2016年

新しいDrupalコンソールとそのコマンドについて知っていtranslation:syncますか?残念ながら、このコマンドについての詳細な情報は見つかりませんが、あなたが探しているものを実行している可能性があります。
フィリップマイケル

1
そのためのモジュールを用意しました:drupal.org/project/customtranslations楽しんでください。
geek-merlin 2017

今回のケースでは、Drushでのみ実行されるPotx(github.com/kgaut/drupal-potx)を使用してテストを行いました。これを「簡単に」実現するために、drushコマンドを実行する.shファイルを作成し、各モジュールおよび各言語のmodule / custom / translationsに翻訳ファイルを配置しました。次に、これらのファイルはプロジェクトのgitlabリポジトリに追加され、デプロイ中に本番環境に簡単にインポートできます...
プロモ

回答:


6

これは自分で行う必要があります。@rpayanmは、手動で実行できる場所に答えました。そこでコードを確認し、たとえば、それを再度エクスポートおよびインポートできるようにするdrushコマンドを実装する必要があります。これを自動化することは比較的簡単であり、エクスポートし、他のサーバーと同期して、再度インポートします。

それを支援するプロジェクトのように見えます:Drush Language Commands

デフォルトの翻訳をモジュールに入れることができますが、それらはそのモジュールをインストールするときにのみインポートされます。hook_update_N()は1回だけ実行するように設計されているため、実行するたびに新しい関数を作成する必要があります(それでも最初にエクスポートする必要があります)。



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
THX。私はこれを知っている。ただし、これは自動展開ではありません。hook_update_Nまたはでこのプロセスを自動化したいと思いdrush cim -yます。これを説明に追加します。
milkovsky 2015年

1

Drush locale syncからコマンドを実行するスクリプトを作成してこれを行うことも可能であるようですが、私はそのモジュールを自分で試したことはありません。


2
このためのコメントを使用してください、それは実際には答えではありません...
Mixerowsky

1
正解かどうかわからなかったので、回答として投稿し、他の人に賛成票か反対票を投じるようにしました。間違いだと思ったら投票してください。
bdsl 2017

1

以下のようaexl質問のコメントで述べたように、あなたは使用することができますカスタム翻訳モジュールを。これdrush locale-updateで、配置スクリプトに含める必要があるだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.