Najboljši način za večjezičnost
 
kraji 9. jun 2010 08:42:09 Pridružen od:
22. jul 2009
853 objav
321 12 4
#11

Jaz sem na začetku "čaral" s cookie-ji, potem pa se mi je včasih zgodilo, da je imel browser probleme z njimi (mislim da IE6) in mi ni pravilno delovalo. Takrat sem zadevo predelal na URL-je v stilu, da je na koncu \slo ali \eng in lahko v okviru katerekoli strani takoj preklopiš na jezik v okviru tiste strani, brez da bi te vrglo na kakšen index ali kaj podobnega. Še za tiste "optimizirane" variante, kjer se slike nalagajo v okviru javascripta brez reloada strani, sem naredil, da se link pri zastavi za jezik sproti dinamično popravlja za točno določeno fotografijo na kateri se nahajaš.



Da pa tujci ne pridejo na slovensko variatno, pa sem tudi dodal, da se ugotovi od kod prihaja uporabnik in če ni iz slovenije pokaže angleško verzijo. Na ta način vsaj večino teh pokrijem, tisti slovenci iz tujine pa še vedno lahko priklopijo na jezik ali pa si shranijo bookmark :)


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 9. jun 2010 11:00:20 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#12

b00mbar:

Ena varjanta je, da narediš eno simple funkcijo _($text), ki vrne tekst glede na pripadajoči jezik. Se pravi, če pokličeš _('Hello') poišče po nekem arrayu, če imaš jezikovno različico za Hello in v kolikor obstaja, jo echoja, sicer pa echoja 'Hello', kar je tudi default jezik potem. Tako prideš do zelo kratke sintakse, za narest je pa zelo izi...




Sorry, malo sem pasiven ker je prišlo nekaj drugega dela vmes :)

Problem s tem in s predlogom od Vinija je, da zadeva ni fleskibilna v smislu, da če spremenim string iz

_("Welcome to my page");

v

_
("Welcome to our page");

potem moram spremeniti tudi identifier (original string) v arrayu, da bi našel prevod. Čeprav če pomislim, je lepa zadeva, ko delaš na view-u, da imaš že tekste not.



To s cookiejem je res in tudi sam imam v načrtu to čimprej zamenjati (še ena od napak ki sem jih naredil že pri temeljih aplikacije).


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
SlimDeluxe 15. mar 2011 19:21:28 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#13

Bumpam staro temo, ampak...

Zanima me, ali se vam zdi to z gettext v praksi omembe vredna omejitev, torej da se mora apache ponovno zagnati, da počisti .mo cache?

Verjetno če delaš na opensource zadevi (pač kompatibilnost/portabilnost), se ni pametno zanašati na to?


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
SpinX 15. mar 2011 20:03:43 Pridružen od:
17. mar 2007
2618 objav
1720 190 20
#14

Translation podobno kot ima Magento:

Za delovanje potrebuješ Zend_Traslate. Adapter lahko spremeniš na gettext ali kaj drugega.

Struktura language folderja:




language/

si/

news.csv

index.csv

en/

news.csv

index.csv




Vsebina csv:




"String we want translated","Tekst, ki ga želimo prevest"



if ($config->cache->usecache) {

Zend
Translate::setCache($cache);

}

$translate = new ZendTranslate(

array(

'adapter' => 'csv',

'content' => FOLDER
LANG, // pot do language folderja

'scan' => ZendTranslate::LOCALEDIRECTORY,

'ignore' => array('.svn'),

'disableNotices'=> 'true',

'locale' => $lang_id,

'delimiter' => ','

)

);

}



function __($key,$locale=null)

{

global $translate;

return $translate->translate($key,$locale);

}




S to funkcijo lahko na izi prevajaš:

<?= __("String we want translated"); ?>



Še Smarty modifier za view:




<?php

/*

* Smarty plugin

* @package Smarty

* @subpackage plugins

* Filename: .../smarty/plugins/modifier.t.php

* -------------------------------------------------------------

* Translation helper

* by Damjan Žnidaršič

* damjan@xhtml.si

*/



function smartymodifiert($string, $position = null, $length = null)

{

global $translate;

$manage = '<var style="outline:1px dotted red;padding:1px;">'.$translate->translate($string).'</var>';

//return $manage;

return $translate->translate($string);

}




$manage je zato, ker sem testiral prevajanje v frontendu (tako kot ima Magento). Samo click event dodaš na <var> in narediš api za prevajanje. Dela k piškot.



Najbolj všeč mi je, da je minimalno programiranja. It just works :)


všeč(2) ni všeč(0) spam(0)
Developer? Bi delal v kul podjetju ? http://dlabs.si/jobs
 
SlimDeluxe 15. mar 2011 20:36:34 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#15

Aja, samo jaz ne delam na Zend-u (delam na CodeIgniterju), ampak to ni point, če bi zadeva delala brez depedencyev bi morda to še uporabil, ker mi je ideja všeč. Bom pogledal še malo, če ne pa, lahko vedno naredim implementacijo za CI :)

Hvala tudi za hint glede prevajanja.


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
SpinX 15. mar 2011 20:51:12 Pridružen od:
17. mar 2007
2618 objav
1720 190 20
#16

Zend je dejansko library. Framework je samo, ce uporabis njihov MVC. Ce ga se ne uporabljas ga zacni, ker bos dost casa prihranil. Nevem kako dela CI amapk v Zend FW je najmanjsi problem dodat nek drug library.


všeč(0) ni všeč(0) spam(0)
Developer? Bi delal v kul podjetju ? http://dlabs.si/jobs
 
DiTi 18. mar 2011 20:02:44 Pridružen od:
3. apr 2010
324 objav
218 7 1
#17

plis delete...spregledal celo stran odgovorov.


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 19. maj 2011 08:37:22 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#18

No, na koncu sem vseeno uporabil gettext rešitev in se mi zaenkrat ful dopade :)

Če bo kdo rabil plural form za slovenščino:


nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;
všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se