Skip to content

Commit 10c9095

Browse files
author
Greg Burch
committed
Localize Create PR remote labels
1 parent aa27cd4 commit 10c9095

File tree

4 files changed

+121
-21
lines changed

4 files changed

+121
-21
lines changed

frontend/src/components/dialogs/tasks/CreatePRDialog.tsx

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
import BranchSelector from '@/components/tasks/BranchSelector';
2222
import { useCallback, useEffect, useState } from 'react';
2323
import { attemptsApi } from '@/lib/api.ts';
24+
import { useTranslation } from 'react-i18next';
2425

2526
import {
2627
GitBranch,
@@ -50,6 +51,7 @@ const CreatePrDialog = NiceModal.create(() => {
5051
const [selectedHeadRemote, setSelectedHeadRemote] = useState<string | null>(
5152
null
5253
);
54+
const { t } = useTranslation(['tasks']);
5355

5456
const getRemoteFromBranchName = useCallback((branchName?: string | null) => {
5557
if (!branchName) return null;
@@ -88,10 +90,7 @@ const CreatePrDialog = NiceModal.create(() => {
8890
}
8991
}
9092

91-
if (
92-
!projectBranches.length &&
93-
!data.attempt.target_branch
94-
) {
93+
if (!projectBranches.length && !data.attempt.target_branch) {
9594
setPrBaseBranch('');
9695
}
9796

@@ -219,7 +218,15 @@ const CreatePrDialog = NiceModal.create(() => {
219218
}
220219
}
221220
setCreatingPR(false);
222-
}, [data, prBaseBranch, prBody, prTitle, selectedRemote, modal]);
221+
}, [
222+
data,
223+
prBaseBranch,
224+
prBody,
225+
prTitle,
226+
selectedRemote,
227+
selectedHeadRemote,
228+
modal,
229+
]);
223230

224231
const handleCancelCreatePR = useCallback(() => {
225232
modal.hide();
@@ -247,26 +254,32 @@ const CreatePrDialog = NiceModal.create(() => {
247254
</DialogHeader>
248255
<div className="space-y-4 py-4">
249256
<div className="space-y-2">
250-
<Label htmlFor="pr-title">Title</Label>
257+
<Label htmlFor="pr-title">
258+
{t('tasks:git.createPr.labels.title')}
259+
</Label>
251260
<Input
252261
id="pr-title"
253262
value={prTitle}
254263
onChange={(e) => setPrTitle(e.target.value)}
255-
placeholder="Enter PR title"
264+
placeholder={t('tasks:git.createPr.placeholders.title')}
256265
/>
257266
</div>
258267
<div className="space-y-2">
259-
<Label htmlFor="pr-body">Description (optional)</Label>
268+
<Label htmlFor="pr-body">
269+
{t('tasks:git.createPr.labels.descriptionOptional')}
270+
</Label>
260271
<Textarea
261272
id="pr-body"
262273
value={prBody}
263274
onChange={(e) => setPrBody(e.target.value)}
264-
placeholder="Enter PR description"
275+
placeholder={t('tasks:git.createPr.placeholders.description')}
265276
rows={4}
266277
/>
267278
</div>
268279
<div className="space-y-2">
269-
<Label htmlFor="pr-remote">Remote</Label>
280+
<Label htmlFor="pr-remote">
281+
{t('tasks:git.createPr.labels.remote')}
282+
</Label>
270283
<Select
271284
value={selectedRemote ?? undefined}
272285
onValueChange={(value) => setSelectedRemote(value)}
@@ -281,24 +294,28 @@ const CreatePrDialog = NiceModal.create(() => {
281294
<SelectValue
282295
placeholder={
283296
remotesLoading
284-
? 'Loading remotes...'
297+
? t('tasks:git.createPr.placeholders.remote.loading')
285298
: remotes.length === 0
286-
? 'No remotes found'
287-
: 'Select remote'
299+
? t('tasks:git.createPr.placeholders.remote.empty')
300+
: t('tasks:git.createPr.placeholders.remote.default')
288301
}
289302
/>
290303
</SelectTrigger>
291304
<SelectContent>
292305
{remotes.map((remote) => (
293306
<SelectItem key={remote.name} value={remote.name}>
294-
{remote.url ? `${remote.name} (${remote.url})` : remote.name}
307+
{remote.url
308+
? `${remote.name} (${remote.url})`
309+
: remote.name}
295310
</SelectItem>
296311
))}
297312
</SelectContent>
298313
</Select>
299314
</div>
300315
<div className="space-y-2">
301-
<Label htmlFor="pr-head-remote">Source Remote</Label>
316+
<Label htmlFor="pr-head-remote">
317+
{t('tasks:git.createPr.labels.sourceRemote')}
318+
</Label>
302319
<Select
303320
value={selectedHeadRemote ?? undefined}
304321
onValueChange={(value) => setSelectedHeadRemote(value)}
@@ -313,30 +330,38 @@ const CreatePrDialog = NiceModal.create(() => {
313330
<SelectValue
314331
placeholder={
315332
remotesLoading
316-
? 'Loading remotes...'
333+
? t('tasks:git.createPr.placeholders.remote.loading')
317334
: remotes.length === 0
318-
? 'No remotes found'
319-
: 'Select source remote'
335+
? t('tasks:git.createPr.placeholders.remote.empty')
336+
: t(
337+
'tasks:git.createPr.placeholders.sourceRemote.default'
338+
)
320339
}
321340
/>
322341
</SelectTrigger>
323342
<SelectContent>
324343
{remotes.map((remote) => (
325344
<SelectItem key={remote.name} value={remote.name}>
326-
{remote.url ? `${remote.name} (${remote.url})` : remote.name}
345+
{remote.url
346+
? `${remote.name} (${remote.url})`
347+
: remote.name}
327348
</SelectItem>
328349
))}
329350
</SelectContent>
330351
</Select>
331352
</div>
332353
<div className="space-y-2">
333-
<Label htmlFor="pr-base">Base Branch</Label>
354+
<Label htmlFor="pr-base">
355+
{t('tasks:git.createPr.labels.baseBranch')}
356+
</Label>
334357
<BranchSelector
335358
branches={branches}
336359
selectedBranch={prBaseBranch}
337360
onBranchSelect={setPrBaseBranch}
338361
placeholder={
339-
branchesLoading ? 'Loading branches...' : 'Select base branch'
362+
branchesLoading
363+
? t('tasks:git.createPr.placeholders.baseBranch.loading')
364+
: t('tasks:git.createPr.placeholders.baseBranch.default')
340365
}
341366
className={
342367
branchesLoading ? 'opacity-50 cursor-not-allowed' : ''

frontend/src/i18n/locales/en/tasks.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,31 @@
8181
"creating": "Creating...",
8282
"createPr": "Create PR"
8383
},
84+
"createPr": {
85+
"labels": {
86+
"title": "Title",
87+
"descriptionOptional": "Description (optional)",
88+
"remote": "Remote",
89+
"sourceRemote": "Source Remote",
90+
"baseBranch": "Base Branch"
91+
},
92+
"placeholders": {
93+
"title": "Enter PR title",
94+
"description": "Enter PR description",
95+
"remote": {
96+
"default": "Select remote",
97+
"loading": "Loading remotes...",
98+
"empty": "No remotes found"
99+
},
100+
"sourceRemote": {
101+
"default": "Select source remote"
102+
},
103+
"baseBranch": {
104+
"default": "Select base branch",
105+
"loading": "Loading branches..."
106+
}
107+
}
108+
},
84109
"errors": {
85110
"changeTargetBranch": "Failed to change target branch",
86111
"pushChanges": "Failed to push changes",

frontend/src/i18n/locales/es/tasks.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,31 @@
8181
"creating": "Creando...",
8282
"createPr": "Crear PR"
8383
},
84+
"createPr": {
85+
"labels": {
86+
"title": "Título",
87+
"descriptionOptional": "Descripción (opcional)",
88+
"remote": "Remoto",
89+
"sourceRemote": "Remoto de origen",
90+
"baseBranch": "Rama base"
91+
},
92+
"placeholders": {
93+
"title": "Ingresa el título del PR",
94+
"description": "Ingresa la descripción del PR",
95+
"remote": {
96+
"default": "Selecciona un remoto",
97+
"loading": "Cargando remotos...",
98+
"empty": "No hay remotos"
99+
},
100+
"sourceRemote": {
101+
"default": "Selecciona un remoto de origen"
102+
},
103+
"baseBranch": {
104+
"default": "Selecciona una rama base",
105+
"loading": "Cargando ramas..."
106+
}
107+
}
108+
},
84109
"errors": {
85110
"changeTargetBranch": "Error al cambiar rama de destino",
86111
"pushChanges": "Error al enviar cambios",

frontend/src/i18n/locales/ja/tasks.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,31 @@
8181
"creating": "作成中...",
8282
"createPr": "PRを作成"
8383
},
84+
"createPr": {
85+
"labels": {
86+
"title": "タイトル",
87+
"descriptionOptional": "説明(任意)",
88+
"remote": "リモート",
89+
"sourceRemote": "ソースリモート",
90+
"baseBranch": "ベースブランチ"
91+
},
92+
"placeholders": {
93+
"title": "PRのタイトルを入力",
94+
"description": "PRの説明を入力",
95+
"remote": {
96+
"default": "リモートを選択",
97+
"loading": "リモートを読み込み中...",
98+
"empty": "利用可能なリモートがありません"
99+
},
100+
"sourceRemote": {
101+
"default": "ソースリモートを選択"
102+
},
103+
"baseBranch": {
104+
"default": "ベースブランチを選択",
105+
"loading": "ブランチを読み込み中..."
106+
}
107+
}
108+
},
84109
"errors": {
85110
"changeTargetBranch": "ターゲットブランチの変更に失敗しました",
86111
"pushChanges": "変更のプッシュに失敗しました",

0 commit comments

Comments
 (0)