はじめに
Power Automate + Microsoft Translator でツイートを自動翻訳 する場合、日本語から英語だとそれほど気にならないのですが、英語から日本語の場合にうまくいかないことがあります。
それが今回とりあげる「ハッシュタグ消えちゃう問題」です。
英語は単語の間がスペースで区切られているのに対して、日本語は単語間を区切らないので、ハッシュタグを元ツイートで入れていてもただの固有名詞として認識され、翻訳語のテキストではハッシュタグが消えてしまいます。
言語の問題なので、どうしようもないのですが、少し工夫するとハッシュタグだった部分を戻す (前後の文章とスペースをあける)ことができますのでご紹介です。
翻訳&置き換えフロー
それほど難解ではないので、パラパラと各ステップを紹介します。 まずフローの全体は下図の通り。今回はテストなので固定の文字列を使って実験しています。
最終的には以下のように入力の文字列から自動翻訳して、ハッシュタグ入りのツイートができました。
ハッシュタグ抽出
まずはハッシュタグを特定する必要があります。これには
- 元の英文を半角スペースで分割
- 分割した各行が#で始まるか でフィルター
を行います。
この処理でハッシュタグが抽出できました。
※これだけでも使えそう。例えばツイートの自動収集をしている場合には、カテゴリー付けするのにハッシュタグを使うようなケース。
翻訳文章の置き換え
あとはMicrosoft Translatorで翻訳した文章をループ処理で置き換えるだけです。
まずツイートの本文をMicrosoft Translatorで翻訳し、翻訳結果を使って変数を初期化します。
「Apply to each」のアクションを追加し、ループ対象には先ほど抽出したハッシュタグを指定します。
ループ内の最初の「作成」(Compose) アクションで文字列の置き換えをします。
replace(variables('tweetbody'),item(),concat(' ',item(),' '))
この操作で翻訳語のテキストの中でハッシュタグに該当する部分が (半角スペース)ハッシュタグ(半角スペース) の形式に置換されます。
あとはループの直前で初期化しておいた変数を更新して完了です。
おわり
英→日は、自分で英文をツイートすることはないかもしれませんが、サービスの公式アカウントなどのツイートを翻訳する場合には、ハッシュタグとそれ以外を見分けられるといいですよね。
そんな時は今回ご紹介した方法を使ってみてください。