Skifte sprog osv.

Tags:    php

Hejsa!
Jeg har siddet og bikset med et ip-blokerings scripts som jeg har lavet, og det er da også udbredt og brugt meget her i Danmark, med positiv feedback.

MEN, jeg kunne godt tænke mig at lave scriptet i en engelsk, tysk osv. version.
Problemet er, at selve scriptet skal kunne vise det sprog som brugeren vælger, istedet for at jeg laver 30 forskellige sprog versioner, som alle skal opdateres når jeg retter i scriptet... Spild af tid :)

Så hvordan jeg laver jeg sådan en medfølgende "language-pack" agtig noget, som så erstatter sproget med det brugeren har valgt?
En slags fremgangsmåde vil jeg meget gerne ha, da jeg ingen ide har selv hvorledes det kan laves.

Hele scriptet køre via en MySQL database hvis det kan bruges til noget...



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Den umiddelbart smarteste løsning er som det blev foreslået ovenfor, at erstatte alle teksterne i dit script med en variabel, fx
echo $din_ip
. Det betyder desværre en ordentlig røvfuld variable...

...men ideen er så, at hver enkelt sprogs udgave af disse tekster/varible er defineret i hver deres sprog-fil (language.en.php) som tilsammen udgør en komplet sprogpakke. Fremgangsmåden er så, at man i starten af scriptet kontrollerer hvilken sprog brugeren ønsker, fx. via. GET, og så inkluderer den relavante sprog-fil.

Alternativet med at bruge MySQL er kun en god ide, hvis der er tale om få længere tekster, idet database-opslag ikke alene optager ressourcer, men det tager også en frygtelig mængde tid at hente en masse små tekster, også selvom de kan hentes med et query så tager det meget tid og kode at pille fra hinanden.

*** EKSEMPEL ***

Sprog-fil : language.da.php

<?PHP
//Text: your IP
$your_ip = "din IP";

//Text: your name
$your_name = "dit navn";

//Text: Life is too short for ASP
$the_truth = "Livet er for kort til ASP";
?>

PHP-Script : scriptet.php

<?PHP

//Check is $lang is a supported language
function isValid($lang){}

//Check language, default DA
$lan = (!empty($_GET["lan"]) && isValid($_GET["lan"]))? $_GET["lan"] : "da";

//Load language module
include("language." . $lan . ".php");

// START OF SCRIPT

...
echo $your_ip . " : " . $REMOTE_ADDR;
...

?>

Ovenstående script benytter GET til at bestemme sproget, men du kan også bruge POST, COOKIE eller SESSION.

DET er dog meget VIGTIGT, at du sætter dig ned og definerer alle tænkelige variable/tekster på forhånd, idet det er et stort arbejde at tilføje eller rette tekster/variable på et senere tidspunkt, da det kræver at du ændrer i hele sprogpakken. Alle variable skal være veldefinerede på forhånd.



Hejsa!
Jeg har siddet og bikset med et ip-blokerings scripts som jeg har lavet, og det er da også udbredt og brugt meget her i Danmark, med positiv feedback.

MEN, jeg kunne godt tænke mig at lave scriptet i en engelsk, tysk osv. version.
Problemet er, at selve scriptet skal kunne vise det sprog som brugeren vælger, istedet for at jeg laver 30 forskellige sprog versioner, som alle skal opdateres når jeg retter i scriptet... Spild af tid :)

Så hvordan jeg laver jeg sådan en medfølgende "language-pack" agtig noget, som så erstatter sproget med det brugeren har valgt?
En slags fremgangsmåde vil jeg meget gerne ha, da jeg ingen ide har selv hvorledes det kan laves.

Hele scriptet køre via en MySQL database hvis det kan bruges til noget...


Det kræver jo en hel del arbejde. Du kan lave en fil for alle sprogende, også inkludere den brugeren har valgt på alle dine sidder. I disse sprogfiler kan du så ligge alt teksten i dit program som variabler. Du kunne fx have en variabel der hed $din_ip, i den danske fil kan du så give den værdien "Din ip er " og i den engelske "Your ip is ".



##################################
#There are only 10 types of people in the world: #
#Those who understand binary ant those who don't#
##################################

# JeZper #





Det kræver jo en hel del arbejde. Du kan lave en fil for alle sprogende, også inkludere den brugeren har valgt på alle dine sidder. I disse sprogfiler kan du så ligge alt teksten i dit program som variabler. Du kunne fx have en variabel der hed $din_ip, i den danske fil kan du så give den værdien "Din ip er " og i den engelske "Your ip is ".



##################################
#There are only 10 types of people in the world: #
#Those who understand binary ant those who don't#
##################################


Hmm.... Det kræver jo en helveds masse $blabla sætninger .. :)
Men det som jeg stadig ikke kan få til at fungere helt, er jo hvordan sproget kommer frem ..

Jeg kunnne jo selvfølgelig lave en cookie af en art, men jeg sidder stadig her med et uoverskueligt projekt ..

For hvis jeg skal include én fil, med alle sprog, så går det galt.. Tror jeg da..
Men jeg aner virkelig ikke hvordan det skal kunne gøres



Måske alla sådan noget her:?

if ($cookie_en){
echo "$line1";
echo "$line4";
}

eller?



Hejsa .. det er lidt svært for mig at forstå helt hvad det er du spörger om.
Jeg går ud fra at du står i den situation hvor du har fået en indicator af brugerens sprog (http, cookie eller hvad ved jeg), men du er i tvivl om hvordan du skal skifte sproget ud dynamisk uden af spiltte din fil op i mange sprog filer eller noget i den stil?

Er det tilfældet kan du jo smide dine tekster i databasen ... fx ved at have en tekst tabel som indeholder id på teksten og en beskrivelse af teksten (fx den engelske version af teksten) .. og en anden tabel som holder teksterne i oversat form ... dvs nöglen er det id teksten har (fra den anden tabel) og sprog indicatoren (fx en, da osv.) .... og så selecter du din tekst ved at vælge dit tekst id plus brugerens sprog id ... fx select tekst from tekst_trans where tekst_id = 10 and sprog = da og så har du din tekst.

Et drawback er at du skal select for hver tekst .. så har du mange beskeder i samme side i forskallige tekster så koster det performance.
En fordel er at du kan ændre dine tekster via databasen uden at ændre din(e) php fil(er) .. plus du kan bruge dine tekster igen over flere forskellige php filer.
(Og endelig kan du også lave et fint interface som lader nye sprog komme til fra en sprogkyndig som måske ikke ellers kan finde ud af så meget).

Er jeg på vildspor her ?



t