kopia lustrzana https://github.com/iv-org/invidious
				
				
				
			make it so interpolation text can be a hash
Co-Authored-By: Samantaz Fox <coding@samantaz.fr>pull/4412/head
							rodzic
							
								
									ef6b766b29
								
							
						
					
					
						commit
						26429bee3f
					
				| 
						 | 
				
			
			@ -117,7 +117,7 @@ module Invidious::Frontend::Comments
 | 
			
		|||
 | 
			
		||||
            image_array.each_index do |i|
 | 
			
		||||
              html << <<-END_HTML
 | 
			
		||||
                  <div class="slides-item slide-#{i + 1}" id="#{child["commentId"]}-slide-#{i + 1}" aria-label="#{translate(locale, "carousel_slide", nil, {"current" => (i + 1).to_s, "total" => image_array.size.to_s})}" tabindex="0">
 | 
			
		||||
                  <div class="slides-item slide-#{i + 1}" id="#{child["commentId"]}-slide-#{i + 1}" aria-label="#{translate(locale, "carousel_slide", {"current" => (i + 1).to_s, "total" => image_array.size.to_s})}" tabindex="0">
 | 
			
		||||
                    <img loading="lazy" src="/ggpht#{URI.parse(image_array[i][1]["url"].as_s).request_target}" alt="" />
 | 
			
		||||
                  </div>
 | 
			
		||||
                END_HTML
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,7 +78,7 @@ def load_all_locales
 | 
			
		|||
  return locales
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
def translate(locale : String?, key : String, text : String | Nil = nil, texts : Hash(String, String) | Nil = nil) : String
 | 
			
		||||
def translate(locale : String?, key : String, text : String | Hash(String, String) | Nil = nil) : String
 | 
			
		||||
  # Log a warning if "key" doesn't exist in en-US locale and return
 | 
			
		||||
  # that key as the text, so this is more or less transparent to the user.
 | 
			
		||||
  if !LOCALES["en-US"].has_key?(key)
 | 
			
		||||
| 
						 | 
				
			
			@ -101,10 +101,12 @@ def translate(locale : String?, key : String, text : String | Nil = nil, texts :
 | 
			
		|||
    match_length = 0
 | 
			
		||||
 | 
			
		||||
    raw_data.as_h.each do |hash_key, value|
 | 
			
		||||
      if md = text.try &.match(/#{hash_key}/)
 | 
			
		||||
        if md[0].size >= match_length
 | 
			
		||||
          translation = value.as_s
 | 
			
		||||
          match_length = md[0].size
 | 
			
		||||
      if text.is_a?(String)
 | 
			
		||||
        if md = text.try &.match(/#{hash_key}/)
 | 
			
		||||
          if md[0].size >= match_length
 | 
			
		||||
            translation = value.as_s
 | 
			
		||||
            match_length = md[0].size
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -114,12 +116,12 @@ def translate(locale : String?, key : String, text : String | Nil = nil, texts :
 | 
			
		|||
    raise "Invalid translation \"#{raw_data}\""
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  if text
 | 
			
		||||
  if text.is_a?(String)
 | 
			
		||||
    translation = translation.gsub("`x`", text)
 | 
			
		||||
  elsif texts
 | 
			
		||||
  elsif text.is_a?(Hash(String, String))
 | 
			
		||||
    # adds support for multi string interpolation. Based on i18next https://www.i18next.com/translation-function/interpolation#basic
 | 
			
		||||
    texts.each_key do |hash_key|
 | 
			
		||||
      translation = translation.gsub("{{#{hash_key}}}", texts[hash_key])
 | 
			
		||||
    text.each_key do |hash_key|
 | 
			
		||||
      translation = translation.gsub("{{#{hash_key}}}", text[hash_key])
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue