Skip to content
Extraits de code Groupes Projets
language_detector.rb 914 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
    
      def prepared_text
        simplified_text.strip
      end
    
    
    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(prepared_text)
    
      end
    
      def detected_language_reliable?
    
    Akihiko Odaki's avatar
    Akihiko Odaki a validé
        result.reliable?
    
        text.dup.tap do |new_text|
    
          new_text.gsub!(FetchLinkCardService::URL_PATTERN, '')
    
          new_text.gsub!(Account::MENTION_RE, '')
          new_text.gsub!(Tag::HASHTAG_RE, '')
          new_text.gsub!(/\s+/, ' ')
    
      def default_locale
    
        account&.user_locale&.to_sym || nil