2015-05-01 2 views
0

Для сайта, на котором я строил сайт Middleman, я локализую целые шаблоны, как описано в документах внизу базы данных "Localization" section. Таким образом, соответствующая часть файла дерево выглядит следующим образом:Ссылка Middleman link_to для локализованных шаблонов

/localizable 
    | 
    |- index.en.html.haml 
    |- index.ru.html.haml 
    |- about.en.html.haml 
    |- about.ru.html.haml 

Я могу связать с index.en страницы на about.en страницы с помощью помощник пути так:

= link_to 'about me', '/about.html' 

Но когда Я пытаюсь сделать подобный трюк, чтобы создать ссылку со страницы index.ru на страницу about.ru:

= link_to 'some russian text', '/russian/about.html' 

помощник не работает. Он игнорирует папку /russian и создает ссылку на /about.html в корне.

Я что-то упускаю или помощник пути неприменим для локализованных шаблонов? Является единственным вариантом использовать тег <a> напрямую?

============

Update1: соответствующие части моего config.ru файла:

set :css_dir, 'stylesheets' 

set :js_dir, 'javascripts' 

set :images_dir, 'images' 

activate :relative_assets 
set :relative_links, true 

activate :i18n, :langs => [:en, :ru], :lang_map => { :en => :english, :ru => :russian } 

activate :blog do |blog| 
    blog.prefix = "blog" 
    blog.paginate = true 
end 

# Build-specific configuration 
configure :build do 
    # For example, change the Compass output style for deployment 
    # activate :minify_css 

    # Minify Javascript on build 
    # activate :minify_javascript 

    # Enable cache buster 
    # activate :asset_hash 

    # Use relative URLs 
    # activate :relative_assets 

    # Or use a different image path 
    # set :http_prefix, "/Content/images/" 
end 

ответ

0

Косяк действительно говорят, что это проблема не видя config.rb файл и структура вашей файловой системы.

Моего предположения о вашей проблеме было бы как this here

или это может быть реальным простым, что вы должны изменить «русского» к «р», так что в имени файла.

Вот good example

EDIT:

Теперь с config.rb, я вижу, что вы используете: ан по умолчанию, и: ру, как русский

Поскольку вы используете: ан по умолчанию (без префикса), вам не нужно отображать это. или если вы хотите, чтобы быть сопоставлен и не быть по умолчанию, возможно, придется использовать «: mount_at_root => ложь» с Activate «активировать: i18n»

Попробуйте следующее решение

activate :i18n, :langs => [:en,:ru], :lang_map => {:ru => :russian} 

Как я уже сказал , Я просто удалил: en mapping, и он работал над моим тестом. Поскольку вы делаете: en по умолчанию, вам не нужно отображать его. Если вы хотите, чтобы оба языка были правильно сопоставлены, используйте следующие

activate :i18n, :mount_at_root => false, :langs => [:en,:ru], :lang_map => {:en => :english ,:ru => :russian} 
+0

Извините за поздний ответ - мне потребовалось некоторое время, чтобы вернуться к этому проекту. Я обновил свой вопрос, чтобы включить соответствующую информацию из моего файла config.ru. В отличие от проблемы, описанной в вашей первой ссылке, ': i18n' активируется перед' build'. – azangru

+0

Изменение '= link_to 'обо мне', '/ about.html'' to' = link_to' обо мне ','/# {I18n.locale}/about.html'', как было предложено во второй ссылке, почти работает. . Только путь, который он создает, - '/ru/about.html', тогда как я переустановил 'ru' на 'russian', поэтому полученный URL-адрес недействителен.Мне нужно создать '/russian/about.html'. – azangru

+0

Хорошо, я сделал несколько тестов и знаю, почему ваша конфигурация не работает, я могу сделать редактирование ответа, но не знаю, почему ваша текущая конфигурация не работает, может быть ошибка или странные взаимодействия, потому что у нас есть префикс по умолчанию. – vickzzzzz

 Смежные вопросы

  • Нет связанных вопросов^_^