web-dev-qa-db-ja.com

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

二重引用符だけがある場合は、単一引用符で囲み、逆も同様です。しかし、二重引用符と単一引用符の両方をどのように処理しますか?

32
Peter Brown

エスケープはこのようにする必要があります

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

実際、翻訳文字列に古いタイプライターの引用符が必要な理由がわかりません。 2013年があり、ASCII-7にこだわることはありません。タイポグラフィルールは、 ユニコード引用符 を使用するように要求します。

これがこれまでのベストプラクティスです。3番目のキーボードレベル(または、最終的にはsed your yml)内にマッピングします。

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

このようなアプローチを使用すると、逃げることでトラブルに遭遇することは決してなく、クライアントは間違いなく「ああ、きちんとした」と言うでしょう。

申し訳ありませんが、これが少しトピックから外れているように見えても、質問は翻訳文字列に関するものなので、私はそれが最善の解決策であると考えています。

12

これがあなたのために働くかどうかを確認してください、それは私が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

4
coolersport