improve i18n and fix tooltip focus behavior

This commit is contained in:
pa
2026-01-22 21:15:46 +09:00
parent ba7ffa5497
commit f0b7d74555
9 changed files with 38 additions and 34 deletions

View File

@@ -73,7 +73,6 @@
<Button
class="mt-1"
size="xs"
variant="outline"
:disabled="!!instance?.closedAt"
@click="closeInstance(resolvedInstanceLocation)">
{{ t('dialog.user.info.close_instance') }}

View File

@@ -217,7 +217,7 @@
<span
class="h-3 w-3 shrink-0 rounded-sm"
:style="{ backgroundColor: theme.swatch }" />
<span class="truncate">{{ theme.label }}</span>
<span class="truncate">{{ themeColorDisplayName(theme) }}</span>
</span>
</DropdownMenuCheckboxItem>
</DropdownMenuSubContent>
@@ -235,7 +235,7 @@
indicator-position="right"
@select="handleTableDensitySelect('standard')">
<span>{{
t('view.settings.appearance.appearance.table_density_standard')
t('view.settings.appearance.appearance.table_density_comfortable')
}}</span>
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem
@@ -243,7 +243,7 @@
indicator-position="right"
@select="handleTableDensitySelect('comfortable')">
<span>{{
t('view.settings.appearance.appearance.table_density_comfortable')
t('view.settings.appearance.appearance.table_density_standard')
}}</span>
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem
@@ -567,6 +567,18 @@
return THEME_CONFIG[themeKey]?.name ?? themeKey;
};
const themeColorDisplayName = (theme) => {
if (!theme) {
return '';
}
const i18nKey = `view.settings.appearance.theme_color.${theme.key}`;
const translated = t(i18nKey);
if (translated !== i18nKey) {
return translated;
}
return theme.label || theme.key;
};
const handleSettingsClick = () => {
router.push({ name: 'settings' });
};

View File

@@ -197,17 +197,12 @@
<TooltipWrapper
v-if="avatarDialog.isFavorite"
side="top"
:ignore-non-keyboard-focus="true"
:content="t('dialog.avatar.actions.favorite_tooltip')">
<Button class="rounded-full" size="icon-lg" @click="avatarDialogCommand('Add Favorite')"
><Star
/></Button>
</TooltipWrapper>
<TooltipWrapper
v-else
side="top"
:ignore-non-keyboard-focus="true"
:content="t('dialog.avatar.actions.favorite_tooltip')">
<TooltipWrapper v-else side="top" :content="t('dialog.avatar.actions.favorite_tooltip')">
<Button
class="rounded-full"
size="icon-lg"

View File

@@ -4,15 +4,10 @@
<TooltipWrapper
v-if="userDialog.isFavorite"
side="top"
:ignore-non-keyboard-focus="true"
:content="t('dialog.user.actions.unfavorite_tooltip')">
<Button class="rounded-full" size="icon-lg" @click="userDialogCommand('Add Favorite')"><Star /></Button>
</TooltipWrapper>
<TooltipWrapper
v-else
side="top"
:ignore-non-keyboard-focus="true"
:content="t('dialog.user.actions.favorite_tooltip')">
<TooltipWrapper v-else side="top" :content="t('dialog.user.actions.favorite_tooltip')">
<Button class="rounded-full" size="icon-lg" variant="outline" @click="userDialogCommand('Add Favorite')"
><Star
/></Button>

View File

@@ -172,17 +172,12 @@
<TooltipWrapper
v-if="worldDialog.isFavorite"
side="top"
:ignore-non-keyboard-focus="true"
:content="t('dialog.world.actions.favorites_tooltip')">
<Button class="rounded-full" size="icon-lg" @click="worldDialogCommand('Add Favorite')"
><Star
/></Button>
</TooltipWrapper>
<TooltipWrapper
v-else
side="top"
:ignore-non-keyboard-focus="true"
:content="t('dialog.world.actions.favorites_tooltip')">
<TooltipWrapper v-else side="top" :content="t('dialog.world.actions.favorites_tooltip')">
<Button
class="rounded-full"
size="icon-lg"

View File

@@ -1,14 +1,14 @@
<script setup>
import { TooltipProvider } from 'reka-ui';
import { TooltipProvider } from 'reka-ui';
const props = defineProps({
delayDuration: { type: Number, required: false, default: 0 },
skipDelayDuration: { type: Number, required: false },
disableHoverableContent: { type: Boolean, required: false },
disableClosingTrigger: { type: Boolean, required: false },
disabled: { type: Boolean, required: false },
ignoreNonKeyboardFocus: { type: Boolean, required: false }
});
const props = defineProps({
delayDuration: { type: Number, required: false, default: 0 },
skipDelayDuration: { type: Number, required: false },
disableHoverableContent: { type: Boolean, required: false },
disableClosingTrigger: { type: Boolean, required: false },
disabled: { type: Boolean, required: false },
ignoreNonKeyboardFocus: { type: Boolean, required: false, default: true }
});
</script>
<template>

View File

@@ -16,7 +16,7 @@
sideOffset: { type: Number, required: false },
delayDuration: { type: Number, required: false },
disableHoverableContent: { type: Boolean, required: false },
ignoreNonKeyboardFocus: { type: Boolean, required: false },
ignoreNonKeyboardFocus: { type: Boolean, required: false, default: true },
disabled: { type: Boolean, required: false },
triggerAsChild: { type: Boolean, required: false, default: true },
contentClass: { type: null, required: false }

View File

@@ -614,7 +614,15 @@
"force_iso_date_format": "Force ISO Date Format"
},
"theme_color": {
"header": "Theme Color"
"header": "Theme Color",
"default": "Zinc",
"blue": "Blue",
"green": "Green",
"orange": "Orange",
"red": "Red",
"rose": "Rose",
"violet": "Violet",
"yellow": "Yellow"
},
"side_panel": {
"header": "Side Panel",

View File

@@ -21,7 +21,7 @@ export const THEME_CONFIG = {
export const THEME_COLORS = [
{
key: 'default',
label: 'Default',
label: 'Zinc',
swatch: 'oklch(0.205 0 0)',
file: null
},