added i18n for backend errors
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import { useFluent } from 'fluent-vue';
|
||||
import { ApiError } from './api/client';
|
||||
|
||||
export function useErrorTranslator() {
|
||||
const { $t } = useFluent();
|
||||
|
||||
function translateError(err: unknown): string {
|
||||
if (err instanceof ApiError) {
|
||||
// Convert "AUTH_INVALID_CREDENTIALS" -> "error-auth-invalid-credentials"
|
||||
const key = `error-${err.code.toLowerCase().replace(/_/g, '-')}`;
|
||||
|
||||
const translated = $t(key);
|
||||
|
||||
// Fallback to the message provided by backend.
|
||||
if (translated === key) {
|
||||
return err.message;
|
||||
}
|
||||
|
||||
return translated;
|
||||
}
|
||||
|
||||
if (err instanceof Error) {
|
||||
return err.message;
|
||||
}
|
||||
|
||||
return $t('shared-error');
|
||||
}
|
||||
|
||||
return { translateError };
|
||||
}
|
||||
Reference in New Issue
Block a user