Terve taas,
Onko kenelläkään antaa hyvää vinkkiä/mielipidettä siihen, mikä olisi järkevin tapa/keino hoitaa php-koodin tuottamien lomakkeiden käännökset eri kielille?
Käyttäjän profiiliin ajattelin tallentaa käyttäjän valitseman kielen ja sen perusteella valitaan sovelluksen kieli.
Kantaanhan käännösasiat voisi tallentaa tyyliin
lomake kenttä kieli teksti
A1 nimi fi Nimi
A1 nimi se Namn
A1 nimi en Name
Lähinnä ideaa kaipaisin lomakkeiden tehokkuutta miettien.
Onko järkeä käyttää tietokantaa vai tiedostoja?
Koodiin tuskin kannattaa koodailla?
Tuleeko kannasta tietojen haku pullonkaulaksi?
Onko kenelläkään tiedossa esimerkkiä käyttämisestä koodissa?
Itse olen hoitanut kielihommat suurinpiirtein tähän tyyliin.
suomi.php tiedosto sisältää tietenkin muuttujat, joissa on kieliarvo.
Ainakun jollakin sivulla on tekstiä on sillä oma muuttujansa. Näin ollen tarkistat vain sivun alussa mikä kieli on käytössä ja muuttuja saa sen mukaisen arvon tekstille.
Oliko tarpeeksi vaikeasti selitetty?
Sivu jolla tekstiä on. --------------------------------------------- if($_SESSION['kieli'] == LANG_FI) { require_once './kielipaketit/suomi.php'; } echo "<td>" . $mlData[msg1] ."</td>"; --------------------------------------------- suomi.php --------------------------------------------- function kpsuomi(){ $mlData['msg1'] = 'Tallenna'; $mlData['msg2'] = 'Poista'; } ---------------------------------------------
Vasta_alkaja:n 'msg1' ja 'msg2' kannattanee muuttaa kuvaavemmiksi, eli 'save' ja 'remove', jolloin ei tarvitse hyppiä kielitiedoston välillä tarkistamassa mikäs se msg1 olikaan, ja olikos se sähköpostin tervehdysteksti jo asetettu kielitiedostoon.
Tuon ratkaisun heikkous on, että kaikki tekstit ovat eri tiedostoissa ja jokin saattaa puuttua (tai voi tulla kirjoitusvirheitä tekstin tunnisteisiin). Turvallisempi ratkaisu on tallentaa tekstit niin, että samasta paikasta löytyvät tunniste ja kaikki kieliversiot.
Yksi formaattivaihtoehto on JSON:
{ "save": ["Tallenna", "Save", "Spara"], "cancel": ["Peru", "Cancel", "Annullera"], "":[] }
Tällaisesta tiedostosta voi halutessaan vaikka skriptillä generoida joka kielelle tuollaisen, jota Vasta_alkaja ehdotti.
Heikkous on tuttua :).. Välillä onkin tyhjiä nappeja esillä, joten olenkin sen myötä kallistunut vain suomeen. Suosittelen kokeilemaan Meabolixin neuvoa. Kun vielä itsekkin joskus jaksaisi korjata ja vaihtaa tuohon tyyliin niin hyvä olisi.
Hitto,
Tuo JSON-koodaus onkin hyvän oloinen. Php:ssä (>= 5.2.0) näyttää olevan valmiit funktiot käyttöä varten. Mulla kun tunnetusti tämä php on heikkoa, niin voisikos joku antaa pienen käyttöesimerkin tuohon Metabolixin dataesimerkkiin.
Etukäteen kaunis kiitos!
Itse pidän kielikohtaisia käännöstiedostoja paljon selvempänä ja tehokkaampana keinona. Tietyn kielitiedoston voi heittää kääntäjälle eikä kaikkien kääntäjien tarvitse sotkea samaa tiedostoa.
Metabolix: itse taas pitäisin "heikkoutta" päivittämisen kannalta hyvänä ominaisuutena. Eli kieliä voi jälkikäteen lisäillä ilman, että tarvitsee sisällyttää kaikki mahdolliset kielet. Eli jos samalla tekniikalla tekee useamman sivuston, niin kaikkia mahdollisia kieliä ei tarvitse upottaa. Lisäksi espanjan taitaja voi vapaasti muokata omaa kielitiedostoaan, kun taas suomalainen voi muokata omaansa.
Yksin tehdessä.... noh... ei ole juurikaan eroa.
Lisäksi loisin jonkin funktion, jonka kautta käännökset tehtäisiin, jolloin voisi puuttuvissa teksteissä tulostaa, esim. haettavan "hashin".
Lebe80 kirjoitti:
Eli kieliä voi jälkikäteen lisäillä ilman, että tarvitsee sisällyttää kaikki mahdolliset kielet. Eli jos samalla tekniikalla tekee useamman sivuston, niin kaikkia mahdollisia kieliä ei tarvitse upottaa.
Mitähän yrität tällä tarkoittaa?
Lebe80 kirjoitti:
Lisäksi espanjan taitaja voi vapaasti muokata omaa kielitiedostoaan, kun taas suomalainen voi muokata omaansa.
Sitä varten käytetään versionhallintaohjelmia. Ja tuossahan se ongelma juuri tulee esiin: kun koodari lisää yhteen kielitiedostoon tekstin "send_email", "Lähetä sähköpostia", miten espanjan taitajalle saadaan tieto, että tästä puuttuu käännös? Yhteisestä kielitiedostosta nähdään suoraan, mitkä käännökset puuttuvat, ja lisäksi kääntäjät näkevät rinnalla muiden kielten tekstit ja voivat varmistaa, ettei tule typeriä virheitä. (Windowsin käyttäjät ehkä muistavat ilmoituksen "Muisti ei voi olla 'read'.")
Varmasti molemmat ideat toimivat ja molemmissa on omat hyvät puolensa. Riippuu tietenkin kokonaisuudesta. Montako kieltä sotkee, kuinka paljon käännöksiä yleensä edes tulee. Näiden kysymysten jälkeen varmaan jo tietää, mikä tyyli on tähän sopiva.
Metabolix: totta, mutta tämän ansiosta yksi kielitiedosto ei paisu heti moninkertaiseksi, jos halutaan lisätä yksi kieli lisää.
Jatkossa, jos halutaan käyttää samaa alustaa, ei tarvitse lisätä kaikkia aikasemmin käytettyjä kieliä järjestelmän mukana.
edit:
Jos puhutaan vaikkapa Joomla!:sta, niin uuden kielen lisäämiseen ei tarvitse ylikirjoittaa vanhoja kielitiedostoja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.