[ic] Re: Custom tag trouble
Elver Loho
elver.loho at gmail.com
Tue Mar 21 10:18:22 EST 2006
Okay, we found a partial solution using:
UserTag lc2 CanNest 1
However, when using that, the translating doesn't work anymore. It
displays what's between the lc2 tags.
Same thing happens when adding interpolate=1 to the lc2 tags.
Elver
On 3/21/06, Elver Loho <elver.loho at gmail.com> wrote:
> Hiya!
>
> This is a long mail, so feel free to scroll down to "=== THE PROBLEM ==="
>
> We were using the LC tag for translations a while ago. However, it's
> not centralized and it's hard to add utf-8 cyrillic and all that. So
> we decided to write our own tag to handle localization that would grab
> all the translations from the locale database.
>
> So what used to look like:
>
> [LC]estonian text[eng]english text[/eng][/LC]
>
> Now looks like:
>
> [lc2 generated_code]estonian text[/lc2]
>
> The generated_code is a pointer to a row in the locale database for
> which I wrote a little multiplatform GUI translation front-end. (I'm
> not yet ready to GPL it. Needs some more testing.)
>
> The lc2 usertag looks like this: (I suck at Perl. I'm a Python guy.)
>
> # [lc2 code] message [/lc2]
> #
> #
>
> UserTag lc2 hasEndTag 1
> UserTag lc2 Interpolate 1
> UserTag lc2 Order locale
> UserTag lc2 Routine <<EOF
> sub {
> my ($code, $message) = @_;
> my $ref;
> my $string;
> my $deflocname;
>
> $ref = $Vend::Cfg->{Locale_repository}{$Scratch->{mv_locale}};
> # $ref = $Vend::Cfg->{Locale_repository};
> $deflocname = $Vend::Cfg->{DefaultLocale};
>
> if($deflocname =~ /$Scratch->{mv_locale}/) {
> # 1) db[est]
> # 2) message
> # 3) db(deflocname)
> # NOES! 4) eng
> # NOES! 5) code/id
> $ref = $Vend::Cfg->{Locale_repository}{est};
> $string = $ref->{$code};
> unless ($string) {
> $string = $message;
> unless ($string) {
> $ref = $Vend::Cfg->{Locale_repository}{$deflocname};
> $string = $ref->{$code};
> unless ($string) {
> return '';
> }
> return $string;
> }
> return $string;
> }
> return $string;
> }
>
> $string = $ref->{$code};
> unless ($string) {
> $ref = $Vend::Cfg->{Locale_repository}{eng};
> $string = $ref->{$code};
> unless ($string) {
> my $string = $message;
> return $string;
> }
> return $string;
> }
>
> if ($Scratch->{mv_locale} =~ /(?:rus|lit|lat)/){
> $string = Encode::decode("utf8", $string);
> use utf8;
>
> if ($Values->{'latin'}){
> my (%chars,%latin,$char,$uchar,$uhex);
>
> ##################################################################
> # read in character codes
> open (ANDMED,'/home/kriso/catalogs/shop/codetable.dat');
> my ($j);
> while (<ANDMED>) {
> /^\d/ && do {
> my @data = split;
> $latin{$data[0]} = $data[1];
> }
> }
> close(ANDMED);
> foreach $char (keys %latin) {
> $uhex=hex($char);
> $uchar=pack("U",$uhex);
> $string =~ s/$uchar/$latin{$char}/g;
> }
> $string=~ s/#//g;
> } else {
> # $string =~ s/(\S)/sprintf("%1s%1s%s%1s",'&','#',ord($1),';')/eg;
> $string =~ s/(\S)/sprintf("%s",&html_code2(ord($1)))/eg;
>
> }
> return $string;
>
> } else {
> return $string;
> }
>
> sub html_code3 {
>
> my $codenr=$_[0];
> if ($codenr>255){
> sprintf("%1s%1s%s%1s",'&','#',$_[0],';');
> } else {
> chr($_[0]);
> }
> }
> }
> EOF
>
> So what's the trouble? Suppose the database field contains stuff like:
>
> "If you already have an username and password then please enter these
> to the fields on the left. If you have lost your username or password
> then please click on the [page lost_password]lost password[/page]
> link. On this page you can enter your name and e-mail and your
> username and password will be sent to your e-mail address. If you are
> a new client please click [page new_account]new account[/page] link."
>
> This is from the LC tag:
>
> "[LC]
> Kui Te omate juba kasutajanime ning parooli, siis sisestage need
> vasakul ülal asuvatesse lahtritesse. Kui olete need unustanud, siis
> klikkige lingil [page lost_password]unustasid parooli[/page]. Avaneval
> lehel tuleks Teil täita mõned väljad ning kui leitakse nendele vastav
> tellija, siis saadetakse kasutajanimi ning parool Teie e-maili
> aadressile. Samuti võite meiega ühendust võtta <a
> href="mailto:kriso at kriso.ee">e-maili</a> või telefoni teel. Kui Te
> olete uus tellija, siis klikkige lingil [page
> new_account]registreeri[/page].
> [eng]If you already have an username and password then please enter
> these to the fields on the left. If you have lost your username or
> password then please click on the [page lost_password]lost
> password[/page] link. On this page you can enter your name and e-mail
> and your username and password will be sent to your e-mail address. If
> you are a new client please click [page new_account]new account[/page]
> link.[/eng]
> [/LC]"
>
> === THE PROBLEM ===
>
> The problem we're having is that with the lc2 tag, the [page ...]
> stuff gets parsed to:
>
> "/.../ If you are a new client please click <a
> href="http://www.kriso.ee/cgi-bin/shop/new_account.html?id=IjMx5JnV&mv_pc=14102">new
> account[/page] link."
>
> Basically it seems that it doesn't see the [/page] part for some
> reason. Any ideas?
>
>
> Elver
>
More information about the interchange-users
mailing list