В Rails есть одна вещь, которой я завидую: поддержка интернационализации (есть и у Django, но я предпочитаю вкус Rails).
Ключевое различие между подходами Rails и Django заключается в том, какая строка ведет себя как ключи в отображении преобразования значения ключа, т.е.
Версия Django (ключи - строки на "основном" языке, например английском):
msgid "Save and quit"
msgstr "Zapisz i wyjdź"
Эквивалент версии Rails (ключи - абстрактные строки; автономное использование невозможно - необходимо предоставить хотя бы 1 «перевод») - фактически, Rails использует формат YAML, но следующий пример представляет идею:
// english translation file
msgid "SAVE_QUIT_MESSAGE"
msgstr "Save and quit"
и
// polish translation file
msgid "SAVE_QUIT_MESSAGE"
msgstr "Zapisz i wyjdź"
Способ поддержки i18n в Rails ИМХО намного лучше (подумайте о неизменности ключа - устойчив к грамматическим / орфографическим исправлениям; языковой агностицизм и т.д.).
Одним из способов использования этой схемы в Django было бы использование некоторого абстрактного языка с единственной целью перевода (строки на этом языке создавали бы неизменные ключи), но Django поддерживает только фиксированный набор языков. Другое решение - пожертвовать одним из поддерживаемых (неиспользуемых) языков, чтобы сыграть эту роль - но это просто плохо: P
Какие-либо идеи / сторонние приложения / методы для решения этой проблемы?
Sidenote: расширение поддержки i18n для языковых языков даст забавные возможности:
// slang translation file
msgid "SAVE_QUIT_MESSAGE"
msgstr "Save shit 'n' quit, bro"