Skip to content
Extraits de code Groupes Projets
language_detector.rb 785 octets
Newer Older
  • Learn to ignore specific revisions
  • # frozen_string_literal: true
    
    class LanguageDetector
      attr_reader :text, :account
    
      def initialize(text, account = nil)
        @text = text
        @account = account
    
    Akihiko Odaki's avatar
    Akihiko Odaki a validé
        @identifier = CLD3::NNetLanguageIdentifier.new(1, 2048)
    
        detected_language_code || default_locale.to_sym
    
    Akihiko Odaki's avatar
    Akihiko Odaki a validé
        result.language.to_sym if detected_language_reliable?
    
    Akihiko Odaki's avatar
    Akihiko Odaki a validé
      def result
        @result ||= @identifier.find_language(text_without_urls)
    
      end
    
      def detected_language_reliable?
    
    Akihiko Odaki's avatar
    Akihiko Odaki a validé
        result.reliable?
    
      def text_without_urls
        text.dup.tap do |new_text|
          URI.extract(new_text).each do |url|
            new_text.gsub!(url, '')
          end
        end
      end
    
    
      def default_locale
    
        account&.user_locale || I18n.default_locale