diff --git a/src/renderer/src/components/editors/SetEditor.vue b/src/renderer/src/components/editors/SetEditor.vue
index 24ff89c..8f50692 100644
--- a/src/renderer/src/components/editors/SetEditor.vue
+++ b/src/renderer/src/components/editors/SetEditor.vue
@@ -42,7 +42,7 @@ async function addMember() {
}
showAddDialog.value = false
newMember.value = ''
- ElMessage.success('Added')
+ ElMessage.success(t('editor.added'))
} catch (err: any) {
ElMessage.error(err.message)
}
@@ -51,10 +51,10 @@ async function addMember() {
async function removeMember(member: string) {
if (!connStore.activeId || !keyStore.selectedKey) return
try {
- await ElMessageBox.confirm(`Remove member "${member}"?`, 'Confirm')
+ await ElMessageBox.confirm(t('editor.removeMemberConfirm', { member }), t('common.confirm'))
await window.electronAPI.redis.setRemove(connStore.activeId, keyStore.selectedKey, [member])
members.value = members.value.filter(m => m !== member)
- ElMessage.success('Removed')
+ ElMessage.success(t('editor.removed'))
} catch (err: any) {
if (err !== 'cancel') ElMessage.error(err.message)
}
diff --git a/src/renderer/src/components/editors/StreamEditor.vue b/src/renderer/src/components/editors/StreamEditor.vue
index f70e4d0..90ddba1 100644
--- a/src/renderer/src/components/editors/StreamEditor.vue
+++ b/src/renderer/src/components/editors/StreamEditor.vue
@@ -147,7 +147,7 @@ async function destroyGroup(groupName: string) {
if (!connStore.activeId || !keyStore.selectedKey) return
try {
await ElMessageBox.confirm(
- `Destroy consumer group "${groupName}"?`, 'Confirm',
+ t('editor.destroyGroupConfirm', { name: groupName }), t('common.confirm'),
{ type: 'warning' }
)
await window.electronAPI.redis.streamGroupDestroy(
@@ -193,7 +193,7 @@ async function addEntry() {
}
}
if (fieldValues.length === 0) {
- ElMessage.warning('Add at least one field')
+ ElMessage.warning(t('editor.addFieldWarning'))
return
}
@@ -207,7 +207,7 @@ async function addEntry() {
})
showAddDialog.value = false
newFields.value = [{ key: '', value: '' }]
- ElMessage.success('Added')
+ ElMessage.success(t('editor.added'))
} catch (err: any) {
ElMessage.error(err.message)
}
@@ -216,10 +216,10 @@ async function addEntry() {
async function deleteEntry(entry: StreamEntry) {
if (!connStore.activeId || !keyStore.selectedKey) return
try {
- await ElMessageBox.confirm(`Delete entry "${entry.id}"?`, 'Confirm')
+ await ElMessageBox.confirm(t('editor.deleteEntryConfirm', { id: entry.id }), t('common.confirm'))
await window.electronAPI.redis.streamDel(connStore.activeId, keyStore.selectedKey, [entry.id])
entries.value = entries.value.filter(e => e.id !== entry.id)
- ElMessage.success('Deleted')
+ ElMessage.success(t('editor.deleted'))
} catch (err: any) {
if (err !== 'cancel') ElMessage.error(err.message)
}
@@ -228,12 +228,12 @@ async function deleteEntry(entry: StreamEntry) {
async function trimStream() {
if (!connStore.activeId || !keyStore.selectedKey) return
try {
- await ElMessageBox.confirm(`Trim stream to max ${trimMaxLen.value} entries?`, 'Confirm')
+ await ElMessageBox.confirm(t('editor.trimConfirmDetail', { n: trimMaxLen.value }), t('common.confirm'))
trimming.value = true
const removed = await window.electronAPI.redis.streamTrim(
connStore.activeId, keyStore.selectedKey, trimMaxLen.value
)
- ElMessage.success(`Removed ${removed} entries`)
+ ElMessage.success(t('editor.trimmed', { n: removed }))
await loadEntries()
} catch (err: any) {
if (err !== 'cancel') ElMessage.error(err.message)
@@ -247,7 +247,7 @@ async function trimStream() {
STREAM
- {{ entries.length }} entries
+ {{ t('editor.entries', { n: entries.length }) }}
{{ t('common.add') }}
diff --git a/src/renderer/src/components/editors/StringEditor.vue b/src/renderer/src/components/editors/StringEditor.vue
index 54c37a3..1a8fc8f 100644
--- a/src/renderer/src/components/editors/StringEditor.vue
+++ b/src/renderer/src/components/editors/StringEditor.vue
@@ -137,7 +137,7 @@ async function save() {
await window.electronAPI.redis.setString(connStore.activeId, keyStore.selectedKey, editedValue.value)
keyStore.keyData = editedValue.value
isEditing.value = false
- ElMessage.success('Saved')
+ ElMessage.success(t('editor.saved'))
} catch (err: any) {
ElMessage.error(err.message)
}
@@ -180,10 +180,10 @@ onUnmounted(() => {
{{ t('editor.format') }}: {{ detectedFormat }}
- Edit
+ {{ t('editor.edit') }}
- Save
- Cancel
+ {{ t('editor.save') }}
+ {{ t('editor.cancel') }}
diff --git a/src/renderer/src/components/editors/ZsetEditor.vue b/src/renderer/src/components/editors/ZsetEditor.vue
index 96fc3ad..3034294 100644
--- a/src/renderer/src/components/editors/ZsetEditor.vue
+++ b/src/renderer/src/components/editors/ZsetEditor.vue
@@ -52,7 +52,7 @@ async function addMember() {
showAddDialog.value = false
newMember.value = ''
newScore.value = 0
- ElMessage.success('Added')
+ ElMessage.success(t('editor.added'))
} catch (err: any) {
ElMessage.error(err.message)
}
@@ -61,10 +61,10 @@ async function addMember() {
async function removeMember(member: string) {
if (!connStore.activeId || !keyStore.selectedKey) return
try {
- await ElMessageBox.confirm(`Remove member "${member}"?`, 'Confirm')
+ await ElMessageBox.confirm(t('editor.removeMemberConfirm', { member }), t('common.confirm'))
await window.electronAPI.redis.zsetRemove(connStore.activeId, keyStore.selectedKey, [member])
items.value = items.value.filter(i => i.member !== member)
- ElMessage.success('Removed')
+ ElMessage.success(t('editor.removed'))
} catch (err: any) {
if (err !== 'cancel') ElMessage.error(err.message)
}
diff --git a/src/renderer/src/i18n/locales/de.ts b/src/renderer/src/i18n/locales/de.ts
index 6c4c2de..dbbb5f9 100644
--- a/src/renderer/src/i18n/locales/de.ts
+++ b/src/renderer/src/i18n/locales/de.ts
@@ -13,6 +13,8 @@ export default {
error: 'Fehler',
loading: 'Laden...',
noData: 'Keine Daten',
+ prev: 'Zurück',
+ next: 'Weiter',
},
app: {
title: 'JRedisDesktop',
@@ -202,6 +204,16 @@ export default {
sortDesc: 'Absteigend',
filteredCount: '{n} gefiltert',
fieldCount: '{n} Felder',
+ deleted: 'Gelöscht',
+ deleteFieldConfirm: 'Feld "{field}" löschen?',
+ removeElementConfirm: 'Dieses Element entfernen?',
+ removeMemberConfirm: 'Mitglied "{member}" entfernen?',
+ destroyGroupConfirm: 'Consumer-Gruppe "{name}" zerstören?',
+ deleteEntryConfirm: 'Eintrag "{id}" löschen?',
+ trimConfirmDetail: 'Stream auf maximal {n} Einträge kürzen?',
+ trimmed: '{n} Einträge entfernt',
+ entries: '{n} Einträge',
+ addFieldWarning: 'Mindestens ein Feld hinzufügen',
},
cli: {
title: 'CLI',
diff --git a/src/renderer/src/i18n/locales/en.ts b/src/renderer/src/i18n/locales/en.ts
index 28dd7d2..649cab2 100644
--- a/src/renderer/src/i18n/locales/en.ts
+++ b/src/renderer/src/i18n/locales/en.ts
@@ -13,6 +13,8 @@ export default {
error: 'Error',
loading: 'Loading...',
noData: 'No data',
+ prev: 'Prev',
+ next: 'Next',
},
app: {
title: 'JRedisDesktop',
@@ -202,6 +204,16 @@ export default {
sortDesc: 'Descending',
filteredCount: '{n} filtered',
fieldCount: '{n} fields',
+ deleted: 'Deleted',
+ deleteFieldConfirm: 'Delete field "{field}"?',
+ removeElementConfirm: 'Remove this element?',
+ removeMemberConfirm: 'Remove member "{member}"?',
+ destroyGroupConfirm: 'Destroy consumer group "{name}"?',
+ deleteEntryConfirm: 'Delete entry "{id}"?',
+ trimConfirmDetail: 'Trim stream to max {n} entries?',
+ trimmed: 'Removed {n} entries',
+ entries: '{n} entries',
+ addFieldWarning: 'Add at least one field',
},
cli: {
title: 'CLI',
diff --git a/src/renderer/src/i18n/locales/ja.ts b/src/renderer/src/i18n/locales/ja.ts
index 4db9452..2d3b998 100644
--- a/src/renderer/src/i18n/locales/ja.ts
+++ b/src/renderer/src/i18n/locales/ja.ts
@@ -13,6 +13,8 @@ export default {
error: 'エラー',
loading: '読み込み中...',
noData: 'データなし',
+ prev: '前へ',
+ next: '次へ',
},
app: {
title: 'JRedisDesktop',
@@ -202,6 +204,16 @@ export default {
sortDesc: '降順',
filteredCount: '{n} 個フィルター済み',
fieldCount: '{n} 個のフィールド',
+ deleted: '削除済み',
+ deleteFieldConfirm: 'フィールド "{field}" を削除しますか?',
+ removeElementConfirm: 'この要素を削除しますか?',
+ removeMemberConfirm: 'メンバー "{member}" を削除しますか?',
+ destroyGroupConfirm: 'コンシューマーグループ "{name}" を破棄しますか?',
+ deleteEntryConfirm: 'エントリー "{id}" を削除しますか?',
+ trimConfirmDetail: 'ストリームを最大 {n} 件にトリムしますか?',
+ trimmed: '{n} 件削除しました',
+ entries: '{n} 件',
+ addFieldWarning: '少なくとも1つのフィールドを追加してください',
},
cli: {
title: 'CLI',
diff --git a/src/renderer/src/i18n/locales/ko.ts b/src/renderer/src/i18n/locales/ko.ts
index 7621f5d..4e9c621 100644
--- a/src/renderer/src/i18n/locales/ko.ts
+++ b/src/renderer/src/i18n/locales/ko.ts
@@ -13,6 +13,8 @@ export default {
error: '오류',
loading: '로딩 중...',
noData: '데이터 없음',
+ prev: '이전',
+ next: '다음',
},
app: {
title: 'JRedisDesktop',
@@ -202,6 +204,16 @@ export default {
sortDesc: '내림차순',
filteredCount: '{n}개 필터링됨',
fieldCount: '{n}개 필드',
+ deleted: '삭제됨',
+ deleteFieldConfirm: '필드 "{field}"를 삭제하시겠습니까?',
+ removeElementConfirm: '이 요소를 제거하시겠습니까?',
+ removeMemberConfirm: '멤버 "{member}"를 제거하시겠습니까?',
+ destroyGroupConfirm: '컨슈머 그룹 "{name}"를 파기하시겠습니까?',
+ deleteEntryConfirm: '엔트리 "{id}"를 삭제하시겠습니까?',
+ trimConfirmDetail: '스트림을 최대 {n}개로 트림하시겠습니까?',
+ trimmed: '{n}개 제거됨',
+ entries: '{n}개',
+ addFieldWarning: '최소 하나의 필드를 추가하세요',
},
cli: {
title: 'CLI',
diff --git a/src/renderer/src/i18n/locales/zh-CN.ts b/src/renderer/src/i18n/locales/zh-CN.ts
index 8ae0876..6cf8f23 100644
--- a/src/renderer/src/i18n/locales/zh-CN.ts
+++ b/src/renderer/src/i18n/locales/zh-CN.ts
@@ -13,6 +13,8 @@ export default {
error: '错误',
loading: '加载中...',
noData: '暂无数据',
+ prev: '上一页',
+ next: '下一页',
},
app: {
title: 'JRedis客户端',
@@ -202,6 +204,16 @@ export default {
sortDesc: '降序',
filteredCount: '已过滤 {n} 项',
fieldCount: '{n} 个字段',
+ deleted: '已删除',
+ deleteFieldConfirm: '确认删除字段 "{field}"?',
+ removeElementConfirm: '确认移除此元素?',
+ removeMemberConfirm: '确认移除成员 "{member}"?',
+ destroyGroupConfirm: '确认销毁消费组 "{name}"?',
+ deleteEntryConfirm: '确认删除条目 "{id}"?',
+ trimConfirmDetail: '将流裁剪至最多 {n} 条?',
+ trimmed: '已移除 {n} 条',
+ entries: '{n} 条',
+ addFieldWarning: '请至少添加一个字段',
},
cli: {
title: '命令行',