Мысли по поводу i18n

Прислано: seaji

вт, 27/04/2010 - 13:00

Другие статьи по теме:

Хочу посоветоваться с народом.

Вот мне пришла в говову мысль, что система переводов материалов организована в принципе не верно. В частности это касается модуля i18n.

В данный момент, когда вы создаете перевод, вы фактически создаете новую ноду.
Я столкнулся с такой проблемой. У меня есть фильмы, за них можно голосовать. Но голоса за русскую версию и за английскую версию считаются отдельно т.к. это разные ноды, а нужно, что бы они считались вместе.

Было бы логичнее не создавать новую ноду, а создавать ноду с тем же ID но с другой меткой языка. И полям то же назначать метку языка.

Я думаю, что в этом случае можно было бы избежать многих проблем, которые возникают при использовании i18n.

Что вы про это думаете?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Azerot в вт, 27/04/2010 - 13:07.

Думаю, что то, что вы описали вполне логично.


Опубликовано seaji в вт, 27/04/2010 - 13:11.

А как по поводу реализации? Есть такое? Кто нибудь знает?


Опубликовано seaji в вт, 27/04/2010 - 13:20.

У меня такое предчувствие, что проще в CCK сделать разные поля ru|en а потом через препроцессинг прогонять ноду и там уже подставлять нужные поля в зависимости от языка.


Опубликовано wolfXXXL в вт, 27/04/2010 - 13:32.

"seaji" написал(а):

Я столкнулся с такой проблемой. У меня есть фильмы, за них можно голосовать. Но голоса за русскую версию и за английскую версию считаются отдельно т.к. это разные ноды, а нужно, что бы они считались вместе.

Не знаю Вашу "голосовалку", но может проще посмотреть в сторону - есть ли у неё какие-то хуки чтоб влезть в процесс, вычислить ноду с переводом и задублировать голос и для неё.
Как по мне это проще будет чем переделать механизм переводов.


Опубликовано glu2006 в вт, 27/04/2010 - 14:23.

Логично, но не совсем хорошо в плане производительности.Ведь по сути вовсе необязательно на одном языке показывать то что есть на другом, да и не всегда нужен именно перевод.
Однако иногда бывают задачи о голосовании с точностью до наоборот т.е. раздельное голосование и вот тут вы получите на выходе (при условии 1 нода + ССК по языкам) гораздо больше кодинга.
У меня к примеру была тоже задача организовать голосование за фирму пользователя на нескольких языках, я решал эту проблему следующим образом:
1. Создал глобальную ноду типа global_firm независимую от языка т.е. показывается везде
2. В ней есть ССК поля глобальных настроек которые рядовому пользователю не нужны т.е. не отображаются (поскольку у меня еще и мультисайтинг).
3. Вывожу в теле этой ноды информацию о фирме в зависимости от global $languages;
на выходе по факту юзер голосует за 1 глобальную ноду фирма, а отображаемый контент это независимое.


Опубликовано seaji в вт, 27/04/2010 - 16:33.

"wolfXXXL" написал(а):

Не знаю Вашу "голосовалку"

голосовалка обычная Fivestar

"glu2006" написал(а):

на выходе по факту юзер голосует за 1 глобальную ноду

Тоже интересная мысль. Сделать глобальную ноду, а из нее сделать референс на английскую и руссую версии. Исчезает необходимость создания русских и английских полей. Но повышается количество типов материалов.


Опубликовано seaji в вт, 27/04/2010 - 16:34.

Кстати проблема не только в голосовалке.
Еще нужно следить за количеством просмотров, которое то же будет отличаться для русской и английской версии.


Опубликовано glu2006 в вт, 27/04/2010 - 18:12.

seaji написал(а):

Исчезает необходимость создания русских и английских полей. Но повышается количество типов материалов.

Увеличение на 1 таблицу в БД :) в моем случае.
Вот с просмотрами уже сложнее в плане разделения на русские и английские у меня было в задаче считать общее количество, как сами понимаете задача решилась сама собой :).
Если придет какая мысль кроме глобального самописа, то озвучу.


Опубликовано neochief в ср, 28/04/2010 - 01:31.

По-моему это бага голосовалки, а не i18n, т.к. механизм переводов стандартен, и пора бы уже учитывать tid в подсчетах. Это проблема почти всех голосовалок друпала.