2016-01-30 3 views
0

Я новичок с рубином и посредником, я создал свой проект, и все работает нормально, но когда я иду на /es путь, я не получаю никакого перевода. Я искал информацию без каких-либо результатов и пытался переместить код между конфигурациями папок и ничего.Middleman i18n не работает

Моя структура папок:

|locales 
    |---en.yml 
    |---es.yml 
|source 
    |es 
    |---index.html.haml 
    |layouts 
    |---layout.html.haml 
    |partials 
    |_header.html.haml 
    |_navigation.html.haml 
    |---index.html.haml 

Мои YAML файлы

en.yml

en: 
    home: 'Home' 

es.yml

es: 
    home: 'Inicio' 

Мои HAML

%nav 
    = link_to t(:home), '/', class: "#{'active' if current_page.url == '/'}" 
    = link_to 'Portfolio', '/portfolio', class: "#{'active' if current_page.url == '/portfolio/'}" 
    = link_to t(:skills), '/skills', class: "#{'active' if current_page.url == '/skills/'}" 
    = link_to t(:about), '/about', class: "#{'active' if current_page.url == '/about/'}" 
    = link_to t(:contact), '/contact', class: "#{'active' if current_page.url == '/contact/'}" 

Мой конфиг

config.rb

### 
# Page options, layouts, aliases and proxies 
### 

# Per-page layout changes: 
# 
# With no layout 
page '/*.xml', layout: false 
page '/*.json', layout: false 
page '/*.txt', layout: false 

# With alternative layout 
# page "/path/to/file.html", layout: :otherlayout 

# Proxy pages (http://middlemanapp.com/basics/dynamic-pages/) 
# proxy "/this-page-has-no-template.html", "/template-file.html", locals: { 
# which_fake_page: "Rendering a fake page with a local variable" } 

# General configuration 
set :partials_dir, 'partials' 
activate :i18n, :templates_dir => 'partials' 
activate :directory_indexes 

# Reload the browser automatically whenever files change 
configure :development do 
    activate :livereload 
end 

### 
# Helpers 
### 

# Methods defined in the helpers block are available in templates 
# helpers do 
# def some_helper 
#  "Helping" 
# end 
# end 

# Build-specific configuration 
configure :build do 
    # Minify CSS on build 
    activate :minify_css 

    # Minify Javascript on build 
    activate :minify_javascript 
end 
+0

Вы не возражаете обмена код? –

ответ

0

Я не мог написать комментарий, но я думаю, что это может быть причиной того, ваши эс. yml неверен, так как он начинается с:

en: 
    home: 'Inicio' 

Если не было бы

es: 
    home: 'Inicio' 
+0

Извините, я ошибся, когда поместил свой код. На 'es.yml' ошибка -' es: ' –

0

Я знаю, что этот вопрос месяцев старые, но я просто была такая же проблема, посмотрел все через Интернет в течение нескольких часов, пытаясь найти и ответить, и удалось решить проблему, добавив эти параметры после активации i18n:

config.rb

configure :build do 
    activate :i18n, 
     :mount_at_root => 'en', 
     :lang_map => { :'en' => 'en', :'es' => 'es' }, 
     :path => '/' 
end 

Очевидно, что если вы хотите "эс" будет вашим по умолчанию, измените mount_at_root.

Надеюсь, это поможет.

+0

Привет, спасибо за ответ! Эти проблемы все еще активны в моем старом проекте. Я проверю! ;) –

0

Я достиг локализованы пути с отдельными URL-адресов для английского и испанского по
добавив index.es.html.erb в корне каталога исходного
и установка Activate: i18n,: путь => "/: locale /" в конфигурации.гь

В браузере, мой выбор языка посылает пользователь / или /эс:

английского

http://website.com/ 

Испанских

http://website.com/es 

структура папок

|data 
    |---home.json 
|locales 
    |---en.yml 
    |---es.yml 
|source 
    |---index.html.erb 
    |---index.es.html.erb 
    |---_slide.erb 
|---config.rb 

config.rb

configure :build do 
    activate :i18n, :path => "/:locale/" 
    activate :directory_indexes 
    ... 
end 

slide.erb
Использование т в качестве ярлыка для I18n.t, я динамически ссылаться переведенное значение через данные.

<%= link_to t([data.link.text]), 
    data.link.href, 
    :id => data.link.id, 
    :class => 'btn btn-primary btn-lg btn-dark' 
%> 

home.json
Значение "текста" коррелирует с ключом в .yml файлов.

{ 
    "slides": [ 
    { 
     "text": "slides.learnMore", 
     ... 
    }, 
    ... 
    ] 
} 

en.yml

en: 
    slides: 
    learnMore: "LEARN MORE" 
    ... 

es.yml

es: 
    slides: 
    learnMore: "APRENDE MÁS" 
    ... 
Смежные вопросы