Toon posts:

[PHP] switch() 'n' stuff

Pagina: 1
Acties:
  • 133 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik probeer een functie te schrijven die $this gaat vertalen, daar gebuik ik een taal bestand bij wat ik wil kunnen editten. hieronder mijn 3 pages en de error.

test.php :
PHP:
1
2
3
4
5
<?
require("language.php");

echo translate("Woord");
?>

language.php :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
function translate($this) {
    
    switch($this) {
    
        include(lang1.php);

        default: $tmp = "$this"; break;
        
    }
    
    return $tmp;
    
}
?>

lang1.php :
PHP:
1
2
3
<?
case "Woord"; $tmp = "Vertaling"; break;
?>

error :
code:
1
2
3
Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in /opt/guide/www.azurreizen.com/HTML/language/language.php on line 9

Fatal error: Call to undefined function: translate() in /opt/guide/www.azurreizen.com/HTML/language/test.php on line 5

Ok wat doe ik fout :? Ik weet het ff niet meer :(

Verwijderd

Lees de PHP manual eens door, dan zie je dat na de case woord een : moet en geen ;

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
<?function translate($this) { switch($this) { include(lang1.php); default: $tmp = "$this"; break; } return $tmp; }?>


Lees dit nog es goed door :)
in een switch mogen alleen maar cases dus:

switch($this)
{
case "1": blaat();
case "2": blaat();
default:blaat();
}

  • dmnq
  • Registratie: Januari 2000
  • Laatst online: 16-09 13:29

dmnq

zonder klinkers

PHP:
1
2
3
<?
case "Woord"; $tmp = "Vertaling"; break;
?>

gebruik eens een : ipv een ;
PHP:
1
2
3
4
5
6
<?
case "Woord": {
  $tmp = "Vertaling";
  }
  break;
?>

Hosting (100 MB Harddisk, 1 GB Traffic, 5 POP, MySQL, PHP voor € 3,60 per maand)


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 16 oktober 2001 09:41 schreef dmnq het volgende:
PHP:
1
2
3
<?
case "Woord"; $tmp = "Vertaling"; break;
?>

gebruik eens een : ipv een ;
PHP:
1
2
3
4
5
6
<?
case "Woord": {
  $tmp = "Vertaling";
  }
  break;
?>
Zou je die break niet tussen de haakjes zetten :?

  • dmnq
  • Registratie: Januari 2000
  • Laatst online: 16-09 13:29

dmnq

zonder klinkers

Op dinsdag 16 oktober 2001 09:42 schreef Nielsz het volgende:

[..]

Zou je die break niet tussen de haakjes zetten :?
okay...forget about de haakjes... :)

Hosting (100 MB Harddisk, 1 GB Traffic, 5 POP, MySQL, PHP voor € 3,60 per maand)


Verwijderd

Topicstarter
Ik heb reeds een andere oplossing bedacht namelijk het maken van twee "taal" files, 1 is :

lang1.php
PHP:
1
2
3
4
5
6
<?
case "This": $tmp = "Dit"; break;
case "Dit is een test": $tmp = "This is a test"; break;
case "This": $tmp = "Werkt dit ook"; break;
case "Dit"; $tmp = "Dit '' is"; break;
?>

Deze gebruik ik om uit te lezen bij het editten.

language.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
function translate($this) {
    
    switch($this) {
    
        case "This": $tmp = "Dit"; break;
        case "Dit is een test": $tmp = "This is a test"; break;
        case "This": $tmp = "Werkt dit ook"; break;
        case "Dit"; $tmp = "Dit '' is"; break;

        default: $tmp = "$this"; break;
        
    }
    
    $tmp = ereg_replace("''","&amp;quot;",$tmp);
    
    return $tmp;
    
}
?>

De functie.

En d.m.v. een derde file die lang1.php uitleest en in een form zet kan ik beide weer opnieuw schrijven.

/me is niet echt goed in uitleggen, maar hoop dat je 't snapt :)

  • dmnq
  • Registratie: Januari 2000
  • Laatst online: 16-09 13:29

dmnq

zonder klinkers

gelukkig maar dan ;)

Hosting (100 MB Harddisk, 1 GB Traffic, 5 POP, MySQL, PHP voor € 3,60 per maand)


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Wat dacht je ervan om het mooi aan te pakken?
Dus ff simpel een dbtje bouwen met:

nl | en | fr | de

de talen en vertalingen.
en vertaal($this) wordt dan:


vertaal($this,$vantaal,$naartaal);

select $naartaal from table where $vantaal=$this

Sim-pel.

En dan kan je alle talen combis maken die je wilt.

Verwijderd

Topicstarter
In dit geval is een dB zwaarder dan het vertalen uit een function, en het zal niet vaak voorkomen dat de woorden worden veranderd :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Zal het ook niet voorkomen dat je het nog eens een keertje voor een andere website cq. toepassing gaat gebruiken :?

schrijf je code gewoon zo flexibel en hergebruikbaar (is that a word :?) mogelijk, is alleen maar makkelijk voor "later"

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
wordt idd wel erg zwaar met db:

$string="dit is een lange string";
$delen=explode(" ",$string);

for each(delen)
//hoe zeg je dat :)
{
$i++;
vertaal("nl","en",$delel[$i]);
}

Voor elk woord een query, kan je je lol op :)

Verwijderd

Topicstarter
Die translate functie gebruik ik al in meerdere sites ik wil dus nu alleen dat ze dat ding ook zelf kunnen editten en daarvoor gebruik ik dus deze constructie.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ik zou eens kijken naar (pseudocode)
PHP:
1
2
3
<?
str_replace(explode(' ','zoek.txt'),explode(' ','vervangdoor.txt'),$string);
?>

met zoek.txt:
woord1 woord2 woord3
en vervangdoor.txt:
word1 word2 word3

etc. Eventueel kan je nog zinnen nemen etc. Het zal iig een stuk sneller zijn dan die enorme if-else bomen...

Klaar voor een nieuwe uitdaging.

Pagina: 1