Мы создаем приложение, наше первое использование Rails 3, и мы должны встроить I18n с самого начала. Будучи перфекционистами, мы хотим, чтобы в наших взглядах использовалась настоящая типография: черточки, завитые кавычки, эллипсы и др.
Это означает, что в наших файлах locales / xx.yml у нас есть два варианта:
- Используйте настоящие символы UTF-8.
Должен работать, но трудно набрать, и
пугает меня из-за количества
программное обеспечение, которое до сих пор делает непослушный
вещи в юникоде.
- Использовать HTML
персонажи (’
- так далее). Легче набрать,
и, вероятно, более совместим с
плохо себя ведущий софт.
Я бы предпочел второй вариант, однако авто-экранирование в Rails 3 делает это проблематичным, так как амперсанды в YAML автоматически преобразуются в символьные объекты, что приводит к появлению «видимых» в браузере .
Очевидно, что это можно обойти, используя raw
для строк, т. Е .:
raw t('views.signup.organisation_details')
Но мы не рады идти по глобальному маршруту raw
- каждый раз, когда мы t
что-то делаем, так как это оставляет нас открытыми для ошибки и создания дыры в XSS.
Мы могли бы выборочно raw
строки, которые, как мы знаем, содержат символьные объекты, но это было бы трудно масштабировать, и это было бы просто неправильно - кроме того, строка, содержащая объект на одном языке, может не на другом.
Какие-нибудь предложения по умному рельсовому способу исправить это? Или мы обречены на хлам типографию, xss дыры, часы потраченных впустую усилий или все такое?