跳转至

title: [ISSUE-0009] 国家标识用文字「US」而非 SVG 国旗 description: "国旗标识最好是用 svg" tags: [issue] created: 2026-05-26 updated: 2026-05-26 type: issue status: fixed severity: minor


[ISSUE-0009] 国家标识用文字「US」而非 SVG 国旗

相关源码src/sections/page/cell-renderers.tsx

用户感知的现象

"国旗标识最好是用 svg"

商家列表位置列显示「US Arkansas / Rogers」,「US」是文字。国际化品味的产品应该用真国旗 SVG。

修复方案

两种方案: - 方案 A:Emoji 国旗 —— 🇺🇸 🇨🇳 🇯🇵。零依赖,操作系统渲染。某些 Windows 默认字体不显示,需要 fallback。 - 方案 B:CDN SVG —— 用 https://flagcdn.com/w40/us.png 之类 CDN。需要联网,但效果稳定。 - 方案 C:bundle SVG 库 —— 比如 country-flag-icons 包,引入包大小(~50KB)。

最优选择:A + C fallback。先 emoji,浏览器不支持就用 SVG。但增加复杂度,实际选 A(emoji)足够,浏览器都支持 Unicode 区域指示符。

改动文件

文件 改了什么
src/sections/page/cell-renderers.tsx countryCodeToFlag(code) helper(Unicode 区域指示符算 emoji);RenderLocationCompact + RenderLocation 改用 emoji,加 fontFamily: '"Segoe UI Emoji", "Apple Color Emoji"' 强制系统 emoji 字体

实现细节

export function countryCodeToFlag(code) {
  if (!code || code.length !== 2) return '';
  const upper = code.toUpperCase();
  if (!/^[A-Z]{2}$/.test(upper)) return '';
  const base = 0x1f1e6 - 'A'.charCodeAt(0);
  return String.fromCodePoint(upper.charCodeAt(0) + base, upper.charCodeAt(1) + base);
}

例:'US' → '🇺🇸'。零依赖。

验证方式

打开商家列表 → 国家位置那列应显示 🇺🇸(Emoji 国旗,颜色丰富)。

如何避免再犯

  • 新功能涉及国家/语言 → 默认用 Unicode 国旗 emoji,无需额外依赖

相关问题