このエントリはMovableType2.661を対象にしています。
MovableTypeの最新バージョン3.01は日本語パッチの必要がありません。
MT3.xのインストール手順についてはこちらを参考にしてください。
日本語化パッチをみなさまのご意見を取り入れながら頑張っていろいろと更新しておきながら、よく考えたら最終的にどんな感じになっているのかって書いていないことに気づきました。
現在の日本語化パッチでやっていることをまとめることにします。
Macユーザーでも、これを見ながら手作業をおこなえば対応できるでしょう。
赤字がパッチで修正している部分。
行数は、オリジナルの状態でカウントしたものです。行を追加したりしているので、作業を進めるにつれ行数が変化していくので要注意。
初版:2003/06/20
追加:2003/07/23
追加:2003/09/01
追加:2003/12/24 Ver2.65に対応
追加:2004/01/20 Ver2.661まで対応
-
lib/MT/App/CMS.pm
- 9行目
use Symbol;
という行の前に
use Jcode;
という行を追加。
- 206行目以降を書き換え
if ($page eq 'login.tmpl') {
## For bookmarklets, we need to pass-thru text, title, and
## href vars
my $q = $app->{query};
$param->{text} = $q->param('text');
$param->{link_title} = $q->param('link_title');
$param->{link_href} = $q->param('link_href');
$param->{bm_show} = $q->param('bm_show');
}
↓
if ($page eq 'login.tmpl') {
## For bookmarklets, we need to pass-thru text, title, and
## href vars
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=> 'euc',
'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
my $q = $app->{query};
$param->{text} = $q->param('text');
$param->{link_title} = $q->param('link_title');
$param->{link_href} = $q->param('link_href');
$param->{text} = Jcode->new($param->{text})->$charset();
$param->{link_title} = Jcode->new($param->{link_title})->$charset();
$param->{link_href} = Jcode->new($param->{link_href})->$charset();
$param->{bm_show} = $q->param('bm_show');
}
- 629行目以降を書き換え
if ($q->param('is_bm')) {
$param{selected_text} = $param{text};
$param{text} = sprintf qq(<a title="%s" href="%s">%s</a>\n\n%s),
scalar $q->param('link_title'),
scalar $q->param('link_href'),
scalar $q->param('link_title'),
$param{text};
↓
if ($q->param('is_bm')) {
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=> 'euc',
'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
$param{selected_text} = $param{text};
$param{text} = sprintf qq(<a title="%s" href="%s">%s</a>\n\n%s),
map { Jcode->new($_)->$charset() }
scalar $q->param('link_title'),
scalar $q->param('link_href'),
scalar $q->param('link_title'),
- 646行目を書き換え
$param{to_ping_url_loop} = $items;
↓
$param{to_ping_url_loop} = [ grep { $_->{title} = Jcode->new($_->{title})->$charset() } @$items ];
- 1526行目を書き換え(2003/07/23追加)
$row->{"status_$row->{status_text}"} = 1;
↓
$row->{"status_" . MT::Entry::status_text($obj->status)} = 1;
- 2578行目を書き換え
$body .= Text::Wrap::wrap(" ", " ", $entry->get_excerpt) . "\n\n"; ↓
$body .= (join "\n", (Jcode->new($entry->get_excerpt)->jfold($Text::Wrap::columns))) . "\n\n"; - 2585行目を書き換え
$body .= Text::Wrap::wrap('', '', $entry->text) . "\n"; ↓
$body .= (join "\n", (Jcode->new($entry->text)->jfold($Text::Wrap::columns))) . "\n"; - 2588行目を書き換え
$subj =~ s![\x80-\xFF]!!g;
↓
#$subj =~ s![\x80-\xFF]!!g;
-
lib/MT/App/Trackback.pm
- 68行目以降を書き換え
if (my $err = $param{Error}) {
my $re = join '|', keys %map;
$err =~ s!($re)!$map{$1}!g;
print <<XML;
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>1</error>
<message>$err</message>
</response>
XML
} else {
print <<XML;
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
XML
↓
my $encoding = $app->{cfg}->PublishCharset || 'UTF-8';
if (my $err = $param{Error}) {
my $re = join '|', keys %map;
$err =~ s!($re)!$map{$1}!g;
print <<XML;
<?xml version="1.0" encoding="$encoding"?>
<response>
<error>1</error>
<message>$err</message>
</response>
XML
} else {
print <<XML;
<?xml version="1.0" encoding="$encoding"?>
<response>
<error>0</error>
XML
- 120行目以降を書き換え(2003/09/01変更)
my($title, $excerpt, $url, $blog_name) = map scalar $q->param($_),
qw( title excerpt url blog_name);
no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
↓
my($title, $excerpt, $url, $blog_name, $icode) = map scalar $q->param($_),
qw( title excerpt url blog_name charset);
no_utf8($tb_id, $title, $excerpt, $url, $blog_name);
require Jcode;
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
my $incoming = {'shift_jis'=>'sjis','iso-2022-jp'=>'jis','euc-jp'=>'euc',
'utf-8'=>'utf8'}->{lc($icode)} || Jcode::getcode($excerpt . $title . $blog_name);
$title = Jcode->new($title, $incoming)->$charset();
$excerpt = Jcode->new($excerpt, $incoming)->$charset();
$blog_name = Jcode->new($blog_name, $incoming)->$charset();
- 173行目移行を書き換え
if (length($excerpt) > 255) {
$excerpt = substr($excerpt, 0, 252) . '...';
}
↓
if (length($excerpt) > 255) {
$excerpt = substr(Jcode->new($excerpt, $charset)->euc(), 0, 252);
if ($excerpt =~ /\x8F$/ or $excerpt =~ tr/\x8E\xA1-\xFE// % 2) {
chop $excerpt;
}
$excerpt = Jcode->new($excerpt . '...', 'euc')->$charset();
}
- 273行目を書き換え
<language>en-us</language>
↓
<language>ja</language>
-
lib/MT/ConfigMgr.pm
- 48行目を書き換え
$mgr->define('BlogsPingURL', Default => 'http://ping.blo.gs/');
↓
$mgr->define('BlogsPingURL', Default => 'http://ping.bloggers.jp/rpc/');
-
lib/MT/Mail.pm
- 20行目以降を書き換え
@{[ MT->version_slug ]}
SIG
my $mgr = MT::ConfigMgr->instance;
my $xfer = $mgr->MailTransfer;
↓
@{[ MT->version_slug ]}
SIG
require Jcode;
$body = Jcode->new($body)->jis;
$hdrs->{Subject} = Jcode->new($hdrs->{Subject})->mime_encode;
$hdrs->{'Content-Type'} = qq(text/plain; charset="iso-2022-jp");
$hdrs->{'Content-Transfer-Encoding'} = "7bit";
my $mgr = MT::ConfigMgr->instance;
my $xfer = $mgr->MailTransfer;
-
lib/MT/XMLRPC.pm(EUC版のみ)
- 47行目を書き換え
my $blog_name = encode_xml($blog->name);
↓
require Jcode;
my $blog_name = encode_xml(Jcode->new($blog->name)->utf8);
-
lib/MT/XMLRPCServer.pm(EUC版のみ)
- 45行目
use strict;
という行の前に
use Jcode;
という行を追加。
- 125行目以降、196行目以降を書き換え
unless ($HAVE_XML_PARSER) {
for my $f (qw( title description mt_text_more
mt_excerpt mt_keywords )) {
next unless defined $item->{$f};
$item->{$f} = decode_html($item->{$f});
$item->{$f} =~ s!'!'!g;
}
}
my $mt = MT::XMLRPCServer::Util::mt_new(); ## Will die if MT->new fails.
↓
unless ($HAVE_XML_PARSER) {
for my $f (qw( title description mt_text_more
mt_excerpt mt_keywords )) {
next unless defined $item->{$f};
$item->{$f} = decode_html($item->{$f});
$item->{$f} =~ s!'!'!g;
}
}
for my $f (qw( title description mt_text_more mt_excerpt mt_keywords )) {
next unless defined $item->{$f};
$item->{$f} = Jcode->new($item->{$f},"utf8")->euc;
}
my $mt = MT::XMLRPCServer::Util::mt_new(); ## Will die if MT->new fails.
- 257行目を書き換え
blogName => SOAP::Data->type(string => $blog->name) };
↓
blogName => SOAP::Data->type(string => Jcode->new($blog->name)->utf8) };
- 268行目を書き換え
my($fname, $lname) = split /\s+/, $author->name;
↓
my($fname, $lname) = split /\s+/, Jcode->new($author->name)->utf8;
- 273行目を書き換え
nickname => SOAP::Data->type(string => $author->nickname),
↓
nickname => SOAP::Data->type(string => Jcode->new($author->nickname)->utf8),
- 305行目を書き換え
$row->{content} = SOAP::Data->type(string => $entry->text);
↓
$row->{content} = SOAP::Data->type(string => Jcode->new($entry->text)->utf8);
- 307行目を書き換え
$row->{title} = SOAP::Data->type(string => $entry->title);
↓
$row->{title} = SOAP::Data->type(string => Jcode->new($entry->title)->utf8);
- 309行目を書き換え
$row->{description} = SOAP::Data->type(string => $entry->text);
↓
$row->{description} = SOAP::Data->type(string => Jcode->new($entry->text)->utf8);
- 316行目以降を書き換え
$row->{mt_text_more} = SOAP::Data->type(string => $entry->text_more);
$row->{mt_excerpt} = SOAP::Data->type(string => $entry->excerpt);
$row->{mt_keywords} = SOAP::Data->type(string => $entry->keywords);
↓
$row->{mt_text_more} = SOAP::Data->type(string => Jcode->new($entry->text_more)->utf8);
$row->{mt_excerpt} = SOAP::Data->type(string => Jcode->new($entry->excerpt)->utf8);
$row->{mt_keywords} = SOAP::Data->type(string => Jcode->new($entry->keywords)->utf8);
- 368行目以降を書き換え
description => SOAP::Data->type(string => $entry->text),
title => SOAP::Data->type(string => $entry->title),
↓
description => SOAP::Data->type(string => Jcode->new($entry->text)->utf8),
title => SOAP::Data->type(string => Jcode->new($entry->title)->utf8),
- 375行目以降を書き換え
mt_text_more => SOAP::Data->type(string => $entry->text_more),
mt_excerpt => SOAP::Data->type(string => $entry->excerpt),
mt_keywords => SOAP::Data->type(string => $entry->keywords),
↓
mt_text_more => SOAP::Data->type(string => Jcode->new($entry->text_more)->utf8),
mt_excerpt => SOAP::Data->type(string => Jcode->new($entry->excerpt)->utf8),
mt_keywords => SOAP::Data->type(string => Jcode->new($entry->keywords)->utf8),
- 421行目を書き換え
categoryName => SOAP::Data->type(string => $cat->label),
↓
categoryName => SOAP::Data->type(string => Jcode->new($cat->label)->utf8),
- 444行目を書き換え
categoryName => SOAP::Data->type(string => $cat->label),
↓
categoryName => SOAP::Data->type(string => Jcode->new($cat->label)->utf8),
- 504行目を書き換え
pingTitle => SOAP::Data->type(string => $ping->title),
↓
pingTitle => SOAP::Data->type(string => Jcode->new($ping->title)->utf8),
-
lib/MT.pm(2003/09/01追加)
- 560行目以降を書き換え
## Build query string to be sent on each ping.
my @qs;
push @qs, 'title=' . MT::Util::encode_url($entry->title);
push @qs, 'url=' . MT::Util::encode_url($entry->permalink);
push @qs, 'excerpt=' . MT::Util::encode_url($entry->get_excerpt);
push @qs, 'blog_name=' . MT::Util::encode_url($blog->name);
my $qs = join '&', @qs;
↓
## Build query string to be sent on each ping.
require Jcode;
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
'UTF-8'=>'utf8'}->{$mt->{cfg}->PublishCharset} || 'utf8';
my @qs;
push @qs, 'title=' . MT::Util::encode_url(Jcode->new($entry->title, $charset)->utf8);
push @qs, 'url=' . MT::Util::encode_url(Jcode->new($entry->permalink, $charset)->utf8);
push @qs, 'excerpt=' . MT::Util::encode_url(Jcode->new($entry->get_excerpt, $charset)->utf8);
push @qs, 'blog_name=' . MT::Util::encode_url(Jcode->new($blog->name, $charset)->utf8);
push @qs, 'charset=utf-8';
my $qs = join '&', @qs;
-
mt-check.cgi(2003/09/01追加)
- 27行目移行を書き換え
my @REQ = (
[ 'HTML::Template', 2, 1, 'HTML::Template is required for all Movable Type application functionality.' ],
↓
my @REQ = (
[ 'Jcode', 0, 1, 'Jcode is required for Movable Type in Japanese.' ],
[ 'HTML::Template', 2, 1, 'HTML::Template is required for all Movable Type application functionality.' ],
※すでにmt-load.cgi実行済みの場合は、修正しても意味無し。
-
tmpl/cms/cfg_prefs.tmpl(2003/12/24追加)
- 444行目を書き換え
<input type="checkbox" name="ping_blogs" value="1"<TMPL_IF NAME=PING_BLOGS> checked</TMPL_IF>> <font class="title">blo.gs</font><br />
↓
<input type="checkbox" name="ping_blogs" value="1"<TMPL_IF NAME=PING_BLOGS> checked</TMPL_IF>> <font class="title">ping.bloggers.jp</font><br />
-
lib/MT/default-templates.pl
- 252行目、616行目を書き換え
<dc:language>en-us</dc:language>
↓
<dc:language>ja</dc:language>
- 554行目、1258行目を書き換え
<div style="width:180px; padding-right:15px; margin-right:15px; float:left; text-align:left; border-right:1px dotted #bbb;">
↓
<!--div style="width:180px; padding-right:15px; margin-right:15px; float:left; text-align:left; border-right:1px dotted #bbb;"-->
- 563行目、1267行目を書き換え
</div>
↓
<!--/div-->
- 651行目から910行目、stylesheetっぽい部分をカミノゴウヤさん作のスタイルシート(EUC/UTF-8)に書き換え
※すでにmt-load.cgi実行済みの場合は、修正しても意味無し。
-
lib/MT/L10N/ja.pm
- ひらたさん作のLanguagePackのうち、文字コードに適した方を新規作成
-
images/lang-ja/*
- ひらたさん作の日本語用画像を新規作成
kaminogoya
???????????
??????????W3C?CSS Validator???????????textarea?font-family??sans-serif???serif???????????????????????????????????????????????????????????
kaminogoya
スイマセン。文字化けてしまいました。
safariで書き込む時は注意しないと…。
みらのさんこんにちは。
申し訳ないのですが、W3CのCSS Validatorでチェックしてみた所、textareaのfont-familyに『sans-serif』や『serif』といった一般ファミリーの値が抜けている事がわかりました。よろしかったら、次回の修正時に追加していただけたら幸いです。
milano
safariでの文字化けってどうにもならないんですかね?
よくわからないのだけれど。
さて、familyの追加、了解しました。
やっときます。
styles.cssのほうは、familyは全く指定してないのですが、こっちもですか?
taro
いつも拝見させていただいております。
macユーザーでして OS.9なものでどうしようかと思っていたのですが
内容公開という事でチャレンジさせていただいてます。
>lib/MT/L10N/ja.pm
の部分だけ WIN版 osx版 両方ともダウンロードして見たのですが [ja.pm]というファイルが出来ず書き込ませていただいてます。
初歩的な問題ですみません。
お知恵を拝借出来ればと。
よろしくお願いいたします。
milano
>taroさん
ワタシの説明がわかりにくかったですかね。
ja.pm は日本語パッチには単体では含まれておりません。
パッチをあてると作成できるのですが、単体での配布はワタシの所ではおこなっておりません。
ひらたさんのところからJapaneseLanguagePackをダウンロードしてください。
その中に含まれています。
taro
milanoさん ありがとうございます。
さっそくテストさせていただきます。
あとサイトのレベッカにバービーの話題も気になるところです。
今後もよろしくお願いいたします。
taro
load.cgiまではなんとか無事たどり着いたのですが、
mt.cgiに飛ぶと
Got an error: Unrecognized character \xA0 at lib/MT/App/CMS.pm line 208. Compilation failed in require at mt.cgi line 21.
このようなメッセージが。
もう少しがんばってみます。
milano
>taroさん
たぶん、文字コード・改行コードの問題だと思います。
SJIS+LFでアップすれば良いはずです。
taro
ありがとうございます。
今日は帰れそうにないので明日がんばってみますね。
taro
Mac OS9のtaroです。
試しに一からダウンロードしなおし作り直して SJIS+LFでアップしたのですが、
check.cgi load.cgiまではクリアするのですが
やはりmt.cgiで同じコメントがでます。
Got an error: Unrecognized character \xA0 at lib/MT/App/CMS.pm line 207. Compilation failed in require at mt.cgi line 21.
試しに CMS.pmみるとその行は
## For bookmarklets, we need to pass-thru text, title, and
mt.cgiは
require MT::App::CMS;
となっております。
本をアマゾンで予約したので それみて再挑戦ですかね?
初歩的な問題ばかりですみません。
Rick Cogley
Is encoding spelled like "encording" on purpose?
上記で、encordingになっているが、これってOKですか?英語的に考えると、encordingではなくencoding.
ですかね?
milano
失礼。
encording -> encoding
です。
taro
macOS9のtaroです。
アマゾンから本が送られてきました(笑)
でmtをもう一度ダウンロードして再解凍したり
SJIS+LFでアップし直したりイロイロ試しているのですが
どうしても
http://taro.readymade.jp/cgi/mt/mt.cgi
で
Got an error: Unrecognized character \xA0 at lib/MT/App/CMS.pm line 208. Compilation failed in require at mt.cgi line 21.
こう出てしまいます。
ちなみにCMS.pmの207行目からは 上記のパッチ書き替え部分となります。
if ($page eq 'login.tmpl') {
## For bookmarklets, we need to pass-thru text, title, and
## href vars
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=> 'euc',
'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
my $q = $app->{query};
$param->{text} = $q->param('text');
$param->{link_title} = $q->param('link_title');
$param->{link_href} = $q->param('link_href');
$param->{text} = Jcode->new(CGI::unescape($param->{text}))->$charset();
$param->{link_title} = Jcode->new(CGI::unescape($param->{link_title}))->$charset();
$param->{link_href} = Jcode->new(CGI::unescape($param->{link_href}))->$charset();
$param->{bm_show} = $q->param('bm_show');
}
なにかいい手段ないでしょうか?
本当たびたびすみません。
よろしくお願いいたします。
milano
>taroさん
原因不明ですねぇ。
このサイトからコピペして内容を修正しているのですよね?
コピペの際に、なんか変な文字コードが混ざってしまっているのかも。
taro
milano さん。
ありがとございます。
直接コピペでなく一度ページをテキストに書き出して再チャレンジしてみます。
この連休が勝負!
summa
はじめまして。
movable typeに挑戦中の初心者です。MovableType2.64日本語化パッチ(Unix/OS X版)をダウンロードしてOS10.2.6下で操作しています。
こちらの日本語化手順どおりに進めているのですが、
"書類「MT.euc.patch」を開くために指定されているデフォルトのアプリケーションがありません。"
という表示になり、パッチを実行することができません。もしかしてものすごく初歩的なミスをしているのかもしれませんが、ご指導いただけると幸いです。
taro(mac_OS)
milano さん
なんとかCMSをwinパッチ済みのものと差し替えさせていただく機会に恵まれ ログインまでたどり着けました。
http://taro.readymade.jp/CMS.txt
ちなみにこれが以前のCMS.txtです。
で、新たな問題が発生してしまいました。
ログインしたものののEDIT PROFで ランゲージを日本語に選択できないのです。
日本語化パッチを使うことができないので コピペで書き替えてるのですが
パッチの方法と同じ用に
extlibのディレクトリに Jcode.pm と Jcodeのフォルダを入れてるのですがこれではだめなのでしょうかね?
本来パッチ前の作業ですが パッチを使っていないので
このあとこの書類がどうなってしまうのかが わからず
とりあえず入れたままにしてあります。
とりあえずココまでこれたのは milano さん 含め ネット上の皆さまのおかげです。
ありがとうございます。
milano
>summaさん
OS Xを使用している方は、付属の「README.txt」「README_by_hirata.txt」をお読みください。
>taroさん
lib/MT/L10N/ja.pmをアップロードしていないのでは?
taro
milano さん
たびたびすみません。
lib/MT/L10N/ja.pmはアップしてました。
とりあえず メニューは日本語化されなかったものの
日本語で書けるblogはなんとか設置できたので あとは 本も買ったことですし
それを見ながら 進行して行きます。
ほんとに多くの人のお世話になってしまいました。
ありがとうございます。
summa
milanoさん
summaです。read me ちゃんと読んでいませんでした。
私もja.pmが足りなかったようで、早速あてたらうまくいきました!どうもありがとうございます。
みい
os9を使っていて、手動で書き換えを試みていましたが
lib/MT.pmの562行目で何度もエラーが出て苦しみました。
## Build query string to be sent on each ping.
require Jcode;
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
'UTF-8'=>'utf8'}->{$app->{cfg}->PublishCharset} || 'utf8';
$appを$mtに変えたら成功したんですが、これでいいんですよね?
コピペで書き換えをするときに、全角スペースが
入り込んでしまい、エラーに繋がることがあるので
これから試される方は気を付けて下さい。
milano
>みいさん
その通りでございます。$appではなく$mtでした。
ご迷惑をおかけしました。
onehour
はじめまして。
こちらのサイトを参考に、os9で日本語化にトライしている者です。
loadとcheckまでは上手く行って、問題ないのですが、
mt.cgiを起動させると、以下のようなエラーが出てしまうのです。
Got an error: Unrecognized character \xAC at lib/MT/App/CMS.pm line 209. Compilation failed in require at mt.cgi line 21.
しかしCMS.pmのline 209には、さして問題があるように見受けられず、どうしたものかと困っています。
サーバはロリポップさんを使っていて、日本語化しなければ問題なくmt.cgiが立ち上がります。
どなたか良いアドバイスを頂けないでしょうか。
宜しくお願い致します。
pico
はじめまして。
おかぼれもん。のpicoと申します。
大変参考になりました。
ありがとうございます。
感謝してます。
a-saku
こんにちは。
現在mac os9でMOVABLE TYPE2.66をアップしました。超初心者ながらトライしています。現在mt.cgiを起動した所どうも問題があるみたいでMOVABLE TYPEのロゴの箇所がグニャッと曲がっちゃっています。それでも一応ログインはできるのですが、今度は日本語の選択項目がタブの中に現れてこない状況です。資料を元にチェックしましたが、自己解決出来ずにいます。
パッチがなく手打ちでここまできました。
なにか気を付ける箇所を御存じでしたらアドバイス頂けないでしょうか?よろしくおねがいします。
reeya
MTの日本語パッチを使わせて頂きました。ありがとうございますm(_ _)m
これがなければMTを始めようなんて考えなかったでしょうねぇ。
最近は猫も杓子もブログですが最初期から取り組んでこられて頭が下がる思いです。
お礼かたがたHPのブログページにリンクさせて頂きました。どこでリンク報告をしたものやら探しましたが見当がつかなかったものでここでご挨拶させて頂きます。
これからもまったりと読めるブログを楽しみにしております。
ご挨拶まででした。