Schrift
[thread]69[/thread]

Eigene Sprachdatei: Probleme mit Variablen



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Tom
 2003-10-19 16:40
#6732 #6732
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

Mir ist leider keine besser Beschreibung eingefallen ;)

So nun zum Problem:

Ich habe ein Script geschrieben und die ganzen Texte habe ich da in eine eigene Datei gepackt damit man das leichter ändern kann.
Nun habe ich ja auch ein Mail-Script eingefügt, den Text der in der Mail steht steht auch in der Sprachdatei, nun ist es aber so dass in die Mail auch der Inhalt einer Variable soll, jetzt könnte ich zwar den Text aufteilen und die Variable im Script einfügen, aber ich habe beim phpbb-Forum folgendes in der Sprachdatei gesehen.

Quote
Insgesamt sind %d Benutzer online:


Das %d wird dann durch die Anzahl der Besucher ersetzt.

Wie funktioniert das???

Geht das auch in Perl???

DANKE

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
jan
 2003-10-19 17:03
#6733 #6733
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
das wäre ein spezieller fall für (s)printf, denke ich, aber ich empfehle, einfach eine art template-system zu nutzen.
http://board.perl-community.de/cgi-bin....8;#idx7

schau da mal rein ... und lies am besten bottom up ;)
[E|B]
 2003-10-19 17:56
#6734 #6734
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hehe... Sprachdatei, so etwas baue ich auch gerade in mein Script ein.
Ich habe das so gelöst:

Die Sprachdatei:
Code: (dl )
1
2
3
4
Test1
Test2
Test3
Test4


Nun lese ich diese in einen Hash ein:

Code: (dl )
1
2
3
4
5
6
7
8
9
my %hash;
my $x = "0";
open(F, "speech.txt") or die "Unable to open file: 'speech.txt'!\n$!";
foreach (<F>){
chomp;
$hash{$x} = $_;
$x++;
}
close(F);


Wenn ich nun die zweite Sprachzeile haben möchte, kann ich sofort darauf zugreifen. Nämlich mit dem Schlüssel 2 - 1.
Du kannst die Datei auch in ein Array einlesen, für meine Zwecke benötigte ich jedoch einen Hash.
Nun kannst du hingehen und in der Sprachdatei selber Platzhalter einbauen (%d, z.B.).
In der Ausgabe sieht das dann wie folgt aus:

Code: (dl )
1
2
my $user = "10";
$hash{'0'} =~ s!%d!$user!gi;


So einfach kannst du dann die Sprachdateitexte durch andere Variablen ersettzen.

HTH
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Tom
 2003-10-19 21:50
#6735 #6735
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
@[E|B]

Geht das auch bei einer großen Sprachdatei???

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Tom
 2003-10-19 21:55
#6736 #6736
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
@jan

Sorry, aber bei dem Beitrag habe ich nicht verstanden, bin noch ein ziemlicher Anfänger in sachen Perl

Tom\n\n

<!--EDIT|Tom|1066586168-->
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
jan
 2003-10-19 22:04
#6737 #6737
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ach, ich wollte darauf hinaus, dass du es ähnlich machen kannst wie eb vorschlug, nur, dass es eventuell etwas performanter und netter ist, wenn du einen hash mit den daten drin hast und eine template-datei, in der dann mit einem regulären ausdruck die platzhalter durch die jeweiligen sprachen ersetzt wird, mal als beispiel, du hast in deiner datei irgendwo
<b>&{begruesung}</b>
stehen - nun willst du, dass da auf deutsch "Willkommen auf meiner Seite" steht und auf englisch "Welcome to my page", dann würdest du irgendwo entscheiden, welche sprache gewählt werden soll und die sprachdatei entsprechend laden - die hätte dann zB eine zuordnung wie
begruesung = Willkommen auf meiner Seite
die du dann in einen hash einliest, der dann so aussieht:
$sprache{'begruesung'} = 'Willkommen auf meiner Seite';
und wenn du dann mit einem regexp, wie in dem thread, den ich verlinkte, beschrieben, die ersetzung vornimmst, hast du nachher statt <b>&{begruesung}</b> eben <b>Willkommen auf meiner Seite</b> in deiner variable, die du dann ausgeben kannst.
dass du den thread bottom up (von unten aufwärts) lesen sollst, schrieb ich, damit du dir ev. einfach überlegst, strats vorschlag zu folgen und HTML::Template zu benutzen. auch wenn ich kein fan davon bin, kann's nicht schaden, sich damit auseinanderzusetzen...
Tom
 2003-10-19 22:11
#6738 #6738
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ok, werde das mal mit nem Hash versuchen, Danke schonmal.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Geewiz
 2003-10-22 01:46
#6739 #6739
User since
2003-09-29
69 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich habe sehr gute Erfahrungen mit dem Modul Locale::Maketext gemacht. Es arbeitet so, dass man für jede Sprache eine einfache Subklasse mit einem Hash für die Texte erzeugt. Die Hash-Schlüssel sind dabei keine schwer zu handhabenden Indizes, sondern die Originaltexte.

Praktisch ist, dass man nicht nur variable Daten, sondern auch Methoden für die Lokalisierung von Mengenangaben, Masseinheiten, Kalenderdaten etc. nutzen kann.

Beispiel für die Methode "quant", die sinnvolle Mengenangaben erzeugt:

Code: (dl )
1
2
3
4
5
6
our %Lexicon = {
...
'Your search resulted in [quant,_1,result,results,no results].' =>
'Ihre Suche ergab [quant,_1,Ergebnis,Ergebnisse,keine Ergebnisse].',
...
}
Tom
 2003-10-27 16:55
#6740 #6740
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
@Geewiz

Sorry dass ich mich erst jtzt melde, hatte in letzter Zeit wenig Gelegenheit dazu.

Kannst du mir das etwas genauer erklären???

Danke

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Geewiz
 2003-10-29 18:04
#6741 #6741
User since
2003-09-29
69 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich glaube, dass es sich lohnt, dazu einen Artikel zu schreiben. Geht in Kürze in Arbeit!
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2003-10-19 16:40.