From 7dfa5d6d1bf30ee71b7cfaba422ce41e31bb084e Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 May 2025 13:54:12 +0200 Subject: [PATCH] [Glitch] Add ability to translate server rules Port 8c51a8ba94a16ac94c865e37559a6e01e30884a9 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/about/index.jsx | 19 ++++++++++++------- .../flavours/glitch/features/report/rules.jsx | 6 ++++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/javascript/flavours/glitch/features/about/index.jsx b/app/javascript/flavours/glitch/features/about/index.jsx index 970972ee2e..81132f21e7 100644 --- a/app/javascript/flavours/glitch/features/about/index.jsx +++ b/app/javascript/flavours/glitch/features/about/index.jsx @@ -44,6 +44,7 @@ const severityMessages = { const mapStateToProps = state => ({ server: state.getIn(['server', 'server']), + locale: state.getIn(['meta', 'locale']), extendedDescription: state.getIn(['server', 'extendedDescription']), domainBlocks: state.getIn(['server', 'domainBlocks']), }); @@ -91,6 +92,7 @@ class About extends PureComponent { static propTypes = { server: ImmutablePropTypes.map, + locale: ImmutablePropTypes.string, extendedDescription: ImmutablePropTypes.map, domainBlocks: ImmutablePropTypes.contains({ isLoading: PropTypes.bool, @@ -114,7 +116,7 @@ class About extends PureComponent { }; render () { - const { multiColumn, intl, server, extendedDescription, domainBlocks } = this.props; + const { multiColumn, intl, server, extendedDescription, domainBlocks, locale } = this.props; const isLoading = server.get('isLoading'); return ( @@ -168,12 +170,15 @@ class About extends PureComponent {

) : (
    - {server.get('rules').map(rule => ( -
  1. -
    {rule.get('text')}
    - {rule.get('hint').length > 0 && (
    {rule.get('hint')}
    )} -
  2. - ))} + {server.get('rules').map(rule => { + const text = rule.getIn(['translations', locale, 'text']) || rule.get('text'); + const hint = rule.getIn(['translations', locale, 'hint']) || rule.get('hint'); + return ( +
  3. +
    {text}
    + {hint.length > 0 && (
    {hint}
    )} +
  4. + )})}
))} diff --git a/app/javascript/flavours/glitch/features/report/rules.jsx b/app/javascript/flavours/glitch/features/report/rules.jsx index 96903f1dec..b77d75df2f 100644 --- a/app/javascript/flavours/glitch/features/report/rules.jsx +++ b/app/javascript/flavours/glitch/features/report/rules.jsx @@ -12,6 +12,7 @@ import Option from './components/option'; const mapStateToProps = state => ({ rules: state.getIn(['server', 'server', 'rules']), + locale: state.getIn(['meta', 'locale']), }); class Rules extends PureComponent { @@ -19,6 +20,7 @@ class Rules extends PureComponent { static propTypes = { onNextStep: PropTypes.func.isRequired, rules: ImmutablePropTypes.list, + locale: PropTypes.string, selectedRuleIds: ImmutablePropTypes.set.isRequired, onToggle: PropTypes.func.isRequired, }; @@ -34,7 +36,7 @@ class Rules extends PureComponent { }; render () { - const { rules, selectedRuleIds } = this.props; + const { rules, locale, selectedRuleIds } = this.props; return ( <> @@ -49,7 +51,7 @@ class Rules extends PureComponent { value={item.get('id')} checked={selectedRuleIds.includes(item.get('id'))} onToggle={this.handleRulesToggle} - label={item.get('text')} + label={item.getIn(['translations', locale, 'text']) || item.get('text')} multiple /> ))}