[ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 19.01.17
Príspevky: 198
Témy: 78 | 78
Bydlisko: Šuňava
Vek: 20
NapísalOffline : 03.04.2016 12:20 | Viacjazyčnosť - ako nato?

Ahojte, ako tak robím tú PHP hru, chceli by sme ju raz dokončiť globálne a teda by sme do hry radi zabudovali jazyky. Vedel by nám niekto poradiť, ako najjednoduchšie nato? IF využívam napríklad pre frakcie frakciu 0 1 2 3 stále s ifkom takže if by som nemohol použiť pre ďalšie polia myslím. Kódy sú už teraz dosť dlhé.
Dávam ako príklad časť z jedného kód a skúste poradiť, ako by bolo najvýhodnejšie ho upraviť.
Kód:
if(isset($_POST['register'])){
   $username = protect($_POST['username']);
   $password = protect($_POST['password']);
   $email = protect($_POST['email']);
   
   if($username == "" || $password == "" || $email == ""){
      echo "Na niečo si zabudol!";
   }elseif(strlen($username) > 20){
      echo "Tvoje meno je veľmi dlhé!";
   }elseif(strlen($email) > 100){
      echo "Tvoj e-mail je veľmi dlhý!";
   }else{
      $register1 = mysql_query("SELECT `id` FROM `user` WHERE `username`='$username'") or die(mysql_error());
      $register2 = mysql_query("SELECT `id` FROM `user` WHERE `email`='$email'") or die(mysql_error());
      if(mysql_num_rows($register1) > 0){
         echo "Toto meno je už používané!";
      }elseif(mysql_num_rows($register2) > 0){
         echo "Tento e-mail je už používaný!";


Offline

Užívateľ
Užívateľ
Viacjazyčnosť - ako nato?

Registrovaný: 21.09.13
Prihlásený: 23.01.17
Príspevky: 2011
Témy: 70 | 70
Bydlisko: Považská By...
NapísalOffline : 03.04.2016 13:24 | Viacjazyčnosť - ako nato?

Neviem či to je najlepší spôsob ale teraz má napadlo
Podľa užívateľovi ip mu ulozis do cookies z akého štátu je (sk/cz/en/...)
Vytvoriš si "slovníky" napr. slovník_sk.php/slovník_en.php, tam si zadefinuješ jednotlivé frázy
slovník_sk.php: zobraziť
<?php
define ('OBSADENE_MENO', 'meno je obsadené');

Použiješ include('slovník_'.$stat.'.php'); do premennej $stat si hodiš štát ktorý vytiahneš z cookies
echo "meno je obsadené"; nahradiš za echo OBSADENE_MENO;
Nezabudni že cookies je tiež od užívateľa a je treba to ošetrovať.
A ešte, die(mysql_error()) je zbytočné, ak nastane chyba uživatelovicje zbytočne vedieť čo sa stalo a teda nevypisuj nič lebo by to mohlo pomôcť prípadnému zaskodnikovi.


_________________
Nesnívaj svoj život, ale ži svoj sen.
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 23.01.17
Príspevky: 1357
Témy: 2 | 2
Bydlisko: Praha / Rev...
NapísalOffline : 03.04.2016 16:00 | Viacjazyčnosť - ako nato?

Buď tak, alebo často je v kóde krajšie, keď tam je skuočná veta a nie nejaký alias.
Preto sa to zvykne robiť takouto funkciou:
Kód:
echo trans('This is a sentence to be translated');


A funkcia trans bude implementovať preklad. A je veľa možností, ako na to.
Úplne v najjednoduchšej forme, napr. v ini súbore. Napr. v súbore lang_sk.ini bude
Kód:
This is sentence to be translated = Toto je veta na preklad


V kóde potom len urobíš podľa detekovaného jazyka
Kód:
function trans( $sentence ) {
  global $lang; //detekovany jazyk
  $texts = parse_ini_file('lang_' . $lang .'.ini');
  return $texts[$sentence];
}


Samozrejme chce to trocha ošetriť a domyslieť - mať texty niekde globálne načítané, aby si ich nemusel loadovať pri každom preklade vety.

No a preklady si môžeš dať do spomínaného .ini, alebo kľudne json, databáze, to je fuk.

Výhody:
1. V kóde je ozajstná veta v nejakom jazyku (akože "vývojovom" jazyku).

2. Kým žiadne jazyky nemáš, netreba ti ani žiadny súbor s prekladmi. Urobíš jednoducho
Kód:
function trans( $sentence ) {
  return $sentence;
}

Keď pribudnú preklady, upravíš iba funkciu trans.

3. výhoda/nevýhoda - Keď použiješ vo funkcii trans text, ktorý nemá preklad, môžeš zobraziť vetu v pôvodnom jazyku (žiadna error hláška).
Kód:
function trans( $sentence ) {
  ...
  return isset($texts[$sentence]) ? $texts[$sentence] : $sentence;
}


Nevýhody:
1. Vety sa musia zhodovať. Keď upravíš vetu v kóde, musíš ju zmeniť aj v každom súbore prekladu (lebo slúži ako index).
2. Keď chceš zmeniť vetu vo "vývojovom" jazyku, musíš ísť do kódu.

Obe veci sa dajú vyriešiť prekladovým súborom z "vývojového" jazyka na ten istý. V súbore teda bude preklad napr z anglického do anglického jazyka. Ale v kóde sa vety nechajú a budú sa upravovať len tie preklady.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1719
Témy: 0 | 0
NapísalOffline : 03.04.2016 18:09 | Viacjazyčnosť - ako nato?

Nebolo by jednoduchšie použiť napr. gettext?

// Spojený príspevok Ned 03.04.16 18:13

Kraliček píše:
Podľa užívateľovi ip mu ulozis do cookies z akého štátu je (sk/cz/en/...)
Ja osobne by som použil nastavenia jazykov v prehliadači.


Online

Skúsený užívateľ
Skúsený užívateľ
Viacjazyčnosť - ako nato?

Registrovaný: 24.01.08
Prihlásený: 22.01.17
Príspevky: 14478
Témy: 65 | 65
Bydlisko: Žilina
Vek: 29
NapísalOnline : 03.04.2016 18:26 | Viacjazyčnosť - ako nato?

Samozrejme že bolo, už len kvôli tomu že je to štandard presahujúci PHP. Ďalší programátori potom nemusia študovať, čo tým vlastne umelec myslel.


_________________
C#, PHP, ...
 [ Príspevkov: 5 ] 


Viacjazyčnosť - ako nato?



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Zabezpečenie proti XSS - ako nato

1

96

05.09.2016 13:41

walther

V tomto fóre nie sú ďalšie neprečítané témy.

rada ako nato (ci sa to da)

1

420

22.03.2007 12:30

itsgoingd

V tomto fóre nie sú ďalšie neprečítané témy.

nové vs. žiadne nové príspevky alebo ako nato?

3

179

30.09.2011 14:52

wolker

V tomto fóre nie sú ďalšie neprečítané témy.

Ako zistim ci je trieda ako singleton?

3

304

20.07.2011 8:30

Ando

V tomto fóre nie sú ďalšie neprečítané témy.

Ako vyhladavate ?

8

411

26.10.2008 15:40

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

ako na phpmyadmin?

4

425

12.09.2007 17:15

pitrik1

V tomto fóre nie sú ďalšie neprečítané témy.

Ako docielit toto?

13

549

12.01.2008 14:59

andreas

V tomto fóre nie sú ďalšie neprečítané témy.

Ako na to?

1

297

06.07.2008 14:23

kmsa

V tomto fóre nie sú ďalšie neprečítané témy.

Ako na komentare?

1

252

04.01.2010 21:07

B.A.X.O

V tomto fóre nie sú ďalšie neprečítané témy.

Ako includovať funkcie

1

145

24.03.2012 18:47

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

ako oddelit slovo

11

298

21.03.2008 7:59

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spracujem checkboxy?

7

163

19.11.2011 18:38

Han5vk

V tomto fóre nie sú ďalšie neprečítané témy.

Ako to urobiť?

6

237

18.08.2016 8:00

PepperSK

V tomto fóre nie sú ďalšie neprečítané témy.

Ako ukladať kontent

6

209

28.08.2010 14:06

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Ako odprasačiť kódy?

21

376

10.11.2014 22:01

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

podobne ako TopList

11

447

16.10.2007 20:34

Bananslovak



Powered by phpBB 3.x.x © 2005 - 2017 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF