feat: add i18n framework with Indonesian translation support (#124)
* feat: add i18n support with separate translation files - Extract translations from store.js to separate files for easier management - Add translation files for English (en.js), Indonesian (id.js), Turkish (tr.js), and Chinese (zh.js) - Load translations via window.translations object before Alpine store initialization - Add Bahasa Indonesia option to language selector * feat: translate remaining hardcoded UI strings - Update index.html to use t() for Menu and GitHub labels - Update views to translate Tier, Quota, Live, tier badges, and close button - Update components to use translated error messages and confirmation dialogs - Update utils to use translated validation and error messages - Update app-init.js to use translated OAuth success/error messages
This commit is contained in:
committed by
GitHub
parent
9ffb83ab74
commit
e2d03f9b25
@@ -26,7 +26,7 @@ window.AccountActions.refreshAccount = async function(email) {
|
||||
|
||||
const data = await response.json();
|
||||
if (data.status !== 'ok') {
|
||||
return { success: false, error: data.error || 'Refresh failed' };
|
||||
return { success: false, error: data.error || Alpine.store('global').t('refreshFailed') };
|
||||
}
|
||||
|
||||
// 触发数据刷新
|
||||
@@ -73,7 +73,7 @@ window.AccountActions.toggleAccount = async function(email, enabled) {
|
||||
|
||||
const data = await response.json();
|
||||
if (data.status !== 'ok') {
|
||||
throw new Error(data.error || 'Toggle failed');
|
||||
throw new Error(data.error || Alpine.store('global').t('toggleFailed'));
|
||||
}
|
||||
|
||||
// 确认服务器状态
|
||||
@@ -111,7 +111,7 @@ window.AccountActions.deleteAccount = async function(email) {
|
||||
|
||||
const data = await response.json();
|
||||
if (data.status !== 'ok') {
|
||||
return { success: false, error: data.error || 'Delete failed' };
|
||||
return { success: false, error: data.error || Alpine.store('global').t('deleteFailed') };
|
||||
}
|
||||
|
||||
// 触发数据刷新
|
||||
@@ -146,7 +146,7 @@ window.AccountActions.getFixAccountUrl = async function(email) {
|
||||
|
||||
const data = await response.json();
|
||||
if (data.status !== 'ok') {
|
||||
return { success: false, error: data.error || 'Failed to get auth URL' };
|
||||
return { success: false, error: data.error || Alpine.store('global').t('authUrlFailed') };
|
||||
}
|
||||
|
||||
return { success: true, url: data.url };
|
||||
@@ -176,7 +176,7 @@ window.AccountActions.reloadAccounts = async function() {
|
||||
|
||||
const data = await response.json();
|
||||
if (data.status !== 'ok') {
|
||||
return { success: false, error: data.error || 'Reload failed' };
|
||||
return { success: false, error: data.error || Alpine.store('global').t('reloadFailed') };
|
||||
}
|
||||
|
||||
// 触发数据刷新
|
||||
|
||||
Reference in New Issue
Block a user