Change language detector threshold from 140 characters to 4 words (#10376)

Add `lang` attribute to statuses in web UI
master
Eugen Rochko 6 years ago committed by GitHub
parent 94e5e834f2
commit e6cfa7ab89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      app/javascript/mastodon/components/status_content.js
  2. 4
      app/lib/language_detector.rb

@ -183,14 +183,14 @@ export default class StatusContent extends React.PureComponent {
return ( return (
<div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}> <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}>
<p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }}> <p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }}>
<span dangerouslySetInnerHTML={spoilerContent} /> <span dangerouslySetInnerHTML={spoilerContent} lang={status.get('language')} />
{' '} {' '}
<button tabIndex='0' className={`status__content__spoiler-link ${hidden ? 'status__content__spoiler-link--show-more' : 'status__content__spoiler-link--show-less'}`} onClick={this.handleSpoilerClick}>{toggleText}</button> <button tabIndex='0' className={`status__content__spoiler-link ${hidden ? 'status__content__spoiler-link--show-more' : 'status__content__spoiler-link--show-less'}`} onClick={this.handleSpoilerClick}>{toggleText}</button>
</p> </p>
{mentionsPlaceholder} {mentionsPlaceholder}
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} /> <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} />
</div> </div>
); );
} else if (this.props.onClick) { } else if (this.props.onClick) {
@ -202,6 +202,7 @@ export default class StatusContent extends React.PureComponent {
className={classNames} className={classNames}
style={directionStyle} style={directionStyle}
dangerouslySetInnerHTML={content} dangerouslySetInnerHTML={content}
lang={status.get('language')}
onMouseDown={this.handleMouseDown} onMouseDown={this.handleMouseDown}
onMouseUp={this.handleMouseUp} onMouseUp={this.handleMouseUp}
/>, />,
@ -220,6 +221,7 @@ export default class StatusContent extends React.PureComponent {
className='status__content' className='status__content'
style={directionStyle} style={directionStyle}
dangerouslySetInnerHTML={content} dangerouslySetInnerHTML={content}
lang={status.get('language')}
/> />
); );
} }

@ -3,7 +3,7 @@
class LanguageDetector class LanguageDetector
include Singleton include Singleton
CHARACTER_THRESHOLD = 140 WORDS_THRESHOLD = 4
RELIABLE_CHARACTERS_RE = /[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}]+/m RELIABLE_CHARACTERS_RE = /[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}]+/m
def initialize def initialize
@ -37,7 +37,7 @@ class LanguageDetector
end end
def sufficient_text_length?(text) def sufficient_text_length?(text)
text.size >= CHARACTER_THRESHOLD text.split(/\s+/).size >= WORDS_THRESHOLD
end end
def language_specific_character_set?(text) def language_specific_character_set?(text)

Loading…
Cancel
Save