37

我正在对应用程序进行国际化,但无法弄清楚如何声明包含单引号和双引号的翻译字符串。这是我正在尝试的 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

如果只有双引号,我会将其用单引号括起来,反之亦然。我如何处理双引号和单引号?

4

3 回答 3

46

转义应该这样做

"When you're using double quotes, they look like \"this\""
于 2013-02-21T00:18:02.363 回答
11

实际上我不明白为什么翻译字符串中需要过时的打字机引号。2013 年左右,我们不再拘泥于 ASCII-7。排版规则规定了他们使用unicode 引号的要求。

这是有史以来最好的做法:将它们映射到第三个键盘级别(或者,最终,sed你的yml):

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

采用这种方法,您将永远不会遇到逃跑的麻烦,您的客户肯定会说“哦,太好了”。</p>

抱歉,如果这看起来有点离题,但由于问题是关于翻译字符串的,我仍然认为它是最好的解决方案。

于 2013-02-21T05:28:52.877 回答
7

看看这是否适合你,它在我需要传递 JSON 值的 Spring Boot 应用程序中非常适合我:

使用 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

于 2017-08-17T22:31:06.373 回答