Applikation med sprog muligheder

Tags:    php

<< < 12 > >>
Hej,

jeg er igang med at udvikle en applikation, i PHP5 (kører objekt orinteret programmering), og jeg vil gerne have så brugeren kan skifte hele sidens sprog (ved at gå ind i indstillinger) og vil bare gerne have nogle ideer til hvordan det gøres nemmest? (:



11 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Du bliver nød til at have en måde at gemme de forskellige sprog om det skal være en database eller en fil må du selv finde ud af. Men hvis det skal være nemt at redigere kunne du jo lave en php fil som du så bare inkluderede. Filen kunne så se således ud:

[code="PHP"]<?php
$sprogArray["forsideTekst"] = "Velkommen...";
$sprogArray["menuPunktKontakt"] = "Kontakt";
$sprogArray["menuPunktProdukter"] = "Produkter";?>[/code]

En fil for engelsk kunne så se således ud:
[code="PHP"]<?php
$sprogArray["forsideTekst"] = "Welcome...";
$sprogArray["menuPunktKontakt"] = "Contact";
$sprogArray["menuPunktProdukter"] = "Products";?>[/code]

Så skal du så lave en session-variabel der fortæller hvilken fil der skal bruges, evt. kan du baserer standard-værdien på hvad sprog browseren fortæller dig. Alle filerne skal så inkludere denne fil.

I filerne kan du så bare skrive <?=$sprogArray["forsideTekst"]?> når du vil udskrive teksten der skal være på forsiden.

Jeg håber det blev nogenlunde forståeligt :)





Det kan også gøres sådan her:

index:

Fold kodeboks ind/udKode 


lang_dk
Fold kodeboks ind/udKode 


Laver du det i klasser kan gøre sådan her:
Fold kodeboks ind/udKode 


Tror det virker, men er ikke sikker.






Indlæg senest redigeret d. 17.03.2006 08:10 af Bruger #6559
Det her skulle virke:

index.php:
Fold kodeboks ind/udKode 


Det er kun på forsiden du skal indsætte:
Fold kodeboks ind/udKode 

På de andre sider indsætter du + forside:
Fold kodeboks ind/udKode 


forside.php
Fold kodeboks ind/udKode 


nyhed.php
Fold kodeboks ind/udKode 

lan/dk.php
Fold kodeboks ind/udKode 


lan/en.php
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 17.03.2006 14:11 af Bruger #7494
Ved ikke om man kan bruge det, men prøv noget ala
global $var_uden_for_klasser;

Edit: Det skal stå inde i selve klassen, hvis der skal være en chance for at det skal virke.



Indlæg senest redigeret d. 17.03.2006 20:30 af Bruger #4479
hvis du tager udgangspunkt i det første forslag du fik med at lave nogle filer der indeholder et kæmpe array med sprog indstillinger i, så kan du gøre sådan her:
[code="PHP"]
class Language {
protected $words;
public function __construct($words){
$this->words = $words;
}

public function getWord($id){
return $this->words[$id];
}
}
[/code]

Når du så opretter din klasse gør du sådan her:

[code="PHP"]
require_once($lang); //$lang indeholder stien til den language fil som skal inkluderes

$language = new Language($langArray); //Lang array er så det array som er defineret i den inkluderede fil $lang.

echo $language->getWord("Welcome"); //Hvor Welcome er en key
i dit array som så udskriver velkommen på forskellige sprog.
[/code]



Det har jeg prøvet, men det virker ikke, for jeg kan ikke bruge de variabler inde i min class.

F.eks.:

Fold kodeboks ind/udKode 


Det virker ikke. Så får man bare notice error 'Undefined variable 'menu' ...'



Indlæg senest redigeret d. 16.03.2006 23:21 af Bruger #9691
Nej, hele pointen med klasser er at de er afgrænsede fra omverdenen. Så du skal definere din $menu inde i klassen, hvis du vil bruge den der.



Nej, hele pointen med klasser er at de er afgrænsede fra omverdenen. Så du skal definere din $menu inde i klassen, hvis du vil bruge den der.


Ja, men hvordan skal jeg definere den inden i klassen, når $menu er i en anden fil og ligger som simple arrays?



Det her skulle virke:

index.php:
Fold kodeboks ind/udKode 


Det er kun på forsiden du skal indsætte:
Fold kodeboks ind/udKode 

På de andre sider indsætter du + forside:
Fold kodeboks ind/udKode 


forside.php
Fold kodeboks ind/udKode 


nyhed.php
Fold kodeboks ind/udKode 

lan/dk.php
Fold kodeboks ind/udKode 


lan/en.php
Fold kodeboks ind/udKode 


Nu kan det godt være du ikke lige forstod det (:, men jeg kører med classes, altså OOP - Objekt Orinteret Programmering. Og en almindelig variabel virker ikke inde i selve min class.



Nå hov, sorry :-)



<< < 12 > >>
t