feat(admin,api,player): 赛事分组管理、盘口独立页与多语言展示优化
- 管理端按联赛展示单场,新增赛事/单场流程与列表展开状态保持 - 盘口赔率迁至独立页面,保存按钮仅在有修改时高亮 - API 新增联赛列表与子场查询,按 locale 返回队名并修复编译 - 波胆其它选项与促销标签等 i18n 补齐,文案更易懂
This commit is contained in:
@@ -97,16 +97,79 @@ export function countryFlagUrl(country: BuiltinCountry | string): string {
|
||||
return `https://flagcdn.com/w40/${c.iso}.png`;
|
||||
}
|
||||
|
||||
export function searchBuiltinCountries(keyword: string): BuiltinCountry[] {
|
||||
/** 按后台当前语言显示国家名(下拉只显示一种语言) */
|
||||
export function countryDisplayName(c: BuiltinCountry, locale: string): string {
|
||||
if (locale === 'en-US') return c.nameEn;
|
||||
if (locale === 'ms-MY') return countryNameMs(c);
|
||||
return c.nameZh;
|
||||
}
|
||||
|
||||
export function countryOptionLabel(c: BuiltinCountry, locale: string): string {
|
||||
return `${countryDisplayName(c, locale)} (${c.code})`;
|
||||
}
|
||||
|
||||
/** 常用国家队马来语名(无则用英文,避免与中文混排) */
|
||||
const COUNTRY_MS: Partial<Record<string, string>> = {
|
||||
CAN: 'Kanada',
|
||||
USA: 'Amerika Syarikat',
|
||||
MEX: 'Mexico',
|
||||
BRA: 'Brazil',
|
||||
ARG: 'Argentina',
|
||||
ENG: 'England',
|
||||
FRA: 'Perancis',
|
||||
GER: 'Jerman',
|
||||
ESP: 'Sepanyol',
|
||||
POR: 'Portugal',
|
||||
NED: 'Belanda',
|
||||
BEL: 'Belgium',
|
||||
CRO: 'Croatia',
|
||||
SUI: 'Switzerland',
|
||||
POL: 'Poland',
|
||||
SWE: 'Sweden',
|
||||
NOR: 'Norway',
|
||||
DEN: 'Denmark',
|
||||
JPN: 'Jepun',
|
||||
KOR: 'Korea Selatan',
|
||||
AUS: 'Australia',
|
||||
RSA: 'Afrika Selatan',
|
||||
MAR: 'Maghribi',
|
||||
SEN: 'Senegal',
|
||||
GHA: 'Ghana',
|
||||
EGY: 'Mesir',
|
||||
TUN: 'Tunisia',
|
||||
ALG: 'Algeria',
|
||||
KSA: 'Arab Saudi',
|
||||
QAT: 'Qatar',
|
||||
IRN: 'Iran',
|
||||
IRQ: 'Iraq',
|
||||
CHN: 'China',
|
||||
THA: 'Thailand',
|
||||
VIE: 'Vietnam',
|
||||
IDN: 'Indonesia',
|
||||
MAS: 'Malaysia',
|
||||
BIH: 'Bosnia',
|
||||
SCO: 'Scotland',
|
||||
WAL: 'Wales',
|
||||
NZL: 'New Zealand',
|
||||
};
|
||||
|
||||
function countryNameMs(c: BuiltinCountry): string {
|
||||
return COUNTRY_MS[c.code] ?? c.nameEn;
|
||||
}
|
||||
|
||||
export function searchBuiltinCountries(keyword: string, locale = 'zh-CN'): BuiltinCountry[] {
|
||||
const k = keyword.trim().toLowerCase();
|
||||
if (!k) return BUILTIN_COUNTRIES;
|
||||
return BUILTIN_COUNTRIES.filter(
|
||||
(c) =>
|
||||
return BUILTIN_COUNTRIES.filter((c) => {
|
||||
const display = countryDisplayName(c, locale);
|
||||
return (
|
||||
c.code.toLowerCase().includes(k) ||
|
||||
c.nameZh.includes(keyword.trim()) ||
|
||||
c.nameEn.toLowerCase().includes(k) ||
|
||||
c.iso.toLowerCase().includes(k),
|
||||
);
|
||||
display.toLowerCase().includes(k) ||
|
||||
c.iso.toLowerCase().includes(k)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveCountryCode(
|
||||
|
||||
Reference in New Issue
Block a user