Avatar billede hav0k Nybegynder
10. juni 2003 - 12:28 Der er 62 kommentarer og
1 løsning

Idé til opbygning af dansk/engelsk side!

Jeg skal lave en hjemmeside til en børnehave i PHP, både på dansk og engelsk. Jeg er ikke ligefrem 1337 php writer endnu, så derfor vil jeg meget gerne belønne det bedste forslag til hvordan jeg kan opbygge to identiske hjemmesider på dansk og engelsk på den smarteste måde vha. php. Det skal lige tilføjes at der skal kunne logges ind og ændres på stort set alt, bare så det også er muligt.

Jeg vil dog kun give point hvis jeg finder forslaget ordentligt og smart.
Avatar billede punnishment Nybegynder
10. juni 2003 - 12:39 #1
Prøv noget OOP. Det vil være en meget smart måde at løse problemet på, men så skal du først sætte dig ind i det - som vil tage et lille stykke tid.

OOP = Objekt Orienteret Programmering (Kode for sig, og design for sig)

http://www.udvikleren.dk/article.php?aid=147
Avatar billede the_legend Nybegynder
10. juni 2003 - 12:40 #2
du kan smide alt tekst i en database på dansk og engelsk også i adr linien skrive en eller dk så henter den så teksten har lavet en del sider sådan
Avatar billede the_legend Nybegynder
10. juni 2003 - 12:42 #3
hvad er dit spm nærmere sagt er det om to identiske eller 2 sprog?
Avatar billede keysersoze Ekspert
10. juni 2003 - 12:44 #4
allerførst skal du slå det ud af hovedet at du skal lave to identiske hjemmesider! du skal KUN lave én hjemmeside som så til gengæld kan håndtere både dansk og engelsk.

alt i selve databasen skal opbygges så alt sættes op til at tilhøre et sprogid (fx "sprogid = 1" for dansk - og "sprogid = 2" for engelsk

alle faste ting på siden (menupunkter etc) kan du så enten også lægge i databasen med et sprogid eller lade det ligge i fx en txt som så bliver inkluderet alt efter hvilket sprog siden skal vises på.

og det er sådan set alt meget kort sagt - altså lav én side der kan håndtere begge sprog, og opbyg databasen til også at kunne håndtere begge sprog
Avatar billede sennels Nybegynder
10. juni 2003 - 12:48 #5
Hej

Jeg har netop lavet akkurat det samme. Dog har jeg ikke begrænset mig til to sprog, men kører lige så mange sprog, som jeg nu kan få oversat sitet til.


Jeg gjorde det at:
1) Jeg lavede en sprogdatabase (Altså en tabel som har tre kolonner, SprogID, Sprogkode, Tekst. Hver gang jeg ønskede at skrive en tekst på siden, skrev jeg den i databasen i stedet, og satte så en referance ind på siden i stedet.

2) Refereancen er et kald til en lille funktion, som ligger i en general include, så når jeg kalder funtkionen med et bestemt sprogid ( f.eks FOOV001 = Forside Overskrift nr 1) så kunne funktionen udløse lige præcis den tekst, som jeg bad om. Sprogkoden (DA,EN,NO,SE) har jeg gemt i session("sprog"), sådan at for hver bruger har han sin egen parameter med rundt, som afgør sproget.

3) For at undgå at skulle lave 1 mia sql-kald for hver gang en side skulle bygges op, valgte jeg at gemme alle sprogteksterne i serverens hukommelse.

Det vil være fornuftigt at lave en funktion, som håndterer sprogteksterne og cachingen af dem. Man vil typisk anvende Application variable til caching, der er flere måder at gørre det på når man skal cache et dataset. Datasettet kan ikke caches som et object i ASP, men vi kan lave det om til et 2dimensionelt array sådan her


Cache = rs.getrows

Array’et kan caches direkte

Application(“cache”) = cache

Når du skal finde et sprogid kan du lave en eller anden form for binær søgning efter id’et I array’et


Funktionen kommer til at se nogenlunde sådan ud

Function getLangText(id, lang)

Cache = Application(“cache”)
if  isEmpty(cache) then
                        SQL = “SELECT from …….”
                        …..
                        …..
                        cache = rs.getrows
                        Application(“cache”) = cache
            End if
           
            <kode som søger I cache-arrayet efter id, lang og returnerer teksten>

End funtion


Når nogen retter I sprogteksterne fra din administrationsside sletter du cachen ved at kalde

