Встроенная поддержка мультиязычности для свойств

Рейтинг: 0.6288  
На голосовании
Предложил Шерлок Холмс 25.10.2013 01:21:10

Встроенная поддержка мультиязычности для свойств

Пример - интерент-магазин с тремя языковыми версями (русская, английская и французская).

У товара есть свойство "Цвет" с типом "Список" и значениями "Красный", "Синий" и "Зеленый".

Как это сделать? Правильно! Конечно-же так:




И потом это позорище давать редактировать клиенту? Это же сразу минус-мораль у него.

И головняк для программиста, который будет потом с этим работать, и необходимость писать свои кастомные свойства для нормального их вывода в админке. :|

Рейтинг: 0  
Шерлок Холмс 25.10.2013 01:49:21
Например, сделайте еще одну отдельную таблицу соответствий для названий свойств:

PROP_ID | LANG_ID| PROP_TITLE
5      ru      Цвет
5      en      Color
5      fr      Coleur


и таблицу соответствий для значений свойств с типом "Список":

PROP_VALUE_ID | LANG_ID | PROP_VALUE_TITLE
21      ru      Красный
21      en      Red
21      fr      Rouge
22      ru      Синий
22      en      Blue
22      fr      Bleu


Если перевод для свойства задан - то из базы выбирается соответствующее название, если не задан - то значение языка по умолчанию.

И все будут счастливы.
Рейтинг: 0  
Ерофеев Анатолий 25.10.2013 09:11:21
Попытался встать на ваше место и сразу передо мной встал вопрос - а что вы делаете с названиями, детальным описанием и другими полями элементов? Тоже вводите таким образом? Ведь если вы делаете 3 языковых версии каталога, то у вас переводиться должны не только свойства, но и название и т. д.
Рейтинг: 0  
Шерлок Холмс 25.10.2013 10:42:23
Анатолий, видимо вы никогда не делали языковые версии сайтов, если такое спрашиваете.

Для названия, детального текста и прочего - можно обойтись дополнительными свойствами,
но как быть для свойств с типом "Список"? Создавать для всех них новые свойства?

Цвет (ангилйский)
Цвет (русский)
Цвет (французский)

и три раза (и столько, сколько языков у сайта) заполнять это поле?

Цвет то у них один - красный (тольпо перевод разный), соответственно, и выбрать его нужно тоже один раз.

Потом, как сравнивать и фильтровать по таким свойствам, если они все разные? Никак.
Рейтинг: 0.6581  
Грищук Максим 30.10.2013 19:27:54
Если нету встроенной поддержки мультиязычности для текстовых свойств, то вряд ли будет для списка. :)

Варианты:
а) можно использовать привязку к инфоблоку цветов.
б) оставить в значениях (RED, GREEN, BLUE), а в нужном месте делать вызов GetMessage(PREFIX_COLOR)