[ Príspevkov: 5 ] 
AutorSpráva
Offline

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

Registrovaný: 17.02.14
Prihlásený: 12.03.17
Príspevky: 211
Témy: 82 | 82
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ý: 27.03.17
Príspevky: 2019
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ý: 26.03.17
Príspevky: 1374
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ý: 26.03.17
Príspevky: 14546
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

477

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

609

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

356

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

4168

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

111

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

109

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

676

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

241

09.12.2010 21:12

DAVE1979

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

webcam na stranke ako nato ?

v Ostatné

3

486

15.06.2008 11:57

Numline1

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

!Neviem ako nato...predny ventilator!

v Modifikácie, návody a projekty

15

2563

21.06.2010 11:01

mimkork

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

Debian uncache? Operačnej Pamäte... Ako nato?

v Operačné systémy Unix a Linux

4

497

23.08.2009 17:51

ssssss

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

Reinštálacia Windows XP - Ako nato + Internet

v Operačné systémy Microsoft

5

2301

14.03.2007 20:50

zmija31

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

Obrazok vždy na spodku okna (ako nato)

v HTML, XHTML, XML, CSS

3

297

02.02.2011 16:20

allan

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

rada ako nato (ci sa to da)

v PHP, ASP

1

424

22.03.2007 12:30

itsgoingd

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

ventilator na 110% ci 130% ??? ako nato?

v Elektronika

7

695

30.03.2008 13:29

Harlequin

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

Domáca WiFi sieť - ako nato? Rozdelenie podsietí, IP Help?

v Siete

7

517

27.01.2013 0:16

Vikinger



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