Avatar billede tdaugaard Nybegynder
10. oktober 2001 - 11:18 Der er 20 kommentarer og
4 løsninger

Den bedste måde at lave \"sprogfiler\" til et site ?

Jeg har et site (www.3rdlevel.dk) som skal oversættes til bl.a. Engelsk og Svensk.

Jeg ønsker IKKE at lave 3 kopier af hele sitet, så hvordan gør jeg det nemmest? På samme måde som phpMyAdmin ?
Avatar billede limemedia Nybegynder
10. oktober 2001 - 11:23 #1
uh, det var et generelt spørgsmål... det kommer virkeligt an på datamængde, dynamisk vs statisk indhold m.v.

normalt har drengene bag phpMyAdmin rimeligt styr på sagerne, ser hvordan de har implementeret det
Avatar billede tdaugaard Nybegynder
10. oktober 2001 - 11:26 #2
Altså, at hente det fra databasen er jo IKKE en ordentlig mulighed .. det er for langsomt .. men hvis man bruger \"sprogfiler\" hvor det ligger statisk .. er det vel godt nok ?
Avatar billede a_c Nybegynder
10. oktober 2001 - 11:26 #3
Ja. Det er en mulighed. Det virker OK hvis teksten på dit site ikke er noget der ændrer sig for ofte. Jeg har selv brugt det. Ændrer teksten sig ofte bør du gøre det på en anden måde.

Så kan du eventuelt lave det lidt smartere ved at indlæse teksten fra en database og måske lave et eller andet lille smart program/side, der gør det hurtigt og nemt at ændre for kunderne - eller dig selv.

A_C
Avatar billede htx98i17 Professor
10. oktober 2001 - 11:26 #4
jeg ved ik lige hvordan phpmyadmin gør,

men jeg har været med til at lave et site hvor man kan vælge forskellige sprog.

man vælger sprog ved et link, languag=dk eksempelvis.

Så includer den textfilerne fra mappen \"dk\"
include(\"languages/\".$language.\"/filename.php\");

i sprogfilen ligger alle tekster som konstanter:
DEFINE(\"WELCOME_TEXT\",\"Velkommen til denne side\");
navnet på konstanten skal selvfølgelig hedde det samme i alle language-filer.

det var lige en hurtig forklaring, håber du fatter det, hehe
Avatar billede limemedia Nybegynder
10. oktober 2001 - 11:27 #5
måden phpMyAdmin gør det på er meget statisk og slavisk. En includefil hvor titler/texter så pastes ind hvor de passer ind. En overall ok løsning for den mindre løsning og med det infoindhold i har på 3rdlevel.dk ville jeg ikke begynde med andet.

Jeg bruger selv løsningen på mindre sprogversionerede sites - dog opdeler jeg normalt sprogfilerne så de passer til underområder af en site fremfor at inkludere en \"røvfuld\" informationer man alligevel ikke paster ind på en side.
Avatar billede htx98i17 Professor
10. oktober 2001 - 11:27 #6
og ja, der er lige et par stavefejl i variablerne :)
Avatar billede tdaugaard Nybegynder
10. oktober 2001 - 11:30 #7
htx98i17:> Ligefrem at lave det som konstanter er vel lidt overkill .. jeg tænkte noget i retning af et array med alphanumeriske index\'s
Avatar billede tdaugaard Nybegynder
10. oktober 2001 - 11:32 #8
ljweb:> Yeps .. havde nu heller ikke tænkt på at lave ALT i een fil.. det ville nok blive lidt for meget ..
Avatar billede htx98i17 Professor
10. oktober 2001 - 11:33 #9
tdaugaard -> man kan gøre det på mange metoder, det var mere systemet med at includere sprogfilerne jeg ville illustrere.
jeg tænker at grunden til konstanter er valgt, er at de i teorien skulle vare hurtigere end alm variabler... om konstanter er det i praksis skal jeg ikke kunne sige :)
Avatar billede morph Nybegynder
10. oktober 2001 - 11:37 #10
variabler er hurtigere en konstanter

<?
function getmicrotime(){
    list($usec, $sec) = explode(\" \",microtime());
    return ((float)$usec + (float)$sec);
}

$test = true;
define(\'TEST\', true);
$mark1 = getmicrotime();
for ($i=0; $i < 10000; $i++) TEST;
$mark2 = getmicrotime();
for ($i=0; $i < 10000; $i++) $test;
$mark3 = getmicrotime();

echo \"Konstant: \".($mark2-$mark1).\"<br>\\n\";
echo \"Variabel: \".($mark3-$mark2).\"<br>\\n\";
?>

Fyr dette lille script af :)
Avatar billede htx98i17 Professor
10. oktober 2001 - 11:41 #11
hehe som sagt skal jeg ikke gøre mig klog på det :-)