Application.Contents.Remove("cache&#8221;)

Så bliver de nye tekster loadet næste gang getLangText bliver kaldt.



4) Og det virker, og jeg skal kun lave et site og et frameset osv.....
Jeg ved at appilkation og session variable findes i PHP, men de hedder vist bare noget andet.


Håber at denne opskrift kan hjælpe dig
Avatar billede tipsen Nybegynder
10. juni 2003 - 12:52 #6
Du kan også kaste et blik på HTML_Template_Xipe, som er et skabelon system i PEAR der er forberedt til oversættelser, bl.a. også ved brug af I18N-pakken!

Se: http://pear.php.net/package-info.php?pacid=162

Der er nemlig fordelen, at du kan undlade at lave mere end én fysisk side og ellers er jeg også enig i at du smider teksterne i en db.

Søg evt. efter localization/localisation + php + website på google - fandt selv nogle gode tutorials med mange gode ideer på den måde.
Avatar billede fangel Nybegynder
10. juni 2003 - 13:57 #7
brugerens sprog kan findes ved at kigge på HTTP_ACCEPT_LANG strengen... ;)
Avatar billede sennels Nybegynder
10. juni 2003 - 14:01 #8
det er sgu rigtigt.. fikst.
Avatar billede avminarm Juniormester
10. juni 2003 - 14:02 #9
en simpel måde vil være at lave to filer  - en til hvert sprog til brug for selve sidens opbygning altså menu punkter osv. og så gemme variabler med henholdsvis dansk og engelsk sprog:

dk.php:

$menu = "menu punkter";
$forside = "forside";

eng.php

$menu = "menu points";
$forside = "frontpage";

alt efter hvilket sprog der er valgt includer du den ene eller anden fil.

Medhensyn til teksten ville jeg som andre har foreslået lave noget med sprog_id i databasen og alt efter valgte sprog ville jeg sætte en var øverst på siden som indikerer hvilket sprog der er valgt og på den måde kan du bygge alle dine MySQL kald op efter denne variabel

if ($chooselang == 1){
  $lang = 1;
}elseif ($chooselang == 2){
  $lang = 2;
}

SELECT tekst FROM database WHERE sprog_id = '$lang'
Avatar billede exp Juniormester
10. juni 2003 - 14:04 #10
dea_pg >>
Ville ikke basere hele siden på HTTP_ACCEPT_LANG -- hvad nu hvis en russer lånte en græsk computer, så ville det være rart at kunne indstille sprog; nøjagtig som på Google

Mht application() i ASP - kan huske der var snak om hvorvidt der findes samme funktion i PHP, og i givet fald, hvilken?
Avatar billede fangel Nybegynder
10. juni 2003 - 14:24 #11
exp => nej, man kunne sætte den til første sprog i HTTP_ACCEPT_LANG, men man skal altid have et link til de andre sprog man har oversat til! (gerne som et flag, så kan alle følge med ;)

Morten
Avatar billede tipsen Nybegynder
10. juni 2003 - 14:28 #12
Hvis det er en side der ofte besøges, vil det være for langsomt med en bunke tekststrenge til at rumme indholdet - så skal der hvertfald indbygges noget caching - evt. brug af et template system med mulighed for caching.
Avatar billede fangel Nybegynder
10. juni 2003 - 14:32 #13
jeg ville nok lave manuel caching ;)
Avatar billede exp Juniormester
10. juni 2003 - 14:35 #14
nogen der kender nogle gode artikler om caching?
Avatar billede fangel Nybegynder
10. juni 2003 - 14:41 #15
exp => her er nogle:
http://phpbuilder.net/columns/index.php3?cat=5&subcat=43

ideen går ud på at lave et biblotek med cachede filer, når en bruger kommer ind på en side tjekker man så om man har en cached version, hvis ja, include den side, hvis nej, brug Output Buffering, da dette kan lægge alt outputtet over i en streng... så skriver man en fil med dette indhold og lægger den i mappen for cachede filer...

Morten
Avatar billede exp Juniormester
10. juni 2003 - 14:46 #16
thx dea_pg
Avatar billede fangel Nybegynder
10. juni 2003 - 14:59 #17
så lidt
Avatar billede tipsen Nybegynder
10. juni 2003 - 15:39 #18
Og jeg er jo stor tilhænger af PEAR, så:

http://pear.php.net/packages.php?catpid=3&catname=Caching
Avatar billede fangel Nybegynder
10. juni 2003 - 17:00 #19
tipsen => du kan heller ikke lade være med at smide links til pear?

