ウィキペディアと最も単純なスクリプトを使用して、OpenCartの地域のリストを翻訳しました。
$db = mysql_connect('localhost', 'username', 'password'); mysql_select_db('database', $db); mysql_set_charset('utf8', $db); $result = mysql_query("SELECT zone_id, name FROM zone GROUP BY zone_id ASC"); // . while ($row = mysql_fetch_assoc($result)) { $page = @file_get_contents('http://en.wikipedia.org/wiki/'.str_replace(" ", "_", $row['name'])); // . preg_match("/<a href=\"\/\/ru\.wikipedia\.org\/wiki\/(.*)\" title/", $page, $matches); // . if (!empty($matches)) { mysql_query("UPDATE zone SET name = '".$row['name']."::".urldecode(str_replace("_", " ", $matches[1]))."' WHERE zone_id = '".$row['zone_id']."'"); // , . } else { mysql_query("UPDATE zone SET name = '".$row['name']."' WHERE zone_id = '".$row['zone_id']."'"); // , . } }
このスクリプトは、Wikipediaにリンクの英語名を置き換え、ロシア語版へのリンクの存在をページで解析し、そこから翻訳を取得するだけです。 秘Theは、Wikipediaのほとんどすべてのリンクにテキストと同じ名前が含まれていることです。 そのような恐怖でさえ。
ニュアンス:
- リストの3分の1は未翻訳のままですが、英語名がWikipediaで示されている名前とどのように一致するかに大きく依存しています。
- 翻訳されたリストは、手作業で少し掃除する必要があります。 たとえば、私の場合、括弧で囲まれた国の名前またはすべての種類の「(values)」、「(city)」、「(province)」などを削除する必要がありました。
- ウィキペディアはスペースをアンダースコアに置き換えます。そのため、スペースを前後に(スクリプトで)翻訳する必要があります。 しかし、私はまだ他の代替品がないことを確信していません-この瞬間を考慮する価値があります。
- キャプテンは、リストが大きいほど、処理に時間がかかることを思い出します。 たとえば、4000以上のゾーンのリストがあり、それをブラウザーで実行して、要求を1000行に制限しました。 ただし、このような場合はブラウザを介さずに実行することをお勧めします。
これは単なる例であることを再度明確にします。 理論的には、そのようなソリューションを使用して、Wikipediaを介して任意のリストを任意の言語から任意の言語に翻訳できます。 おそらく、このタスクには、受信したデータを検索および解析するためのその他のオプションがありますが、これ以上簡単なものは思いつきません。