Мы создаем приложение, наше первое использование Rails 3, и нам нужно сначала построить I18n. Будучи перфекционистами, мы хотим, чтобы в наших представлениях использовалась настоящая типография: тире, завитые цитаты, эллипсы и др.
Это означает, что в наших файлах locals/xx.yml есть два варианта:
- Используйте реальные символы UTF-8 в строке. Должен работать, но трудно печатать, и меня пугает из-за количества программное обеспечение, которое все еще делает озорной вещи в unicode.
- Использовать HTML символьные объекты (& # 8217; & Амп; # 8212; и т.д). Легче печатать, и, вероятно, более совместимы с неправильное программное обеспечение.
Я предпочел бы воспользоваться вторым вариантом, однако автоматическое экранирование в Rails 3 делает эту проблему проблематичной, поскольку амперсанды в YAML автоматически преобразуются в объекты символов, что приводит к "видимым" и 8217; браузера.
Очевидно, это можно обойти, используя raw
в строках, то есть:
raw t('views.signup.organisation_details')
Но мы не счастливы спуститься по всему миру raw
-ing каждый раз, когда мы t
что-то, поскольку оно оставляет нас открытыми для создания ошибки и создания дыры XSS.
Мы могли бы выбирать строки raw
, которые, как мы знаем, содержат символьные сущности, но это было бы трудно масштабировать и просто чувствует себя не так - кроме того, строка, содержащая сущность на одном языке, может быть не в другом.
Любые предложения по умным рельсам-y, чтобы исправить это? Или мы обречены печатать типографию, xss дыры, часы потраченного впустую усилия или все это?