BOGOとDeepL Pro API translation pluginでWordPressの多言語化をした時の知見

昨今グローバル化が進んでいて…というのは建前でw、手っ取り早くアクセスとページ数を稼ぎたいため、過去記事を多言語化する中で得た知見をまとめたいと思います。

多言語化プラグインの選定

WordPressで多言語化プラグインで検索するといろいろ出てくる中、候補として選んだのは「WPML」「Polylang」「BOGO」の3つでした。

WPMLはDB内が荒らされそうなので却下、Polylangがかなり候補に上がっていましたが、BOGOの以下の一文で決定。

独自テーブルをたくさん作ったり後で頭痛を起こすような HTML コメントの混入をしない、とても素直な多言語化プラグイン。

WordPressのデータベースは基本ずっと使い続けるものなので、なるべくシンプルにしておきたい。そうすることで、未来の変化にも対応しやすくなるだろうということを最優先事項にしました。

そこを重視したため、作業が若干面倒な部分はありますw

翻訳

機械翻訳でやる事は確定していますが、翻訳に定評のあるDeepLで翻訳したかった。そのために選択したプラグインが「DeepL Pro API translation plugin」です。

このプラグインは、開いているページのタイトルと記事を「翻訳するだけ」のプラグインです。いちいち文章をコピペしたり、張り替えたりする作業を短くするためのプラグインだと思ってください。

「DeepL Pro API translation plugin」を使うには、DeepL APIの契約が必要です。以下の実費がかかります。

  • 月額630円
  • テキスト1,000,000文字あたり2,500円(金額ストッパーがあるので、使いすぎにならないので大丈夫)

費用は節約したいので、作業は1ケ月以内に終わらせる事が前提ですw
結構な値段だと思うかもしれませんが、実は安い方です。翻訳にDeepLを使いつつ、多言語化する他のプラグインは高いです。月額5,000~10,000円位します。そう考えると安いほうだと思います。

DeepL Pro API translation pluginの知見

今回使った「DeepL Pro API translation plugin」ですが、結論から行くと、翻訳はできるが、バギーな点が結構ありました。以下に、その知見を書いていきます。

Classic Editor必須、Gutenberg非対応

執筆時点で、Classic Editorプラグイン必須、Gutenberg非対応となっています。Gutenbergは今後Pro版として有料対応になるようです…

Update 2020/07 : yes, I’m working on a Gutenberg compatibility + a Pro version to batch translate.

Update 202007 : そうそう、Gutenberg互換+Pro版でバッチ翻訳をしています。

WP Githuber MDが衝突

私はMarkdownで記事を書いているため、「WP Githuber MD」を使っていますが、こちらのプラグインと衝突してうまく翻訳できません。翻訳作業をするときは無効化しましょう。

Default target languageが選べない

APIキーを入れて翻訳設定を変更しようとしても、プルダウンに言語が表示されませんw
まぁここは一番上の空欄を選んで置けば大丈夫です。(各記事の翻訳画面で選択できます)

翻訳設定

各記事に新たな項目が追加されています。翻訳元は「japonais」、翻訳したい言語は「anglais」を選択します。anglaisとは、英語の事です。ちなみに翻訳には10秒くらいかかりますので、あせらずお待ちください。

ビジュアルエディタでしか動作しない

ビックリな仕様ですがw、なんとビジュアルエディタ側でしか動作しません。テキストエディタ側ではうんともスンとも言いません。ご注意ください。

つまり、不要なエディタ系プラグインはすべてOFFにして、かつ、ビジュアルエディタで行う必要があります。

BOGOで複製後、一旦一覧にでないと翻訳が反映されない

BOGOで英語用の記事を複製し、翻訳するのですが、そのまま更新しても反映されません!
理由はわかりませんが、複製後、一旦一覧画面に戻り、再度編集画面にいくことで更新・公開ボタンがちゃんと処理されます。

翻訳記事は日本語記事と同じ日付にしていくのがよい

