Drupal Meetup 羽田 #17 セッション
2019.02.08
アウトソーシングテクノロジー
森野 豊光
今回は時間の都合もありコンテンツ保存の延長(hook_node_insert/update)で自動翻訳する
function translation($text, $new_code = 'en') {
// 翻訳処理
// 今回はGoogle Cloud APIを採用
// 参考:https://cloud.google.com/translate/docs/reference/libraries?hl=ja#client-libraries-install-php
# Instantiates a client
$translate = new TranslateClient([
'keyFilePath' => [KEY_FILE_PATH],
'projectId' => [PROJECT ID]
]);
# Translates some text
$translation = $translate->translate($text, [
'target' => $new_code
]);
return $translation['text'];
}
function mymodule_node_insert(EntityInterface $node) {
// コンテンツ内容の翻訳
$translated_title = translation($node->getTitle());
$tranlated_body = ・・・
(中略)
// 翻訳言語の追加
$node->addTranslation($new_lang_code, [
'title' => $translated_title,
'body' => $translated_body,
])->save();
}
コンテンツを編集するケース 1. コンテンツの内容に追記する 1. コンテンツの内容を一部削除する 1. 誤字脱字の修正
など
これらすべての更新で毎回全量を翻訳する? →コンテンツ更新時の翻訳は実装しない
結構あっさり実装できたので、仕様変更
※実際のサイトでご覧ください