본문에서는 Rails I18n을 번역 외의 목적으로 활용하는 두 가지 실용적인 사례를 상세히 설명합니다.
1. 멀티 도메인 애플리케이션을 위한 동적 페이지 제목
단일 Rails 애플리케이션이 여러 도메인(예: app1.com
, app2.com
)을 서비스할 때, 페이지 제목이나 메타 속성이 도메인에 따라 달라져야 하는 경우가 있습니다. 기존의 조건부 로직이나 하드코딩 대신, Current.app
객체를 통해 현재 도메인을 식별하고 config/locales/en.yml
에 도메인별 page_title
을 정의하여 동적으로 관리할 수 있습니다.
yaml
en:
page_title:
app1: "Hello from App1!"
app2: "Hello from App2!"
뷰에서는 <%= t(Current.app, scope: "page_title") %>
와 같이 호출하여 도메인에 맞는 제목을 자동으로 표시합니다.
2. 네임스페이스별 상태 설명
전자상거래 플랫폼에서 주문 상태가 관리자와 고객에게 다르게 표시되어야 할 때, 동일한 ‘shipped’ 상태라도 역할에 따라 다른 설명을 제공해야 합니다. config/locales/en.yml
내에 admin
및 customer
네임스페이스를 활용하여 상태 설명을 구분합니다.
yaml
en:
order_status:
admin:
shipped: "Package dispatched"
customer:
shipped: "Your package is on its way!"
관리자 뷰에서는 <%= t("order_status.admin.shipped") %>
, 고객 뷰에서는 <%= t("order_status.customer.shipped") %>
를 사용하여 각 역할에 맞는 설명을 출력합니다.
이 접근 방식은 다음과 같은 이점을 제공합니다:
* 애플리케이션 전반의 메시지 일관성 유지
* 상태 관련 콘텐츠의 중앙 집중화
* 코드 변경 없이 메시지 수정 용이
* 컨텍스트에 따른 세부 정보 제공
이 패턴은 컨텍스트나 사용자 역할에 따라 동일한 상태가 다른 표현을 필요로 하는 다양한 시나리오에 확장 적용될 수 있습니다.