mit resultat:
Konstant: 0.11938297748566
Variabel: 0.10083603858948
Avatar billede morph Nybegynder
10. oktober 2001 - 11:42 #12
det er ikke meget det gir ;)
Men lidt har også ret hehe
Avatar billede tdaugaard Nybegynder
10. oktober 2001 - 11:42 #13
*G* okai ...
Avatar billede uller Nybegynder
10. oktober 2001 - 11:47 #14
Jeg er personligt for brugen af databaser til sprogversionering.

Det er i hvert fald det jeg har bedst erfaring med.

Det eneste man skal holde sig for øje er at hvis man vil tilføje et sprog er det ikke lige så nemt som med sprog-filer.
Avatar billede morph Nybegynder
10. oktober 2001 - 11:54 #15
lidt videre forskning

Konstant: 0.11709702014923
Variabel: 0.10070300102234
MySQL: 0.10274398326874

<?
/*
CREATE TABLE test (
  test char(4) NOT NULL default \'\'
) TYPE=MyISAM;
INSERT INTO test VALUES (\'test\');
*/
function getmicrotime(){
    list($usec, $sec) = explode(\" \",microtime());
    return ((float)$usec + (float)$sec);
}

$db = mysql_pconnect(\"localhost\", \"root\", \"\");       
mysql_select_db(\"test\", $db);
       
$result = mysql_query(\"select test from test\");

$test = true;
define(\'TEST\', true); 
$mark1 = getmicrotime();
for ($i=0; $i < 10000; $i++) TEST;
$mark2 = getmicrotime();
for ($i=0; $i < 10000; $i++) $test;
$mark3 = getmicrotime();
for ($i=0; $i < 10000; $i++) $result;
$mark4 = getmicrotime();

echo \"Konstant: \".($mark2-$mark1).\"<br>\\n\";
echo \"Variabel: \".($mark3-$mark2).\"<br>\\n\";
echo \"MySQL: \".($mark4-$mark3).\"<br>\\n\";
?>
Avatar billede morph Nybegynder
10. oktober 2001 - 11:56 #16
såeee :)

Konklusion. Mysql er hurtigere end konstanter, men langsomere end variabler.. Lidt aften tænkning.. :)
Avatar billede htx98i17 Professor
10. oktober 2001 - 11:57 #17
prøv at kør det 50 gange og lav et gennemsnit :)
Avatar billede tdaugaard Nybegynder
10. oktober 2001 - 12:00 #18
Men det nytter ikke noget at trække på databasen ..
Avatar billede morph Nybegynder
10. oktober 2001 - 12:00 #19
td-> hvorfor ik?
Avatar billede barlach Nybegynder
10. oktober 2001 - 12:26 #20
the exchange project (en open source shop) laves også på den måde htx98i17  beskriver. Det er muligt at det tager længere tid at programmere, når du skal sidde og lave konstanter hele tiden, ´men bagefter er det meget nemt at oversætte hele applikationen...iøvrigt minder det vel lidt om den måde f.eks Java laver internationalization
Avatar billede barlach Nybegynder
10. oktober 2001 - 12:29 #21
andre der tænker på det samme..
http://www.eksperten.dk/spm/119073
Avatar billede coderdk Praktikant
10. oktober 2001 - 19:44 #22
Du kan bruge gettext etc som barlach henviser til eller du kan lave noget selv - det kunne være noget a la dete:

Du kan have nogle language filer som ligger sådan:

lang/en/lang.php
lang/da/lang.php

Den engelske kunne se sådan ud:

<?
$arr_lang[\"about us\"] = \"about us\";
$arr_lang[\"about us text\"] = <<<EOT
  <h2>about us</h2>
  <p>Here is a little text about us...</p>
EOT;
?>

Den danske kunne se sådan ud:

<?
$arr_lang[\"about us\"] = \"om os\";
$arr_lang[\"about us text\"] = <<<EOT
  <h2>om os</h2>
  <p>Her er noget text om os...</p>
EOT;
?>

Nu Include()\'er du blot den du skal bruge - hvis du har mange variable kan det være en god idé altid at Require()\' default-sproget - så ser det ikke helt så dumt ud hvis du mangler nogle variable i en af de andre filer...

Anyway, så kan du have en funktion som ser

function _($str)
{
  global $arr_lang;
  return $arr_lang[$str];
}

Så kalder du bare fra en php-side sådan:

<h1><?= _(\"about us\") ?></h1>
<?= _(\"about us text\") ?>
Avatar billede otis Nybegynder
11. oktober 2001 - 06:17 #23
Avatar billede tdaugaard Nybegynder
17. oktober 2001 - 14:10 #24
Jeg har lavet det nu .. på samme måde som phpMyAdmin ...
hmm .. men hvem skal have point ? (ljweb, shut up! *griner*)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester