feat: Add i18n to commands description

This commit is contained in:
pomelo-nwu
2025-11-17 21:06:01 +08:00
parent 88b5717f83
commit 6cccf9cc59
36 changed files with 338 additions and 150 deletions

View File

@@ -14,6 +14,7 @@ import { Colors } from '../colors.js';
import { useKeypress } from '../hooks/useKeypress.js';
import { OpenAIKeyPrompt } from '../components/OpenAIKeyPrompt.js';
import { RadioButtonSelect } from '../components/shared/RadioButtonSelect.js';
import { t } from '../../i18n/index.js';
interface AuthDialogProps {
onSelect: (
@@ -53,10 +54,14 @@ export function AuthDialog({
const items = [
{
key: AuthType.QWEN_OAUTH,
label: 'Qwen OAuth',
label: t('Qwen OAuth'),
value: AuthType.QWEN_OAUTH,
},
{ key: AuthType.USE_OPENAI, label: 'OpenAI', value: AuthType.USE_OPENAI },
{
key: AuthType.USE_OPENAI,
label: t('OpenAI'),
value: AuthType.USE_OPENAI,
},
];
const initialAuthIndex = Math.max(
@@ -107,7 +112,9 @@ export function AuthDialog({
const handleOpenAIKeyCancel = () => {
setShowOpenAIKeyPrompt(false);
setErrorMessage('OpenAI API key is required to use OpenAI authentication.');
setErrorMessage(
t('OpenAI API key is required to use OpenAI authentication.'),
);
};
useKeypress(
@@ -125,7 +132,9 @@ export function AuthDialog({
if (settings.merged.security?.auth?.selectedType === undefined) {
// Prevent exiting if no auth method is set
setErrorMessage(
'You must select an auth method to proceed. Press Ctrl+C again to exit.',
t(
'You must select an auth method to proceed. Press Ctrl+C again to exit.',
),
);
return;
}
@@ -165,9 +174,9 @@ export function AuthDialog({
padding={1}
width="100%"
>
<Text bold>Get started</Text>
<Text bold>{t('Get started')}</Text>
<Box marginTop={1}>
<Text>How would you like to authenticate for this project?</Text>
<Text>{t('How would you like to authenticate for this project?')}</Text>
</Box>
<Box marginTop={1}>
<RadioButtonSelect
@@ -182,10 +191,10 @@ export function AuthDialog({
</Box>
)}
<Box marginTop={1}>
<Text color={Colors.AccentPurple}>(Use Enter to Set Auth)</Text>
<Text color={Colors.AccentPurple}>{t('(Use Enter to Set Auth)')}</Text>
</Box>
<Box marginTop={1}>
<Text>Terms of Services and Privacy Notice for Qwen Code</Text>
<Text>{t('Terms of Services and Privacy Notice for Qwen Code')}</Text>
</Box>
<Box marginTop={1}>
<Text color={Colors.AccentBlue}>

View File

@@ -13,6 +13,7 @@ import {
} from '@qwen-code/qwen-code-core';
import { AuthState } from '../types.js';
import { validateAuthMethod } from '../../config/auth.js';
import { t } from '../../i18n/index.js';
export function validateAuthMethodWithSettings(
authType: AuthType,
@@ -20,7 +21,13 @@ export function validateAuthMethodWithSettings(
): string | null {
const enforcedType = settings.merged.security?.auth?.enforcedType;
if (enforcedType && enforcedType !== authType) {
return `Authentication is enforced to be ${enforcedType}, but you are currently using ${authType}.`;
return t(
'Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.',
{
enforcedType,
currentType: authType,
},
);
}
if (settings.merged.security?.auth?.useExternal) {
return null;
@@ -76,7 +83,11 @@ export const useAuthCommand = (settings: LoadedSettings, config: Config) => {
setAuthError(null);
setAuthState(AuthState.Authenticated);
} catch (e) {
onAuthError(`Failed to login. Message: ${getErrorMessage(e)}`);
onAuthError(
t('Failed to login. Message: {{message}}', {
message: getErrorMessage(e),
}),
);
} finally {
setIsAuthenticating(false);
}