1

Тема: Dlango - перетворити одномовний сайт в багатомовний.

є одномовний сайт
уже готовий, працює. на свіжому Django (1.11)
раптом треба додати ще одну мову.
начитався, нагуглився, тепер ще хочу поспитати - може хтось таке мав - і підкаже парочку практичних порад.
-  з темплейтами вроді все ясно - файл з перекладами і тег {% trans %}
-  а що робити з моделями ? тупо дадати ще одне дублююче поле типу:
title = models.Model...  # уже є
title_pl = models.Model...  # польський варіант
???

First, solve the problem. Then, write the code. (c)JJ

2

Re: Dlango - перетворити одномовний сайт в багатомовний.

Так. Переклади є такі:
1. Збереігаються в .po .mo - те, що з шаблонів і пітонівських файлів;
2. Зберігаються в базі. Через отакі поля, як вище)

Є готові додатки, які це роблять:
1. rosetta - дозволяє перекладати .po файли з адмінки.
2. django-modeltranslation - додає всі потрібні (по доступних мовах) поля в модель. І відразу при отримуваня даних  з бази віддає значення на вашій мові. І при записі теж саме)

Навчаюсь вчитись, щоб навчатись.
Подякували: Monolith1

3

Re: Dlango - перетворити одномовний сайт в багатомовний.

Q-bart написав:

Так. Переклади є такі:
1. Збереігаються в .po .mo - те, що з шаблонів і пітонівських файлів;
2. Зберігаються в базі. Через отакі поля, як вище)

Є готові додатки, які це роблять:
1. rosetta - дозволяє перекладати .po файли з адмінки.
2. django-modeltranslation - додає всі потрібні (по доступних мовах) поля в модель. І відразу при отримуваня даних  з бази віддає значення на вашій мові. І при записі теж саме)

скажімо, адмінка не цікавить - хай буде одномовною.
а от в яких випадках якому з методів віддати перевагу для фронт-енду (рендерінг темплейтів і відображення полів моделей )?

First, solve the problem. Then, write the code. (c)JJ

4

Re: Dlango - перетворити одномовний сайт в багатомовний.

ping написав:

є одномовний сайт
уже готовий, працює. на свіжому Django (1.11)
раптом треба додати ще одну мову.
начитався, нагуглився, тепер ще хочу поспитати - може хтось таке мав - і підкаже парочку практичних порад.
-  з темплейтами вроді все ясно - файл з перекладами і тег {% trans %}
-  а що робити з моделями ? тупо дадати ще одне дублююче поле типу:
title = models.Model...  # уже є
title_pl = models.Model...  # польський варіант
???

в залежності від параметрів запиту (піддомену єтс) вичітувати потрібну модель?

Робіть що хочете - людина створена вільною

5

Re: Dlango - перетворити одномовний сайт в багатомовний.

varkon написав:
ping написав:

є одномовний сайт
уже готовий, працює. на свіжому Django (1.11)
раптом треба додати ще одну мову.
начитався, нагуглився, тепер ще хочу поспитати - може хтось таке мав - і підкаже парочку практичних порад.
-  з темплейтами вроді все ясно - файл з перекладами і тег {% trans %}
-  а що робити з моделями ? тупо дадати ще одне дублююче поле типу:
title = models.Model...  # уже є
title_pl = models.Model...  # польський варіант
???

в залежності від параметрів запиту (піддомену єтс) вичітувати потрібну модель?

робити окрему модель на кожну мову не думаю що це гарно.
бачу два варіанти:
- модель одна, але на кожну мову є окремі поля (де це потрібно) і вичитуються вони.
- модель одна, але кожне поле, яке потребує перекладу має FK  на модель з його перекладом
шось як тут описано:
https://stackoverflow.com/questions/157 … tilanguage

First, solve the problem. Then, write the code. (c)JJ

6

Re: Dlango - перетворити одномовний сайт в багатомовний.

Мультимовність залежить від суті сайту, кількості мов та структури.

Якщо тре додати одну мову і таких мов буде небагато - можна просто впаяти нове поле в модель і трохи підшаманити логіку, щоб підбирало потрібну мову у запитах.

Якщо мов багато і багато самих сутностей - можна зробити табличку з перекладами (зрозуміло, що тре забезпечити при цьому високу швидкість доступу до неї).

Ще варіант: якщо у вас реляційна бд, то змігрувати на щось типу кассандри для пришвидшення 2 варіанту, але то, мабуть, уже важче буде.

I belong to the Dead Generation.
Подякували: Monolith1