Ruby on Rails преводи и проблеми с GetText

2 views
Skip to first unread message

Yavor Ivanov

unread,
Jul 11, 2008, 8:14:00 AM7/11/08
to Ruby on Rails: България
Здравейте :)

ние ruby-истите се славим както май Сава викаше, че не работим ;)

Да ама днес до като си работя и се натъкнах на един малък проблем.
Имаме едно проектче и използваме GetText за translation... сичко ок до
тук.

Има една малка гадория, която ме дразни.

За да е сичко ОК понякога като искаш да преведеш нещо го слагаш на
един ред и се получава някаква голяма бъркотия в кода.

Дали може някак си да се избегне това?

До колкото знам Петьо е спец по GetText така че може би очаквам той да
се включи :)

За тези от вас, които нечнаят за тази "гадориика"... общо взето
слагате
_() около текста и после същи текст му се пише превода в бинарни
файлове.
След това имате преводи на BG, EN, DE и като пускате машините само
казвате кой транслейт искате.


Е това :)

Помощ!

Sava Chankov

unread,
Jul 11, 2008, 8:16:22 AM7/11/08
to ruby-on-rai...@googlegroups.com
2008/7/11 Yavor Ivanov <yavor....@gmail.com>:
Има една малка гадория, която ме дразни.

За да е сичко ОК понякога като искаш да преведеш нещо го слагаш на
един ред и се получава някаква голяма бъркотия в кода.

Дали може някак си да се избегне това?
 
Еми естествено. Сложи го на колкото реда искаш. Дай пример, че така само ясновидец може да каже какъв ти е проблема =)

Сава

Yavor Ivanov

unread,
Jul 11, 2008, 8:38:31 AM7/11/08
to Ruby on Rails: България
<%= _("There are many users just like you. Providing us with
information about yourself will help us locate people of similar
interest
to yours. If we find someone that has similar interests we are
probably
going to suggest you some of the stuff he or she participates
in.") %>

Проблема ми е това :)

Писано е на няколко реда и примерно го има на 5 места из сайта.
Обаче на тези 5 места може да излежда ето така по шифтнато на вътре.