Morten
Avatar billede tipsen Nybegynder
10. juni 2003 - 17:04 #20
dea: Synes det er ubetinget den bedste PHP ressource på nettet :-)
Avatar billede fangel Nybegynder
10. juni 2003 - 17:17 #21
PHPBuilder.net klarer sig fint på toppen af min liste... kun truet af E ;)
Avatar billede hav0k Nybegynder
10. juni 2003 - 19:37 #22
Hmm jeg må jo sige at det gav en del forskelle svar.. og nu er jeg jo lidt i tvivl om hvem som skal have pointene.. Sennel's metode ser uden tvivl avanceret ud.. desværre for avanceret for mig :/ .. jeg ville foretrække noget lettere, så hvis I lige gad at trække de letteste svar ud (evt. komme med lidt flere), så finder jeg ud af hvad der passer bedst. -Tak!

//Hav0k
Avatar billede fangel Nybegynder
10. juni 2003 - 19:43 #23
det nemmeste er noget i den her stil:

1) opret en database, hvor du gemmer alt tekst til hele siden, hvor du har en række med "lang", så du senere kan få l den tekst i det sprog der er valgt

2) lav dine scripts, så når man kommer ind på siden bliver der dannet et array med al tekst i det pågældende sprog. derefter er det er spm om at udskrive de pågældende variabler

3) indse at det går hundelangsomt

4) lav et caching system så dine sider bliver gemt som .html filer der bliver opdateret fx hver uge/månede eller når noget andet på siden bliver opdateret!

Morten
Avatar billede hav0k Nybegynder
10. juni 2003 - 19:55 #24
Så må jeg vel sige at de 200 point går til den som udførligt kan fortælle en n00b step by step how to do it.. :D

Og meget gerne med en forklaring af det.

//Hav0k
Avatar billede hav0k Nybegynder
10. juni 2003 - 19:56 #25
Altså det med Caching!
Avatar billede fangel Nybegynder
10. juni 2003 - 20:01 #26
how-to.caching

1) opret en mappe der hedder fx "cache"
2) i toppen af hver .php fil laver du en rutine der tjekke om /cache/[sidenavn].php findes
---
hvis ja i (2)
3) inkluder denne side, og lad være med at udføre PHP scriptet, men stol på at HTML cachen kan klare det (du kan evt indbygge et script der sammenligner de 2 filers "sidst-ændret dato")
---
hvis nej i (2)
3) start output buffering (ob_start();)
4) i bunden af filen laves et dumb af det bufferede materiale til en streng, denne streng skrives til filen /cache/[sidenavn].php
5) hvis strengen

det var sådan step-by-step guide til caching... læg de artikler jeg linker til på phpbuilder hvis du vil vide mere

Morten
Avatar billede hav0k Nybegynder
10. juni 2003 - 20:25 #27
Jeg er næsten bange for at det der bliver for avanceret.. det skal heller ik tage for lang tid at lave. Tar det så abnormt meget længere tid med MySQL?
Avatar billede tipsen Nybegynder
10. juni 2003 - 20:38 #28
Eksempel med Cache_Lite fra dokumentationen:
<?php

// Include the package
require_once('Cache/Lite.php');

// Set a id for this cache
$id = '123';

// Set a few options
$options = array(
    'cacheDir' => '/tmp/',
    'lifeTime' => 3600
);

// Create a Cache_Lite object
$Cache_Lite = new Cache_Lite($options);

// Test if thereis a valide cache for this id
if ($data = $Cache_Lite->get($id)) {

    // Cache hit !
    // Content is in $data
    // (...)

} else { // No valid cache found (you have to make the page)

    // Cache miss !
    // Put in $data datas to put in cache
    // (...)
    $Cache_Lite->save($data);
}
?>
Avatar billede hav0k Nybegynder
12. juni 2003 - 11:22 #29
Ked af det guys.. men jeg har ikke tid til at sætte mig ind i noget så avanceret som  det der cache.. jeg må lave mit eget hjemmelavedet et-eller-andet kombineret med mysql.. I skal ellers have tak for hjælpen..
Avatar billede keysersoze Ekspert
12. juni 2003 - 11:29 #30
hvis du ikke forventer en side i størrelsenordnen jubii, google m.m. så lav det som jeg foreslår

Lav to php-side der indeholder en masse variabler - fx (dog asp-syntaks);

