Sha256: ea500a0f90d4ca858ccbba6d99528574a6f218e22b40cef33a384365cc2fe6e0
Contents?: true
Size: 1.84 KB
Versions: 7
Compression:
Stored size: 1.84 KB
Contents
module GOVUKDesignSystemFormBuilder module Traits module Localisation # starts with an letter that is followed by other word characters or # spaces, zero or more times BASE_NAME_REGEXP = %r{[[:alpha:]](?:[\w\s]*)}.freeze private def localised_text(context) return unless @object_name.present? && @attribute_name.present? localise(context) || localise_html(context) end def localise(context) I18n.translate(schema(context), default: nil) end def localise_html(context) I18n.translate("#{schema(context)}_html", default: nil).try(:html_safe) end def schema(context) schema_root(context) .push(*schema_path) .map { |e| e == :__context__ ? context : e } .join('.') end def schema_path base_object_name = if config.enable_nested_localisation @object_name.to_s.scan(BASE_NAME_REGEXP).join(".") else @object_name end if @value.present? [base_object_name, "#{@attribute_name}_options", @value] else [base_object_name, @attribute_name] end end def schema_root(context) contextual_schema = case context when :legend config.localisation_schema_legend when :hint config.localisation_schema_hint when :label config.localisation_schema_label when :caption config.localisation_schema_caption end (contextual_schema || config.localisation_schema_fallback).dup end end end end
Version data entries
7 entries across 7 versions & 1 rubygems