はじめに
再翻訳なるジャンルをご存知でしょうか。昔話などを日本語→英語→・・・→日本語のように翻訳していくと面白い結果が得られるというあれです。
某動画投稿サイトでも5ヶ国語で翻訳リレーした歌詞を歌う方が現れるなど、ニッチながらも盛り上がりを見せているように感じます。文章は基本的に翻訳サイトで生成するのですが、翻訳の過程をみると、言語が変わるたびに何度もテキストを切り貼りしています。
なので、5ヶ国語の再翻訳を一括でできるスクリプトを書いてみました。
環境
- Google Spreed Sheet
- Google Apps Script
表示画面
言語表
Googleの言語サポートページから持ってきてます。
コード
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); //シートを取得
var sentenceSheet = spreadsheet.getSheets()[0]; //文章のシート
var langageListSheet = spreadsheet.getSheets()[1]; //言語表のシート
//言語表を配列に読み込む
var langageList = langageListSheet.getRange(1, 1, langageListSheet.getLastRow(), 2).getValues();
//言語を文字コードに変換(例:英語→en)
const langToCode = (lang) => {
for(var i = 0; i < langageList.length; i++){
if(langageList[i][0] === lang){
return langageList[i][1];
}
}
return 1;
};
var text = sentenceSheet.getRange(3, 1).getValues();
var langages = sentenceSheet.getRange(2, 2, 1, 5).getValues()[0];
langages.unshift('ja');
for(var i = 0; i < langages.length; i++){
var code = langToCode(langages[i]);
if(code === 1){
sentenceSheet.getRange(3, i+2).setValue('翻訳できません');
}else{
langages[i] = code;
}
}
langages.push('ja');
//翻訳してシートに書き込む
for(var i = 0; i < langages.length-1; i++){
text = LanguageApp.translate(text, langages[i], langages[i+1])
sentenceSheet.getRange(3, i+2).setValue(text);
}
}
やってること
GASのLanguageApp.translateという関数を使って翻訳しています。翻訳したい言語をリストに変換して後はループを回してます。
結果
原文
「吾輩は猫である。名前はまだない。どこで生れたか頓と見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ち付いて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛を以て装飾されべきはずの顔がつるつるしてまるで薬缶だ。その後猫にも大分逢ったがこんな片輪には一度も出会わした事がない。のみならず顔の真中が余りに突起している。そうしてその穴の中から時々ぷうぷうと烟を吹く。どうも咽せぽくて実に弱った。これが人間の飲む烟草というものである事は漸くこの頃知った。」
再再再再再翻訳後
「吾輩は猫である。名前なしでそれがどこで生まれたのか私は知りません。暗く湿った場所で泣いたことを覚えています。ここで人に会うのは初めてです。また、後で聞いたところ、人類史上最悪の種族だったそうです。書道の話は時々私たちを捕まえ、沸騰させます。でも、その時は知らなかったので、悪くないと思いました。手のひらの上に置いて持ち上げると、少し流れが感じられます。手のひらで少し落ち着いて生徒の顔を見たとき、それはいわゆる人間性の始まりだったのかもしれません。まだまだ感じていました。顔は、最初に髪で装飾する必要があり、滑りやすく、薬のように見えます。その後、大分県に会いましたが、そのような車輪を見たことはありませんでした。これだけでなく、顔の特徴の助けを借りて、あなたは不思議を行うことができます。繰り返しになりますが、これはこれらのプロセスに費やす必要があることを意味します。今、私は人々が喫煙することが一つあることを知っています。」
おわりに
この猫は沸騰させられてから大分県に会ったそうです。
ご覧いただきありがとうございました。質問・ご指摘等ありましたらよろしくお願いします。
選ばれた言語について
一応選んだ理由があります。
英語 ← 忖度して
中国語 ← 話者が多い
エスペラント語 ← 希望をこめて
パンジャブ語 ← 響きが面白かった
ベトナム語 ← ベトナム行きたい