Home = "Hjem"
Products = "Produkter"
Contact = "Kontakt

og tilsvarende på det andet sprog

Home = "Home"
Products = "Products"
Contact = "Contact"

og inkluder den side der passer til det valgte sprog. I stedet for så direkte at udskrive "Hjem" i din tekst, så udskriv variablen "Home" - på den måde slipper du let over det med sproget!
Avatar billede hav0k Nybegynder
13. juni 2003 - 17:06 #31
Det er faktisk det jeg er igang med.. dog laver jeg kun én side med to variabler efter hvert sprog..
Avatar billede keysersoze Ekspert
13. juni 2003 - 17:17 #32
yep - det kan man også sagtens og så bare lave en if else eller en case derinde...
Avatar billede avminarm Juniormester
14. juni 2003 - 14:00 #33
hav0k>> kig lidt på switch funktionen og se mit svar tidligere - det er den metode som bl.a. phpnuke benytter sig af og det er der mange der benytter ;o)
Avatar billede exp Juniormester
15. juni 2003 - 00:07 #34
http://dk.php.net/switch

---------------------------------------------
&lt;?php
switch ($_GET["content"]) {
case "admin":
include "admin.php";
break;
case "faq":
include "faq.php";
break;
default:
include "default.php"; }
?>
Avatar billede hav0k Nybegynder
15. juni 2003 - 21:10 #35
Hvordan lukker jeg et spørgsmål?
Avatar billede sweepe Nybegynder
15. juni 2003 - 21:13 #36
Giver point til svar...
Avatar billede exp Juniormester
15. juni 2003 - 21:16 #37
jamen har du fået svar?
Avatar billede hav0k Nybegynder
17. juni 2003 - 18:45 #38
Jeg vil ikke mene at jeg har fået et svar som jeg virkeligt kan bruge til noget -- så jeg tror at jeg vil give pointene til noget helt andet: Den som kan lære mig et eller andet meget nyttigt (og ikke for svært) i PHP, som jeg mener jeg også kan bruge til et eller andet :)
Avatar billede fangel Nybegynder
17. juni 2003 - 18:47 #39
hvad kan du bruge til noget? så vil jeg somen overveje det

Moretn
Avatar billede keysersoze Ekspert
17. juni 2003 - 19:08 #40
erhm - der er givet stort set alle de muligheder der findes (bortset fra hvis du vil benytte en decideret "sprogpakke" som formentlig koster og som skal installeres direkte af webhotellet)... så hvis du ikke har fået et svar du kan bruge til noget - ja, så står du altså ikke til at redde!

mht at lære noget nyttigt i php - så tag et kig på fx http://www.webcafe.dk/, http://www.phpuniverset.dk/, http://www.phpbuilder.com/, http://mbn.dk/PHP/ eller en hvilken som helst anden builder-side... så kan du selv vælge hvad du mener er nyttigt
Avatar billede hav0k Nybegynder
17. juni 2003 - 20:55 #41
Jeg tænkte ikke på noget bestemt.. find selv ud af hvad I mener kunne være nyttigt.. lige meget hvad :D
-Thx
Avatar billede exp Juniormester
17. juni 2003 - 22:14 #42
Hvad med at lære at lave et poll-system?
www.udvikleren.dk/article.php?aid=115
Avatar billede exp Juniormester
17. juni 2003 - 22:14 #43
:-)
Avatar billede sweepe Nybegynder
18. juni 2003 - 01:14 #44
Gi' dig selv pointene og få lukket der her shit ;-)
Avatar billede hav0k Nybegynder
18. juni 2003 - 15:50 #45
heh.. :D Tja.. det er vel ik andet for :/
Avatar billede keysersoze Ekspert
18. juni 2003 - 16:37 #46
ja - som tidligere sagt så er der jo givet alle tænkelige muligheder, så at du ikke kan få det fixes skyldes i hvert fald ikke mangel på løsningsmuligheder men nok nærmere manglende programmeringskundskaber!

Hvis du virkelig ikke kunne få det løst kan det retfærdigheds vist være rigtigt nok at du beholder point selvom det dog normalt er god kotume at dele lidt point ud for hjælp... anyway

det som jeg så - og formentlig også de andre herfra - kan føle sig lidt snydt ved er, at det _alligevel_ ser ud som om at du har brugt vores hjælp! se her

http://www.eksperten.dk/spm/364494
http://www.eksperten.dk/spm/364527
http://www.noekken.com

