module TmlRails::ActionViewExtension
Public Instance Methods
tml_dir_attribute_tag(lang = tml_current_language)
click to toggle source
providers the direction of the language
# File lib/tml_rails/extensions/action_view_extension.rb, line 251 def tml_dir_attribute_tag(lang = tml_current_language) return "dir='ltr'" if Tml.config.disabled? "dir='#{lang.dir}'".html_safe end
tml_html_attributes_tag(lang = tml_current_language)
click to toggle source
provides the locale and direction of the language
# File lib/tml_rails/extensions/action_view_extension.rb, line 245 def tml_html_attributes_tag(lang = tml_current_language) "xml:lang='#{lang.locale}' #{tml_lang_attribute_tag(lang)} #{tml_dir_attribute_tag(lang)}".html_safe end
Also aliased as: tml_lang_attributes_tag
tml_lang_attribute_tag(lang = tml_current_language)
click to toggle source
provides the locale of the language
# File lib/tml_rails/extensions/action_view_extension.rb, line 257 def tml_lang_attribute_tag(lang = tml_current_language) return "lang='en'" if Tml.config.disabled? "lang='#{lang.locale}'".html_safe end
tml_language_flag_tag(lang = tml_current_language, opts = {})
click to toggle source
Returns language flag
# File lib/tml_rails/extensions/action_view_extension.rb, line 53 def tml_language_flag_tag(lang = tml_current_language, opts = {}) return '' unless tml_application.feature_enabled?(:language_flags) html = image_tag(lang.flag_url, :style => (opts[:style] || 'vertical-align:middle;'), :title => lang.native_name) html << ' '.html_safe html.html_safe end
tml_language_name_tag(lang = tml_current_language, opts = {})
click to toggle source
Returns language name
# File lib/tml_rails/extensions/action_view_extension.rb, line 61 def tml_language_name_tag(lang = tml_current_language, opts = {}) show_flag = opts[:flag].nil? ? true : opts[:flag] name_type = opts[:language].nil? ? :english : opts[:language].to_sym # :full, :native, :english, :locale, :both html = [] html << "<span style='white-space: nowrap'>" html << tml_language_flag_tag(lang, opts) if show_flag html << "<span dir='ltr'>" if name_type == :both html << lang.english_name.to_s html << '<span class="trex-native-name">' html << lang.native_name html << '</span>' else name = case name_type when :native then lang.native_name when :full then lang.full_name when :locale then lang.locale else lang.english_name end html << name.to_s end html << '</span></span>' html.join.html_safe end
tml_language_selector_tag(type = nil, opts = {})
click to toggle source
Returns language selector UI
# File lib/tml_rails/extensions/action_view_extension.rb, line 90 def tml_language_selector_tag(type = nil, opts = {}) return unless Tml.config.enabled? type ||= :default type = :dropdown if type == :select opts = opts.collect{|key, value| "data-tml-#{key}='#{value}'"}.join(' ') "<div data-tml-language-selector='#{type}' #{opts}></div>".html_safe end
tml_options_for_select(options, selected = nil, description = nil, lang = Tml.session.current_language)
click to toggle source
Translates <select><option></option></select>
# File lib/tml_rails/extensions/action_view_extension.rb, line 48 def tml_options_for_select(options, selected = nil, description = nil, lang = Tml.session.current_language) options_for_select(options.tro(description), selected) end
tml_scripts_tag(opts = {})
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 100 def tml_scripts_tag(opts = {}) return '' unless Tml.config.enabled? if opts[:js] js_opts = opts[:js].is_a?(Hash) ? opts[:js] : {} js_host = js_opts[:host] || 'https://tools.translationexchange.com/tml/stable/tml.min.js' html = [] html << "<script src='#{js_host}'></script>" html << '<script>' html << 'tml.init({' html << " key: '#{tml_application.key}', " html << " token: '#{tml_application.token}', " html << " debug: #{js_opts[:debug] || false}," if js_opts[:onload] html << ' onLoad: function() {' html << " #{js_opts[:onload]}" html << ' }' end html << '});' html << '</script>' return html.join.html_safe end agent_config = Tml.config.respond_to?(:agent) ? Tml.config.agent : {} agent_host = agent_config[:host] || 'https://tools.translationexchange.com/agent/stable/agent.min.js' if agent_config[:cache] t = Time.now t = t - (t.to_i % agent_config[:cache].to_i).seconds agent_host += "?ts=#{t.to_i}" end agent_config[:tools] = opts[:tools] || {} agent_config[:domain] = Tml.config.domain if Tml.config.domain agent_config[:locale] = tml_current_locale agent_config[:source] = tml_current_source agent_config[:css] = tml_application.css agent_config[:sdk] = Tml.respond_to?(:full_version) ? Tml.full_version : Tml::VERSION agent_config[:locale_strategy] = Tml.config.agent_locale_strategy agent_config[:languages] = [] tml_application.languages.each do |lang| agent_config[:languages] << { locale: lang.locale, english_name: lang.english_name, native_name: lang.native_name, flag_url: lang.flag_url } end html = [] html << '<script>' html << '(function() {' html << "var script = window.document.createElement('script');" html << "script.setAttribute('id', 'tml-agent');" html << "script.setAttribute('type', 'application/javascript');" html << "script.setAttribute('src', '#{agent_host}');" html << "script.setAttribute('charset', 'UTF-8');" html << 'script.onload = function() {' html << " Trex.init('#{tml_application.key}', #{agent_config.to_json.html_safe});" html << '};' html << "window.document.getElementsByTagName('head')[0].appendChild(script);" html << '})();' html << '</script>' html.join.html_safe end
tml_select_month(date, options = {}, html_options = {})
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 166 def tml_select_month(date, options = {}, html_options = {}) month_names = options[:use_short_month] ? Tml.config.default_abbr_month_names : Tml.config.default_month_names select_month(date, options.merge( :use_month_names => month_names.collect{|month_name| tml_current_language.translate(month_name, options[:description] || "Month name")} ), html_options) end
tml_source(source, &block)
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 190 def tml_source(source, &block) tml_with_options_tag({source: source}, &block) end
tml_style_attribute_tag(attr_name = 'float', default = 'right', lang = tml_current_language)
click to toggle source
switches CSS positions based on the language direction <%= tml_style_attribute_tag
('float', 'right') %> => “float: right” : “float: left” <%= tml_style_attribute_tag
('align', 'right') %> => “align: right” : “align: left”
# File lib/tml_rails/extensions/action_view_extension.rb, line 232 def tml_style_attribute_tag(attr_name = 'float', default = 'right', lang = tml_current_language) return "#{attr_name}:#{default}".html_safe if Tml.config.disabled? "#{attr_name}:#{lang.align(default)}".html_safe end
tml_style_directional_attribute_tag(attr_name = 'padding', default = 'right', value = '5px', lang = tml_current_language)
click to toggle source
supports directional CSS attributes <%= tml_style_directional_attribute_tag
('padding', 'right', '5px') %> => “padding-right: 5px” : “padding-left: 5px”
# File lib/tml_rails/extensions/action_view_extension.rb, line 239 def tml_style_directional_attribute_tag(attr_name = 'padding', default = 'right', value = '5px', lang = tml_current_language) return "#{attr_name}-#{default}:#{value}".html_safe if Tml.config.disabled? "#{attr_name}-#{lang.align(default)}:#{value}".html_safe end
tml_stylesheet_link_tag(ltr, rtl, attrs = {})
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 262 def tml_stylesheet_link_tag(ltr, rtl, attrs = {}) if tml_current_language.right_to_left? stylesheet_link_tag(rtl, attrs) else stylesheet_link_tag(ltr, attrs) end end
tml_url_tag(path)
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 221 def tml_url_tag(path) tml_application.url_for(path) end
tml_when_string_tag(time, opts = {})
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 194 def tml_when_string_tag(time, opts = {}) elapsed_seconds = Time.now - time if elapsed_seconds < 0 tr('in {num || second}', 'Time reference', {num: elapsed_seconds * -1}) elsif elapsed_seconds < 2.minutes tr('a moment ago', 'Time reference') elsif elapsed_seconds < 55.minutes elapsed_minutes = (elapsed_seconds / 1.minute).to_i tr('{minutes || minute} ago', 'Time reference', :minutes => elapsed_minutes) elsif elapsed_seconds < 1.75.hours tr('about an hour ago', 'Time reference') elsif elapsed_seconds < 12.hours elapsed_hours = (elapsed_seconds / 1.hour).to_i tr('{hours || hour} ago', 'Time reference', :hours => elapsed_hours) elsif time.today_in_time_zone? display_time(time, :time_am_pm) elsif time.yesterday_in_time_zone? tr("Yesterday at {time}", 'Time reference', :time => time.tr(:time_am_pm).gsub('/ ', '/').sub(/^[0:]*/,"")) elsif elapsed_seconds < 5.days time.tr(:day_time).gsub('/ ', '/').sub(/^[0:]*/,"") elsif time.same_year_in_time_zone? time.tr(:monthname_abbr_time).gsub('/ ', '/').sub(/^[0:]*/, '') else time.tr(:monthname_abbr_year_time).gsub('/ ', '/').sub(/^[0:]*/, '') end end
tml_with_options_tag(opts, &block)
click to toggle source
# File lib/tml_rails/extensions/action_view_extension.rb, line 173 def tml_with_options_tag(opts, &block) if Tml.config.disabled? return capture(&block) if block_given? return "" end Tml.session.push_block_options(opts) if block_given? ret = capture(&block) end Tml.session.pop_block_options ret end
Also aliased as: tml_block
trh(tokens = {}, options = {}, &block)
click to toggle source
Translates HTML block noinspection RubyArgCount
# File lib/tml_rails/extensions/action_view_extension.rb, line 38 def trh(tokens = {}, options = {}, &block) return '' unless block_given? label = capture(&block) tokenizer = Tml::Tokenizers::Dom.new(tokens, options) tokenizer.translate(label).html_safe end