Skip to content

Commit e6cfa7a

Browse files
authored
Change language detector threshold from 140 characters to 4 words (mastodon#10376)
Add `lang` attribute to statuses in web UI
1 parent 94e5e83 commit e6cfa7a

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

app/javascript/mastodon/components/status_content.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,14 @@ export default class StatusContent extends React.PureComponent {
183183
return (
184184
<div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}>
185185
<p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }}>
186-
<span dangerouslySetInnerHTML={spoilerContent} />
186+
<span dangerouslySetInnerHTML={spoilerContent} lang={status.get('language')} />
187187
{' '}
188188
<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>
189189
</p>
190190

191191
{mentionsPlaceholder}
192192

193-
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} />
193+
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} />
194194
</div>
195195
);
196196
} else if (this.props.onClick) {
@@ -202,6 +202,7 @@ export default class StatusContent extends React.PureComponent {
202202
className={classNames}
203203
style={directionStyle}
204204
dangerouslySetInnerHTML={content}
205+
lang={status.get('language')}
205206
onMouseDown={this.handleMouseDown}
206207
onMouseUp={this.handleMouseUp}
207208
/>,
@@ -220,6 +221,7 @@ export default class StatusContent extends React.PureComponent {
220221
className='status__content'
221222
style={directionStyle}
222223
dangerouslySetInnerHTML={content}
224+
lang={status.get('language')}
223225
/>
224226
);
225227
}

app/lib/language_detector.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class LanguageDetector
44
include Singleton
55

6-
CHARACTER_THRESHOLD = 140
6+
WORDS_THRESHOLD = 4
77
RELIABLE_CHARACTERS_RE = /[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}]+/m
88

99
def initialize
@@ -37,7 +37,7 @@ def reliable_input?(text)
3737
end
3838

3939
def sufficient_text_length?(text)
40-
text.size >= CHARACTER_THRESHOLD
40+
text.split(/\s+/).size >= WORDS_THRESHOLD
4141
end
4242

4343
def language_specific_character_set?(text)

0 commit comments

Comments
 (0)