module RouteTranslator::Translator::Path
def config_requires_locale?
def config_requires_locale? config = RouteTranslator.config (config.force_locale || config.generate_unlocalized_routes || config.generate_unnamed_unlocalized_routes).present? end
def default_locale?(locale)
def default_locale?(locale) locale.to_sym == I18n.default_locale.to_sym end
def display_locale?(locale)
def display_locale?(locale) !RouteTranslator.config.hide_locale && (!default_locale?(locale) || config_requires_locale?) end
def locale_param_present?(path)
def locale_param_present?(path) path.split('/').include? ":#{RouteTranslator.locale_param_key}" end
def locale_segment(locale)
def locale_segment(locale) if RouteTranslator.config.locale_segment_proc locale_segment_proc = RouteTranslator.config.locale_segment_proc locale_segment_proc.to_proc.call(locale) else locale.to_s.downcase end end
def translate(path, locale, scope)
def translate(path, locale, scope) new_path = path.dup final_optional_segments = new_path.slice!(%r{(\([^\/]+\))$}) translated_segments = new_path.split('/').map do |seg| seg.split('.').map { |phrase| Segment.translate(phrase, locale, scope) }.join('.') end translated_segments.reject!(&:empty?) if display_locale?(locale) && !locale_param_present?(new_path) translated_segments.unshift(locale_segment(locale)) end joined_segments = translated_segments.join('/') "/#{joined_segments}#{final_optional_segments}".gsub(%r{\/\(\/}, '(/') end