@kyanny's blog

革命は金銭ではない - 孫文

エキサイト翻訳を笑ってはいけないと思った出来事

エキサイト翻訳といえば、日本語的にそれどーなのよといいたくなるような失笑モノの翻訳をかましてくれることで有名ですが、今日ちょっと英文を書いたので彼に読ませてみたところ、こんなんでてきました。

英文(オリジナル)

Hello, everyone!

I made a module named CGI::Application::Dispatch::BuildURI.
This module resolve a relative URI path's problem when writing template files.

When I use CGI::Application::Dispatch, I often confused by relative URI path difference.
For example, following two URI call same module and same runmode, but Browser follow different link whether URI including PATH_INFO or not.

http://www.example.com/example.cgi
http://www.example.com/example.cgi/start/do_start

So, I provide build_uri() method, this method generates URI including complete PATH_INFO.
This build_uri() method is used on each runmode method.

use CGI::Application::Dispatch::BuildURI;

sub do_start
{
my $self = shift;
my $location = $self->build_uri(
module => 'start',
rm => 'do_start',
query_string => 'key=value',
);
# $location is 'http://www.example.com/example.cgi/start/do_start?key=value'
}

You may feel a pain if you must call any redirection.
And, if you must call build_uri() all runmode, it's a frighening thought.
So, I provide move_uri() method.This method is useful for using on cgiapp_prerun.

sub cgiapp_prerun
{
my $self = shift;
$self->move_uri();
# automatically redirect URI
}

If you access abbreviated URI, these method move URI to complete URI.
You will not confuse by template's relative path.

If 'module' parameter is not assigned, build_uri() set default module name that is assigned as DEFAULT => 'Start' when CGI::Application::Dispatch instance is created.
As in the case of 'module', when rm parameter is not assigned, build_uri() set start_mode as default value, also move_uri().

I would upload this module to CPAN, but I am worried about two reasons.

First, whether module name is correct or not.
If I use common name, I occupy valuable namespace.
This module is my first work, so I don't know a custom.

Second, whether my test is enough or not.
I read 'Perl medic' and perldoc Test::Tutorial, but this is my first test code, I am worried about my test is not enough.

I upload tarball which made by 'make dist' and passed 'make test' on my Perl(v5.8.6).
http://URI/
Please tell me your opinion!

Regards

翻訳(by excite翻訳)

こんにちは、皆!

私はCGIというモジュールを作りました:、:アプリケーション:、:以下を派遣してください:
BuildURI。
テンプレートファイルを書くとき、このモジュールは相対的なURI経路の問題を解決します。


以下のこと、私がCGIを使用すると:アプリケーション:、:急いでください、そして、私はしばしば相対的なURI経路差で混乱させました。
例えば、次の2URI呼び出しの同じモジュールとしかし、同じrunmode、BrowserはPATH_INFOを含むURIであるか否かに関係なく、異なったリンクに続きます。

http://www.example.com/example.cgi
http://www.example.com/example.cgi/start/do_start

私は、したがって、この方法が完全なPATH_INFOを含むURIを発生させるのを体格_uri()方法を前提とし
ます。
これは_方法が使用されるuri()にそれぞれのrunmode方法を築き上げます。

CGIを使用してください:、:アプリケーション:、:以下を派遣してください:BuildURI;

潜水艦は_始めをします。
{
私の$自己=シフト;
$私の$位置=自己-> _uriを造ってください、(
module => '始まってください'
rm => '_始めをしてください'
質問_ストリング=> '主要な=値'
);
# $位置は' http://www.example.com/example.cgi/start/do_start?key=value 'です。
#
}

どんなリダイレクションも呼ばなければならないなら、あなたは痛みを感じることができ
ます。
そして、電話をしなければならないなら、すべてのrunmodeを_uri()に造ってください、そし
て、それはfrighening考えです。
したがって、私は使用する方法がcgiapp_prerunで役に立つ移動_uri() method.Thisを提供し
ます。

潜水艦cgiapp_prerun
{
私の$自己=シフト;
$自己-> _uri()を動かしてください;
# 自動的にURIを向け直してください。
}

あなたであるなら、アクセスはURIを簡略化して、これらはURIを完成する方法移
動URIです。
あなたはテンプレートの相対パスで混乱させないでしょう。

'モジュール'パラメタが割り当てられないなら、_DEFAULT=として割り当てられるuri()セットデフォルトモジュール名を築き上げてください、> ''CGIであるときに、始まってください:、:アプリケーション:、:発信例は作成されます。
'モジュール'に関するケースのように、rmパラメタが割り当てられないとき、デフォルト値として_uri()セット始め_モードを築き上げてください、そして、また、_uri()を動かしてください。

