Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Refactor: shared locale data module for all locale-aware components

未关闭
#23 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
40/100
Issue 类型
重构
描述清晰度
描述清楚
活跃度
活跃
技术栈
react, tailwindcss, typescript

调研方向

Start by comparing the locale tables in src/registry/components/language-switcher.tsx and src/registry/components/navbar.tsx to see where their coverage and lookup rules differ. Then check src/registry/registry.ts to see how a new registry entry is declared. The work is done when the new src/registry/components/locale-data.ts exports the helpers, both components use it instead of their own tables, and the locale-data unit tests and existing component tests pass.

由索引模型根据 Issue 内容生成。

描述

enhancement infrastructure priority: medium

Refactor: shared locale data module

LanguageSwitcher and NavBar each carry their own copy of locale display data:

  • language-switcher.tsx — LANG_TO_FLAG, LANG_NAMES, RTL_LOCALES (~90 languages)
  • navbar.tsx — LOCALE_MAP (~35 languages, label + flag only, no RTL)

The two have drifted (different coverage, different lookup rules), and every new locale-aware component (pill switcher, locale picker, RTL wrapper) will need the same data.

Proposal
  • Add src/registry/components/locale-data.ts exporting getLocaleLabel(code, mode), getLocaleFlag(code), isRtlLocale(code) and a resolveLocale(locale: Locale) helper that applies label / flag / rtl overrides.
  • Fall back to Intl.DisplayNames for languages not in the built-in table instead of returning the raw code.
  • Register it in src/registry/registry.ts (e.g. locale-data) so shadcn installs pull it in as a registryDependency.
  • Migrate LanguageSwitcher and NavBar to it; delete the duplicate tables.
Acceptance
  • No locale table left inside individual components
  • Unit tests for locale-data.ts (overrides, region subtags, unknown codes, RTL)
  • Existing component tests still pass

See ARCHITECTURE.md.

主要语言
TypeScript
星标
39
派生
16
平均合并
2 天 12 小时
30 天内合并 PR
10

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

babelize/babelize-elements 的其他 Issue

查看 babelize/babelize-elements 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。