PukiWikiをGoogleウェブサイト翻訳で多言語化しようとは思っていたが、実際に工数的にもそんなにかからないだろうと思い、私の中で優先順位は低かった。
「3連休だし台風も来るからPukiWiki用のプラグインの開発をしよう」と思い、何となく見たサイトで「Googleウェブサイト翻訳ツールの新規利用が終了」という事実を知り、これはイカン!と思った。
色々と調べてみると、Googleウェブサイト翻訳ツールの代替サービスもあるが、どれもイマイチなのが否めない。そこで「ならやってみるか」と、Googleウェブサイト翻訳を使ってPukiWikiを多言語化するプラグインを開発したので、その設置方法等を記事にしてみたい。
前回の記事と同様にサブドメインを連番で用意してあるので、今回はmuseum-17サブドメインの内容をmuseum-18サブドメインにコピーし、検証しながら作業を進めた。メニューページが「MenuBar」ではなく「メニューバー」になっている(日本語ページ名でPukiWiki用URL短縮ライブラリにより短縮される)ので要注意。
Googleウェブサイト翻訳の是非
Googleサイト翻訳プラグインを導入する前に、Googleウェブサイト翻訳のメリットとデメリットを今一度検討しておく必要があると思う(主要ブラウザで翻訳が可能じゃん!的な意見は置いておく)。
デメリットとしては、
- 画像は翻訳対象にならない
- レイアウトやデザインが崩れることがある
- 専門用語の翻訳精度が低い
- 検索エンジンの検索結果に反映されない
といった点が挙げられるだろう。
画像は仕方ないにしても、日本語から他言語に翻訳した際に、どうしても語が長くなってレイアウトやデザインが崩れることがある。PukiWikiの場合、サイトのナビゲーションに画像を多用してCSSでゴリゴリにデザインしたサイトは考えにくいし、同様に翻訳結果が元の日本語より長くなっても、「見られない」レベルにレイアウトやデザインが崩れることも考えにくい。
また、専門用語の翻訳精度が低いのは以前から指摘されているが、専門用語に限らず「言葉」は「生き物」なので、次々に新しい単語や用法が生み出される観点からすれば、それほど問題視するほどでもない気がする。
どちらかと言えば、サイトを多言語対応する場合で問題になるのは「検索エンジンの検索結果に反映されない」点だろう。日本語のサイトを他言語に翻訳はするが、他言語に翻訳した内容を別URLに展開・保存するワケではないので、当然のことながら多言語でのサイト展開としてSEO的には意味がない。要するに、日本語話者以外による外国人からの検索エンジン経由での流入を期待するのは論外となる。
その上で、メリットを挙げてみよう。
- 無料で使える
- 導入が簡単
- 日本語を含む104言語に対応している
このメリットを考えれば、SEO的に無意味な多言語化であろうが、多少翻訳に難があろうが、やってみる価値は十分にあるだろう。特に企業や官公庁、研究機関等が本気でサイトを多言語化するならいざ知らず、個人サイトを多言語化する場合はGoogleウェブサイト翻訳が最強だろうと思う。
それに、私は海外にいる外国人よりも在日外国人向けに有効だろうと考えている。日本語よりは(それが多少変な翻訳であっても)母国語の方が読みやすいだろうし、日本語の勉強にもなるかも知れない。あわよくば、在日外国人が本国にいる家族や友人・知人にサイトを紹介してくれるかも知れない。いずれにせよ、何もしないよりは僅かでも可能性がある方に賭けるべきだ、と考える。
ちなみに、Googleは2016年9月にニューラルネットワークを使った「ニューラル機械翻訳」(GNMT:Google Neural Machine Translation system)をGoogle Cloud Translation API(100万語で20ドルの有償サービス)に搭載して話題になった。これにより、劇的にGoogle翻訳の精度が上がったのだが、「ウェブサイト翻訳ツールと統合するんじゃね?」という憶測もあった(事実関係は未確認)。
有料のGoogle Cloud Translation APIと無料のGoogleウェブサイト翻訳のロジックが統合されて、そのまま無料で提供を続けてくれれば有り難い。しかし、新規利用が終了している点を考えれば、将来的にサービスが存続するのか?と考えた方が良いのかも知れない。
Googleサイト翻訳プラグインの設置
Googleウェブサイト翻訳ツールの新規利用は出来ないものの、WordPressでGoogleウェブサイト翻訳ツールと同等の機能を実現するプラグインは問題なく利用できるので、「何か手があるハズ」だ。
散々調べて試行錯誤し、ようやくPukiWiki用Googleサイト翻訳プラグインとして完成したので、本サイトのダウンロードページにアップロードしておいた。
ダウンロードページからGoogleサイト翻訳プラグインをダウンロードし、ローカルの作業フォルダに解凍する。解凍したらgoogle_site_translate.inc.phpファイルをサーバの「plugin」フォルダにFTPし、ファイル属性(パーミッション)を「644」に設定しておこう。たったこれだけでプラグインの設置が完了し、特に設定等は必要ない。
なお、サイトページの言語は「日本語」に固定しているため、日本語以外でサイトを運営している場合はプラグインのソースを修正する必要があるが、要望が多い場合はバージョンアップで対応を考えても良い(PukiWikiのプラグインの特性上、引数で指定してやる必要があるが、使い勝手とニーズを考えて今回は保留にした)。
※2019/10/25追記
ダウンロードページで公開しているPukiWikiのライブラリとプラグインについて、GitHubでの公開レベルと同期を取るためアーカイブを全面的に改定した際に、当該プラグインで自国言語設定を定数として実装しておき、軽微なバージョンアップを施しておいた。
日本語以外でサイトを運営している場合、プラグインの定数部分を修正すれば日本語以外の母国語が指定可能である(このバージョンアップにより、日本語以外でのサイト運営による当該プラグインのバージョンアップは実施しないものとする)。
メニューページを編集してGoogleサイト翻訳を組み込む
本プラグインはメニュー(MenuBar)ページでの利用を想定しているので(サイトのレスポンシブデザインを考慮)、メニューページを編集してGoogleウェブサイト翻訳を組み込むものとする。
プラグインはブロック型のみの利用が可能で、書式は次の通りとなる。
#google_site_translate[([引数1],[引数2],・・・[引数n])]
翻訳先言語は、次の引数(大文字・小文字は区別する)が有効となっている。
引数 | 翻訳先言語 | 引数 | 翻訳先言語 | 引数 | 翻訳先言語 | 引数 | 翻訳先言語 |
ja | 日本語 | gu | グジャラト語 | tg | タジク語 | bn | ベンガル語 |
is | アイスランド語 | km | クメール語 | ta | タミル語 | pl | ポーランド語 |
ga | アイルランド語 | ku | クルド語 | cs | チェコ語 | bs | ボスニア語 |
az | アゼルバイジャン語 | hr | クロアチア語 | ny | チェワ語 | pt | ポルトガル語 |
af | アフリカーンス語 | xh | コーサ語 | te | テルグ語 | mi | マオリ語 |
am | アムハラ語 | co | コルシカ語 | da | デンマーク語 | mk | マケドニア語 |
ar | アラビア語 | sm | サモア語 | de | ドイツ語 | mr | マラーティー語 |
sq | アルバニア語 | jw | ジャワ語 | tr | トルコ語 | mg | マラガシ語 |
hy | アルメニア語 | ka | ジョージア(グルジア)語 | ne | ネパール語 | ml | マラヤーラム語 |
it | イタリア語 | sn | ショナ語 | no | ノルウェー語 | mt | マルタ語 |
yi | イディッシュ語 | sd | シンド語 | ht | ハイチ語 | ms | マレー語 |
ig | イボ語 | si | シンハラ語 | ha | ハウサ語 | my | ミャンマー語 |
id | インドネシア語 | sv | スウェーデン語 | ps | パシュト語 | mn | モンゴル語 |
cy | ウェールズ語 | zu | ズールー語 | eu | バスク語 | hmn | モン語 |
uk | ウクライナ語 | gd | スコットランド ゲール語 | haw | ハワイ語 | yo | ヨルバ語 |
uz | ウズベク語 | es | スペイン語 | hu | ハンガリー語 | lo | ラオ語 |
ur | ウルドゥ語 | sk | スロバキア語 | pa | パンジャブ語 | la | ラテン語 |
et | エストニア語 | sl | スロベニア語 | hi | ヒンディー語 | lv | ラトビア語 |
eo | エスペラント語 | sw | スワヒリ語 | fi | フィンランド語 | lt | リトアニア語 |
nl | オランダ語 | su | スンダ語 | fr | フランス語 | ro | ルーマニア語 |
kk | カザフ語 | ceb | セブアノ語 | fy | フリジア語 | lb | ルクセンブルク語 |
ca | カタルーニャ語 | sr | セルビア語 | bg | ブルガリア語 | ru | ロシア語 |
gl | ガリシア語 | st | ソト語 | vi | ベトナム語 | en | 英語 |
kn | カンナダ語 | so | ソマリ語 | iw | ヘブライ語 | ko | 韓国語 |
el | ギリシャ語 | th | タイ語 | be | ベラルーシ語 | zh-CN | 中国語(簡体) |
ky | キルギス語 | tl | タガログ語 | fa | ペルシャ語 | zh-TW | 中国語(繁体) |
引数は省略可能で、省略した場合は上記の全言語が翻訳先対象となる。
では、実際にメニューに組み込んでみよう。
図のようにメニューページにプラグインを記述し、ページを更新する。この場合は引数を指定していないため、日本語を含む104言語全部を指定したことになる。
ページを更新すると、図の赤枠のようにGoogleウェブサイト翻訳のコンボボックスが表示される。このコンボボックスの内容はGoogle側(コンボボックス下の「Powered by Google翻訳」の部分も含む)から出力されている内容で、本プラグインで若干表示スタイルの変更をしている。
未確認だが、日本語以外のユーザからアクセスされた場合は、利用している言語でコンボボックスの内容が表示されるハズだ。サイトを翻訳しても、コンボボックスの内容は利用している言語のままで翻訳はされない。
コンボボックスをクリックすると、図のように翻訳先の言語が列挙される。このコンボボックスで選択された言語でサイトが翻訳されるが、IE11を含めIEの場合は動作しないようだ。
「こんなに沢山 (゚⊿゚)イラネ」と仰る諸兄のために、任意の言語を引数で渡してあげれば、任意の言語のみの指定も可能だ。
例えば、英語・ロシア語・韓国語・中国語(簡体)・中国語(繁体)のみを翻訳先言語に指定する場合は、次のように書けば良い(日本語の「ja」は指定しておいた方が吉)。
#google_site_translate(ja,en,ru,ko,zh-CN,zh-TW)
※引数は左から日本語・英語・ロシア語・韓国語・中国語(簡体)・中国語(繁体)の指定
図のように、引数で指定した翻訳先の言語のみが列挙される(コンボボックスの内容はGoogle側から出力されるため、引数の順番通りに翻訳先言語が列挙されるワケではない)。
ここで、「あれ?日本語がないぞ?」と思うだろう。これは引数を省略した場合もそうだが、任意の言語でサイト翻訳をすると自動的に「日本語」がコンボボックスに追加される(引数で任意の言語を指定した際に「ja」を指定しなかった場合は除く)。
例えば「英語」でサイトを翻訳すると、図のようになる。
英訳が変な箇所もあるが、コンボボックスに赤矢印の通り「日本語」が追加されるので、再度「日本語」を選択すると日本語訳になる。
パソコンのブラウザの場合は画面上部にツールバーの形で表示されているGoogleの「原文を表示」や、このツールバーを「✕」で閉じてしまえば原文の日本語が表示されるが、スマホ等の画面が小さいデバイスの場合、日本語と翻訳先言語とを行き来するのにコンボボックスに「日本語」があった方が親切だろう。
ここまでの改造の成果
ここまでの改造の成果であるPukiWikiはこちらなので、「実際どうなのか?」を確認したい人は参照して欲しい(ちなみに翻訳先言語は引数なしで全言語を対象としている)。
今回も前回と同様にゲストアカウントを用意したので、スパムや破壊行為は困るが(スパムフィルタspam_filter.phpは導入済みだが)、ユーザー名とパスワードは次の通りだ。
ユーザー名:guest
パスワード:guest
ファイルの添付やページの凍結・解除は行なえないが、ほぼ全てのPukiWikiの作業が可能なので、色々と試してみて欲しい。「案外PukiWikiって使えるな」と思っていただければ、私としても嬉しく思う。
おわりに
Googleウェブサイト翻訳を無料かつ何の制限もなく利用するために、ともかく丸2日近く徹夜でググりまくり、かつサイトの挙動等をハッキングして色々と調べてみたが、日本語での情報は皆無で、英語圏のサイトでも「これは」と思う記事や情報は無いに等しいほど非常に少なかった。
PHP・JavaScript・HTML・CSSが読める人が本プラグインのソースを見れば、「なーんだ」と思うだろう。実はその通りで、大したことはやっていない。技術的に興味がある人や、本プラグインをカスタマイズしたい場合、またはPukiWiki以外のCMSに移植したい人は、ソースを参照して欲しい。
蛇足ながら、その昔(確か1990年代だったと思う)たまたま海外の熱狂的なシャープMZシリーズのファンが作ったサイトを見たことがある。ヨーロッパ系の言語だったと思うが、当然ながら私には読めないし、理解不能だ。しかし、日本の国旗が表示されていたので、クリックすると機械翻訳だがサイトを日本語に翻訳してくれた。恐らく日本のMZ-2000ユーザが訪れるとは考えてもみなかったと思うが、シャープへの敬意からか(?)日本語でのサイト翻訳を用意したのだと思う。それだけでもう、私としては嬉しかった。少数かも知れないが、かつての私のような外国人だっているだろう。
マイナーな言語まで多岐にわたって翻訳をサポートするGoogleウェブサイト翻訳に感謝しつつ(今後もサービスが続くことを祈りつつ)、本プラグインと本稿がお役に立てたら幸いだ。
Warning: strpos() expects parameter 1 to be string, array given in /home/eware/dajya-ranger.com/public_html/wp-includes/compat.php on line 498
Warning: preg_match_all() expects parameter 2 to be string, array given in /home/eware/dajya-ranger.com/public_html/wp-includes/shortcodes.php on line 155
Array