[PHP] Meerdere talen + snelheid

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een script dat meerdere talen moet ondersteunen. Nu gebruik ik momenteel de volgende manier;

Ik maak een bestand bijv. NL.inc.php en dit bestand wordt dan geinclude. In dit bestand staan regels zoals de volgende:

define(__TEXTHIER__, 'Text in de juiste taal');

in het script haal ik dit terug door de volgende regel:

echo __TEXTHIER__;

Nou kan je het ook doen op deze manier:
$txt['1'] = 'Text in de juiste taal';

Dit laatste vind ik alleen onduidelijker, maar wat is nou sneller? Is er nog een andere manier om je scripts in meerdere talen te krijgen?

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je zou een object kunnen maken...
PHP:
1
2
3
4
5
6
7
8
9
10
class multilangstring {
 function multilangstring($nl,$en,$fr) {
  $this->nl = $nl;
  $this->en = $en;
  $this->fr = $fr;
 }
}

$hallo = new multilangstring('Hallo','Hello','Bonjour');
echo $hallo->nl;

(pseudo code)
Ik zou ook eens kijken hoe ze het bij phpBB opgelost hebben, ook wel een leuk systeem met sprintf.

[ Voor 32% gewijzigd door Skaah op 13-01-2004 15:28 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Die methodiek is wel enorm ranzig.. :X Stel dat je een taal wil toevoegen? Of een taal niet nodig hebt?

[ Voor 18% gewijzigd door gorgi_19 op 13-01-2004 15:35 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Werken met objecten in PHP maakt het niet sneller. De manier die ik toepas, ik gebruik maken van een XML configuratie bestand (je zou ook een ini kunnen gebruiken) ook dit is niet sneller dan de manier die je noemde. Het snelste is gewoon met php variabelen te werken.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Volgens mij is een van de snelste opties nog ltijd gettext (http://nl.php.net/manual/nl/ref.gettext.php) Voordeel is dat je uitbreiding goed geregeld is en dat het redelijk goed zit ingebakken in PHP, wat de snelheid alleen maar zal verbeteren. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

De define-methode is sneller, maar de array-methode is flexibeler, in je voorbeeld gebruik je een numerieke key, maar dat hoeft op zich niet: $txt['teksthier']="texthere";
Als je de array methode gebruikt, kun je de volledige array wegschrijven naar een bestand, door de array lopen, de hele array in een instructie vervangen door een andere taal, enzovoorts.

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Skaah schreef op 13 januari 2004 @ 15:27:
Je zou een object kunnen maken...
PHP:
1
2
3
4
5
6
7
8
9
10
class multilangstring {
 function multilangstring($nl,$en,$fr) {
  $this->nl = $nl;
  $this->en = $en;
  $this->fr = $fr;
 }
}

$hallo = new multilangstring('Hallo','Hello','Bonjour');
echo $hallo->nl;

(pseudo code)
Ik zou ook eens kijken hoe ze het bij phpBB opgelost hebben, ook wel een leuk systeem met sprintf.
In phpBB zijn het volgens mij array's. Ikzelf gebruik ook define's, maar de officieele manier is met GetText.

Acties:
  • 0 Henk 'm!

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 19-09 09:59
PrisonerOfPain schreef op 13 januari 2004 @ 15:40:
[...]

In phpBB zijn het volgens mij array's. Ikzelf gebruik ook define's, maar de officieele manier is met GetText.
Zoals vB meen ik doet.

zeroxcool.net - curity.eu


Acties:
  • 0 Henk 'm!

Verwijderd

Skaah schreef op 13 januari 2004 @ 15:27:
Je zou een object kunnen maken...
PHP:
1
2
3
4
5
6
7
8
9
10
class multilangstring {
 function multilangstring($nl,$en,$fr) {
  $this->nl = $nl;
  $this->en = $en;
  $this->fr = $fr;
 }
}

$hallo = new multilangstring('Hallo','Hello','Bonjour');
echo $hallo->nl;

(pseudo code)
Ik zou ook eens kijken hoe ze het bij phpBB opgelost hebben, ook wel een leuk systeem met sprintf.
:X Voor elk woord een nieuw object ? Beter zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class multilangstring {
     function new_word($word, $nl, $en, $fr) {
          $this->lang[$word] = array("nl" => $nl, "en" => $en, "fr" => $fr);
     }

     function translate($word, $lang) {
          return $this->lang[$word][$lang];
     }
}

$words = new multilangstring;
$words->new_word("Hallo", "Hallo", "Hello", "Bonjour");

echo $words->translate("Hallo", "fr");
Je zou dan ook nog kunnen denken aan checken of het woord wel in deze taal beschikbaar is enzo .. :)

[ Voor 11% gewijzigd door Verwijderd op 13-01-2004 15:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

ik heb dit ooit op twee verschillende manieren gedaan: bij de eerste had ik een include-file met daarin voor de hele site alle vertalingen in de vorm bv $telefoon = array ("telefoon", "telephone", "Telefon") en zorgde ik dat ik een taal-id had die overeenkwam met de juiste plek in de array (en dan mbv print ($telefoon[$landID]);)
de variant hierop was om adhv een languageID een file voor die ene taal te includen, met daarin alle vertalingen. ook hier blijf je uiteraard wel zitten met print($telefoon).

Acties:
  • 0 Henk 'm!

  • FlowinG
  • Registratie: Maart 2003
  • Laatst online: 19-09 17:00
Skaah schreef op 13 januari 2004 @ 15:27:
Je zou een object kunnen maken...
...

Jij altijd met je klasses en objecten :+
Volgens mij zijn klasses niet sneller dan bv een array

[ Voor 3% gewijzigd door FlowinG op 13-01-2004 16:02 ]


Acties:
  • 0 Henk 'm!

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

ik gebruik hier assoc arrays voor.. vind ik zelf het overzichtelijkste.. en dan op basis van taal juiste bestandje include zoals je zei.. werkt prima

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder

Pagina: 1