過去記事を普通に複製・翻訳・公開すると、公開時の日付となってしまいます。
これがあとあと面倒になるので、手動で日本語記事と同じ日付にすることをおすすめします。

記事一覧でも日本語記事のすぐ近くに英語記事があった方が便利だと思います。

なぜこの組み合わせにしたか

理由は上述したように、DB内を変な汚され方をされたくないからです。
また、全部の記事を多言語化する必要もないのかな、と思っています。明らかに日本にしかニーズのないような記事を多言語化する意味はないと思うのです。

海外の方が、日本株の銘柄の情報なんて水モノの情報ほしいですかね?そう考えると、腐りづらい情報を中心に多言語化するのがいいと思いました。

最後に

こんなに使いづらいんだ…と思った方もいるかもしれませんが、個人的には実は満足しています。
というのも、今回はAPIを使って翻訳していますが、新規記事については、無料版でやればいいからです。

作業時間がが縮まらないのは仕方がないかもしれません。でも1万円払ってイメージ通りできないより、多少手間がかかっても、確実にできる方を選びました。その方がデータもすっきりしますしね。

よかったら参考にしてみてください。

created by Rinker
社会評論社
¥2,200 (2022/09/29 21:37:30時点 Amazon調べ-詳細)

【時短術2】メール件名を作業進捗として表にまとめて報告、時間短縮!

私は特定のお付き合いのある業者さんに、毎月一回私の行った作業の進捗を送っています。ですがおの進捗を送るという作業が非常にめんどくさい。

そのためなるべく自動化するための私の方法をご紹介します。

メールを使って作業の進捗をまとめる

私は普段仕事のやり取りに Gmail を使い、 自分の会社のドメインからのメールを Gmail に転送してやり取りをしています。

業者さんとのやり取りには、現実的に考えて、メールメールを使うことが大半でしょう。

そのため Gmail のラベル機能を使って作業の進捗をまとめてます。

具体的にはメールの件名を作業の進捗と兼ねるような書き方にすることです。以下に手順をまとめていきます。

メールの件名の書き方については、別途記事にします。今回は、自動化の方法を記載します。

1. 送信受信メールにラベルをつける

送信メールと受信メールにラベルを付けます。 Gmail にはフィルター機能がありますので受信した時送信した時にユニークなラベル名をつけてください。

またこのラベル名をもとにまとめる作業を行いますので、分かりやすくしておくと良いでしょう。

2. 特定ラベルのメールの内容をまとめる

特定ラベルのメールの件名と送信受信時間を Google スプレッドシートにまとめます。

3. スプレッドシートを作成

新しく Google スプレッドシートを作成し、1列目に時間、2列目にメールの件名が入るように雛形を作成します。

4. スプレッドシートのプログラムを追加

ツールメニューの中のスクリプトエディタを選択します。

以下のコードを貼り付けます。このコードはその月の1日から30日までのメールの件名と時間をスプレッドシートにまとめるプログラムです。

