From 0686c9569ef90dbc0423fd8db06227a547d990f8 Mon Sep 17 00:00:00 2001 From: Dave MacFarlane Date: Fri, 31 Oct 2025 10:52:12 -0400 Subject: [PATCH 1/2] [candidate_profile/conflict_resolver] Translate conflict resolver widget on candidate profile page This translates the conflict resolver widget on the candidate profile page into Japanese. --- Makefile | 1 + .../jsx/CandidateConflictsWidget.js | 30 ++++++++++++------- .../locale/conflict_resolver.pot | 8 +++++ .../ja/LC_MESSAGES/conflict_resolver.po | 9 ++++++ 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index a3bd480fd37..25c140b62c1 100755 --- a/Makefile +++ b/Makefile @@ -94,6 +94,7 @@ locales: msgfmt -o modules/configuration/locale/ja/LC_MESSAGES/configuration.mo modules/configuration/locale/ja/LC_MESSAGES/configuration.po msgfmt -o modules/configuration/locale/ja/LC_MESSAGES/configuration.mo modules/configuration/locale/ja/LC_MESSAGES/configuration.po msgfmt -o modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.mo modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.po + npx i18next-conv -l ja -s modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.po -t modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.json msgfmt -o modules/create_timepoint/locale/ja/LC_MESSAGES/create_timepoint.mo modules/create_timepoint/locale/ja/LC_MESSAGES/create_timepoint.po npx i18next-conv -l ja -s modules/create_timepoint/locale/ja/LC_MESSAGES/create_timepoint.po -t modules/create_timepoint/locale/ja/LC_MESSAGES/create_timepoint.json msgfmt -o modules/create_timepoint/locale/es/LC_MESSAGES/create_timepoint.mo modules/create_timepoint/locale/es/LC_MESSAGES/create_timepoint.po diff --git a/modules/conflict_resolver/jsx/CandidateConflictsWidget.js b/modules/conflict_resolver/jsx/CandidateConflictsWidget.js index 36f1abf1a03..be77dbd79e4 100644 --- a/modules/conflict_resolver/jsx/CandidateConflictsWidget.js +++ b/modules/conflict_resolver/jsx/CandidateConflictsWidget.js @@ -1,7 +1,10 @@ import '../../../node_modules/c3/c3.css'; import c3 from 'c3'; -import React, {useEffect} from 'react'; +import React, {useEffect, useState} from 'react'; import PropTypes from 'prop-types'; +import {useTranslation} from 'react-i18next'; +import 'I18nSetup'; +import jaStrings from '../locale/ja/LC_MESSAGES/conflict_resolver.json'; /** * Renders a representation of the candidate conflicts as a React @@ -11,10 +14,12 @@ import PropTypes from 'prop-types'; * @return {object} */ function CandidateConflictsWidget(props) { - const visits = getVisits(props.Conflicts); - const instruments = getInstruments(props.Conflicts); - + const {t, i18n} = useTranslation(); + const [reload, setReload] = useState(0); useEffect(() => { + const visits = getVisits(props.Conflicts); + const instruments = getInstruments(props.Conflicts); + i18n.addResourceBundle('ja', 'conflict_resolver', jaStrings); c3.generate({ bindto: '#conflictschart', data: { @@ -34,14 +39,14 @@ function CandidateConflictsWidget(props) { type: 'category', categories: visits, label: { - text: 'Visit', + text: t('Visit', {ns: 'loris'}), position: 'outer-center', }, }, y: { label: { position: 'outer-middle', - text: 'Number of Conflicts', + text: t('Number of Conflicts', {ns: 'conflict_resolver'}), }, }, }, @@ -58,18 +63,21 @@ function CandidateConflictsWidget(props) { }, }, }); - }); + setReload(reload+1); + }, [t]); return
  • - {'Click on instrument in legend to visit conflict resolver ' - + 'for that instrument across all visits.'} + {t('Click on instrument in legend to visit conflict resolver ' + + 'for that instrument across all visits.', + {ns: 'conflict_resolver'})}
  • - {'Click on bar in graph to visit conflict resolver ' - + 'for that visit and instrument combination.'} + {t('Click on bar in graph to visit conflict resolver ' + + 'for that visit and instrument combination.', + {ns: 'conflict_resolver'})}
; diff --git a/modules/conflict_resolver/locale/conflict_resolver.pot b/modules/conflict_resolver/locale/conflict_resolver.pot index aa626a59221..e4a5e0c9f21 100644 --- a/modules/conflict_resolver/locale/conflict_resolver.pot +++ b/modules/conflict_resolver/locale/conflict_resolver.pot @@ -27,3 +27,11 @@ msgstr "" msgid "Unresolved Conflicts" msgstr "" +msgid "Number of Conflicts" +msgstr "" + +msgid "Click on instrument in legend to visit conflict resolver for that instrument across all visits." +msgstr "" + +msgid "Click on bar in graph to visit conflict resolver for that visit and instrument combination." +msgstr "" diff --git a/modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.po b/modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.po index 42eada793cb..aa85f4aacfe 100644 --- a/modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.po +++ b/modules/conflict_resolver/locale/ja/LC_MESSAGES/conflict_resolver.po @@ -27,3 +27,12 @@ msgstr "データ入力の競合" msgid "Unresolved Conflicts" msgstr "未解決の紛争" + +msgid "Number of Conflicts" +msgstr "競合の数" + +msgid "Click on instrument in legend to visit conflict resolver for that instrument across all visits." +msgstr "凡例の機器をクリックすると、すべての訪問にわたってその機器の競合解決ツールにアクセスできます。" + +msgid "Click on bar in graph to visit conflict resolver for that visit and instrument combination." +msgstr "グラフ内のバーをクリックすると、その訪問と機器の組み合わせの競合解決ツールが表示されます。" From c5defc4acca5850bcbbaedd3d210a3dbf912e29f Mon Sep 17 00:00:00 2001 From: Dave MacFarlane Date: Fri, 31 Oct 2025 14:36:39 -0400 Subject: [PATCH 2/2] lint js --- modules/conflict_resolver/jsx/CandidateConflictsWidget.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/conflict_resolver/jsx/CandidateConflictsWidget.js b/modules/conflict_resolver/jsx/CandidateConflictsWidget.js index be77dbd79e4..631e986f5b8 100644 --- a/modules/conflict_resolver/jsx/CandidateConflictsWidget.js +++ b/modules/conflict_resolver/jsx/CandidateConflictsWidget.js @@ -72,12 +72,12 @@ function CandidateConflictsWidget(props) {
  • {t('Click on instrument in legend to visit conflict resolver ' + 'for that instrument across all visits.', - {ns: 'conflict_resolver'})} + {ns: 'conflict_resolver'})}
  • {t('Click on bar in graph to visit conflict resolver ' + 'for that visit and instrument combination.', - {ns: 'conflict_resolver'})} + {ns: 'conflict_resolver'})}
  • ;