[risolto] internazionalizzazione con lingue differenti

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ho scritto un'applicazione in php per una società internazionale,
ho lasciato come ultima attività da svolgere, la possibilità di utilizzare lingue diverse,
ho pensato di gestire tutte le "traduzioni" in un'apposita tabella del database
ma, di derivare dal db files specifici della lingua, da includere in ogni script php.

Per semplificarmi la vita, pensavo di usare per ciascuna lingua la stessa classe,
in modo da inserire al posto del testo il richiamo $puntatore->nomedeltesto
quindi la classe dovrà contenere un elenco di costanti che mi forniranno ciascuna il testo dovuto.

per creare il file della lingua pensavo di usare la tecnica sotto esposta, che rappresenta due elementi letti dal db
e che permettono di definire le costanti ed il valore in esse contenuto

ma non ho idea di come creare la classe, chi mi da una mano a capire come strutturarla magari con l'esempio riportato ?
grazie infinite
marino

PHP:
<?php
$colDB_nomecostante="txt_01";
$colDB_valorecostante="testo del campo 01";
define("_{$colDB_nomecostante}", $colDB_valorecostante);

$colDB_nomecostante="txt_02";
$colDB_valorecostante="testo del campo 02";
define("_{$colDB_nomecostante}", $colDB_valorecostante);

echo _txt_01, "<input type='text' name='my_descr_1' />", "<br>";
echo _txt_02, "<input type='text' name='my_descr_2' />", "<br>";
?>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Non fai prima a creare una cartella con i file delle lingue in php dove per ogni file definisci le costanti?

Esempio, languages/
en.php
PHP:
<?php
define('_text_01','hello');
define('_text_02','bye bye');
//etc...
es.php
PHP:
<?php
define('_text_01','hola');
define('_text_02','hasta luego');
//etc...
it.php
PHP:
<?php
define('_text_01','ciao');
define('_text_02','arrivederci');
//etc...
etc...

E poi
PHP:
include 'languages/'.$lang.'.php';
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ok, è un metodo semplice quando il programmatore si cura delle traduzione,
lo è meno quando la traduzione è fatta localmente da personale che non è programmatore
ciao
Marino
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Ti sconsiglio l'uso delle costanti, perché dovresti fare continui controlli if (defined(..)) al fine di evitarti errori dovuti ad una costante non definita.

Puoi invece implementare una cosa di questo tipo:
PHP:
$lang = new Language('it');

echo $lang->label('txt_01');
echo $lang->label('txt_02');

#> etc..

Puoi far si che al costruttore della classe carichi con una query l'intero elenco di coppie chiave => valore all'interno di un vettore locale.

Il metodo label si limiterà a fare un controllo di questo tipo:
PHP:
public function label($key) {
    return !empty($this->occorrenze[$key])? $this->occorrenze[$key] : null;
}


Penso sia la soluzione più semplice e maneggevole che puoi realizzare.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
grazie flameseeker,
questa è la soluzione che sto cercando,
ho pensato però all'uso delle costanti perché i messaggi nel db una prima volta li scrivo io, assegnando anche il loro nome
questo perché tutti i messaggi richiamati nell'applicazione devono trovare assolutamente corrispondenza nel db, (salvo un mio errore)
se non trovano la traduzione,è meno importante perchè viene usata "en" per default
vorrei avere quindi diversi file php, uno per ciascuna lingua, ma mi interessava la semplicità di questo metodo
ora provo a svilupparlo, grazie infinite
marino
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Considera sempre che puoi modificare il metodo label affinchè, nel momento in cui non trova la chiave specificata, possa eseguire una query di fallback e recuperare il dato di interesse nella lingua che scegli di impostare come standard.
In buona sostanza, di soluzioni se ne trovano.

Fammi sapere come va :byebye:


ps: dal momento che la discussione ha carattere teorico ed hai trovato la logica che ti serviva, segno il post come risolto ;)
 
Discussioni simili
Autore Titolo Forum Risposte Data
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15
T [Photoshop] Problema creazione pennello personalizzato [RISOLTO] Photoshop 3

Discussioni simili