function writeGmailToSpreadSheet() {
  var date = new Date();
  date.setDate(1); //起動した日付の1日を取得
  var row = 2; // 1行目はヘッダ用のため、2行目から

//シートを選択
var sheet = SpreadsheetApp.getActiveSheet();

//該当日の1日から今日(30日)までの情報を取得
var searchQuery = label:zapier after:${Utilities.formatDate(date, 'JST', 'yyyy/M/d')};
var threads = GmailApp.search(searchQuery);

for(var n in threads){
var thread = threads[n];
var msgs = thread.getMessages();
for(m in msgs){
var msg = msgs[m];
var maildate = msg.getDate();
var subject = msg.getSubject();
sheet.getRange(row,1).setValue(Utilities.formatDate(maildate, 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss'));
sheet.getRange(row,2).setValue(subject);
row++;
}
}
}

5. 時間指定実行を行う

上記プログラムを入力した後、毎月30日に自動実行するよう、時間実行を指定しますプログラム画面の時計のマーク(トリガー)をクリックし以下のように設定します。

時間や日付などはお好みで設定してください。ただし上記のプログラムは1日から実行した日までのメールの件名を取得しますので、毎月30日に設定すると良いかと思います。

6. メールを送信する

上記プログラムが自動で実行された後別プログラムで特定の担当者に自動でメールを送ります。メールの文章もあらかじめしまっており、 Google スプレッドシートの表も共有する形で見れるように設定しておきましょう。

メールの送信方法については別途記事にしたいと思います。

最後に

いかがだったでしょうか。

Gmail と Google の各種オフィスアプリを使うことで意外とたくさんのことが自動化できることを発見しています。

是非毎月行っている面倒な作業を自動化して、空いた時間を有効に活用したいですね。

【時短術1】日報を書く→「過去を思い出す」無駄な時間を節約する!

最近私が仕事でよく取り組んでいることは「時短」です。

同じ仕事がどうすれば短くなるのかということを常に考えています。

これから「時短」というカテゴリーを作り、私が行っている時短作業について記事を書いていきたいと思います。

日報を書いて忘れる

頭の中にすべてのことを覚えておくのは正直言って無理です。ですから私は毎日一回日報を書いています。

今まで過去のことについて調べるときに非常に時間をかけていました。昔のことですから当然覚えていませんしその時に送ったメールを元に思い出す作業になっていました。これは非常に時間の無駄です。ですから毎日2分の時間はかかるものの日報という形に残すことで、数年後、過去を思い出す必要がある時に威力を発揮するのです。

日報と言うとどこまで細かく書くのか心配な方もいるかもしれませんが内容は非常にシンプルです。

以下のように時間を入力し、該当箇所にその時行ったことを記載していきます。ついでに食べたお昼ご飯の内容や、その日に行った重要な判断、契約ごとで口だけにならないようにメモしておくことが大切です。

日報を書く利点は何か

私は日報を書き始めて3ヶ月ほどになりますが、その日のことを書き出しておくことで頭の中に覚えておく必要がなくなり、頭がすっきりします。

困った時は溜め込んだ日報を検索すればいいから非常に楽です。

私はどのように日報を書いているのか

それでは日報はどのように書けばよいのでしょうか?

私は色々考えた結果、 Gmail で毎日日報を書いています。

具体的には毎日夕方に自動的に Gmail の下書きにフォーマットとなる文章が保存されるように設定をし、その下書きに日報を書いてメール送信する形にしています。

2020.07.03(金)日報
---------------------
09:00:イラスト作成
10:00:
11:00:
12:00:マクドナルド
13:00:
14:00:ロゴ作成
15:00:
16:00:
17:00:イラスト作成つづき
18:00:
---------------------
○○な契約を交わす。契約書を送付。

送信した日報には当然ラベルを付け後から検索がしやすくなるようにしています。

具体的に Gmail で毎日下書きを送る方法については以下の URL を参考にしながら作っていますので是非皆さんもやってみてください。

GASでGmailを操作して日々の日報メールの下書きを自動で作成する

最後に

いかがだったでしょうか。

人間の頭は、本当に必要なもののみに使うべきであり過去の情報屋事柄などわざわざ覚えておく必要のないものは全てデジタル化することが大切だと思っています。

是非試してみてください。

ココナラの占いはやってはいけない。ソフトウェア文章としか思えない内容

私は弱い人間ですので、時々占いに頼りたくなる時があります。
本格的な占い屋さんへ行くのではなく、ココナラというサービスを使って占いを2度ほど行ってみました。
その結果、ガッカリな状態になりましたので防止のためにメモしておきたいと思います。

ココナラ占いの結果

とやかく言うよりも実際の文章を見てもらうのが一番早いでしょう。
全文は紹介できませんが、いくつか抜粋したいと思います。

この文章は別々の占い師に占ってもらったものです。

逆に仕事きっちりの頭でっかちなおつぼねタイプが常にいると、自分の思った自身のパフォーマンスが出来にくくなるので、緩く楽しい環境が生きやすいかと思われます。

逆に仕事きっちりの頭でっかちなおつぼねタイプが常にいると、自分の思った自身のパフォーマンスが出来にくくなるので、緩く楽しい環境が生きやすいかと思われます。

人に褒められて伸びるタイプなので、側に褒めてくれる人がいるとどんどん運気も良くなります。

人に褒められて伸びるタイプなので、側に褒めてくれる人がいるとどんどん運気も良くなります。

逆にけなされると、落ち込んでしまいパフォーマンスもうまくとれなくなってしまわれます。しかしストレスが溜まるとその言葉も疑いに変わりやすいので、まず自分自身を褒めてあげることも必要です。

逆にけなされると、落ち込んでしまいパフォーマンスもうまくとれなくなってしまわれます。しかしストレスが溜まるとその言葉も疑いに変わりやすいので、まず自分自身を褒めてあげることも必要です。

いかがでしたか?誤解のないように書きますが、同じ内容をコピーアンドペーストしているわけではありませんよ。本当に全く同じ文章なのです。細かい言い回しは変えてあるものの、言っていることは同じでしょう。

おそらく占い関係で有名なソフトウェアがあって、そこから文章を自動で生成しているのでしょう。

よく考えればこういったITの時代に、そのように楽をして稼ごうと思う人がいてもおかしくないでしょう。それに気付かなかった私もちょっと馬鹿ですね。

占いの時に名前と生年月日を聞くのは、同じ人が2回目の占いをした時の対策なのかもしれません。

文章生成系サービスは使わないように

文章生成系のサービスはかなりパターン化、自動化されているため、そもそもあまり信用しない方がいいかもしれません。

また、そういった自動化が結果としてライターさんという職業の危機になっているような気がします。

実際私も今この文章を音声入力で行なっているので人の事は言えませんが、それでも今ここで話している言葉は自分の言葉なのです。そこは大きく違いますよね。
お金を取るのですからしっかりやってほしいものですね。

またココナラのような技術販売系の占いの方は定期的にアカウントが消えているようです。稼ぐだけ稼いで辞めていく。是非皆さんはこういうツールでできそうなものに騙されないようにしてください。

created by Rinker
¥1,870 (2022/09/30 09:20:44時点 Amazon調べ-詳細)

PHPのgetimagesize関数で、WebPのリソースIDは18

getimagesize関数でWebPだった場合の処理をしたいけど、どうやらリソースIDなるものが設定されているらしく、それを調べるのに時間がかかったためw、メモしておきます。

PHPのバージョンが大切

WebPを取り扱えるようにするには、PHP7.1以降である必要があります。

getimagesizeの、[2]の数字

getimagesizeの、[2]の数字が各画像フォーマットに割り当てられています。

<?php
// 画像の情報を取得
$imgdata = getimagesize('path-to-img.webp');

print_r($imgdata);
/
Array
(
[0] => 400 // width(px)
[1] => 300 // height(px)
[2] => 18 // ←ここの数字
[3] => width="400" height="300" // imgタグの属性・値
[bits] => 8 // ビット深度
[channels] => 3 // チャンネル数
[mime] => image/webp // MIMEタイプ
)
/

IMAGETYPE定数

IMAGETYPE定数なる数字が割り当てられています。
数字は以下の通り。

番号 形式
1 GIF
2 JPEG
3 PNG
4 SWF
5 PSD
6 BMP
7 TIFF_II (intel byte order)
8 TIFF_MM (motorola byte order)
9 JPC
10 JP2
11 JPX
12 JB2
13 SWC
14 IFF
15 WBMP
16 XBM
17 ICO
18 WEBP

参考

created by Rinker
¥2,673 (2022/09/29 16:47:55時点 Amazon調べ-詳細)
カテゴリー: PHP