Det ser jo alligevel ud som om du er i gang med noget sprogstyring - og det endda med en løsning som ligner meget det du har fået hjælp til ud fra flere af de forslag herigennem. Derfor undrer det mig derfor endnu mere at du beholder alle pointene.

... er det mig der tager grueligt galt eller hvordan og hvorledes?
Avatar billede sweepe Nybegynder
18. juni 2003 - 19:55 #47
Ja, det der vil jeg også kalde forholdsvis møg hamrende svinsk....
Avatar billede avminarm Juniormester
18. juni 2003 - 22:34 #48
jeg hader simpelthen at man har brugt tid på at hjælpe sådan en nørd ;o(
Avatar billede fangel Nybegynder
18. juni 2003 - 23:10 #49
en !nørd mener du vel ;)
Avatar billede exp Juniormester
18. juni 2003 - 23:14 #50
dea_pg >>
Det er vist dig der er nørden *GG*
Avatar billede sweepe Nybegynder
18. juni 2003 - 23:17 #51
Nej, den har hav0k sgu' påtaget sig. Ligemget hvor meget andre fucker op i det! Syntes fandme det er til at brække sig over, det han har gjort der :-(
Avatar billede exp Juniormester
18. juni 2003 - 23:23 #52
sweepe >>
fangede du ikke udråbstegnet(!) foran nørd? !nørd... synes det er lidt sjovt :-)

Mener iøvrigt også det er en træls måde at bruge eksperten på...!!!
Avatar billede avminarm Juniormester
19. juni 2003 - 11:56 #53
*LOL*
Avatar billede fangel Nybegynder
19. juni 2003 - 18:10 #54
forklaring for ikke indviede:
man sætter et ! foran utryk for at gøre det negativt... fx !true === false

Morten
Avatar billede sweepe Nybegynder
19. juni 2003 - 18:21 #55
Tak for det... Var ikke lige med ;-)
Avatar billede keysersoze Ekspert
19. juni 2003 - 20:52 #56
anyway - der kan jo være en grund til dette... derfor syntes jeg at vi skal give hav0k en chance for at forklare sig. Er forklaringen ikke god nok eller kommer den slet ikke - ja så må vedkommende anmeldes.

men giv lige ham(?) en chance.
Avatar billede hav0k Nybegynder
19. juni 2003 - 22:04 #57
Okay folkens .. det var jo godt nok noget af en reaktion.. Grunden til at jeg gav pointene til mig selv var at jeg simpelthen ikke vidste hvem jeg skulle give pointene til.. men okay - jeg er da lidt eksperten.dk n00b - så er der ik en måde jeg kan dele dem mellem alle jer .. så gør jeg da det med glæde.. (regnede ik med at I ville gå sådan amok :/
PS. Jeg skrev faktisk selv noget PHP som jeg sagtens ville kunne finde ud af FØR jeg spurgte herinde.. grunden til at jeg spurgte herinde var at jeg håbede at finde en smart måde at gøre det på .. men den viste sig at være for avanceret for mig -- derfor fik jeg ik noget rigtigt ud af det - men jeg vil da stadig gerne give jer nogen point for alle de mange svar ..
Avatar billede keysersoze Ekspert
19. juni 2003 - 22:43 #58
hvis du vil give point til flere i ét spm skal alle have svaret - så kan du enten markere personerne i den boks der kommer og trykke på accepter eller også kan du gå ind i avanceret og tildele derinde.

Nu er det for sent at give point - men hvis du mener der skal gives point skal du oprette et spm til med reference hertil samt fortælle hvem der skal have point...
Avatar billede exp Juniormester
20. juni 2003 - 10:38 #59
Avatar billede keysersoze Ekspert
22. juni 2003 - 23:12 #60
og hvad bliver den endelige beslutning så?
Avatar billede keysersoze Ekspert
28. juni 2003 - 03:25 #61
sidste chance - ellers anmelder jeg
Avatar billede hav0k Nybegynder
28. juni 2003 - 15:42 #62
Okay.. her er et link hvor flg, kan få point for jeres ulejlighed: http://www.eksperten.dk/spm/370249
Og disse personer er:
keysersoze
sennels
avminarm
dea_pg
tipsen
Avatar billede hav0k Nybegynder
28. juni 2003 - 15:43 #63
NÅ ja.. grunden til at jeg var så lang tid om at skrive var at jeg var på ferie - ved ikke om I derinde har opdaget at det er sommer?? (ej :D)
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