[ Príspevkov: 5 ] 
AutorSpráva
Offline

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

Registrovaný: 17.02.14
Prihlásený: 12.05.17
Príspevky: 212
Témy: 83 | 83
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ý!";


Online

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

Registrovaný: 21.09.13
Prihlásený: 27.05.17
Príspevky: 2026
Témy: 69 | 69
Bydlisko: Považská By...
NapísalOnline : 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.
Online

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

Registrovaný: 17.07.11
Prihlásený: 27.05.17
Príspevky: 1391
Témy: 2 | 2
Bydlisko: Praha / Rev...
NapísalOnline : 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ý: 28.05.17
Príspevky: 14614
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.

OC pamati, ako nato? resp ako :)

v Biosy a ladenie výkonu

10

485

02.10.2007 19:14

eXistenZ

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

Ako nato?

v Redakčné systémy

3

612

23.03.2007 18:55

altt

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

Ako nato (skrinka) ?

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PC skrinky a zdroje

32

370

15.07.2015 21:14

Jalo

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

[Ako Nato] Internet - Router

v Články

13

4186

22.09.2010 8:40

dodisenko

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

Nova siet, ako nato?

v Siete

4

118

15.01.2015 11:40

mirom

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

Zabezpečenie proti XSS - ako nato

v PHP, ASP

1

123

05.09.2016 13:41

walther

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

Pust to talk, ako nato?

v Mobilné zariadenia

1

681

17.03.2008 15:23

brm

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

vymazať už vymazané?? :-)) ako nato

v Ostatné programy

3

247

09.12.2010 21:12

DAVE1979



© 2005 - 2017 PCforum, edited by JanoF