Ответ 1
экранирование должно выполняться следующим образом
"When you're using double quotes, they look like \"this\""
Я интернационализирую приложение и не могу понять, как объявить строку перевода, содержащую одиночные и двойные кавычки. Вот пример строки en.yml, которую я пытаюсь выполнить
en:
my_string: When you're using double quotes, they look like "this"
С приведенной выше строкой я получаю следующую ошибку:
can not load translations from /vagrant/config/locales/en.yml,
expected it to return a hash, but does not
Если бы были только двойные кавычки, я бы обернул их в одинарные кавычки и наоборот. Как мне обрабатывать как двойные, так и одинарные кавычки?
экранирование должно выполняться следующим образом
"When you're using double quotes, they look like \"this\""
На самом деле я не могу понять, зачем вам нужны устаревшие пишущие машинки в строках перевода. Существует около 2013 года, и мы больше не придерживаемся ASCII-7. Правила типографии диктуют их требования использовать кавычки unicode.
Это лучшая практика: сопоставьте те, которые находятся на третьем уровне клавиатуры (или, в конечном итоге, sed
ваш yml
):
"When you’re using double quotes, they look like "this""
С таким подходом вы никогда не столкнетесь с проблемами с побегом, и ваши клиенты обязательно скажут "о, аккуратно".
Извините, если это кажется немного не по теме, но поскольку вопрос касался строк перевода, я по-прежнему считаю его лучшим решением.
Посмотрите, работает ли это для вас, он отлично работает для меня в моих приложениях загрузки spring, где мне нужно передать значения JSON в:
Использование стиля трубки YAML:
app.json:
values: |
{"key": "value"}
Ваше дело будет:
en:
my_string: |
When you're using double quotes, they look like "this"
Сложенный стиль тоже может работать, но я не пробовал.
Подробнее здесь: http://symfony.com/doc/current/components/yaml/yaml_format.html#strings