Переключиться на другой язык на той же странице? - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь добавить средство смены языка для Middleman, и оно не генерирует правильную ссылку.Мои значения по умолчанию и root - английский.

url_for("/#{current_page.path}", locale: :ja)

Я бы ожидал эквивалент для текущей страницы в JA, который является тем же URL-адресом с добавленным JA.Кто-нибудь знает как это исправить?

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Я использую следующий помощник для создания URL для текущей страницы на другом языке.Первоначально он был основан на этом гисте , а затем немного его подправил, чтобы он работал независимо от того, используется ли mount_at_root.

def current_url_for_locale(loc)
  url_regex = /\A\/(?:(#{I18n.available_locales.join('|')})\/)?/
  locale_root = url_for('/', locale: loc)
  current_page.url.gsub(url_regex, '').blank? ?
      locale_root :
      current_page.url.gsub(url_regex, locale_root)
end
0 голосов
/ 19 ноября 2018

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

Я сделал небольшой помощник, который при необходимости может поменять местами пути.

def change_locale_in_path(path, locale)
  locale_prefix = I18n.locale

  path.gsub(/^#{locale_prefix}/, locale.to_s)
end

Это не очень хорошее решение.Это нужно будет отрегулировать, если вы измените i18n :path, и не будет работать, если вы не mount_at_root: false.Но это сработало достаточно хорошо для меня, чтобы двигаться дальше.Мне бы очень хотелось увидеть лучшее решение.

Я нашел несколько проблем с GitHub, которые, похоже, относятся к этой проблеме. Вот один .

...