[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: broken slices
At Tue, 21 Dec 1999 23:09:37 +0900,
Yoshizumi Endo <y-endo@xxxxxxxxxxxxxxx> wrote:
> # euc-ja で埋め込まないといけないしと、結構面倒な作業です。
> # あるいは簡単に修正する方法とかあるでしょうか?
かなりてきとーですが、こんなのはどうでしょうか?
*) JAだけ(もしくは ENとJAのみ)の define-tag を定義した
slice ファイルを用意する。これは EUC-JP で書いておけばいいし
EUC-JP だけしか含まれないので普通のエディタで編集できる。
例)
<define-tag eventtitle whitespace=delete>
[EN:Upcoming Attractions:]
[JA:近日開催されるイベント:]
</define-tag>
<define-tag langwhen whitespace=delete>
[EN:When:]
[JA:日時:]
</define-tag>
<define-tag langwhere whitespace=delete>
[EN:Where:]
[JA:場所:]
</define-tag>
* 添付の program を
% update-tempalte-slices.pl JA "sliceファイル名" webwml/english/template/debian
と実行する
* すると sliceファイルの JA のやつで おきかえたのが 元のファイル名.new という
ファイルで作成される。確認して mv して commit
疑問点)
* tag名は global? wml file local?
→ sliceファイルを分割した方がいいのか?
* define-tag 以外の部分どうする?
#!/usr/bin/perl
# update-template-slices.pl
# Copyright (c) 1999 Fumitoshi UKAI <ukai@debian.or.jp>
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
if ($#ARGV < 2) {
print STDERR <<USAGE;
usage: $0 <locale-prefix> <locale-slice-file> <template-dir>
USAGE
exit 1;
}
$LOCALE = $ARGV[0];
$SLICE = $ARGV[1];
$TEMPLDIR = $ARGV[2];
open(SL, "$SLICE") or die "cannot open $SLICE, $!";
while (<SL>) {
if (/^<define-tag\s+(\S+).*>/) {
$tagname = $1;
undef $tagdata;
next;
}
if (/^<\/define-tag>/) {
my @t = ($tagdata =~ m/\[[A-Z]{2}:[^:]*:\]/g);
foreach (@t) {
print "$tagname: $_\n";
}
$tag{$tagname} = \@t;
undef $tagname;
next;
}
$tagdata .= $_;
}
close(SL);
opendir(TDIR, $TEMPLDIR) or die "cannot open $TDIR, $!";
foreach $f (readdir(TDIR)) {
$file = "$TEMPLDIR/$f";
next unless -f $file;
open(F, $f) or die "cannot open $file, $!";
open(NF, "> $f.new") or die "cannot open $file.new, $!";
while (<F>) {
if (/^<define-tag\s+(\S+).*>/) {
$tagname = $1;
print NF;
next;
} elsif (/^<\/define-tag>/) {
$etag = $_;
($t) = grep(/\[$LOCALE:/, @{$tag{$tagname}});
if (defined($t)) {
print "replace: <$tagname><$LOCALE> $t\n";
$tagdata =~ s/\[$LOCALE:[^:]*:\]/$t/;
}
print NF $tagdata;
undef $tagname;
undef $tagdata;
print NF $etag;
next;
}
if (defined($tagname)) {
$tagdata .= $_;
next;
}
print NF;
}
close(F);
}
--
鵜飼文敏