Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 18 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok NapísalOffline : 14.06.2011 10:19

cawte chcem sa spytat ludi ktory sa mozno vyznaju lepsie v php ako ja a maju nejaku skusenost s codeigniter...serie ma ze robim na jednom velkom webe a pouzivanie jazyka cez uz vytvorenu funkciu je podla mna totalne neprehladne....ak mam prelozit stovky slov a mam 5 priecinkov v language s 5 jazykmi....tak sa v tom totalne stracam co uz prelozene mam a co nie...preto som si spravil nieco taketo:

do application/config/konstants.php som doplnil toto:
Kód:
$lang = array();
include_once('lang.php');
$GLOBALS['lang'] = $lang;


dalej v application/config/lang.php mam subor s prekladmi (nemiesto 5 mam vsetko v jednom)
Kód:
$lang["preklad_1"] = array("sk"=>"preklad 1 sk", "en"=>"preklad 1 en", "pl"=>"preklad 1 pl");

$lang["preklad_2"] = array("sk"=>"preklad 2 sk", "en"=>"preklad 2 en", "pl"=>"preklad 2 pl");


dalej mam v system/plugins/functions.php funkciu
Kód:
function language($index){
    $CI =& get_instance();
    $return = NULL;

    if(array_key_exists($index, $GLOBALS['lang'])){
        $return = $GLOBALS['lang'][$index][$CI->lang->lang()];
    }
    return $return;
}


$CI->lang->lang() = vrati aktualny jazyk ("sk", "en", "pl")

takze namiesto lang() ktora uz bola napisana pouzivam fciu language() ...

a otazka: Myslite ze to system spomaly? alebo to je nejak zle napisane zla funcnost alebo nejake vyhrady k tomu?


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 14.06.2011 12:21

no je zbytocne nacitavat vsetky jazyky, ak itak pouzijes iba jeden. pokial to nie je velky objem dat, tak to nejaku velku vychylku nespravi.

ja to mam spravene podobne, s tym, ze jazyky mam rozdelene do priecinkov napriklad

Kód:
languages/sk/basic.php
languages/sk/blog.php

languages/en/basic.php
languages/en/blog.php


pricom kazdy obsahuje pole napr (pre blog.php)

Kód:
#sk/blog.php
array(
'pocet_clankov' => 'tato kategoria obsahuje %d clankov'
)

#en/blog.php
array(
'pocet_clankov' => 'there are %d articles in this category'
)


(pre basic.php)
Kód:
array(
'uvitanie' => 'Vitajte na mojej stranke'
)


a na zaciatku si loadujem subory, ktore budem pouzivat
automaticky loadujem basic.php, kde su retazce pouzivane na celej stranke bez ohladu na controller

a dalsie v __construct() daneho controlleru (napriklad controller pre blog)

Kód:
lang::load('blog');


toto mi nacita subor blog.php pre dany jazyk, takze funcia spravi nieco taketo

Kód:
$lang = require 'languages/sk/blog.php'; //alebo z priecinku EN, uz zalezi od zvoleneho jazyku, tak ako to mas spravene ty)


vo viewoch potom volam napr

Kód:
lang::get('pocet_clankov', 5); //vrati "tato kategoria obsahuje 5 clankov"


popripadne textovou verziou (toto pouzivam ak nevkladam do jazykoveho retazca dalsie parametre, ako v hornom prikalde som tam vlozil cislo 5)
Kód:
{lang:uvitanie}


vyhoda je, ze nemusim nacitavat zbytocne texty, ktore pouzivat nebudem a je to prehladnejsie, teda si mozes subory rozdelit podla vyuzitia (ako som uviedol priklad basic.php a blog.php). naco nacitavat jazyky pre blog, ked bol nie je zobrazeny pri "renderovani" stranky

a pritom metodu lang::load() mozes pouzit kolko chces, takze texty pre blog si mozes rozdelit aj do viacerych suborov







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 20.10.08
Prihlásený: 21.06.22
Príspevky: 2602
Témy: 31
Bydlisko: Bratislava
Príspevok NapísalOffline : 14.06.2011 12:45

