2013-02-21 9 views
25

Jestem internacjonalizacji aplikacji i nie mogę dowiedzieć się, jak zadeklarować ciąg tłumaczenia, który zawiera zarówno pojedyncze, jak i podwójne cudzysłowy. Oto przykład napisu en.yml że próbujęJak zadeklarować ciąg znaków z pojedynczym i podwójnym cudzysłowem w YAML?

en: 
    my_string: When you're using double quotes, they look like "this" 

Z powyższego napisu, pojawia się następujący błąd:

can not load translations from /vagrant/config/locales/en.yml, 
expected it to return a hash, but does not 

Gdyby istniał tylko cudzysłów, to bym go owinąć w pojedynczych cudzysłowie i vice versa. Jak jednak radzić sobie z podwójnymi i pojedynczymi cudzysłowami?

+3

Czy próbowałeś ich uniknąć? "Kiedy używasz podwójnych cudzysłowów, one wyglądają jak \" to \ "" – jvnill

+0

@jvnill Niestety nie, ale to załatwiło sprawę. Próbowałem uciec od pojedynczych cytatów i nie działało, więc założyłem, że duble nie uciekną. Jeśli napiszesz to jako odpowiedź, zaakceptuję to. –

+0

dziękuje, właśnie zrobił :) – jvnill

Odpowiedz

32

Cytowanie powinno odbywać się ten

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

To ... nie działa dla mnie. Kiedy robię coś takiego, a następnie "umieszcza" ciąg znaków, wypisuje 'Kiedy używasz podwójnych cudzysłowów, wyglądają one jak \" to \ ". Wsparcie? – elsurudo

+0

czy otaczasz go podwójnymi cytatami? – jvnill

+0

Tak. Wypróbowane pojedyncze cytaty - taki sam wynik. – elsurudo

9

Właściwie nie mogę dowiedzieć się, dlaczego trzeba nieaktualnych ofert pisania w ciągi tłumaczeniowych. Jest rok 2013 i nie trzymamy się już ASCII-7. Reguły typografii określają ich wymagania dotyczące używania unicode quotation marks.

To najlepsze praktyki kiedykolwiek: map te w poziomie 3. klawiatury (lub ostatecznie sed swój yml):

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

Z takim podejściem nigdy się problemy z ucieczką i twoi klienci zdecydowanie powiedzieć „oh, schludny.”

Niestety, jeśli wydaje się to trochę off-topic, ale skoro pytanie było o strings tłumaczenie, nadal uważam, że jest to najlepsze rozwiązanie.

+2

Podoba mi się ten pomysł! Odkryłem, że mogę je wpisać za pomocą opcji + wspornik lewy/prawy (OS X). –

+2

Wiem, że spóźniam się z tą grą, ale używanie dziwnych znaków w cudzysłowach nie ma sensu.Są trudne do wstawienia, powodują parsowanie bólu (każdy proces, który kiedykolwiek zużywa twoje dane, musi być świadomy, że używasz niestandardowych ofert), ale niczego nie dodawaj. Po prostu uciec od nich, jak w zaakceptowanej odpowiedzi - nie ma niespodzianek dla nikogo z tą metodą. – Knetic

+0

@Knetic Po prostu nie rozumiesz. Ma to olbrzymi sens, jest łatwe do wstawienia, sprawia, że ​​parsowanie uroku (lewy i prawy cytat różnią się) i nikt nie jest przy zdrowych zmysłach działałby automatycznie na twoich _ przetłumaczonych _ ciągach celowo. Z drugiej strony dodajesz estetykę, która ma większą wartość niż wszystko. W 2015 r. Tylko neandertalczycy utknęli w cytatach z maszyn do pisania. – mudasobwa

0

sprawdzić, czy to działa dla Ciebie, to działa idealnie dla mnie w moich wiosennych aplikacji startowych, gdzie potrzebne do przekazania wartości JSON w:

Korzystanie styl rury YAML:

app.json: 
    values: | 
    {"key": "value"} 

Twoja sprawa byłaby :

en: 
    my_string: | 
    When you're using double quotes, they look like "this" 

Styl złożony może również działać, ale nie próbowałem.

Zobacz więcej tutaj: http://symfony.com/doc/current/components/yaml/yaml_format.html#strings

Powiązane problemy