[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);
}

-- 
鵜飼文敏