Welcome, Guest. Please login or register.
Did you miss your activation email?
May 25, 2012, 02:45:09 PM

Login with username, password and session length
Search:     Advanced search
Wollen Sie dem WebsiteBaker Team beitreten?
Nähere Informationen finden Sie unter hier und auf unserer neuen Webseite.
155506 Posts in 21711 Topics by 7737 Members
Latest Member: simpleguy
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: Frage an die PHP-Profis.  (Read 532 times)
CyberDyne

Offline Offline

Posts: 158


« on: August 06, 2009, 08:53:52 AM »

Hallo,
ich habe das Modul Contactlist etwas zweckentfemdet und nutze es nun in vielen verschiedenen Sprachen, unter anderem auch Russisch.
In der Übersicht der Kontakte zeigt dieses Moduls ja eine Buchstabenauswahl von A bis Z an, welche via ...
Code:
$arrAlphabet = range('A', 'Z');
... in einer Zeile ausgegeben wird.

Meine Fragen nun:
1.) Ist jenes $arrAlphabet "schlau" genug, sich der Buchstaben des jeweilgen Landes zu bedienen?
2.) Wenn es nur unser Alphabet mit unseren Buchstaben kennt, wie bringe ich jenem $arrAlphabet bei, in Russland, das kyrillische Alphabet auszugeben?

Sommerliche Grüße,
Klaus
Logged
WebBird
Guest
« Reply #1 on: August 06, 2009, 10:05:50 AM »

1.) Ist jenes $arrAlphabet "schlau" genug, sich der Buchstaben des jeweilgen Landes zu bedienen?

Nein. Es bekommt ja explizit die (lateinischen) Buchstaben A-Z angegeben. "Übersetzen" (oder besser, transcodieren) kann range() nicht.

2.) Wenn es nur unser Alphabet mit unseren Buchstaben kennt, wie bringe ich jenem $arrAlphabet bei, in Russland, das kyrillische Alphabet auszugeben?

Indem Du ein zweites Array machst und ihm die kyrillischen Buchstaben gibst. Wink
Logged
CyberDyne

Offline Offline

Posts: 158


« Reply #2 on: August 06, 2009, 10:33:08 AM »

Indem Du ein zweites Array machst und ihm die kyrillischen Buchstaben gibst. Wink
Hallo,
sowas habe ich befürchtet! Mit ...
Code:
array_push($arrAlphabet, 'Ä','Ö','Ü');
... kann ich wohl Sonderzeichen anfügen.
Nur wie erreiche ich, dass das Modul zwischen den Sprachen unterscheidet, sprich in Russisch nur Kyrill anzeigt, ansonsten aber Latein?

Gruß,
Klaus
Logged
WebBird
Guest
« Reply #3 on: August 06, 2009, 10:45:28 AM »

WB setzt die Konstante LANGUAGE auf die verwendete Sprache. Diese könntest Du abfragen.

Code:
if ( defined('LANGUAGE') && LANGUAGE == '<Kürzel>' ) {
    $arrAlphabet = array( ...kyrillisch... );
}

Das Ganze dann nach dem jetzigen $arrAlphabet-Kram. Ich weiß jetzt nicht, welches Kürzel Du nehmen mußt, vermutlich RU.
Logged
CyberDyne

Offline Offline

Posts: 158


« Reply #4 on: August 06, 2009, 12:35:08 PM »

WB setzt die Konstante LANGUAGE auf die verwendete Sprache. Diese könntest Du abfragen

Das habe ich nun mal probiert (zunächst mit den deutschen Umlauten zum testen, diese kyrillischen Zeichen machen einen nämlich völlig Zipfelsinnig, wenn man da länger drauf schauen muss). Es entspricht nicht ganz Deiner Version, die Abfrage nach dem Länderkürzel muss anders lauten.
Der Auszug sieht also wie folgt aus ...
Code:
if(LANGUAGE==RU) {
$arrAlphabet = array('&#196;','&#214;','&#220;');
}
else
$arrAlphabet = range('A', 'Z');
array_push($arrAlphabet, '&#196;','&#214;','&#220;');

So funzt das schon mal mit Ä, Ö, und Ü.

Vielen Dank für Deine Hilfe!

Gruß,
Klaus
Logged
WebBird
Guest
« Reply #5 on: August 06, 2009, 12:40:13 PM »

Es entspricht nicht ganz Deiner Version, die Abfrage nach dem Länderkürzel muss anders lauten.

