rails I18n으로 yaml사용시 여러가지 팁

Posted by negabaro kim on Sunday, September 20, 2020 Tags: rails/tip   2 minute read

개요

이 포스트에서는 I18n으로 yaml사용시 여러가지 팁에 대해 정리해보았다.

주로 rails의 I18n사용시 얻은 팁들이나 yaml자체에서 사용가능한 것들도 있으니 참고바란다.

변수 사용하는 방법

I18n.t에서 아래와 같이 변수를 사용하는것이 가능하다.

#ko.yml
new: 신규%{smtg}

호출시 커맨드

t(:new, smtg: t(:posts))
# => 신규포스팅

array사용하는 방법

array를 사용하면 복수의 정보를 가져올 수 있다.

t [:new, :posts]
# => ["신규","포스팅"]

다만 array상태로 리턴되므로 문자열로 사용하고 싶을때는 아래와 같이 join해주자

(t [:new, :posts]).join
# => 신규포스팅

헬퍼 메소드 사용하는 방법

헬퍼 메소드를 경유해서 I18n.t를 호출하는 방법도 있다.

def joined_t(*args)
    (I18n.t args).join
end
= joined_t(:new, :posts)
# => 신규포스팅

alias(별칭)

별칭 지정이 가능하다.

Comment: &Comment 커맨트
Comments: *Comment

&로 별칭선언하고 *로 호출한다.

즉 Comment,Comments 어느쪽도 커맨트라는 값을 가져온다.

create,update의 로케일 디폴트 설정

create,update등 디폴트 로케일 설정은 helpers: submit:이하에 설정하면 자동으로 불러와진다.

#ko.yml
ko:
  helpers:
    submit:
      create: 등록
      update: 갱신
      submit: 저장

위 상태에서 <%= form.submit %>만 해줘도 helpers.submit를 참조해준다.

여기에 더해서 form에 해당하는 모델값도 사용할 수 있는데

ko:
  helpers:
    submit:
      create: "${model}을 등록"

이라고 해주면 해당 모델명도 사용가능하다. 예를들어 issue라는 모델이면 activerecord.models.issue의 값을 참조한다.

모델마다 다른값으로 변경할떄

모델에따라 변경하고 싶을때는 model_name이하에 재정의하면 해당모델의 버튼 텍스트가 model_name이하에 정의한 부분으로 적용된다.

#ko.yml
ko:
  helpers:
    submit:
      create: 등록
      update: 갱신
      submit: 저장
      model_name:
        create: 전송
        update: 변경

memo

1. post,update후 flash메시지 공통정의 하는방법

responders gem을 이용

2. Yes,No는 더블 쿼테이션이 반드시 필요함

동작안함

Yes: 예
No: 아니오

동작함

"Yes": 예
"No": 아니오

Link Link2 yaml에서 개행하는 방법