Django - Перевод данных с кириллицы на латиницу

Я пытаюсь создать приложение, которое будет хранить некоторые данные на сербском языке (который написан как кириллицей, так и латиницей), и в зависимости от выбора пользователя оно сможет отображать их в выбранном сценарии. Преобразование из кириллицы в латиницу довольно простое, потому что у каждого кириллического символа есть аналог (или два) в латинице ('Б'->'В', 'Ш'->'Ш', 'Љ'->'). LJ'...), но наоборот может быть немного сложнее ("LJ"->'Љ' или 'LJ'->'ЛЈ', нет никакого способа указать программе, как решать, хотя большинство времени 'LJ'->'Љ' было бы правильным выбором). В любом случае, я собираюсь ввести кириллицу, но мне нужны и латиница, и кириллица. Итак, мой вопрос: что было бы наиболее эффективным способом добиться этого? Должен ли я выполнять преобразование строк в forms.py и хранить данные в разных таблицах (это звучит неэффективно) или лучше выполнять преобразование в представлениях? Некоторый JavaScript в шаблонах, я думаю, был бы еще одним вариантом, но я считаю, что это не очень хорошая идея. Я новичок в Django, поэтому, пожалуйста, простите, если я спрашиваю ерунду.


person El Gato Loco    schedule 09.03.2014    source источник


Ответы (1)


Я думаю, что проще всего рассматривать сербскую кириллицу (официальную) и сербскую латиницу как два разных «языка». После этого вы получите все преимущества платформы Django и ее интернационализации и локализации техника.

имя локали: sr и sr_Latn.

ОБНОВЛЕНИЕ

Выше заботятся о строках в моделях, представлениях, формах и шаблонах. Но вам нужно перевести значения базы данных.

Если вы можете автоматизировать свой перевод (без исключений или с небольшими исключениями), вы можете использовать фильтр пользовательского шаблона. Но если вы хотите, чтобы ваши редакторы могли исправлять непредвиденные исключения, вам необходимо создать поля базы данных для хранения перевода. Как и в любом многоязычном проекте. Для этого существует множество структур моделей и приложений. Все зависит от потребностей вашего проекта.

person allcaps    schedule 09.03.2014
comment
Вероятно, не самый простой, так как это потребовало бы обслуживания двух различных переводов, но, безусловно, более управляемый, чем транслитерация "на лету". - person lanzz; 10.03.2014
comment
Один перевод. Другой - оригинал. Но дело не в переводе, так как его можно автоматизировать во всех случаях. Работа заключается в указании строк, которые необходимо перевести. Для текста из базы данных будет доступен фильтр шаблонов, если нет исключений перевода. - person allcaps; 10.03.2014
comment
Пользовательский фильтр шаблонов и добавление отдельных URL-адресов и представлений сделали свое дело. Как я уже сказал, поскольку при конвертации с кириллицы на латиницу не бывает исключений (но не наоборот), это все, что мне нужно было сделать. Конечно, электронные письма, ссылки и иностранные фразы останутся латиницей в db, и все будет прекрасно отображаться в обоих скриптах. Никогда не думал, что это будет так просто, спасибо за огромную помощь! - person El Gato Loco; 10.03.2014