2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

Rails에서 국제화(i18n) 기능은 어떻게 사용하나요?

_____
질문: Rails에서 국제화(i18n) 기능은 어떻게 사용하나요?

답변:

1. 국제화(i18n)란?
국제화(i18n)는 애플리케이션을 여러 언어와 지역에 맞게 쉽게 지원할 수 있도록 하는 기능입니다. Rails는 내장된 i18n 모듈을 통해 텍스트, 날짜, 시간, 숫자 등의 현지화된 표현을 간편하게 제공합니다.

2. 기본 설정 방법
- `config/application.rb` 파일에서 기본 로케일을 설정할 수 있습니다.
```ruby
config.i18n.default_locale = :ko 기본 언어를 한국어로 설정
```
- 지원할 로케일 파일들은 `config/locales/` 폴더에 YAML 형식으로 저장됩니다 (예: `en.yml`, `ko.yml`).

3. 로케일 파일 구조
각 로케일 파일은 다음과 같은 형식입니다:
```yaml
ko:
hello: "안녕하세요"
views:
welcome:
title: "환영합니다"
```
영어 파일 예시:
```yaml
en:
hello: "Hello"
views:
welcome:
title: "Welcome"
```

4. 뷰에서 사용하기
뷰 파일(`.erb` 등)에서는 `t` 헬퍼를 사용해 번역 문자열을 가져옵니다.
```erb

<%= t 'hello' %>


<%= t 'views.welcome.title' %>


```

5. 컨트롤러, 모델 등에서 사용하기
`I18n.t` 메서드를 사용합니다.
```ruby
flash[:notice] = I18n.t('hello')
```

6. 동적 값 전달
번역문 내에 동적 값을 넣고 싶다면, 변수 바인딩을 할 수 있습니다.
```yaml
en:
greeting: "Hello, %{name}!"
```
사용법:
```ruby
I18n.t('greeting', name: 'Tom') => "Hello, Tom!"
```

7. 다국어 지원을 위한 로케일 전환
사용자의 선호 언어에 따라 로케일을 변경하려면 컨트롤러에서 설정할 수 있습니다.
```ruby
before_action :set_locale

def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
```
URL에서 `?locale=en` 같은 파라미터로 로케일 지정도 가능합니다.

8. 날짜, 시간, 숫자 현지화
날짜와 시간은 `l` 메서드를 사용해 로케일에 맞게 포맷할 수 있습니다.
```ruby
l Time.now 현재 로케일에 맞는 날짜/시간 출력
```

9. 추가 팁
- 로케일 파일은 계층적 구조로 작성해 논리적으로 관리하세요.
- 다국어 문서가 많아지면 관리툴(gem)인 `i18n-tasks`를 활용해 누락된 번역 확인 및 자동화할 수 있습니다.
- 사용자별 언어 저장은 세션, 쿠키 또는 사용자 프로필 설정에 저장해 활용합니다.

----

Rails i18n은 손쉽게 다국어 애플리케이션을 만들고 유지보수할 수 있도록 설계된 강력한 도구입니다. YAML 번역 파일을 작성하고, `t`와 `l` 헬퍼 메서드를 적절히 사용하며, 필요 시 동적 변수를 활용하는 것이 기본입니다.
Rails에서 국제화(i18n) 기능은 애플리케이션을 다양한 언어로 지원할 수 있도록 도와주는 강력한 도구입니다.

이를 통해 사용자에게 맞춤형 언어 환경을 제공할 수 있으며, 다국적 사용자 기반을 가진 애플리케이션에서 필수적인 요소입니다.

아래에서는 Rails에서 i18n 기능을 사용하는 방법에 대해 자세히 설명하겠습니다.

1. 기본 설정 Rails 애플리케이션에서 i18n을 사용하기 위해서는 기본적으로 `config/application.rb` 파일에서 로케일을 설정할 수 있습니다.

