Schrift
[thread]468[/thread]

mehrsprachig mit HTML::Template: Aufbau der Templates (Seite 2)



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
sri
 2005-03-25 15:35
#4687 #4687
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=esskar,24.03.2005, 22:41]Habe jetzt ein wenig in dem MakeText Zeug gelesen...
wie bau ich denn so eine Lexikondatei auf?
Was ich seltsam finde, ist der Access per Index. Wie sieht der Acces per Name/Id aus?[/quote]
Das is in Catalyst::Plugin::I18N dokumentiert. ;)
Locale::Maketext::Simple versteht nicht nur das Lexicon format sondern auch normale po/mo dateien, die absolut jeder Depp versteht.

Quote
# de.po
msgid "Hello Catalyst"
msgstr "Hallo Katalysator"

#de.pm
package MyApp::I18N::de;
use base 'MyApp::I18N';
%Lexicon = ( 'Hello Catalyst' => 'Hallo Katalysator' );
1;


Die Namensgebungsstrategie ist deine Sache...
Viele nutzen:
Code: (dl )
1
2
3
4
5
6
7
         # en.po
msgid "WELCOME_MESSAGE"
msgstr "Hello Catalyst"

# de.po
msgid "WELCOME_MESSAGE"
msgstr "Hallo Katalysator"

Andere nutzen halt einfach die englische uebersetzung als identifier.\n\n

<!--EDIT|sri|1111757981-->
esskar
 2005-03-26 15:29
#4688 #4688
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
mal sehen; vorrest werde ich wohl nicht umstellen, da mir mein ansatz ganz gut gefällt und es auch schön schnell geht!
macMeck
 2005-03-27 19:29
#4689 #4689
User since
2003-08-04
162 Artikel
BenutzerIn
[default_avatar]
Hi,

also so langsam funktioniert das ganze hier, auch wenn ich über meine statischen Seiten noch nicht so glücklich bin. Ideen immer noch willkommen ;-)

Ich hab mir ne kleine sub geschrieben, die mir einfach beim initialisieren des Templates alle Language-Tags (Variablen, die mit 'LANG_' anfangen) übersetzt. Code sieht so aus
Code: (dl )
1
2
3
4
5
6
7
8
9
foreach my $par ($template->param()) {
if (uc($template->query(name => $par)) eq 'VAR') {

if (uc($par) =~ /^LANG_.*$/) {
$template->param($par => &App::lh()->maketext(uc($par)));
}

}
}


Was mach ich aber jetzt, wenn meine language Tags in einem Loop stehen? Wie greif ich da auf die Struktur des Templates zu? Geht das überhaupt beim initialiseren des Templates, oder kann ich das erst machen, wenn ich den Loop fülle? Wäre ja nicht so praktisch...

macMeck
It all works, as long as it's documented!
macMeck
 2005-03-27 20:42
#4690 #4690
User since
2003-08-04
162 Artikel
BenutzerIn
[default_avatar]
Hi nochmal,

ich hab das jetzt etwas sinnvoller als mit den tmpl-tags selbst gelöst bekommen. Einfach die Sprachfragmente nur als 'LANG_FOO', 'LANG_BAR' in den HTML-Code reinschreiben und dann mit ner kleinen Filterfunktion in der Template new()-Funktion parsen. Dann tut's auch für Loops und sieht im HTML-WYSIWYG Editor zudem noch schön aus...

Code: (dl )
1
2
3
4
5
6
7
8
sub doTranslation {

my $text_ref = shift || return;

$$text_ref =~ s/(LANG_[A-Z,0-9,_]*)/&App::lh()->maketext(uc($1))/eig;

return;
}


macMeck
It all works, as long as it's documented!
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2005-03-24 20:40.