ソースを参照

添加语言资源及翻译

sw 5 日 前
コミット
848c87aeba

+ 6 - 0
src/assets/i18n/messages/en.js

@@ -221,4 +221,10 @@ export default {
   'login.unknownError': 'Unknown error',
   'login.emergency.success': 'Emergency mode activated successfully',
   'login.emergency.failed': 'Emergency operation failed: ',
+  'nav.logout': 'Logout',
+  'register.filter.protocol': 'Protocol',
+  'register.filter.view': 'View',
+  'register.register': 'Register',
+  'register.exam': 'Exam',
+  'register.no.views': 'No selectable views available'
 };

+ 7 - 0
src/assets/i18n/messages/zh.js

@@ -221,4 +221,11 @@ export default {
   'login.unknownError': '未知错误',
   'login.emergency.success': '急诊模式启动成功',
   'login.emergency.failed': '急诊操作失败:',
+  'nav.config':'配置',
+'nav.logout':'退出',
+'register.filter.protocol':'协议',
+'register.filter.view':'体位',
+'register.register':'注册',
+'register.exam':'检查',
+'register.no.views':'暂无可选择体位'
 };

+ 10 - 3
src/layouts/SystemZone.tsx

@@ -9,6 +9,7 @@ import { IconButton } from '@/components/IconButton';
 import ExitModal from '@/components/ExitModal';
 import LanguageSettingModal from '@/components/LanguageSettingModal';
 import { showNotImplemented } from '@/utils/notificationHelper';
+import { FormattedMessage } from 'react-intl';
 
 interface SystemZoneProps {
   onMenuClick?: (key: string) => void;
@@ -70,7 +71,7 @@ const SystemZone = forwardRef<HTMLDivElement, SystemZoneProps>(
                 theme="default"
                 size="2x"
                 state="normal"
-                //widthPx={32}// 和size 2x 保持一致
+              //widthPx={32}// 和size 2x 保持一致
               />
             }
             iconPlace="left"
@@ -79,7 +80,10 @@ const SystemZone = forwardRef<HTMLDivElement, SystemZoneProps>(
             style={{ padding: '4px 16px' }}
             onClick={handleLanguageClick}
           >
-            配置
+            <FormattedMessage
+              id="nav.config"
+              defaultMessage={'nav.config'}
+            />
           </IconButton>
 
           <MeButton
@@ -109,7 +113,10 @@ const SystemZone = forwardRef<HTMLDivElement, SystemZoneProps>(
             style={{ padding: '4px 16px' }}
             onClick={handleExitClick}
           >
-            退出
+            <FormattedMessage
+              id="nav.logout"
+              defaultMessage={'nav.logout'}
+            />
           </IconButton>
         </Space>
 

+ 1 - 1
src/pages/patient/components/ProcedureCard.tsx

@@ -30,7 +30,7 @@ const ProcedureCard: React.FC<ProcedureCardProps> = ({ procedure, style }) => {
       }}
       bodyStyle={{ padding: 0, textAlign: 'center' }}
     >
-      {procedure.procedure_name}
+      {procedure.procedure_name_local}
     </Card>
   );
 };

+ 12 - 3
src/pages/patient/components/RegisterAvailableFilterBar.tsx

@@ -9,6 +9,7 @@ import { PatientType } from '@/API/patientType';
 // import { BodyPart } from '@/API/bodyPart';
 // import { setCurrentBodyPart } from '@/states/bodyPartSlice';
 import { fetchViewsOrProtocols } from '@/states/patient/viewSelection';
+import { useIntl } from 'react-intl';
 
 interface Props {
   // setSelected: (val: 'protocol' | 'view') => void;
@@ -44,7 +45,15 @@ const RegisterAvailableFilterBar: React.FC<Props> = ({
   //   { label: '启用', value: 'enabled' },
   //   { label: '停用', value: 'disabled' },
   // ];
-
+  const intl = useIntl();
+  const viewText = intl.formatMessage({
+    id: 'register.filter.view',
+    defaultMessage: 'register.filter.view',
+  });
+  const protocolText = intl.formatMessage({
+    id: 'register.filter.protocol',
+    defaultMessage: 'register.filter.protocol',
+  });
   return (
     <div
       className="absolute top-0 left-0 right-0 z-10"
@@ -54,8 +63,8 @@ const RegisterAvailableFilterBar: React.FC<Props> = ({
         <Col xs={24} sm={12} md={12} lg={12} xl={12}>
           <Segmented
             options={[
-              { label: '协议', value: 'protocol' },
-              { label: '体位', value: 'view' },
+              { label: protocolText, value: 'protocol' },
+              { label: viewText, value: 'view' },
             ]}
             value={selected}
             onChange={(val) => {

+ 7 - 2
src/pages/patient/components/register.available.view.list.tsx

@@ -6,12 +6,14 @@ import { getViewIconUrl } from '@/API/bodyPosition';
 import type { RootState } from '@/states/store'; // 假设RootState已定义
 import { View } from '@/states/patient/viewSelection';
 import { addSelectedView } from '@/states/patient/viewSelection';
+import { useIntl } from 'react-intl';
 
 const RegisterViewList: React.FC = () => {
   // 监听selectedViews
   const availableViews = useSelector(
     (state: RootState) => state.viewSelection.availableViews
   );
+  const intl = useIntl();
   const dispatch = useDispatch();
 
   const handleCardClick = (view: View) => {
@@ -22,7 +24,10 @@ const RegisterViewList: React.FC = () => {
     <Row>
       {availableViews.length === 0 ? (
         <Col span={24}>
-          <Empty description="暂无已选择体位" />
+          <Empty description={intl.formatMessage({
+              id: 'register.no.views',
+              defaultMessage: 'register.no.views',
+            })} />
         </Col>
       ) : (
         availableViews.map((view) => (
@@ -41,7 +46,7 @@ const RegisterViewList: React.FC = () => {
                   objectFit: 'cover',
                 }}
               />
-              <div>{view.view_description}</div>
+              <div>{view.view_name_local}</div>
               {/* 可根据需要展示更多字段 */}
             </Card>
           </Col>

+ 8 - 2
src/pages/patient/register.tsx

@@ -247,7 +247,10 @@ const RegisterPage: React.FC = () => {
         }}
       >
         <Button type="primary" onClick={handleRegister}>
-          注册
+                      <FormattedMessage
+                        id="register.register"
+                        defaultMessage={'register.register'}
+                      />
         </Button>
         <Button
           type="default"
@@ -255,7 +258,10 @@ const RegisterPage: React.FC = () => {
             dispatch(setBusinessFlow('exam'));
           }}
         >
-          检查
+                                <FormattedMessage
+                        id="register.exam"
+                        defaultMessage={'register.exam'}
+                      />
         </Button>
       </Space>
     </>