<%= _("There are many Fanopicians just like you. Providing us with
information about yourself will help us locate people of
similar interest
to yours. If we find someone that has similar interests we
are probably
going to suggest you some of the stuff he or she
participates in.") %>

Това води до два еднакви транслейшъна.

Как може да се избегне ?



On Jul 11, 3:16 pm, "Sava Chankov" <sava.chan...@gmail.com> wrote:
> 2008/7/11 Yavor Ivanov <yavor.xen...@gmail.com>:

Yavor Ivanov

unread,
Jul 11, 2008, 8:52:21 AM7/11/08
to Ruby on Rails: България
Също така да попитам как подяволите да се отърва от досадни warning?

warning: parenthesize argument(s) for future version

On Jul 11, 3:16 pm, "Sava Chankov" <sava.chan...@gmail.com> wrote:
> 2008/7/11 Yavor Ivanov <yavor.xen...@gmail.com>:
>

Sava Chankov

unread,
Jul 11, 2008, 10:14:58 AM7/11/08
to ruby-on-rai...@googlegroups.com
Пробвай да искейпваш новия ред с обратно наклонена черта.

<%= _("There are many users just like you. Providing us with \
     information about yourself will help us locate people of similar \
interest \
     to yours. If we find someone that has similar interests we are \
probably \
     going to suggest you some of the stuff he or she participates \
in.") %>

Така низовете ще са еднакви. А еднаквите низове плачат да бъдат сложени в паршъл.

Сава

2008/7/11 Yavor Ivanov <yavor....@gmail.com>:

Sava Chankov

unread,
Jul 11, 2008, 10:16:27 AM7/11/08
to ruby-on-rai...@googlegroups.com
2008/7/11 Yavor Ivanov <yavor....@gmail.com>:
Също така да попитам как подяволите да се отърва от досадни warning?

warning: parenthesize argument(s) for future version

Най-лесно е като си заграждаш аргументите в скоби.

Сава

Stefan Kanev

unread,
Jul 14, 2008, 10:39:23 AM7/14/08
to ruby-on-rai...@googlegroups.com
Second-вам идеяата за паршъли. Ако имаш дълъг текст, който трябва да се поддържа на две места, то най-мъдро е да го изнесеш някъде. Така ако го промениш на едното място няма да забравиш за другото и всички останали облаги на DRY принципът.
 
Иначе, чудно ми е как не сте се сетили да си дефинирате следната функция:
 
def _insensitive(text)
  _(text.gsub(/\s+/, ' '))
end
 
Така избягваш проблема без парцали.
 

Петьо Иванов

unread,
Jul 15, 2008, 2:15:45 PM7/15/08
to Ruby on Rails: България
Аз друго правя. gettext го ползвам за малки, много малки текстове -
лейбъли, туй онуй. За текстове като посочения имам една таблица,
сполучливо кръстена fragments:

>> Fragment
SQL (0.000603) SHOW TABLES
Fragment Columns (0.001127) SHOW FIELDS FROM `fragments`
=> Fragment(id: integer, en_content: text, keyword: string,
created_at: datetime, updated_at: datetime, title: string, keywords:
string, bg_content: text, ru_content: text)
>>

Тъй като обикновено такива обяснения ги бара редактора на сайта, и за
целта е хубаво да го прави през админа наместо през геттекста.

И в хелпъра:

def fragment(keyword)
t = Fragment.by_k(keyword)
t.nil? ? "-- #{keyword} is not defined, please create it from the
administrative panel using #{keyword} as identifier --" : bg? ?
t.bg_content : ru? ? t.ru_content : t.en_content
end

Може и по-хитро да се изиграе, сигурно. И не е напълно чисто откъм
това сайта да поддържа неограничено количество езици без да му дреме
за това. Което така или иначе почти винаги е химера.

Разбира се, мислел съм и в насоката на това моделите да са language
aware (за което знам, има плъгини). Но това е друга тема...


On Jul 14, 5:39 pm, "Stefan Kanev" <stefan.ka...@gmail.com> wrote:
> Second-вам идеяата за паршъли. Ако имаш дълъг текст, който трябва да се
> поддържа на две места, то най-мъдро е да го изнесеш някъде. Така ако го
> промениш на едното място няма да забравиш за другото и всички останали
> облаги на DRY принципът.
>
> Иначе, чудно ми е как не сте се сетили да си дефинирате следната функция:
>
> def _insensitive(text)
>   _(text.gsub(/\s+/, ' '))
> end
>
> Така избягваш проблема без парцали.
>
> On 7/11/08, Sava Chankov <sava.chan...@gmail.com> wrote:
>
>
>
> > 2008/7/11 Yavor Ivanov <yavor.xen...@gmail.com>:
>

Stanislav Bozhkov

unread,
Jul 16, 2008, 2:53:25 AM7/16/08
to ruby-on-rai...@googlegroups.com
Петьо,

Какво ще кажеш относно пройзводителността? По този начин не е ли малко по-кофти да правиш заявка за всеки текст. Може би, ако се вкара и кешване ще е ОК...

2008/7/15 Петьо Иванов <unde...@gmail.com>:



--
Internet Entrepreneur
gsm: +359 897 941 631
site: http://svejo.net

Петьо Иванов

unread,
Jul 16, 2008, 4:15:45 AM7/16/08
to Ruby on Rails: България
Напълно съгласен, но аз нямам проблем с перформънс точно в това. Вие
може да имате сигруно. Може да се кешира в class променлива (някой
против тая практика? Защо най-вече?). Или любимия ни memcache.

Или иначе казано - оправяй проЙзвойдителността като почнеш да имаш
проблеми с нея. Или 7 пъти почеши, веднъж измий беше?

On Jul 16, 9:53 am, "Stanislav Bozhkov" <stanislav.bozh...@gmail.com>
wrote:
> Петьо,
>
> Какво ще кажеш относно пройзводителността? По този начин не е ли малко
> по-кофти да правиш заявка за всеки текст. Може би, ако се вкара и кешване ще
> е ОК...
>
> 2008/7/15 Петьо Иванов <under...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages