Files
api/web/src/components/UpdateOs/CallbackButton.vue
Eli Bosley 31c41027fc feat: translations now use crowdin (translate.unraid.net) (#1739)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- App-wide internationalization: dynamic locale detection/loading, many
new locale bundles, and CLI helpers to extract/sort translation keys.

- **Accessibility**
  - Brand button supports keyboard activation (Enter/Space).

- **Documentation**
  - Internationalization guidance added to API and Web READMEs.

- **Refactor**
- UI updated to use centralized i18n keys and a unified locale loading
approach.

- **Tests**
  - Test utilities updated to support i18n and localized assertions.

- **Chores**
- Crowdin config and i18n scripts added; runtime locale exposed for
selection.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-10-13 16:56:08 -04:00

31 lines
793 B
Vue

<script setup lang="ts">
import { useI18n } from 'vue-i18n';
import { ArrowPathIcon, ArrowTopRightOnSquareIcon } from '@heroicons/vue/24/solid';
import { BrandButton } from '@unraid/ui';
import type { BrandButtonProps } from '@unraid/ui';
import { useAccountStore } from '~/store/account';
const { variant } = defineProps<{
variant?: BrandButtonProps['variant'];
}>();
const { t } = useI18n();
const accountStore = useAccountStore();
</script>
<template>
<div class="flex flex-col items-center sm:shrink-0 sm:grow-0">
<BrandButton
:variant="variant"
:icon="ArrowPathIcon"
:icon-right="ArrowTopRightOnSquareIcon"
:text="t('updateOs.callbackButton.checkForOsUpdates')"
class="flex-0"
@click="accountStore.updateOs()"
/>
</div>
</template>