Tiez to mam rozdelene do zvlast suborov a 1 hlavny volam vzdy a ten dalsi podla controlleru..

Mam potom vytvoreny MY_Controller (extends CI_Controller), v ktorom sa deju vsetky dolezite veci na stranke ako pridelenie hlavnych CSS a JS do viewu (cez moju vlastnu kniznicu external), nacitanie niektorych kniznic a modelov v zavislosti od URL (teda ci sa nachadzame v administracii, alebo vo frontende), nastavenie public vlastnosti, ktore sa potom mozu pouzivat kdekolvek v systeme a kopu dalsich veci a samozrejme aj jazyky:

Kód:
if( !defined('NO_LANG') )
{
 $this->lang->load('default', $language);
 $this->lang->load('admin_' . $this->router->class, $language); // language fajly pre administracne rozhranie
}


A potom v konkretnom controllery nededim objekty a vlastnosti CI_Controller, ale MY_Controller.

Btw DeeJay3 to tvoje riesenie je urcite pomalsie, kedze mas definicie vsetkych prekladov v jednom poli, dalej si vytvaras globalne pole lang a metodu lang() "zaobalujes" este aj do metody language(). Nic v zlom, ale je to prasacina :)







_________________
Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 14.06.2011 13:32

tak ako to spravit omg aby tie preklady boli pri sebe? :( nie v jednolivych suboroch...neskutocny bordel v tom je lebo je toho vela...a nieco sa prelozi hned nieco neskor a potom uz absolutne v tom prehlad nieje...a nemam preco to rozdelovat do priecinkov..admin mam od stranky osobitne...takze vsetko je dolezite...ako to inak spravit?..

Kód:
$lang["slovo"] = array("sk"=>"Slovo", "en"=>"Word", "ua"=>"слово");


toto je best of ze vsetko spolu :(


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 14.06.2011 13:38

best of? to je prehľadné, keď máš všetko pokope halabala a nevyzná sa v tom ani nik ?

ved si sprav

sk/subor.php
Kód:
array(
 'slovo' => 'Slovo',
 'ine_slovo' => 'iné slovo',
 'cervene_auto' => 'červené auto'
)


potom súbor skopíruješ na subor.php, preložíš čo potrebuješ a ostatné ti zostane slovensky, môžeš sa k tomu vrátiť neskôr

en/subor.php
Kód:
array(
 'slovo' => 'word',
 'ine_slovo' => 'iné slovo', #
 'cervene_auto' => 'red car'
)


popripadne si za nepreložené frázy daj mriežku a budeš aj bez študovania vedieť, čo nie je preložené (editor ti mriežku farebne odlíši od zvyšku)







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 14.06.2011 15:00

lenze to neprekladam ja....chces povedat ze neje prehladnejsie ked to mas pri sebe ?...a vidis presne v poli ktore slovo je ako prelozene...podla mna to prehladnejsie je..ja to mam podobne spravene ako vy..nemam to rozdelene..ale chcel som to mat pokope lebo hladat jedno slovo v jednom subore potom v druhom...potom v tretom..stvrtom...piatom a opravit ked je nieco zle...tak ma ide drbnut...a tak si najdes riadok a hned tam mas vsetko


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 14.06.2011 15:12

nemas editor, kde mozes mat viac suborov otvorenych v taboch?

ved preto subor kopiruj ako som ti pisal, hladas jedno slovo, vidis ze v SK subore je na riadku 27, tak poreskocis na EN subor, hned vies ze mas pozret na riadok 27

urcite je to hentak prehladnejsie (ale zase sto ludi - sto chuti) a navyse nebudes zbytocne loadovat nepotrebne data. ak robis maly staticky webik, budes to cachovat a pod, tak ta to nemusi trapit. ale pri vacsom projekte to bude naskodu







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 14.06.2011 16:41

tak okey ;)...maly webik to neni ..jasne ze mam netbeans pouzivam...tak to necham takto..aj ked nerad...ale predsa len neskor tam ma byt velka navstevnost a nemozem si dovolit stracat cas na loadovani stranky na tomto...a dikes

// pridané po 1 hodine 21 minútach od posledného príspevku

este by ma zaujimalo...ako si znacite niektore veci napriklad potrebujem mat v prekladoch

$lang['od']='Od';
$lang['od']='od';

aj jedno aj druhe...ako si to oznacujete vy?..vsimni velke pismeno

'od_1'
'od_2' ???


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 14.06.2011 16:47

kapitalizaciu riesim "inline", funkciami.

ty volas napr
Kód:
language('od'); #vrati "od"

tak zavolas
Kód:
ucwords(language('od')); #vrati "Od"


podobny priklad si mohol vidiet, ked som napisal priklad suboru "blog", kde vkladam hodnotu do frazy. to preto, aby som nemusel rozdelovat jednu frazu na viac.







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 20.10.08
Prihlásený: 21.06.22
Príspevky: 2602
Témy: 31
Bydlisko: Bratislava
Príspevok NapísalOffline : 14.06.2011 16:47

dam malym.. a potom ak potrebujem velkym, ta niekde v kode

Kód:
lcfirst($this->lang->line('od'));


alebo naopak dam prve velke a potom ked treba tak zmenim cez ucfirst() na male...

//emer skor







_________________
Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 14.06.2011 16:49

tommyhot, pomylil si si lcfirst s ucfirst, je to presne naopak ako pises...

btw, lepsie pouzit ucfirst ako to co som pisal ja "ucwords", ak sa vo fraze nachadza viac slov







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 14.06.2011 16:50

to aby som nerozdeloval riesim rovnako...lenze funguju tie funkcie na pismena s diakritikou?...alebo na azbuku?...idem to skusit ale zda sa mi ze som s tym uz problem mal tak nvm teraz


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 20.10.08
Prihlásený: 21.06.22
Príspevky: 2602
Témy: 31
Bydlisko: Bratislava
Príspevok NapísalOffline : 14.06.2011 16:59

emer píše:
tommyhot, pomylil si si lcfirst s ucfirst, je to presne naopak ako pises...

btw, lepsie pouzit ucfirst ako to co som pisal ja "ucwords", ak sa vo fraze nachadza viac slov


ano ano mas pravdu, napisal som to opacne...







_________________
Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 17.06.2011 15:40

no teraz som prisiel na to ked som chcel pouzit lcfirst ze taku fciu nepozna...ucfirst je pre 4,5 php....lcfirst je pre 5.3 a viac...a na servery je 5.2.17.. :?


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 17.06.2011 22:15

je problem si taku funkciu vytvorit?

// pridané po 6 hodinách 12 minútach od posledného príspevku

vratil som sa dnes/vcera k CI, trosku pobadat. hend som riesil aj jazyky. vyriesil som si to tak, ze pouzivam klasicku strukturu a vstavanu Language kniznicu, s touto funkciou (namiesto original helperu)

Kód:
function lang($key){

      $args = is_array($key) ? $key : func_get_args();

      $CI = &get_instance();
     
      $S = $CI->lang->line($args[0]);

      if(empty($S)) $S = '{lang_'.$args[0].'}'; //pri neexistujucej polozke vypise {lang_key}, ak chces prazdny string, zakomentuj riadok (alebo zmaz)

      if(count($args) == 0) return NULL;

      if(count($args) == 1) return $S;

      unset($args[0]);
      return vsprintf($S, $args);

    }


pouzitie:

http://codeigniter.com/user_guide/libra ... guage.html

+
Kód:
views/welcome.php:

<h2><?=lang('welcome', 'Mirec', 5)?></h2>



languages/slovak/general.php:

$lang['welcome'] = '%s, vitaj na stranke po %d dnoch';


vrati

Kód:
<h2>Mirec, vitaj na stranke po 5 dnoch</h2>







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 11.10.2011 14:50

caf este potrebujem poradit..ako ukladat do langov udaje napriklad:

Bratislavský kraj
Trnavský kraj
...

pouzivam tu tvoju funciu ktoru si postol vyssie..rozmyslal som ci tam nedam pole napriklad:

Kód:
$lang['kraje'][1] = "Bratislavský kraj";
$lang['kraje'][2] = "Trnavský kraj";
...


myslis ze to tak moze byt ?..lebo ja tie kraje potrebujem aj vypisat do selectu vo formulari..

Kód:
foreach(lang('kraje') as $key=>$value){
   echo '<option ...
}


lenze potrebujem aj vypisat prvok z toho pola napriklad:

Kód:
lang('kraje')[1]

lenze takto sa to vypsiat neda tak ako upravit tu fciu aby skontroloval ci ten prvy parameter je pole a podla druheho parametru vypisal dany index pola:
Kód:
lang('kraje', 1) = vypíse Bratislavský kraj


// pridané po 12 minútach od posledného príspevku

hm nejak takto:

Kód:
    function lang($key){

        $args = is_array($key) ? $key : func_get_args();
        $CI = &get_instance();

        $string = $CI->lang->line($args[0]);

        if(empty($string)) $string = '{lang_'.$args[0].'}';
        if(count($args) == 0) return NULL;
        if(count($args) == 1) return $string;

        unset($args[0]);
       
        if(is_array($string)){
            if(array_key_exists($args[1], $string)) return $string[$args[1]];
            else return NULL;
        }else{
            return vsprintf($string, $args);
        }

    }


myslis ze je zle taketo riesenie ?..(nemyslim upravu funkcie ale dalsie pole v lang subore)


Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 11.10.2011 19:22

Potrebujes tie kraje mat rozne pre rozne jazyky, alebo nie?
osobny by som ale taketo udaje drzal v DB a nie napevno v textaku..







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
language v codeigniteri

Registrovaný: 28.02.09
Prihlásený: 19.02.18
Príspevky: 241
Témy: 56
Príspevok Napísal autor témyOffline : 12.10.2011 11:27

no nebudem to vyuzivat iba pre kraje..napriklad ako veci ktore su pevne definovane ktore sa nebudu menit .. napriklad typ niecoho

$lang['typ'][1] = "jednoduchy";
$lang['typ'][2] = "zlozity";

a to sa uz prekladat bude...napriklad potrebujem do toho dat mesta slovenska

$lang['mesta'][1] = "Bratislava";
$lang['mesta'][2] = "Kosice";

niektore veci sa budu urcite prekladat


Odpovedať na tému [ Príspevkov: 18 ] 


Podobné témy

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

v Assembler, C, C++, Pascal, Java

2

331

07.07.2010 13:35

coldak Zobrazenie posledných príspevkov

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

v Notebooky a netbooky

0

463

28.12.2007 2:31

leito Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

1

385

15.03.2010 21:01

girus Zobrazenie posledných príspevkov

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

v HTML, XHTML, XML, CSS

5

433

26.10.2009 21:16

pilná lama glama Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

0

358

21.11.2007 12:41

tearan Zobrazenie posledných príspevkov

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

v Video programy

0

1068

10.06.2006 15:31

shaggy Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

10

3854

19.12.2011 21:04

Rolando Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

5

827

16.12.2007 19:52

FERDA23 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. the current language is not supported.....

v Ovládače

1

521

04.06.2011 10:13

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ESP - SVK language pack do XP

v Operačné systémy Microsoft

0

378

14.12.2010 20:09

tarosh Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. slovak language na win XP professional

v Operačné systémy Microsoft

10

2661

09.02.2009 0:40

vivo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hyphenator.js: Language sk is not yet supported.

v JavaScript, VBScript, Ajax

2

355

25.01.2013 19:53

chrono Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra