[ Príspevkov: 18 ] 
AutorSpráva
Offline

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

Registrovaný: 28.02.09
Prihlásený: 16.12.15
Príspevky: 241
Témy: 56 | 56
NapísalOffline : 14.06.2011 10:19 | language v codeigniteri

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.06.2011 12:21 | language v codeigniteri

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ý: 18.01.14
Príspevky: 2626
Témy: 31 | 31
Bydlisko: Bratislava
NapísalOffline : 14.06.2011 12:45 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 14.06.2011 13:32 | language v codeigniteri

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.06.2011 13:38 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 14.06.2011 15:00 | language v codeigniteri

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.06.2011 15:12 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 14.06.2011 16:41 | language v codeigniteri

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.06.2011 16:47 | language v codeigniteri

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ý: 18.01.14
Príspevky: 2626
Témy: 31 | 31
Bydlisko: Bratislava
NapísalOffline : 14.06.2011 16:47 | language v codeigniteri

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 14.06.2011 16:49 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 14.06.2011 16:50 | language v codeigniteri

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ý: 18.01.14
Príspevky: 2626
Témy: 31 | 31
Bydlisko: Bratislava
NapísalOffline : 14.06.2011 16:59 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 17.06.2011 15:40 | language v codeigniteri

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ý: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 17.06.2011 22:15 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 11.10.2011 14:50 | language v codeigniteri

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: 3128
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 11.10.2011 19:22 | language v codeigniteri

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ý: 16.12.15
Príspevky: 241
Témy: 56 | 56
Napísal autor témyOffline : 12.10.2011 11:27 | language v codeigniteri

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


 [ Príspevkov: 18 ] 


language v codeigniteri



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

180

07.07.2010 13:35

coldak

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

Language pack

v Notebooky a netbooky

0

272

28.12.2007 2:31

leito

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

XP language

v Operačné systémy Microsoft

1

188

15.03.2010 21:01

girus

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

Xvid Dual Language

v Video programy

0

944

10.06.2006 15:31

shaggy

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

textarea language/checker

v HTML, XHTML, XML, CSS

5

235

26.10.2009 21:16

pilná lama glama

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

sp2 dual language

v Operačné systémy Microsoft

0

204

21.11.2007 12:41

tearan

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

Windows 7 language packs

v Operačné systémy Microsoft

10

3186

19.12.2011 21:04

Rolando

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

Vista language pack? Kde?

v Operačné systémy Microsoft

5

644

16.12.2007 19:52

FERDA23

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

the current language is not supported.....

v Ovládače

1

361

04.06.2011 10:13

shiro

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

153

14.12.2010 20:09

tarosh

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

1644

09.02.2009 0:40

vivo

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

93

25.01.2013 19:53

chrono



© 2005 - 2017 PCforum, edited by JanoF