Pereiti prie turinio

Django internationalization


Rekomenduojami pranešimai

Sveiki,

Prireikė padaryti puslapį su keliomis kalbomis. Perskaičius dokumentaciją ir peržiūrėjus krūvą pavyzdžių pavyko tai realizuoti. Bet niuansas, kad visur buvo naudojamas tik vienas pavyzdys:

<form action="/i18n/setlang/" method="post">{% csrf_token %}
   <input name="next" type="hidden" value="/" />
   <select name="language">
       {% for lang in LANGUAGES %}
           <option value="{{ lang.0 }}">{{ lang.1 }}</option>
       {% endfor %}
   </select>
   <input type="submit" value="Go" />
</form>   

kuris, švelniai tariant, nėra gražus sprendimas. Norėtųsi padaryti, kad kalbas būtų galima pasirinkti spaudžiant ant atitinkamų vėlevėlių.

Iš anksto dėkingas už pagalbą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

Prireikė padaryti puslapį su keliomis kalbomis. Perskaičius dokumentaciją ir peržiūrėjus krūvą pavyzdžių pavyko tai realizuoti. Bet niuansas, kad visur buvo naudojamas tik vienas pavyzdys:

<form action="/i18n/setlang/" method="post">{% csrf_token %}
   <input name="next" type="hidden" value="/" />
   <select name="language">
       {% for lang in LANGUAGES %}
           <option value="{{ lang.0 }}">{{ lang.1 }}</option>
       {% endfor %}
   </select>
   <input type="submit" value="Go" />
</form>   

kuris, švelniai tariant, nėra gražus sprendimas. Norėtųsi padaryti, kad kalbas būtų galima pasirinkti spaudžiant ant atitinkamų vėlevėlių.

Iš anksto dėkingas už pagalbą.

 

www.clustspace.com - pas mane su python/django pažiūrėk ar taip padaryta?

kalbą pasirenkama per vėliavėlę - vertimai failuose.

Redagavo HOST321
Nuoroda į pranešimą
Dalintis kituose puslapiuose

O kas trukdo tiesiog nukreipimą padaryti pvz į: /lt/ /en/ /ru/ /de/ ir t.t.?:)

Aš čia tikriausiai jau kažkur užsiciklinau, nes jau ketvirta para negaliu rasti sprendimo. Aš įsivaizduoju, kad sprendimas turetų būti kažkoks toks:

base.html

<div id="languages">
   <a href="{% url "airlex.views.airlex" kalba="lt" %}" title="LT">
       <img src="{{ STATIC_URL }}image/flag/lt1.png" />
   </a>
   <a href="{% url "airlex.views.airlex" kalba="gb" %}" title="GB">
       <img src="{{ STATIC_URL }}image/flag/gb1.png" />
   </a>
   <a href="{% url "airlex.views.airlex" kalba="ru" %}" title="RU">                            
       <img src="{{ STATIC_URL }}image/flag/ru1.png">
   </a>                        
</div>

views.py kažkas tokio:

from django.utils import translation

def airlex(request, kalba='lt'):
   translated(kalba)
   return render_to_response('rodomTeksta.html', context_instance=RequestContext(request))


def translated(kalba):
   cur_language = translation.get_language()
   try:
       translation.activate(kalba)        
   finally:
       translation.activate(cur_language)
   return text

urls.py

urlpatterns = patterns('airlex.views',
   url(r'^/(?P<kalba>.*)/$', 'airlex'),
   url(r'^/$', 'airlex'),

Bet nieko nesigauna. Gaunu tik klaidų krūvas.

Redagavo meshkis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai tiesiog vietoj {{ lang.1 }} dėk tas savo vėliavėles – kame problema? :) Pvz.

{% for lang in LANGUAGES %}
           <option value="{{ lang.0 }}"><img src="{% static lang.0 %}.png"></option>
       {% endfor %}

Aišku, jei failas atitinkamai pavadintas :)

Mano tikslas ne tik vėliavėles pridėti. Šitas pasirinkimo būdas labai jau archajiškas. Puslapio lankytojas norėdamas pasikeisti kalbą turi: paspausti iškrentantį meniu, paspausti ant kalbos, ir tada paspausti submit. Trys paspaudimai, kai internete pilna puslapių, kur padaryta vienu paspaudimu. Nejaugi Django nėra būdo tai padaryti vienu paspaudimu, kad puslapio lankytojas galėtų vienu paspaudimu pasikeisti kalbą, ant gražiai išdeliotų vėliavėlių?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Mano tikslas ne tik vėliavėles pridėti. Šitas pasirinkimo būdas labai jau archajiškas. Puslapio lankytojas norėdamas pasikeisti kalbą turi: paspausti iškrentantį meniu, paspausti ant kalbos, ir tada paspausti submit. Trys paspaudimai, kai internete pilna puslapių, kur padaryta vienu paspaudimu. Nejaugi Django nėra būdo tai padaryti vienu paspaudimu, kad puslapio lankytojas galėtų vienu paspaudimu pasikeisti kalbą, ant gražiai išdeliotų vėliavėlių?

 

O kam spausti ant vėliavėlės? Su javascript ar kažkuom padarai kaip dropbox'o išlindimą, tada paspaus TIK ant vėliavėlės ir viskas. Iš tavo 3 paspaudimų lieka 1 :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Index'o urlconf padaryk tiesiog r'^$'.

 

Beje, jei darysi daugiau, nei vieną puslapį taip (su prefixu), tau turėtų padėti i18n_patterns. https://docs.djangoproject.com/en/1.5/topics/i18n/translation/#django.conf.urls.i18n.i18n_patterns

Dabar kita klaida išlindo. Pagrindinis puslapis užsikrauna, viskas ok. Bet kai paspaudi ant vėliavėlės, tai jis bando eiti tokiu adresu 'http://gb/' ir nieko neranda.

 

Dėl kalbos prefikso, tai aš kaip tik nenoriu jo naudoti, nes keičiant kalbą, turi keistis url pilnai, o ne prefiksas prisidėti.

pvz: jei kalba 'lt' tai linkas 'vienas-du-trys', jei 'ru' 'odin-dva-tri' ir 'en' 'one-two-three'. Taip paskui lengviau užsiimti SEO.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pavyko klaidas pačiam išsigaudyti. Ir lygtais viskas veikia. Tik kažkaip nesu užtikrintas, kad tai geras sprendimas. Didžiausia blogybė, kad gaunasi dublikatas. Du linkai veda į tą patį:

http://www.airlex.lt/

http://www.airlex.lt/airlex/lt/

Įvertinkit, gal kas kokių minčių duosit.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...