Подтвердить что ты не робот

Как объявить строку с одиночными и двойными кавычками в YAML?

Я интернационализирую приложение и не могу понять, как объявить строку перевода, содержащую одиночные и двойные кавычки. Вот пример строки 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

Если бы были только двойные кавычки, я бы обернул их в одинарные кавычки и наоборот. Как мне обрабатывать как двойные, так и одинарные кавычки?

4b9b3361

Ответ 1

экранирование должно выполняться следующим образом

"When you're using double quotes, they look like \"this\""

Ответ 2

На самом деле я не могу понять, зачем вам нужны устаревшие пишущие машинки в строках перевода. Существует около 2013 года, и мы больше не придерживаемся ASCII-7. Правила типографии диктуют их требования использовать кавычки unicode.

Это лучшая практика: сопоставьте те, которые находятся на третьем уровне клавиатуры (или, в конечном итоге, sed ваш yml):

"When you’re using double quotes, they look like "this""

С таким подходом вы никогда не столкнетесь с проблемами с побегом, и ваши клиенты обязательно скажут "о, аккуратно".

Извините, если это кажется немного не по теме, но поскольку вопрос касался строк перевода, я по-прежнему считаю его лучшим решением.

Ответ 3

Посмотрите, работает ли это для вас, он отлично работает для меня в моих приложениях загрузки 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