2014-06-17 6 views
1

레일스, Nanoc과 i18n에 대해 이야기하는 기사가 많았지 만, 실제로 간단하다고 생각되는 기사는 없었습니다. 즉, nanoc 기사에 날짜를 국제화하는 방법이었습니다.nanoc의 "created_at"로 날짜 현지화

--- 
title: Test 
created_at: 1 January 1970 
--- 

느릅 나무는이 결과를 제공합니다

<%= link_to(post[:title], post.path) %> - <%= post[:created_at] %> 

이것은 더미 기사입니다 :

여기 내 index.html 페이지의 조각이다, 예를 들어, 정말 간단한 설정을 가지고 컴파일 할 때 :

Test - 1 January 1970 

하지만 날짜를 b로 지정하고 싶습니다. 이 같은 프랑스어 전자, :

Test - 1 Janvier 1970 
+0

이 질문은 Nanoc에 관한 것이지만 루비 솔루션에 대한 평가는 매우 중요합니다. 이것은 레일 문제가 아닙니다. 하지만 네, Rails i18n 문서를 읽었습니다. 슬프게도 제 경우에는 적용되지 않습니다. – devmind

답변

1

당신은이 작업 자체에 레일 '국제화 보석, i18n를 사용할 수 있습니다. 다음은 간단한 예입니다 : 당신이 Bundler 프로그램을 사용하는 경우

  1. , 당신의 nanoc 프로젝트의 Gemfilei18n 보석 포함하도록 편집 : 그렇지 않으면

    gem 'i18n' 
    

    를 (컴퓨터에 로컬로 보석을 설치하는 당신 '아마) 수퍼 유저 권한이 필요 것이다 :

    gem install i18n 
    
  2. tr/fr.yml, 말,에서 프랑스어 번역 파일을 추가, 귀하의 nanoc 프로젝트에.

    --- 
    fr: 
        date: 
        formats: 
         default: ! '%-d %B %Y' 
        month_names: 
        - 
        - janvier 
        - février 
        - mars 
        - avril 
        - mai 
        - juin 
        - juillet 
        - août 
        - septembre 
        - octobre 
        - novembre 
        - décembre 
    
  3. 이 코드와 함께, lib/translate_date.rb에서 예를 들면 번역을 수행하기위한 도우미를 추가합니다 : 그것은이 (최소한의) 내용에 놓고

    require 'date' 
    require 'i18n' 
    
    # Load our translation files 
    I18n.load_path = Dir['./tr/*.yml'] 
    
    # Set the default locale to French 
    I18n.locale = :fr 
    
    # Translates a date string into the default locale. 
    def translate_date(date) 
        I18n.l Date.parse(date, '%d %B %Y') 
    end 
    
  4. 는 이제 index.html 파일이 배치,

    <%= link_to(post[:title], post.path) %> - <%= translate_date(post[:created_at]) %> 
    

    그리고 원하는 출력을 얻어야합니다.

+1

그것은 내가하고 싶었던 정확하게 감사하고 싶다, 고마워. i18n Gem이 컴파일 할 때 경고를 없애기 위해'I18n.enforce_available_locales = false'를 추가했습니다. 프랑스어가 아닌 다른 로케일을 사용하지 않을 것이기 때문입니다. – devmind