sfogliandone la documentazione ho visto che anche il templare engine che uso ha una funzione per le traduzioni simile alla tua... solo che sfrutta la funzione nativa di PHP "gettext". quindi scrivo qualcosa tipoe se trova la voce "home" nel file .mo che gli ho indicato la traduce...codice HTML:<div i18n:traslate="home">Home</div>
@mt19 Se come codice di lingua c'è solo it dovrebbe funzionare, e non sapevo che ci potesse essere anche solo il codice dello stato...
No
Di norma mi appoggio al DB.
Una tabella "costanti di traduzione" con id e nome_costante (es: welcome_home)
e una tabella con l'id della costante, l'id della lingua, il testo.
La query in realtà viene effettuata solo una volta dopo che la costante è stata creata o modificata perchè utilizzo un sistema di cache.
Il tutto viene gestito con una classe LanguageManager.
Sto provando gettext, ma... si inventa le traduzioni
Il file ./locale/fr_FR/LC_MESSAGES/messages.po (Che ho poi compilato i un .mo)Codice PHP:putenv("LC_ALL=fr_FR");
echo setlocale(LC_ALL, "fr_FR", "fra_FRA");
bindtextdomain("messages", "./locale");
textdomain("messages");
echo "<br>" . _("search");
Il risultato della pagina:codice:msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2014-08-27T15:21:11+02:00\n" "POT-Creation-Date: 2014-08-27T15:21:11+02:00\n" msgid "home" msgstr "page d'accueil" msgid "search" msgstr "recherche"
Quel cerca nel file non c'è da nessuna partecodice:French_France.1252 cerca
(In realtà c'è, ma in un file che non dovrebbe centrare niente)
No
Update del mio post precedente:
Qualsiasi lingua io imposti (della quale abbia o no creato la cartella) mi prende il file in italiano...
No
Bladze prende il contenuto del file:
E ne parsa il contenuto:Codice PHP:$template = file_get_content("index.tpl");
Codice PHP:$parsed = preg_replace_callback("/:([A_Z]+):/", function ($constant) {
return constant($constant);
}, $template);
No
Ahhhh adesso mi è molto più chiaroGrazie della spiegazione
Un'altra cosa...
Secondo voi questo va bene come ordine di priorità per scegliere la lingua?
- Impostazioni dell'account dell'utente
- Cookie
- Header "Accept-Language"
- Lingua scelta in base alla posizione dell'utente
- Lingua di default (en_EN)
No
Sì e no: se guardi nelle impostazioni utente ogni volta, vuol dire una query in più per ogni pagina. Quindi sì e no. Potresti mettere prima i cookie, i quali valgono solo per un giorno, poi vengono riabilitati dalle impostazioni, così hai una query al giorno per ogni account. Ovvio è che se viene cambiata l'impostazione dell'account devi cambiare anche i cookie