- 🎉 {t('welcome_back')},{' '}
+ 🎉 {upperCaseFirstLetter(t('welcome_back'))},{' '}
{profile.nickname.length > NICKNAME_MAX_LENGTH
? `${profile.nickname.slice(0, NICKNAME_MAX_LENGTH)}...`
: profile.nickname}
diff --git a/apps/pwa/src/pages/player/pages/musicbill/filter.tsx b/apps/pwa/src/pages/player/pages/musicbill/filter.tsx
index 3a00cf99..d4d8fffb 100644
--- a/apps/pwa/src/pages/player/pages/musicbill/filter.tsx
+++ b/apps/pwa/src/pages/player/pages/musicbill/filter.tsx
@@ -3,6 +3,8 @@ import Input from '@/components/input';
import { useEffect, useState } from 'react';
import useNavigate from '@/utils/use_navigate';
import { Query } from '@/constants';
+import { t } from '@/i18n';
+import upperCaseFirstLetter from '#/utils/upper_case_first_letter';
import { FILTER_HEIGHT } from './constants';
const Style = styled.div`
@@ -49,7 +51,7 @@ function Filter() {
inputProps={{
value: keyword,
onChange: (event) => setKeyword(event.target.value),
- placeholder: '乐单内查找',
+ placeholder: upperCaseFirstLetter(t('find_in_musicbill')),
}}
/>
diff --git a/apps/pwa/src/pages/player/pages/musicbill/info.tsx b/apps/pwa/src/pages/player/pages/musicbill/info.tsx
index 066539db..fa052b85 100644
--- a/apps/pwa/src/pages/player/pages/musicbill/info.tsx
+++ b/apps/pwa/src/pages/player/pages/musicbill/info.tsx
@@ -2,6 +2,8 @@ import styled from 'styled-components';
import day from '#/utils/day';
import { CSSVariable } from '@/global_style';
import getResizedImage from '@/server/asset/get_resized_image';
+import { t } from '@/i18n';
+import upperCaseFirstLetter from '@/style/upper_case_first_letter';
import { Musicbill } from '../../constants';
import { INFO_HEIGHT } from './constants';
import Operation from './operation';
@@ -35,6 +37,7 @@ const Style = styled.div`
> .create-time {
font-size: 12px;
color: ${CSSVariable.TEXT_COLOR_SECONDARY};
+ ${upperCaseFirstLetter}
}
}
`;
@@ -51,7 +54,8 @@ function Info({ musicbill }: { musicbill: Musicbill }) {
{musicbill.name}
- 创建于 {day(musicbill.createTimestamp).format('YYYY-MM-DD HH:mm')}
+ {t('create_at')}{' '}
+ {day(musicbill.createTimestamp).format('YYYY-MM-DD HH:mm')}
diff --git a/apps/pwa/src/pages/player/pages/musicbill/operation.tsx b/apps/pwa/src/pages/player/pages/musicbill/operation.tsx
index dc9a62fa..24ca7bc1 100644
--- a/apps/pwa/src/pages/player/pages/musicbill/operation.tsx
+++ b/apps/pwa/src/pages/player/pages/musicbill/operation.tsx
@@ -8,6 +8,8 @@ import {
} from 'react-icons/md';
import { RequestStatus } from '@/constants';
import notice from '@/utils/notice';
+import { t } from '@/i18n';
+import upperCaseFirstLetter from '#/utils/upper_case_first_letter';
import playerEventemitter, {
EventType as PlayerEventType,
} from '../../eventemitter';
@@ -34,7 +36,7 @@ function Operation({ musicbill }: { musicbill: Musicbill }) {
musicList,
},
)
- : notice.error('乐单暂无音乐')
+ : notice.error(upperCaseFirstLetter(t('no_music_in_musicbill')))
}
>
diff --git a/apps/pwa/src/pages/player/pages/user_manage/create_user_dialog.tsx b/apps/pwa/src/pages/player/pages/user_manage/create_user_dialog.tsx
index cb0a911a..128771b6 100644
--- a/apps/pwa/src/pages/player/pages/user_manage/create_user_dialog.tsx
+++ b/apps/pwa/src/pages/player/pages/user_manage/create_user_dialog.tsx
@@ -7,6 +7,7 @@ import notice from '@/utils/notice';
import { EMAIL } from '#/constants/regexp';
import logger from '@/utils/logger';
import adminCreateUser from '@/server/api/admin_create_user';
+import { t } from '@/i18n';
import e, { EventType } from './eventemitter';
import { ZIndex } from '../../constants';
@@ -33,11 +34,8 @@ function CreateUserDialog() {
const [loading, setLoading] = useState(false);
const onCreate = async () => {
- if (!email) {
- return notice.error('请输入邮箱');
- }
- if (!EMAIL.test(email)) {
- return notice.error('邮箱格式错误');
+ if (!email || !EMAIL.test(email)) {
+ return notice.error(t('please_enter_valid_email'));
}
setLoading(true);
@@ -47,11 +45,11 @@ function CreateUserDialog() {
remark: remark.replace(/\s+/g, ' ').trim(),
});
- notice.info('已创建用户');
+ notice.info(t('user_created'));
onClose();
e.emit(EventType.RELOAD_DATA, null);
} catch (error) {
- logger.error(error, '创建用户失败');
+ logger.error(error, 'Failed to create user');
notice.error(error.message);
}
setLoading(false);
@@ -67,10 +65,10 @@ function CreateUserDialog() {
return (