翻訳ファイルをカスタムテーマに追加する方法
やった
my_theme.info.yml
'interface translation project': my_theme
'interface translation server pattern': themes/my_theme/translations/my_theme-%language.po
小枝テンプレート:
{% trans %}
status
{% endtrans %}
{{ 'status'|t }}
/ my_theme/translations/my_theme-fr.po:
msgid "status"
msgstr "statut"
msgid "statut"
msgstr "status"
続いて
drush cr
frページ(デフォルトの言語は英語)にいるとき、出力は翻訳されません。
.poファイルはthemesディレクトリーに置かれてインポートされないため、インポートする必要があります。これを行うには、次のようにします。
Home > Administration > Configuration > Region and Language > Import
あなたの実装は locale API documentation のガイドラインに従っているようですが、それでも私にとってはうまくいきませんでした。
私のために働いたのは、モジュールに hook_locale_translation_projects_alterをモジュールに実装することでした:
function mymodule_locale_translation_projects_alter(&$projects) {
$projects['my_theme'] = array(
'info' => array(
'interface translation server pattern' => 'themes/custom/my_theme/translations/my_theme-%language.po',
),
);
}
最初にモジュールを有効にしてから、drushコマンドで言語を追加できるようにテストしました。
drush language-add fr
これは私のPOファイルです、Drupalには見出しセクションが必要なようです:
# French translation of Drush Site-Install
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"POT-Creation-Date: 2018-10-11 16:30+0000\n"
"PO-Revision-Date: 2018-10-11 16:30+0000\n"
"Last-Translator: NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
msgid "status"
msgstr "statut"
msgid "statut"
msgstr "status"
ヘッダーがないと、最初の翻訳がスキップされ、次のエラーが発生しました。
An AJAX HTTP error occurred.
HTTP Result Code: 200
Debugging information follows.
Path: /batch?id=14&op=do_nojs&op=do
StatusText: OK
ResponseText: Notice: Undefined offset: 1 in Drupal\Component\Gettext\PoHeader->parseHeader() (line 257 of /app/core/lib/Drupal/Component/Gettext/PoHeader.php). => Array ...
@ Cesar Mooreの発言に感謝し、drush locale:check
、次にdrush locale:update
およびdrush cr
、私の翻訳ファイルが私のカスタムテーマでも動作するようになりました:)
参考:POファイルはカスタムモジュールフォルダーにあります。
その他の参考文献: