레일즈 애플리케이션의 루비에서 지역화 된 메시지 문자열 내에서 여러 변수/자리 표시자를 바꿀 수있는 최선의 방법을 찾으려고합니다. 단일 자리 표시자를 바꿀 때 나는 만족 스러웠습니다 :ROR : 지역화 된 메시지 문자열 변수 대체
en.yml에서 : url_borked : "URL : $ url을로드 할 수 없습니다." 보기 : [ "$ url"] = request.url
그러나 여러 개의 자리 표시 자에 적합하지 않습니다. 그것은 추한보고, 실제로 예를 들어 작동하지 않습니다 en.yml에서
을 :
보기에서url_borked: "The URL: $url is badly formatted, perhaps you meant: $url_clean"
: 나는 문자열 :: 서브를 사용하여 시도
(t(:url_borked)["$url"] = request.url)["url_clean") = @suggested_url
하지만, 나는 그게 못생긴만큼 행복하지 않아. 예 :
(t(:url_borked).sub("$url", request.url).sub("url_clean", @suggested_url)
한 자리 표시 자의 여러 인스턴스를 대체하려는 경우에도 작동하지 않습니다. 예컨대 :
나는 또한 printf 함수로 간주 한bad_url: "$url cannot be loaded, please try $url another time"
,하지만 그 번역에 따라 변경할 수있는 자리의 상대적 위치로 현지화 작동하지 않습니다.
이 메시지 자리 표시 자 치환을 수행하는 올바른 방법이 있습니까?
감사합니다.
감사합니다. AlexT, 당신은 절대적으로 옳았습니다. 분명히 분명히 내려다 보았기에 바보 같았습니다. 너는 나 자신의 질문에 답하기 위해 나를 때렸다. 그래서 큰 눈금을 얻는다! 건배. –