Wieso?

Code:
if(LANGUAGE==RU) {
$arrAlphabet = array('&#196;','&#214;','&#220;');
}
else
$arrAlphabet = range('A', 'Z');
array_push($arrAlphabet, '&#196;','&#214;','&#220;');

So funzt das schon mal mit Ä, Ö, und Ü.


Ja, so wird aber auch Ä, Ö und Ü dem kyrillischen Zeichensatz hinzugefügt. Ich bin mir nicht sicher, ob Du das willst.  grin
Logged
CyberDyne

Offline Offline

Posts: 158


« Reply #6 on: August 06, 2009, 01:03:53 PM »

Wieso?
Weiß nich warum, nach Deiner Landerkürzelabfrage tut sich jedenfalls gar nix, mit der verkürzten geht es dann.
Ja, so wird aber auch Ä, Ö und Ü dem kyrillischen Zeichensatz hinzugefügt. Ich bin mir nicht sicher, ob Du das willst.  grin

Du meinst durch das ...
Code:
array_push($arrAlphabet, '&#196;','&#214;','&#220;');
...?

Nee, das will ich natürlich nur für DE erzeugen. Aber wieso erscheint das denn beim RU, warum hält sich das nicht an das if und else?

Gruß
Logged
WebBird
Guest
« Reply #7 on: August 06, 2009, 01:23:18 PM »

Weil Du das else nicht geklammert hast. Nur die erste nachfolgende Zeile gehört zum else. Alles andere nicht mehr.
Logged
Luisehahne
Board Member
Development Team
*****
Offline Offline

Posts: 3145



WWW
« Reply #8 on: August 06, 2009, 02:04:01 PM »

Genau, immer grundsätzlich klammern, auch wenn es nicht nötig ist. Erhöht aber die Lesbarkeit des Codes. Naja ich weis, kein Thema für hier. Sollte auch nur eine kurze Info sein.

Dietmar
Logged

We are human beings - and nobody is perfect at all.
CyberDyne

Offline Offline

Posts: 158


« Reply #9 on: August 06, 2009, 02:06:15 PM »

Weil Du das else nicht geklammert hast. Nur die erste nachfolgende Zeile gehört zum else. Alles andere nicht mehr.

Habe nun die Umlaute nur auf DE beschränkt ...
Code:
if(LANGUAGE==RU) {
    $arrAlphabet = array('&#1040;','&#1041;','&#1062;','&#1044;','&#1045;','&#1060;','&#1043;','&#1063;','&#1048;','&#1049;','&#1050;','&#1051;','&#1052;','&#1053;','&#1054;','&#1055;','&#1071;','&#1056;','&#1057;','&#1058;','&#1059;','&#1042;','&#1064;','&#1061;','&#1067;','&#1047;');
     }
     else
  $arrAlphabet = range('A', 'Z');
    if(LANGUAGE==DE) {
    array_push($arrAlphabet, '&#196;','&#214;','&#220;');
    }
Nun passt alles!
Gruß,
Klaus
Logged
WebBird
Guest
« Reply #10 on: August 07, 2009, 09:51:57 AM »

Ich würde trotzdem sauber klammern. Und saubere Codeeinrückung plus Verkürzung zu langer Zeilen ist auch immer hilfreich. Von Kommentaren ganz zu schweigen. wink

Code:
    if(LANGUAGE=="RU") {
        // kyrillisches Alphabet
        $arrAlphabet
            = array(
                   '&#1040;','&#1041;','&#1062;','&#1044;','&#1045;','&#1060;','&#1043;',
                   '&#1063;','&#1048;','&#1049;','&#1050;','&#1051;','&#1052;','&#1053;',
                   '&#1054;','&#1055;','&#1071;','&#1056;','&#1057;','&#1058;','&#1059;',
                   '&#1042;','&#1064;','&#1061;','&#1067;','&#1047;'
               );
     }
     else {
        $arrAlphabet = range('A', 'Z');
     }

     // Bei Sprache "Deutsch" Umlaute hinzufuegen
     if(LANGUAGE=="DE") {
        array_push($arrAlphabet, '&#196;','&#214;','&#220;');
     }

Übrigens werden Umlaute damit nur für Deutsch (also de-de) berücksichtigt. Es gibt aber noch andere deutschsprachige Regionen, die Umlaute kennen. wink
Logged
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!