このモジュールをCPANにアップロードするでしょうが、私は2つの理由が心配です。

モジュール名が最初に、正しいか否かに関係なく。
一般名を使用するなら、私は貴重な名前空間を占領します。
このモジュールが処女作であるので、私は習慣を知りません。

私のテストが十分であるか否かに関係なく、2番目。
私は'Perl医療従事者'とperldoc Testを読みます:、:しかし、チュートリアル、これが私の最初のテスト・コードである、私は私のテストを心配するのが、十分であるということです。

私はtarballをアップロードします('distを作ってください'によって作られて、通過されて、私の
Perl(v5.8.6)で'テストをします')。
http://URI/
意見を私に言ってください!

敬具

ひどい日本語ですね。しかし、これがどこぞから拾ってきた英文なら「エキサイト翻訳は相変わらずばかだなあ」と笑って済ませるところを、英文の一字一句まで自分が書いたとなると・・・笑われるべきは自分のほうである、ということがよくわかります。むしろ彼を尊敬すらします。よくぞこんなひどい日本語を意味する英文を嫌味の一つもいわずに翻訳してくれた・・・。

参考までに、英文のさらにオリジナルとなった日本語の文章も載せておきましょう。つまり、日本語→英語→日本語変換遊びのうち、英訳のプロセスを、平均的な高卒レベルの英語力の日本の若者が肩代わりしたバージョンというわけ。

日本語文(オリジナル)

みなさん、こんにちは!

私はCGI::Application::Dispatch::BuildURIというモジュールを作りました。
このモジュールは、CGI::Application::Dispatchを使い、テンプレートの相対パスを記述するときの問題を解決するためのものです。

私はCGI::Application::Dispatchを使うとき、テンプレートの相対パスにずれが生じるので、頭を悩ませていました。
たとえば、以下の二つのURIが同じモジュールの同じランモードを参照していても、PATH_INFOのあるなしでブラウザがリンクをたどる挙動が変わってしまいます。

http://www.example.com/example.cgi
http://www.example.com/example.cgi/start/do_start

そこで、完全なPATH_INFOを含むURIを提供するbuild_uri()というメソッドを作りました。
これは以下のようにして、ランモードごとに記述します。

use CGI::Application::Dispatch::BuildURI;

sub do_start
{
my $self = shift;
my $location = $self->build_uri(
module => 'start',
rm => 'do_start',
query_string => 'key=value',
);
# $location is 'http://www.example.com/example.cgi/start/do_start?key=value'
}

URIを得ることができても、リダイレクトは自分でさせなくてはならないのでは面倒ですよね?
また、全てのランモードでbuild_uri()を呼び出すのは、考えるだけでぞっとすることです。
そこで、move_uri()というメソッドも用意しました。これはcgiapp_prerunの中で実行するのに都合が良いです。

sub cgiapp_prerun
{
my $self = shift;
$self->move_uri();
# automatically redirect URI
}

これで、省略されたURIでアクセスされたときはいつも完全なURIに移動されるので、テンプレートの相対パスがずれて混乱することはなくなります。

build_uri()はmoduleパラメータが与えられなかった場合は、デフォルトの、つまりCGI::Application::Dispatchのインスタンスを作るときにDEFAULT=>'Start'として指定したモジュールをセットします。ランモードに関しても、rmパラメータが省略された場合は、setupの中でstart_modeとして指定されたものをセットします。move_uri()についても同様です。

私はこのモジュールをCPANにアップロードしようと考えていますが、二つ心配事があります。

一つは、モジュールの名前が適切かどうかということです。
ありふれた名前をつけることで、貴重な名前空間を占有してしまい、これから作られるであろうもっと有用なモジュールに悪影響を与えないだろうかと心配しているのです。
私はモジュールを作るのはこれが初めてなので、慣習に詳しくないのです。

二つは、テストは十分かどうかということです。
書籍のPerl救命病棟やTest::Moreのチュートリアルなどを読んでテストを書きましたが、テストを書いたのもこれが初めてのことなので、不十分なテストのまま公開して、ひどいことを引き起こしはしないだろうかと思うのです。

私の手元のPerl(v5.8.6)でmake testをパスし、make distしたtarballをアップロードしました。是非皆さんの意見を聞かせてください!


Regards

ちなみに、モジュールは本当に作ってあり、英文を書いたのはcgiapp mailing listに投稿するためです。できれば日本語のほうも、日本人の人たちのメーリングリストに投稿して意見をもらいたいと思っているんだけど、英訳することを意識して直訳っぽいぎくしゃくした日本語文を書いてしまったので、これは書き直さないといけないかも・・・。