기본 로케일을 설정하려면 다음과 같이 수정합니다: ```ruby config/application.rb module YourApp class Application < Rails::Application ... config.i18n.default_locale = :en 기본 로케일을 영어로 설정 end end ```

2. 로케일 파일 생성 Rails에서는 각 언어에 대한 번역 문자열을 YAML 파일로 관리합니다.

기본적으로 `config/locales` 디렉토리에 로케일 파일을 생성합니다.

예를 들어, 영어와 한국어를 지원하려면 다음과 같은 파일을 생성할 수 있습니다: - `config/locales/en.yml` - `config/locales/ko.yml` 각 파일의 내용은 다음과 같이 작성할 수 있습니다: en.yml ```yaml en: hello: "Hello" goodbye: "Goodbye" ``` ko.yml ```yaml ko: hello: "안녕하세요" goodbye: "안녕히 가세요" ```

3. 번역 문자열 사용하기 이제 뷰 파일이나 컨트롤러에서 번역 문자열을 사용할 수 있습니다.

뷰 파일에서는 `t` 메서드를 사용하여 번역을 호출합니다: ```erb <%= t('hello') %> ``` 컨트롤러에서도 동일하게 사용할 수 있습니다: ```ruby class WelcomeController < ApplicationController def index flash[:notice] = t('goodbye') end end ```

4. 로케일 변경하기 사용자가 선택한 언어에 따라 로케일을 변경할 수 있습니다.

일반적으로 사용자의 선택을 세션이나 쿠키에 저장하고, 애플리케이션의 컨트롤러에서 이를 설정합니다.

예를 들어, 다음과 같이 구현할 수 있습니다: ```ruby class ApplicationController < ActionController::Base before_action :set_locale private def set_locale I18n.locale = params[:locale] || I18n.default_locale end end ``` 이제 URL에 `locale` 파라미터를 추가하여 로케일을 변경할 수 있습니다.

예를 들어, `/welcome?locale=ko`와 같은 요청을 통해 한국어로 변경할 수 있습니다.



5. 다국어 지원을 위한 추가 기능 Rails의 i18n 기능은 단순한 문자열 번역 외에도 다양한 기능을 제공합니다.

- 플루럴화 : 복수형 처리를 지원합니다.

예를 들어, `t('items.count', count:

2)`와 같이 사용하면, `count`에 따라 적절한 문자열을 반환합니다.

- 서식 지정 : 문자열 내에 변수를 삽입할 수 있습니다.

예를 들어, `t('greeting', name: 'John')`와 같이 사용하면, `greeting` 문자열 내에 `name` 변수가 삽입됩니다.

- 네임스페이스 : 로케일 파일 내에서 네임스페이스를 사용하여 관련된 번역 문자열을 그룹화할 수 있습니다.

예를 들어: ```yaml en: users: index: title: "User List" ``` 이 경우, `t('users.index.title')`로 접근할 수 있습니다.



6. 테스트 및 디버깅 i18n 기능을 사용할 때, 번역 문자열이 누락되거나 잘못된 경우를 대비하여 디버깅 도구를 사용할 수 있습니다.

`I18n::MissingTranslation` 예외를 통해 누락된 번역을 확인할 수 있으며, `rails console`에서 직접 확인할 수도 있습니다.



7. Rails의 국제화(i18n) 기능은 애플리케이션을 다국어로 지원하는 데 필수적인 도구입니다.

로케일 파일을 통해 번역 문자열을 관리하고, 사용자의 언어 선택에 따라 동적으로 로케일을 변경할 수 있습니다.

이를 통해 사용자 경험을 향상시키고, 다양한 문화권의 사용자에게 친숙한 인터페이스를 제공할 수 있습니다.

Rails의 i18n 기능을 활용하여 다국적 애플리케이션을 개발하는 데 필요한 기본적인 지식을 갖추시길 바랍니다.

작성자: 김주호 [비회원] | 작성일자: 1년 전 2025-01-02 06:11:30
조회수: 142 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.