Как правильно сделать мультиязычность для rest api?
Просьба дать пинка в нужную сторону или показать пример похожего использования!
Есть база данных в которую записываются товары, у товаров есть категория а у категории родительская категория

В бд все товары добавлены на одном языке. Как сделать так что бы была возможность получить их с помощью restapi на нескольких языках?
Ответы (2 шт):
Перевод обычно хранится в отдельной таблице.
create table `language` (
`id` int(12) not null auto_increment,
`name` varchar(32) not null,
`code` varchar(32) not null,
primary key (`id`)
);
create table `goods` (
`id` int(12) not null auto_increment,
`category_id` int(12),
primary key (`id`)
);
create table `goods_title` (
`id` int(12) not null auto_increment,
`good_id` int(12),
`language_id` int(12),
`title` varchar(1000),
primary key (`id`),
foreign key (good_id) references good (Id),
foreign key (language_id) references language (Id)
);
Ну и будет примерно так:
language table
"1","ru","russian"
"2","en","english"
"3","it","italian"
goods table
"1","1"
"2","2"
goods_title table
"1","1","1","рубашка"
"2","1","2","shirt"
"3","1","3","camicia"
"4","2","1","джинсы"
"5","2","2","jeans"
В RestAPI следовательно надо добавить поддержку запроса по языку в зависимости от нужд. Можно возвращать как один язык по умолчанию, так и все языки в виде json набора {..., title : { ru : "рубашка", en : "shirt", it : "camicia" }}.
/actions/{id}
/actions/{lang}/{id}
Еще обычно данные справочников, когда есть иерархия, хранят в специальном виде (иерархические данные) и используют иерархические запросы (CTE иерархические запросы). Они сложнее, но зато позволяют не думать о вложеностях (а вдруг у вас будет 3-й уровень или даже 10-й). Пока может и не надо, но на всякий случай упоминаю их, если захотите переделать категории в одну таблицу. Примеры можно глянуть тут.
Добавьте новое поле в каждую таблицу:
ru_title, en_title, de_title...


