Skip to content

国际化面试题

本题库共收录 66 道面试题(基础 15 / 进阶 29 / 深入 14 / 架构 8)。 本文件收录国际化相关面试题,目标题量 150 道。 题型覆盖:概念题、场景设计题、系统设计题、工程化题、性能优化题、安全题、软技能题、综合开放题。 难度覆盖:基础、进阶、深入、架构。 每道题除标准参考答案外,另附口头回答版,便于面试时快速组织语言。

目录


基础题(8 道)

FB-33-CO-B-001:i18n 与 l10n 有什么区别?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:i18n、l10n、国际化、本地化 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请解释国际化(i18n)与本地化(l10n)的区别,并举例说明。

参考答案

  • i18n(Internationalization):国际化,是产品具备支持多语言/多地区的能力。它发生在产品开发阶段,强调架构和代码层面的可扩展性。
    • 例如:使用翻译 key 而非硬编码文案、支持 RTL、时区/数字格式化、分离文化与代码。
  • l10n(Localization):本地化,是把产品适配到特定地区的过程。它发生在内容/运营阶段。
    • 例如:把中文翻译成英文、把日期格式改为 MM/DD/YYYY、使用当地货币、调整图标颜色/图片以符合文化习惯。

关系:

  • i18n 是 l10n 的基础;没有好的国际化架构,本地化成本高、易出错。
  • l10n 不仅包括翻译,还包括法律、文化、UX 习惯等。

评分维度

  • 概念区分(50%):i18n 能力 vs l10n 适配
  • 举例能力(30%):翻译、格式、文化
  • 关系理解(20%):基础与过程

常见错误

  • 把 i18n 简单等同于“做多语言翻译”。
  • 认为先写死中文再改也来得及,忽视架构成本。

延伸追问

  • 全球化(g11n)与 i18n、l10n 的关系是什么?
  • 本地化是否包括合规(如 GDPR、个保法)?

相关题目

参考资源

口头回答版

i18n 国际化是产品具备支持多语言多地区的能力,比如用 key 而不是硬编码、支持 RTL;l10n 本地化是把它适配到具体地区,比如翻译、改日期格式、用当地货币。i18n 是 l10n 的基础。


FB-33-CO-B-002:locale 标识应该如何选择与管理?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:locale、BCP 47、语言标签、区域 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明 locale 的常见格式(如 zh-CNen-US),并说明前端如何选择和切换 locale。

参考答案

Locale 格式:

  • 推荐遵循 BCP 47,如 language[-script][-region][-variant]
  • 常见示例:zh-CNzh-Hansen-USen-GBja-JP
  • 区分语言与区域很重要:比如 en-USen-GB 在日期、货币、拼写上不同。

选择与切换:

  • 用户显式选择:优先级最高,保存到 Cookie/localStorage/账号偏好。
  • URL 路径/域名:如 /zh-CN/docszh.example.com,利于 SEO。
  • 浏览器语言navigator.language / navigator.languages 作为默认。
  • IP/账号区域:兜底策略,但需尊重用户选择。

管理要点:

  • 统一 locale 解析函数,处理大小写、下划线转连字符(zh_CN -> zh-CN)。
  • 维护支持的 locale 列表与回退链(如 zh-Hans-CN -> zh-Hans -> zh -> en)。
  • 切换时重新加载语言包并刷新相关组件。

评分维度

  • 格式规范(40%):BCP 47、语言-区域
  • 选择策略(40%):显式、URL、浏览器、IP
  • 回退管理(20%):解析、回退链

常见错误

  • 只根据 navigator.language 强制设定,不尊重用户选择。
  • locale 格式不统一,导致匹配失败。

延伸追问

  • 如何支持同一语言多地区(如西班牙语在西班牙和拉美)?
  • locale 切换后数字/日期格式如何同步更新?

相关题目

参考资源

口头回答版

locale 推荐用 BCP 47 格式,比如 zh-CN、en-US。选择优先级:用户显式选择最高,然后是 URL、浏览器语言、IP 兜底。要统一解析、维护回退链,切换时重载语言包。


FB-33-CO-B-003:翻译文件应该如何组织?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:翻译文件、JSON、YAML、命名空间、目录结构 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请说明前端项目中翻译文件的组织方式,包括目录结构、命名空间和拆分策略。

参考答案

组织方式:

locales/
  en/
    common.json
    home.json
    user.json
  zh-CN/
    common.json
    home.json
    user.json

设计要点:

  • 按语言分目录:每个 locale 一个目录,便于打包和加载。
  • 按页面/模块分命名空间:避免单个文件过大,支持按需加载。
  • 通用与业务分离common.json 放全局文案,user.json 放用户模块。
  • key 语义化:如 home.titleuser.login.button,避免用英文句子作 key。
  • 插值占位符:使用 {{name}}{count},避免硬编码拼接。
  • 版本管理:翻译文件纳入版本控制或 TMS,方便 diff 和回滚。

加载策略:

  • 首屏加载核心语言包,路由切换时懒加载对应命名空间。
  • 构建时按 locale 拆分为独立 chunk。

评分维度

  • 目录结构(40%):按语言、模块组织
  • key 设计(30%):语义化、插值
  • 加载策略(30%):按需、懒加载、拆分

常见错误

  • 所有文案塞一个文件,导致首包过大。
  • key 用英文原文,修改后所有引用都要改。

延伸追问

  • 如何支持一个 key 在不同上下文有不同翻译?
  • 翻译文件过大时如何分包?

相关题目

参考资源

口头回答版

翻译文件按语言分目录、按模块分命名空间,比如 locales/zh-CN/common.json、home.json。key 要语义化,用插值占位符。首屏加载核心包,其他路由懒加载。避免一个文件过大。


FB-33-CO-B-004:如何处理复数、性别、占位符等复杂文案?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:复数、性别、占位符、ICU MessageFormat、插值 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请说明国际化中复数、性别、占位符的处理方式,并给出示例。

参考答案

使用 ICU MessageFormat 或框架内置插值:

占位符

Hello, {name}!

复数

{count, plural, =0 {No messages} one {1 message} other {# messages}}

不同语言复数规则不同(如俄语有 one/few/many/other),不能简单用 count > 1 判断。

性别/人称

{gender, select, male {He} female {She} other {They}} liked this.

嵌套

  • 占位符中可嵌套复数和选择,但避免过度复杂导致翻译困难。

前端实践:

  • 使用 react-intl / vue-i18n / formatjs 等支持 ICU 的库。
  • 不要把多个字符串拼接成句子,应使用带占位符的完整模板。
  • 给翻译人员提供上下文注释(context)。

评分维度

  • ICU/插值(40%):占位符、复数、select
  • 语言差异意识(30%):不同语言复数规则
  • 工程实践(30%):避免拼接、提供上下文

常见错误

  • 用字符串拼接实现复数,导致翻译无法适配其他语言。
  • 忽略阿拉伯语、俄语等复杂复数规则。

延伸追问

  • 中文没有复数变化,如何设计 key 以适应多语言?
  • 如果占位符需要 HTML,如何安全渲染?

相关题目

参考资源

口头回答版

复杂文案用 ICU MessageFormat,比如 {count, plural, one {} other {}} 处理复数,用 {gender, select, ...} 处理性别。占位符用 {name}。不同语言复数规则不同,不能拼接字符串。要提供上下文注释。


FB-33-CO-B-005:日期、时间、数字、货币格式化要注意什么?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:日期格式化、数字格式化、货币、时区、Intl 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请说明国际化中日期、时间、数字、货币格式化的常见要求和前端实现方式。

参考答案

使用浏览器原生 Intl API 或封装库(date-fns、dayjs、Numeral.js):

日期时间

  • 使用 Intl.DateTimeFormat,避免手写格式字符串。
  • 区分长/短格式、是否包含时区。
  • 时区处理:存储 UTC,显示按用户时区转换。
  • 注意 12 小时制/24 小时制差异。

数字

  • 千分位、小数点、百分号因地区而异(如 1,234.56 vs 1.234,56)。
  • 使用 Intl.NumberFormat

货币

  • 金额与币种分离,不要硬编码货币符号。
  • Intl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' })
  • 注意汇率换算应在服务端完成。

注意

  • 服务端存储统一用 ISO 8601 / UTC。
  • 避免在模板中硬编码格式串。
  • 对 SSR 场景,Intl 需在服务端和客户端一致。

评分维度

  • API 使用(40%):Intl.DateTimeFormat、Intl.NumberFormat
  • 时区/UTC(30%):存储 UTC、显示转换
  • 地区差异(30%):小数点、12/24 小时制、货币

常见错误

  • Date.prototype.toLocaleString() 默认行为,结果不稳定。
  • 货币符号写死为 ¥$,未区分币种。

延伸追问

  • SSR 中如何避免服务端和客户端 Intl 输出不一致导致 hydrate 错误?
  • 相对时间(如“2 小时前”)如何国际化?

相关题目

参考资源

口头回答版

日期数字货币用 Intl API,不要手写格式。时间存 UTC,显示按用户时区转。货币和金额分离,汇率服务端算。注意不同地区的小数点、12/24 小时制差异。SSR 要保持服务端客户端一致。


FB-33-CO-B-006:RTL(从右到左)布局如何支持?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:RTL、从右到左、CSS、双向文本、阿拉伯语、希伯来语 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明前端如何支持阿拉伯语、希伯来语等 RTL 语言,包括 CSS、图标和交互。

参考答案

CSS 支持:

  • 使用逻辑属性:margin-inline-start/endpadding-inline-start/endborder-inline-start/end
  • 避免固定 left/right,改用 inset-inline-start/end
  • 设置 dir="rtl" 或 CSS direction: rtl
  • 使用 CSS 变量或 postcss 插件做 LTR/RTL 转换(如 rtlcss)。

图标与镜像:

  • 方向性图标(箭头、进度条、返回按钮)需要水平翻转。
  • 使用 SVG 图标时可通过 CSS transform: scaleX(-1) 或准备 RTL 版本。

文本:

  • 混合 LTR 与 RTL 文本时使用 <bdi>dir="auto" 保证方向正确。
  • 使用 Unicode 双向算法(UBA)。

交互:

  • 轮播、滑块、手势方向需适配 RTL。
  • 时间轴、步骤条从右向左排列。

测试:

  • 用真实 RTL 语言测试布局,不要仅靠镜像工具。

评分维度

  • CSS 逻辑属性(40%):inline/start/end 替代 left/right
  • 图标镜像(20%):方向性图标翻转
  • 文本方向(20%):bdi、UBA
  • 交互适配(20%):轮播、手势、时间轴

常见错误

  • 只把文字右对齐,忽略图标和交互方向。
  • 使用绝对定位的 left/right 导致 RTL 错位。

延伸追问

  • 如何在不重写样式的情况下支持 RTL?
  • 图表、日历组件支持 RTL 有哪些特殊处理?

相关题目

参考资源

口头回答版

支持 RTL 要用 CSS 逻辑属性如 margin-inline-start 替代 left/right,图标要镜像,混合文本用 bdi,轮播和手势方向也要反过来。最好用真实 RTL 语言测试。


FB-33-CO-B-007:如何动态加载语言包?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:动态加载、语言包、懒加载、代码分割 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明前端如何实现语言包的按需加载和切换,避免首屏加载所有语言资源。

参考答案

实现方式:

  • Webpack/Vite 动态导入
    js
    const messages = await import(`./locales/${locale}.json`);
  • i18next HTTP backend:运行时从 CDN/服务器加载对应命名空间。
  • 按路由懒加载:进入某个路由时再加载该模块的翻译文件。

切换流程:

  1. 检测 locale 变化。
  2. 卸载旧语言包或保留作为回退。
  3. 异步加载新语言包。
  4. 更新 i18n 实例语言并触发 UI 刷新。
  5. 保存用户偏好。

优化:

  • 预加载用户可能切换的邻近语言。
  • 对语言包做 gzip/Brotli 压缩。
  • 缓存到 localStorage/Service Worker,下次直接读取。
  • 使用 CDN 加速语言包分发。

评分维度

  • 动态加载方式(40%):import()、HTTP backend、路由懒加载
  • 切换流程(30%):加载、刷新、保存偏好
  • 优化(30%):预加载、压缩、缓存

常见错误

  • 打包所有语言到一个 bundle,导致首包过大。
  • 切换语言时不显示 loading,用户以为卡顿。

延伸追问

  • 语言包加载失败如何回退?
  • SSR 场景下动态加载语言包要注意什么?

相关题目

参考资源

口头回答版

语言包用动态 import 或 i18next HTTP backend 按需加载,按路由懒加载命名空间。切换时异步加载新包、刷新 UI、保存偏好。可以预加载邻近语言、压缩、缓存到 localStorage。避免打包所有语言到首包。


FB-33-CO-B-008:国际化测试应该覆盖哪些方面?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:国际化测试、伪本地化、布局、回归 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明国际化测试的常见类型和关键检查点。

参考答案

国际化测试类型:

  • 伪本地化(Pseudo-localization):把字符串替换为加长版、含重音符号的版本,检查布局是否溢出。
  • 功能测试:切换语言后页面功能是否正常。
  • 布局测试:检查 RTL 语言、长文本、不同字体下的 UI 是否错位。
  • 格式化测试:日期、数字、货币、复数在不同 locale 下是否正确。
  • 内容测试:确保翻译完整,无遗漏 key 或英文残留。
  • 回归测试:新增功能在多语言下验证。

关键检查点:

  • 文案截断或重叠。
  • 图标方向、镜像是否正确。
  • 时区转换是否正确。
  • 表单校验提示是否翻译。
  • 路由、SEO 标签是否正确切换。
  • 多语言下的性能(语言包加载、渲染)。

自动化:

  • 使用 i18next-scanner 检查未翻译 key。
  • 截图对比(Visual Regression)不同语言布局。
  • 在 CI 中跑伪本地化构建。

评分维度

  • 测试类型(40%):伪本地化、功能、布局、格式化、内容
  • 检查点(40%):溢出、图标、时区、表单、路由
  • 自动化(20%):扫描、截图、CI

常见错误

  • 只测试默认语言,上线后才发现多语言布局问题。
  • 忽略表单校验、错误提示的翻译。

延伸追问

  • 伪本地化是否会影响自动化测试断言?
  • 如何高效测试几十种语言?

相关题目

参考资源

口头回答版

国际化测试要做伪本地化检查布局溢出、切换语言功能测试、RTL 布局、日期数字格式化、内容完整性。还要检查表单提示、路由 SEO。可用 i18next-scanner 找未翻译 key、视觉回归截图、CI 跑伪本地化构建。


进阶题(8 道)

FB-33-CO-A-001:前端 i18n 框架如何选型?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:i18n 框架、react-i18next、vue-i18n、FormatJS、Intl 出现频率:高频 预计回答时长:5-7 分钟

题目描述: 请比较主流前端国际化框架(如 react-i18next、vue-i18n、FormatJS/ react-intl),并给出选型建议。

参考答案

框架生态特点适用
react-i18nextReact功能全面、插件丰富、SSR 友好大中型 React 项目
vue-i18nVue与 Vue 集成好、Composition API 支持Vue 2/3 项目
FormatJS / react-intlReact基于 ICU、提供底层 Intl 抽象需要 ICU、自定义渲染
LinguiReact/Vue编译时提取、类型安全、体积小追求性能与类型安全

选型维度:

  • 框架匹配:优先选择与前端框架深度集成的库。
  • ICU 支持:复杂复数、性别需要 ICU。
  • SSR/SSG:框架是否支持服务端渲染和 hydrate。
  • 体积:运行时大小、是否支持 tree-shaking。
  • 开发体验:TypeScript 支持、提取工具、IDE 插件。
  • 生态:插件(HTTP backend、检测、伪本地化)、社区活跃度。

建议:

  • React 项目:react-i18nextLingui
  • Vue 项目:vue-i18n
  • 需要高度定制 ICU:FormatJS

评分维度

  • 框架对比(40%):功能、生态、体积
  • 选型维度(40%):ICU、SSR、TS、体积
  • 建议合理性(20%):结合场景推荐

常见错误

  • 选型只看流行度,忽略 ICU 和 SSR 需求。
  • 多个项目各自引入不同框架,导致团队学习成本高。

延伸追问

  • 如果要在 React 和 Vue 两套项目中统一国际化方案,怎么做?
  • 编译时提取与运行时提取各有什么优劣?

相关题目

参考资源

口头回答版

React 常用 react-i18next 或 Lingui,Vue 用 vue-i18n,需要高度 ICU 用 FormatJS。选型看框架匹配、ICU 支持、SSR、体积、TypeScript 和生态。团队内尽量统一。


FB-33-CO-A-002:多语言路由与 SEO 如何设计?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:多语言路由、SEO、hreflang、SSR、子目录、子域名 出现频率:高频 预计回答时长:5-7 分钟

题目描述: 请说明支持多语言的网站在 URL、SEO、服务端渲染方面的设计要点。

参考答案

URL 策略:

  • 子目录/zh-CN/products/en-US/products。推荐,权重集中,维护简单。
  • 子域名zh.example.comen.example.com。适合多地区独立运营。
  • 顶级域名example.cnexample.com。成本高,适合大型本地化业务。
  • URL 参数?lang=zh。不推荐 SEO。

SEO 要点:

  • 每个页面添加 hreflang 标签,指明不同语言/地区版本。
  • HTML lang 属性与当前 locale 一致。
  • 提供 x-default 默认版本。
  • 避免不同语言内容混在同一 URL。
  • 生成 sitemap 时包含各语言 URL。

SSR/SSG:

  • 服务端根据 URL locale 渲染对应语言。
  • 预渲染各语言版本页面,提升首屏和 SEO。
  • 注意服务端与客户端 locale 一致,避免 hydrate 错位。

内容:

  • 元信息(title、description、OG 标签)也要翻译。
  • 图片 alt、JSON-LD 结构化数据也要本地化。

评分维度

  • URL 策略(30%):子目录、子域名、参数
  • SEO 实践(40%):hreflang、lang 属性、sitemap
  • SSR/SSG(30%):服务端渲染、hydrate 一致

常见错误

  • 只在前端切换语言,URL 不变,搜索引擎无法索引多语言。
  • hreflang 配置错误,导致搜索引擎混淆。

延伸追问

  • 如何让用户切换语言后 SEO 权重不分散?
  • 动态路由的多语言参数如何管理?

相关题目

参考资源

口头回答版

多语言 URL 推荐子目录如 /zh-CN/products,SEO 要加 hreflang、html lang 属性、sitemap。SSR 按 URL locale 渲染,元信息和图片 alt 也要本地化。不要只用前端切换导致 SEO 无法索引。


FB-33-CO-A-003:服务端渲染与国际化如何结合?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:SSR、国际化、hydrate、locale、翻译包 出现频率:中频 预计回答时长:5-7 分钟

题目描述: 请说明在 SSR/SSG 项目中实现国际化的关键点,以及如何避免 hydrate 不一致。

参考答案

关键点:

  • locale 确定:服务端从 URL、Cookie、请求头 Accept-Language 解析 locale。
  • 语言包加载:服务端同步加载对应 locale 的翻译资源,或提前注入到 HTML。
  • 渲染:服务端使用确定的 locale 渲染完整 HTML,包括 lang 属性、dir、格式化输出。
  • 客户端 hydrate:客户端读取服务端注入的 locale 和初始状态,避免二次请求或重新渲染。

避免 hydrate 不一致:

  • 服务端和客户端使用同一份 locale 和翻译数据。
  • 不要在服务端使用 navigator.language(服务端没有 navigator)。
  • 日期/数字格式化使用相同 Intl 配置。
  • 避免在 render 阶段读取随机数或时间等不稳定值。
  • 对不支持 Intl 的环境做 polyfill。

SSG:

  • 为每种 locale 生成独立页面(/en-US/about/zh-CN/about)。
  • 构建时加载所有语言包。

性能:

  • 仅注入当前 locale 数据到 HTML,不要把所有语言包都打进去。
  • 使用 CDN 缓存按 locale 分片的页面。

评分维度

  • locale 解析(30%):URL、Cookie、Accept-Language
  • SSR 渲染(30%):同步加载、HTML 注入
  • hydrate 一致(40%):同一份数据、避免不稳定值

常见错误

  • 服务端和客户端各自决定 locale,导致内容不一致。
  • 把全部语言包注入 HTML,增大首包。

延伸追问

  • 如何在 SSR 中支持按用户偏好动态切换语言?
  • ISR 与多语言结合有哪些坑?

相关题目

参考资源

口头回答版

SSR 国际化要在服务端从 URL/Cookie/Accept-Language 确定 locale,同步加载语言包渲染 HTML,并把 locale 和初始状态注入页面。客户端读取这些状态 hydrate,避免和服务端不一致。不要服务端用 navigator,也不要把所有语言包注入首屏。


FB-33-CO-A-004:翻译缺失与回退策略如何设计?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:翻译缺失、回退、fallback、key、开发体验 出现频率:中频 预计回答时长:5-7 分钟

题目描述: 请说明国际化中如何处理某个 key 在当前语言下没有翻译的情况,以及如何提升开发体验。

参考答案

回退策略:

  • 语言回退zh-Hans-CN -> zh-Hans -> zh -> en
  • key 回退:找不到翻译时显示 key 本身或默认语言文案,避免空白。
  • 兜底显示:显示 [missing: key] 或带 emoji 提示,便于开发定位。

开发体验:

  • 开发环境:缺失翻译用显眼占位符,甚至 throw warning。
  • 生产环境:回退到默认语言,并上报缺失 key。
  • 提取工具i18next-scannerbabel-plugin-i18next-extract 自动从代码提取 key。
  • 类型安全:TypeScript 类型约束可用 key,避免 typo。
  • 翻译平台集成:缺失 key 自动进入 TMS 待翻译队列。

治理:

  • CI 中检查未翻译 key,阻断合并。
  • 统计各语言覆盖率,低于阈值告警。

评分维度

  • 回退策略(40%):语言回退、key 回退、兜底
  • 开发体验(40%):开发提示、提取、类型、TMS
  • 治理(20%):CI 检查、覆盖率

常见错误

  • 缺失时直接显示空白或报错,影响生产。
  • 没有自动提取,导致代码和翻译文件不同步。

延伸追问

  • 如何在不阻塞发版的情况下处理临时缺失翻译?
  • 翻译 key 的命名空间回退顺序如何设计?

相关题目

参考资源

口头回答版

翻译缺失时先语言回退,再 key 回退,生产环境显示默认语言并上报。开发环境用显眼占位符。用扫描工具自动提取 key,TypeScript 约束 key,CI 检查未翻译,统计覆盖率。


FB-33-CO-A-005:翻译工作流与 TMS 如何落地?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:TMS、翻译工作流、 Crowdin、Phrase、Lokalise 出现频率:中频 预计回答时长:5-7 分钟

题目描述: 请描述一个高效的前端翻译工作流,以及 TMS(翻译管理系统)在其中的作用。

参考答案

工作流:

  1. 开发:开发者用 key 写代码,附带上下文注释。
  2. 提取:CI 自动扫描代码生成待翻译源文件(如 .pot、JSON)。
  3. 上传 TMS:源文件上传到 Crowdin/Phrase/Lokalise。
  4. 翻译:译者或机器翻译在 TMS 中翻译,术语库和记忆库保证一致。
  5. 审校:QA/本地专家审校。
  6. 下载:CI 从 TMS 拉取最新翻译文件。
  7. 构建/部署:语言包随应用发布或独立部署到 CDN。
  8. 监控:线上检查缺失、错误、用户反馈。

TMS 作用:

  • 集中管理翻译资产。
  • 支持术语库、翻译记忆、机器翻译、审校流程。
  • 提供上下文截图、注释、角色权限。
  • 与 Git/CI 集成,实现自动化同步。

最佳实践:

  • 自动同步,避免人工导出导入。
  • 关键文案人工审校,辅助文案可机翻。
  • 翻译文件版本化,支持回滚。

评分维度

  • 工作流完整(40%):提取、上传、翻译、审校、下载、部署
  • TMS 作用(30%):资产管理、术语、审校、集成
  • 自动化(30%):CI 同步、机器翻译、回滚

常见错误

  • 手动复制 Excel 翻译,容易遗漏和版本不一致。
  • TMS 与代码不同步,上线后翻译缺失。

延伸追问

  • 如何处理紧急文案上线但翻译未完成?
  • 机器翻译后如何评估质量?

相关题目

参考资源

口头回答版

翻译工作流是开发用 key 写代码,CI 扫描提取上传到 TMS,翻译审校后下载,再构建部署。TMS 管理术语、记忆库、审校流程和 CI 集成。要自动同步、关键文案人工审校、翻译文件版本化。


FB-33-CO-A-006:本地化的图片、文案和文化差异如何处理?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:本地化、文化差异、图片、文案、合规 出现频率:中频 预计回答时长:5-7 分钟

题目描述: 请说明国际化项目中,除了文字翻译,还需要处理哪些本地化元素。

参考答案

本地化元素:

  • 图片与图标
    • 避免使用只在特定文化中有意义的图标(如手势、动物、颜色)。
    • 人物形象、场景要符合当地审美和法规。
    • 图片中的文字要单独翻译或避免嵌入文字。
  • 颜色与布局
    • 不同文化对颜色寓意不同(如红色在中国喜庆、在西方警示)。
    • RTL 语言需要镜像布局。
  • 文案与文化
    • 避免俚语、双关、宗教/政治敏感内容。
    • 称呼、敬语、性别表达因语言而异。
  • 法律合规
    • GDPR、个保法、COPPA、年龄 gate。
    • Cookie 同意横幅、隐私政策链接。
  • 支付方式与货币
    • 本地化支付渠道、税率、价格显示。
  • 日期与度量
    • 公历/农历、英制/公制、温度单位。

实现方式:

  • 把图片路径也放入翻译文件或配置中心。
  • 使用本地化组件库,支持地区变体。
  • 建立本地化审查清单。

评分维度

  • 本地化范围(50%):图片、颜色、文案、法律、支付、度量
  • 文化敏感性(30%):避免敏感内容、符合习俗
  • 实现方式(20%):配置化、组件化、审查清单

常见错误

  • 只翻译文字,图片中仍含中文或特定文化元素。
  • 忽略不同地区的法律合规要求。

延伸追问

  • 如何管理不同地区营销活动中的图片文案?
  • A/B 测试的文案是否需要本地化?

相关题目

参考资源

口头回答版

本地化不只是翻译文字,还包括图片图标、颜色、文案文化、法律合规、支付方式、日期度量。图片要配置化,避免嵌入文字;不同文化对颜色和手势理解不同;还要符合 GDPR、个保法等法规。


FB-33-CO-A-007:时区处理有哪些最佳实践?

题型:概念题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:时区、UTC、夏令时、Intl、时间处理 出现频率:中频 预计回答时长:5-7 分钟

题目描述: 请说明国际化应用中处理日期和时区的最佳实践。

参考答案

最佳实践:

  • 存储 UTC:服务端数据库统一存储 UTC 时间戳,避免时区歧义。
  • 显示转换:前端根据用户 locale 和时区转换为本地时间。
  • 明确语义:区分“事件发生的绝对时间”和“用户本地显示时间”。
  • 夏令时:使用 Intl.DateTimeFormat 或 moment-timezone/dayjs-timezone 处理 DST。
  • 相对时间:使用 Intl.RelativeTimeFormat
  • 时区选择
    • 用户可手动选择时区,或从浏览器/账号偏好获取。
    • 对预约、会议等场景,显示双方时区。
  • 避免
    • 在数据库中存带时区字符串。
    • 用客户端本地时间做业务计算。

技术实现:

  • 推荐 dayjs + utc/timezone 插件或原生 Temporal API(未来)。
  • SSR 时服务端也要按用户时区渲染,可通过 cookie 传递时区。

评分维度

  • 存储原则(30%):UTC 存储
  • 显示原则(30%):本地转换、相对时间
  • 夏令时/语义(20%):DST、绝对 vs 本地
  • 工程实现(20%):库选择、SSR

常见错误

  • 服务端返回已格式化的本地时间字符串,前端无法转换。
  • 忽略夏令时导致时间差一小时。

延伸追问

  • 跨时区会议如何显示“我的时间”和“对方时间”?
  • 服务端如何判断用户时区?

相关题目

参考资源

口头回答版

时间统一存 UTC,显示时按用户时区转换。用 Intl API 或 dayjs timezone 处理夏令时。预约会议要显示双方时区。不要存带时区字符串,也不要用客户端本地时间做业务计算。


FB-33-CD-A-001:如何设计一个支持多语言的组件库?

题型:场景设计题 难度:🔵 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:组件库、国际化、locale、翻译、可配置 出现频率:中频 预计回答时长:5-7 分钟

题目描述: 请设计一个支持多语言的 UI 组件库,并说明文案、日期、数字、RTL 的处理方式。

参考答案

设计要点:

  • 文案内置
    • 组件库自带默认语言包(如中文、英文)。
    • 提供 locale 配置,业务可注入其他语言或覆盖。
  • 可覆盖
    • 支持运行时替换组件文案,如 locale.messages
    • 对单组件提供 props 覆盖默认文案。
  • 日期/数字
    • 使用 Intl API,接收外部 localetimeZone
    • 对 DatePicker、Calendar 等组件按 locale 切换第一周、节假日。
  • RTL
    • 组件内部使用逻辑属性。
    • 提供 dir 配置或自动根据 locale 判断。
    • 方向性组件(Slider、Carousel)需适配。
  • 体积
    • 语言包按 locale 拆分,业务按需引入。
    • 默认只打包一种语言,其余懒加载。
  • 文档与示例
    • 提供不同 locale 和 RTL 的 Storybook 示例。

评分维度

  • 文案设计(30%):内置、可覆盖、懒加载
  • 格式处理(30%):日期、数字、Intl
  • RTL 支持(20%):逻辑属性、方向性组件
  • 文档体积(20%):按需加载、示例

常见错误

  • 组件库文案写死,业务无法覆盖。
  • 组件库打包所有语言,体积过大。

延伸追问

  • 组件库与业务项目的 i18n 框架如何整合?
  • 如何测试组件库在几十种语言下的布局?

相关题目

参考资源

口头回答版

组件库要内置默认语言包、允许业务注入和覆盖,用 Intl 处理日期数字,支持 dir 和 RTL,方向性组件要适配。语言包按 locale 拆分懒加载,文档提供多语言示例。


深入题(7 道)

FB-33-SD-P-001:如何设计大规模多语言前端平台?

题型:系统设计题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:多语言平台、TMS、CI/CD、治理、微前端 出现频率:高频 预计回答时长:7-10 分钟

题目描述: 请设计一个支撑全公司多业务、多技术栈的大规模国际化平台,包括语言包管理、发布、治理。

参考答案

平台目标:统一翻译资产、降低接入成本、保证质量和一致性。

核心模块:

  1. 翻译资产管理
    • 统一 TMS,集中管理所有项目 key、翻译、术语库、记忆库。
    • key 命名空间与项目/业务域绑定。
  2. 代码集成
    • 提供各框架 SDK(React/Vue/小程序)和 CLI。
    • 统一 key 提取、上传、下载脚本。
  3. 发布与 CDN
    • 语言包可独立发布到 CDN,应用运行时拉取。
    • 支持按版本回滚和灰度。
  4. 质量与监控
    • 缺失翻译检测、占位符一致性、长度检查。
    • 术语一致性扫描、机器翻译质量评估。
    • 线上用户反馈入口。
  5. 治理
    • 语言包覆盖率、翻译及时率、Bug 数纳入团队考核。
    • 公共文案共享,避免重复翻译。
  6. 微前端/组件库支持
    • 子应用可独立管理语言包,主应用统一 locale。
    • 组件库提供 locale 配置和按需加载。

扩展性:

  • 支持新语言快速接入(配置 + TMS 项目)。
  • 与账号、权限、审计系统集成。

评分维度

  • 模块完整(40%):资产、集成、发布、质量、治理、组件库
  • 规模化能力(30%):多业务、多技术栈、CDN
  • 治理度量(30%):覆盖率、术语、考核

常见错误

  • 各业务独立维护 TMS,术语不一致。
  • 语言包随应用强耦合发布,无法热更新。

延伸追问

  • 如何处理业务之间文案冲突或重复?
  • 语言包 CDN 更新后如何清理客户端缓存?

相关题目

参考资源

口头回答版

大规模多语言平台要统一 TMS 管理翻译资产,提供各框架 SDK 和 CLI,语言包独立发布到 CDN,做缺失检测、术语一致性、质量监控。还要纳入团队考核,支持微前端和组件库,保证术语一致和热更新。


FB-33-CO-P-001:微前端与组件库国际化如何协同?

题型:概念题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:微前端、组件库、国际化、locale、语言包 出现频率:中频 预计回答时长:7-10 分钟

题目描述: 在微前端架构中,主应用、子应用、组件库可能各自有国际化需求。请说明如何协同它们的 locale 和语言包。

参考答案

协同策略:

  • 统一 locale 上下文
    • 主应用决定当前 locale,通过全局状态或 props 下发给子应用和组件库。
    • 子应用监听 locale 变化并切换语言包。
  • 命名空间隔离
    • 主应用、各子应用、组件库使用独立的 i18n 命名空间。
    • 避免 key 冲突,也便于独立发布语言包。
  • 语言包加载
    • 公共语言包由主应用或组件库加载。
    • 子应用进入时再懒加载自己的语言包。
  • 组件库 locale
    • 组件库暴露 locale prop 或注入全局 locale。
    • 组件库语言包可独立发布,业务按需引入。
  • 切换同步
    • locale 切换时广播事件,所有子应用同步切换。
    • 避免子应用仍显示旧语言。

边界:

  • 子应用独立部署时,语言包版本要与组件版本匹配。
  • SSR 微前端需保证服务端注入的 locale 一致。

评分维度

  • 统一 locale(30%):主应用决定、下发
  • 命名空间(30%):隔离、避免冲突
  • 加载与切换(30%):懒加载、同步广播
  • 版本匹配(10%):语言包与组件版本

常见错误

  • 各子应用各自决定 locale,导致界面语言不一致。
  • 组件库文案写死,无法随业务 locale 切换。

延伸追问

  • 主子应用使用不同 i18n 框架怎么办?
  • 如何测试微前端多语言切换的完整性?

相关题目

参考资源

口头回答版

微前端里主应用定 locale 下发给子应用和组件库,各自用独立命名空间避免冲突。公共包主应用加载,子应用按需懒加载。切换时广播同步。组件库要暴露 locale。注意语言包版本和 SSR 一致。


FB-33-CO-P-002:RTL 与复杂组件(图表、日历)如何支持?

题型:概念题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:RTL、图表、日历、复杂组件、双向文本 出现频率:中频 预计回答时长:7-10 分钟

题目描述: 请说明在 RTL 语言下,图表、日历、时间轴等复杂组件需要做哪些特殊处理。

参考答案

通用原则:

  • 检测 dir="rtl" 或 locale 方向,组件内部切换渲染方向。
  • 使用 Canvas/SVG 时注意坐标系从右到左。

图表:

  • X 轴从右到左递增。
  • 图例、提示框位置镜像。
  • 堆叠顺序、饼图起始角度可能需要调整。
  • 使用 ECharts/Highcharts 等支持 RTL 的配置。

日历:

  • 周起始日因 locale 不同(如中东周六/周日开始,美国周日,欧洲周一)。
  • 日期排列从右到左。
  • 节假日、工作日按当地规则。

时间轴/步骤条:

  • 起点在右侧,依次向左。
  • 箭头、进度方向镜像。

表格/列表:

  • 列顺序是否需要反转取决于内容语义(一般保持逻辑顺序,只调整对齐)。
  • 操作按钮通常放在左侧。

实现方式:

  • 组件库提供 direction 上下文。
  • 对 Canvas/SVG 计算时根据方向调整坐标。
  • 通过 Visual Regression 测试 RTL 效果。

评分维度

  • RTL 原则(30%):方向检测、坐标镜像
  • 图表处理(30%):轴方向、图例、起始角
  • 日历/时间轴(20%):周起始、排列方向
  • 测试(20%):视觉回归

常见错误

  • 只做 CSS 镜像,忽略 Canvas/SVG 内部坐标。
  • 把所有列表列顺序都反转,破坏阅读逻辑。

延伸追问

  • 如何在 SVG 路径动画中支持 RTL?
  • 地图组件支持 RTL 有哪些挑战?

相关题目

参考资源

口头回答版

RTL 下复杂组件要检测方向并镜像。图表 X 轴从右到左、图例提示框镜像;日历注意周起始日和排列方向;时间轴起点在右。Canvas/SVG 要调整坐标。要用视觉回归测试。


FB-33-PE-P-001:语言包体积如何优化?

题型:性能优化题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:语言包体积、懒加载、压缩、tree-shaking、CDN 出现频率:中频 预计回答时长:7-10 分钟

题目描述: 请说明如何减少国际化带来的前端资源体积,并提升加载速度。

参考答案

优化手段:

  • 按需加载:首屏只加载当前 locale 的必需命名空间,其他懒加载。
  • 代码分割:按 locale 拆分为独立 chunk,避免打包所有语言。
  • 压缩:JSON 语言包 gzip/Brotli 压缩;构建时去除注释和空格。
  • 复用公共文案:把公共文案抽到独立命名空间,避免重复。
  • 减少 key 长度:key 语义化但不过长;构建时压缩 key(如 hash)。
  • 使用 CDN:语言包部署到 CDN,利用缓存和就近访问。
  • Service Worker 缓存:语言包更新频率低,可长期缓存。
  • 运行时合并:服务端把页面所需文案注入 HTML,减少一次请求。
  • 剔除未使用 key:扫描代码,只打包被引用的 key。

监控:

  • 统计各语言包大小、加载时间、缓存命中率。
  • 设定语言包体积预算。

评分维度

  • 加载策略(30%):按需、懒加载、代码分割
  • 压缩缓存(30%):gzip、CDN、Service Worker
  • 体积治理(30%):公共文案、key 长度、剔除未用
  • 监控(10%):体积预算、缓存命中

常见错误

  • 所有语言包打包到一个 bundle。
  • 语言包不做缓存,每次页面都重新下载。

延伸追问

  • 如何在运行时动态精简语言包?
  • 语言包体积预算如何落地到 CI?

相关题目

参考资源

口头回答版

优化语言包体积要按需加载、按 locale 拆 chunk、压缩、CDN、Service Worker 缓存。公共文案抽离,key 不要过长,剔除未使用 key。还可以服务端注入首屏文案。监控各语言包大小和缓存命中率。


FB-33-CO-P-003:自动翻译与人工校对流程如何设计?

题型:概念题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:机器翻译、人工校对、MTPE、翻译质量、TMS 出现频率:中频 预计回答时长:7-10 分钟

题目描述: 请设计一个结合机器翻译与人工校对的翻译流程,兼顾效率与质量。

参考答案

流程:

  1. 机器翻译(MT):新 key 自动调用翻译引擎(Google Translate、DeepL、Azure Translator)。
  2. 翻译后编辑(MTPE):译者在 TMS 中基于机翻结果修改,保留记忆库。
  3. 术语与规则检查
    • 自动检查占位符、变量一致性。
    • 术语库匹配,确保品牌词、专业词一致。
  4. 审校:QA 或本地专家抽检或全检。
  5. 上下文验证:在 UI 截图或 staging 环境中查看实际效果。
  6. 发布:通过 CI 自动下载并部署。
  7. 反馈闭环:线上用户可反馈翻译问题,回流到 TMS。

质量控制:

  • 对高可见、高风险文案强制人工审校。
  • 对辅助、低频文案可采用机翻直接发布。
  • 使用 BLEU/COMET 等自动评分辅助判断机翻质量。
  • 建立翻译质量 KPI(错误率、用户反馈数)。

评分维度

  • 流程设计(40%):MT、MTPE、审校、上下文验证、反馈
  • 质量控制(30%):术语、自动评分、KPI
  • 效率平衡(30%):不同文案分级处理

常见错误

  • 所有文案直接机翻上线,导致质量和品牌受损。
  • 人工审校流程过重,影响发布速度。

延伸追问

  • 如何让译者在 TMS 中理解文案上下文?
  • 自动翻译 API 成本和延迟如何优化?

相关题目

参考资源

口头回答版

机器翻译加人工校对流程:新机翻、译者做 MTPE、术语和占位符检查、QA 审校、在 staging 看效果、CI 发布、线上反馈回流。高可见文案必须人工,辅助文案可机翻。用 BLEU/COMET 评估质量,建立 KPI。


FB-33-CO-P-004:设计文案与代码如何解耦?

题型:概念题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:文案解耦、设计系统、文案管理、UI 文案 出现频率:低频 预计回答时长:7-10 分钟

题目描述: 请说明如何把 UI 文案从产品逻辑中解耦,以支持快速迭代和多语言本地化。

参考答案

解耦方式:

  • key 化:代码中只引用 key,不直接写文案。
  • 统一管理:文案集中放在 TMS 或配置中心,产品/运营可直接修改。
  • 组件化
    • 把常用文案模式封装成组件(如 EmptyStateConfirmDialog)。
    • 组件接收配置参数,文案由外部传入。
  • 设计工具集成
    • Figma 插件与 TMS 同步,设计稿直接引用 key。
    • 设计变更自动同步到代码和翻译流程。
  • A/B 测试支持
    • 文案作为配置,可快速替换做实验。
    • 不同文案版本与翻译对应。
  • 上下文注释
    • 每个 key 附带用途、最大长度、截图,帮助译者理解。

收益:

  • 产品改文案无需发版(若语言包走 CDN)。
  • 减少开发介入,提高本地化效率。

评分维度

  • key 化与集中管理(40%):代码引用 key、TMS 管理
  • 组件化(20%):通用组件、外部传文案
  • 设计与 A/B(20%):Figma 集成、文案实验
  • 上下文(20%):注释、截图

常见错误

  • 代码里大量拼接字符串,导致无法提取翻译。
  • 文案和设计稿脱节,翻译后才发现布局问题。

延伸追问

  • 如何处理 UI 中需要加粗/链接的富文本文案?
  • 文案配置化后如何做好版本控制?

相关题目

参考资源

口头回答版

文案解耦要做到代码只引用 key,文案在 TMS 统一管理;通用组件外部传文案;Figma 与 TMS 同步;文案配置化支持 A/B。还要给译者上下文注释和截图。这样产品改文案可以不发版。


FB-33-CP-P-001:多语言 A/B 测试如何设计?

题型:综合开放题 难度:🟣 深入 岗位层级:资深 / 架构 面试知识域:33 国际化 标签:A/B 测试、文案实验、本地化、多语言 出现频率:低频 预计回答时长:7-10 分钟

题目描述: 请说明在国际化场景下,如何对文案、布局、功能做 A/B 测试。

参考答案

设计要点:

  • 实验维度
    • 文案:同一功能不同措辞。
    • 布局:不同 locale 下按钮位置、图片、颜色。
    • 功能:某些地区开启/关闭特定功能。
  • 分组策略
    • 按 userId 哈希分桶,保证同一用户稳定。
    • 不同 locale 可独立实验,避免样本混杂。
  • 配置化
    • 实验配置与文案 key 解耦,支持同一 key 多版本。
    • 远程配置中心下发实验参数。
  • 埋点
    • 上报实验组、locale、关键指标(CTR、转化率、留存)。
    • 注意不同地区指标可比性。
  • 合规
    • 用户同意、隐私政策声明。
    • 某些地区对实验有法律限制。
  • 分析
    • 分 locale 看效果,避免全局结论掩盖地区差异。
    • 统计显著性、样本量计算。

评分维度

  • 实验维度(30%):文案、布局、功能
  • 分组与配置(30%):userId 分桶、远程配置
  • 埋点与分析(20%):指标、locale 分层
  • 合规(20%):用户同意、法律

常见错误

  • 把不同 locale 用户混在一起看结果。
  • 实验文案未进入翻译流程,导致多语言版本缺失。

延伸追问

  • 如何防止 A/B 实验影响 SEO?
  • 多语言实验的样本量如何估算?

相关题目

参考资源

口头回答版

多语言 A/B 测试要按 locale 独立分组,实验配置与文案 key 解耦,通过远程配置下发。埋点要带上实验组和 locale,分析时分地区看。注意用户同意和法律合规,不要把不同地区混在一起。


架构题(43 道)

FB-33-SD-R-001:如何设计全球化前端架构?

题型:系统设计题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:全球化、国际化架构、SSR、CDN、多语言 出现频率:高频 预计回答时长:10-15 分钟

题目描述: 请为一个面向全球用户的产品设计前端架构,涵盖路由、部署、性能、SEO、合规等方面。

参考答案

架构要点:

  • 多区域部署
    • 静态资源部署到全球 CDN,按 region 路由到最近节点。
    • SSR/Edge Rendering 在靠近用户的边缘节点执行。
  • 多语言路由
    • 子目录结构 /zh-CN//en-US/,子域名或独立域名作为补充。
    • Edge 函数根据用户偏好重定向或改写请求。
  • 语言包策略
    • 语言包按 locale 拆分为独立 chunk,CDN 分发。
    • 关键路径文案可内联到 HTML。
  • SEO
    • 每个 locale 生成独立 HTML,hreflang、sitemap、OG 标签完整。
    • 搜索引擎可索引每个语言版本。
  • 合规
    • GDPR、个保法、Cookie 同意、数据本地化存储。
    • 不同地区隐私政策、年龄 gate。
  • 性能
    • 预加载用户可能切换的语言包。
    • 字体子集化,只加载当前 locale 所需字符。
    • 图片/视频按地区 CDN 分发。
  • 监控
    • 分地区、分语言监控性能、错误、转化率。

治理:

  • 统一国际化平台,TMS、组件库、设计系统协同。

评分维度

  • 部署与路由(30%):CDN、Edge、子目录
  • 性能(25%):语言包拆分、字体子集、预加载
  • SEO/合规(25%):hreflang、数据本地化
  • 治理(20%):统一平台、TMS

常见错误

  • 只翻译文字,未考虑部署和 SEO。
  • 全球用户访问单一数据中心,延迟高。

延伸追问

  • 如何评估进入新国家/地区的技术成本?
  • 数据本地化要求对前端架构有什么影响?

相关题目

参考资源

口头回答版

全球化前端要全球 CDN 部署、子目录多语言路由、按 locale 拆分语言包、Edge 渲染、完整的 hreflang 和 sitemap。还要合规、数据本地化、字体子集、分地区监控。统一国际化平台和 TMS 协同。


FB-33-SD-R-002:如何设计一条翻译流水线?

题型:系统设计题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:翻译流水线、CI/CD、TMS、自动化、质量门禁 出现频率:中频 预计回答时长:10-15 分钟

题目描述: 请设计一条从代码提交到多语言上线的自动化翻译流水线。

参考答案

流水线阶段:

  1. 代码提交:开发者新增/修改 key,附带上下文注释。
  2. 提取:CI 运行 i18next-scanner 等工具提取 key 到源文件。
  3. 差异检测:对比上一版本,识别新增/变更/废弃 key。
  4. 上传 TMS:自动上传到 Crowdin/Phrase,进入待翻译队列。
  5. 机器翻译(可选):对低优先级 key 自动预翻译。
  6. 人工翻译/审校:译者在 TMS 工作,完成后标记完成。
  7. 质量门禁
    • 占位符一致、术语一致、长度检查。
    • 缺失翻译拦截。
  8. 下载翻译:CI 从 TMS 拉取最新翻译文件。
  9. 构建与测试
    • 伪本地化构建、视觉回归、多语言功能测试。
  10. 部署
    • 语言包发布到 CDN,应用可选择独立发版或随应用发版。
  11. 监控与反馈:线上缺失/错误反馈回流 TMS。

关键设计:

  • 分支策略:每个代码分支对应 TMS 分支,避免冲突。
  • 回滚:语言包版本化,支持快速回滚。
  • 灰度:新语言可先对部分地区用户灰度。

评分维度

  • 流水线完整(40%):提取、上传、翻译、下载、构建、部署
  • 质量门禁(30%):占位符、术语、缺失、视觉回归
  • 可回滚/灰度(30%):版本化、分支策略

常见错误

  • 翻译流程与代码流程脱节,上线后才发现缺失。
  • 没有质量门禁,错误翻译直接上线。

延伸追问

  • 如何处理紧急文案未翻译就需上线?
  • TMS 与 Git 分支如何映射?

相关题目

参考资源

口头回答版

翻译流水线从代码提取 key,上传到 TMS,差异检测,人工或机翻,审校后质量门禁检查占位符、术语、缺失。然后下载、构建、伪本地化测试、部署到 CDN,线上反馈回流。要分支映射、版本化、支持灰度回滚。


FB-33-SD-R-003:如何设计国际化组件库?

题型:系统设计题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:国际化组件库、locale、RTL、设计系统 出现频率:中频 预计回答时长:10-15 分钟

题目描述: 请设计一个面向多业务、多框架的国际化组件库,说明文案、格式、RTL、版本管理。

参考答案

设计要点:

  • 多框架支持
    • 核心逻辑与框架无关(纯 JS + Intl)。
    • 提供 React/Vue/Angular 封装层。
  • 文案管理
    • 组件库自带默认语言包,业务可注入或覆盖。
    • key 命名空间隔离,如 @company/components/button
  • 格式化抽象
    • 封装 useLocale / LocaleProvider,统一处理日期、数字、相对时间。
    • 接收外部 localetimeZone
  • RTL 支持
    • 内部使用逻辑属性。
    • 方向性组件(Slider、Steps、Pagination)根据 dir 切换。
  • 主题与本地化
    • 颜色、间距保持中性,避免文化特定默认。
    • 允许地区主题覆盖。
  • 版本管理
    • 语言包随组件版本发布,保持兼容。
    • 提供迁移指南和废弃 key 处理。
  • 文档与测试
    • Storybook 展示各 locale 和 RTL 效果。
    • 视觉回归覆盖多语言。

评分维度

  • 框架无关(20%):核心逻辑抽象
  • 文案与格式(30%):注入、覆盖、Intl
  • RTL(20%):逻辑属性、方向组件
  • 版本与文档(30%):版本兼容、Storybook、视觉回归

常见错误

  • 组件库只支持一种框架,其他业务无法复用。
  • 文案写死,业务无法覆盖。

延伸追问

  • 组件库语言包如何与业务项目合并?
  • 如何保持组件库文案更新不影响业务?

相关题目

参考资源

口头回答版

国际化组件库要核心逻辑与框架无关,提供 React/Vue 封装;自带默认语言包允许覆盖;统一 locale 和 timeZone;内部用逻辑属性支持 RTL;方向性组件适配。语言包随版本发布,文档用 Storybook 展示多语言效果。


FB-33-SD-R-004:多语言内容管理系统(CMS)如何设计?

题型:系统设计题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:CMS、多语言内容、本地化、内容管理 出现频率:中频 预计回答时长:10-15 分钟

题目描述: 请设计一个支持多语言运营内容(文章、活动页、商品信息)的 CMS 前端方案。

参考答案

CMS 设计要点:

  • 内容模型
    • 每个内容实体有主语言版本和多个翻译版本。
    • 字段级翻译 vs 整体翻译:对结构化内容按字段翻译;对富文本整体翻译。
  • 翻译工作流
    • 编辑创建主语言内容后发起翻译任务。
    • TMS/人工翻译完成后审校、发布。
  • 内容版本
    • 支持草稿、审校中、已发布、归档状态。
    • 不同语言版本可独立发布。
  • 预览与对比
    • 编辑可预览各语言效果。
    • 对比主语言与翻译差异。
  • 前端渲染
    • 根据 URL locale 从 CMS API 拉取对应内容。
    • 支持 ISR/SSG,预渲染多语言页面。
  • SEO
    • 多语言页面互链,hreflang 完整。
    • slug 本地化(如 /zh-CN/产品/en-US/product)。
  • 合规
    • 不同地区内容审核、下架、年龄限制。

扩展:

  • 内容个性化:按地区推荐不同内容。
  • A/B 测试:不同文案/图片实验。

评分维度

  • 内容模型(30%):字段/整体翻译、版本状态
  • 工作流(20%):翻译任务、审校、发布
  • 前端渲染(20%):API、SSG/ISR
  • SEO/合规(30%):hreflang、slug、审核

常见错误

  • 所有语言内容强耦合发布,无法独立上线。
  • slug 不本地化,影响 SEO 和用户体验。

延伸追问

  • 富文本内容中的图片/链接如何本地化?
  • 如何实现内容的多地区审核流程?

相关题目

参考资源

口头回答版

多语言 CMS 内容实体有主语言和多个翻译版本,可按字段翻译。工作流是编辑创建后发起翻译、审校、发布,各语言独立发布。前端按 URL locale 拉内容,支持 SSG,SEO 要做 hreflang 和本地化 slug。还要考虑地区审核。


FB-33-CP-R-001:国际化度量与监控应该关注哪些指标?

题型:综合开放题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:国际化度量、监控、覆盖率、质量、性能 出现频率:中频 预计回答时长:10-15 分钟

题目描述: 请设计一套国际化度量体系,用于持续评估多语言产品的质量、效率和用户体验。

参考答案

度量指标:

  • 覆盖度
    • 各语言翻译覆盖率。
    • 页面/功能多语言适配覆盖率。
  • 质量
    • 缺失翻译数量、占位符错误数。
    • 术语不一致数。
    • 用户反馈的翻译错误数。
    • 视觉回归发现的布局问题数。
  • 效率
    • 新文案从提交到上线平均时长。
    • 译者人效(字数/天)。
    • 机翻占比与人工审校占比。
  • 体验
    • 分 locale 的首屏加载时间。
    • 语言包加载失败率。
    • 用户手动切换语言比例。
    • 各地区转化率/留存差异。
  • 合规
    • 隐私政策/用户同意覆盖率。
    • 数据本地化符合率。

监控手段:

  • Dashboard 展示各语言健康度。
  • CI 门禁阻断未翻译、占位符错误。
  • 线上监控语言包加载失败和缺失 key。
  • 定期用户调研和本地化走查。

评分维度

  • 指标全面(40%):覆盖、质量、效率、体验、合规
  • 监控手段(30%):Dashboard、CI、线上监控
  • 持续改进(30%):KPI、复盘、反馈闭环

常见错误

  • 只看翻译覆盖率,忽略质量和用户体验。
  • 没有分 locale 的性能监控。

延伸追问

  • 如何量化国际化对业务增长的贡献?
  • 各地区转化率差异大时如何判断是本地化问题还是产品问题?

相关题目

参考资源

口头回答版

国际化度量要看覆盖度、翻译质量、上线效率、用户体验和合规。监控包括 CI 门禁、Dashboard、线上语言包加载和缺失 key、用户反馈。要分 locale 看性能和转化,持续复盘改进。


FB-33-CP-R-002:跨团队国际化治理如何推进?

题型:综合开放题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:国际化治理、跨团队、规范、TMS、组件库 出现频率:中频 预计回答时长:10-15 分钟

题目描述: 作为国际化负责人,你如何推动前端、产品、设计、运营等多个团队协同做好国际化?

参考答案

治理框架:

  • 统一规范
    • 制定国际化开发规范、key 命名规范、文案提交规范。
    • 提供 ADR 模板记录重大决策。
  • 统一平台
    • 统一 TMS、组件库、设计系统、翻译流水线。
    • 避免各业务重复建设。
  • 角色分工
    • 前端:技术框架、语言包加载、RTL 适配。
    • 产品:定义多语言策略、优先级、合规要求。
    • 设计:输出多语言/RTL 设计稿。
    • 运营/本地化:翻译、审校、内容发布。
  • 流程嵌入
    • 需求评审加入国际化 Checklist。
    • 设计稿必须包含英文/RTL 版本。
    • 代码评审检查硬编码文案和 RTL 问题。
  • 培训与赋能
    • 定期培训国际化最佳实践。
    • 建立 FAQ 和案例库。
  • 度量与激励
    • 将覆盖率、质量、上线时效纳入团队 OKR。
    • 对优秀实践进行表彰和推广。

推动策略:

  • 先找痛点(如反复出现的翻译 Bug)建立信任。
  • 从核心项目试点,再推广到全公司。
  • 用数据说明国际化对业务的价值。

评分维度

  • 治理框架(40%):规范、平台、角色、流程
  • 跨团队协作(30%):前端/产品/设计/运营分工
  • 推动策略(30%):试点、痛点、数据

常见错误

  • 只靠前端团队推动,产品和设计不参与。
  • 规范过于繁琐,业务团队抵触。

延伸追问

  • 如何处理业务团队为赶进度跳过国际化?
  • 如何建立国际化的“质量门禁”?

相关题目

参考资源

口头回答版

跨团队国际化治理要统一规范、统一平台、明确分工:前端负责技术框架,产品定策略,设计出多语言稿,运营翻译审校。流程里需求评审、设计稿、代码评审都加国际化 Checklist。先试点核心项目,用数据证明价值,再推广。


FB-33-CP-R-003:合规与本地化法律要求如何影响前端架构?

题型:综合开放题 难度:🔴 架构 岗位层级:架构 / 专家 面试知识域:33 国际化 标签:合规、GDPR、个人信息保护法、数据本地化、Cookie 出现频率:中频 预计回答时长:10-15 分钟

题目描述: 请说明 GDPR、个人信息保护法、数据本地化等法律要求如何影响前端架构设计。

参考答案

影响点:

  • 数据采集
    • 采集前需明确告知并获得同意(Cookie 横幅、隐私政策)。
    • 默认最小化,禁止默认开启非必要埋点和广告。
  • 数据存储
    • 敏感数据本地化存储,某些国家要求数据不出境。
    • 前端不持久化敏感个人信息。
  • Cookie 与追踪
    • 按类别(必要、分析、营销)管理 Cookie 同意。
    • 未同意前不加载分析/广告脚本。
  • 用户权利
    • 提供导出、删除、更正个人数据入口。
    • 未成年人需额外保护(年龄 gate、监护人同意)。
  • 内容合规
    • 不同地区的内容审核、下架、版权、语言政策。
  • 架构调整
    • 部署到符合数据本地化要求的区域。
    • 配置中心按地区下发合规策略(是否显示 Cookie 横幅、是否启用某些功能)。
    • 埋点 SDK 支持同意状态开关。

前端实践:

  • Consent Management Platform(CMP)。
  • 地区化配置中心。
  • 隐私协议和同意记录持久化。

评分维度

  • 法律理解(30%):GDPR、个保法、数据本地化
  • 架构影响(40%):采集、存储、Cookie、用户权利、部署
  • 前端实践(30%):CMP、配置中心、同意状态

常见错误

  • 认为合规只是法务工作,技术层不调整。
  • 全球统一一套隐私策略和 Cookie 横幅。

延伸追问

  • 如何在不破坏业务埋点的情况下实现同意管理?
  • 数据本地化要求对 CDN 和 API 部署有什么影响?

相关题目

参考资源

口头回答版

合规影响前端采集前告知同意、数据本地化、Cookie 分类管理、用户导出删除权利、内容审核等。架构上要用 Consent 管理平台、地区配置中心、按区域部署。埋点 SDK 按同意状态开关,不要全球统一一套策略。

FB-33-CP-B-001:什么是 i18n 和 l10n?有什么区别?

题型:综合开放题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:locale、TMS、国际化、本地化、Intl 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 什么是 i18n 和 l10n?有什么区别。

参考答案

i18n(Internationalization)是国际化,使产品具备支持多语言和地区的能力。l10n(Localization)是本地化,针对特定地区进行适配,如翻译、RTL、货币、日期格式。

区别:i18n 是能力,l10n 是具体适配。

补充说明

在实际落地 i18n 和 l10n有什么区别 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 定义准确(50%)
  • 区别说明(30%)
  • 举例说明(20%)

常见错误

  • 回答停留在定义复述,缺少真实项目中的取舍与折中。
  • 只讲正常路径,不提超时、降级、兼容等边界情况。
  • 对关键指标和取舍缺乏量化意识。

口头回答版

i18n(Internationalization)是国际化,使产品具备支持多语言和地区的能力。 l10n(Localization)是本地化,针对特定地区进行适配,如翻译、RTL、货币、日期格式。 区别:i18n 是能力,l10n 是具体适配。


FB-33-CO-B-009:前端 i18n 有哪些核心问题需要解决?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:locale、TMS、国际化、本地化、Intl 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 前端 i18n 有哪些核心问题需要解决。

参考答案

  • 文本翻译:key 管理、插值、复数。
  • 格式化:日期、数字、货币、度量单位。
  • RTL 适配:布局镜像、图标、动画。
  • 内容管理:翻译平台集成、版本控制。
  • 地区路由:URL/域名切换语言。

补充说明

在实际落地 前端 i18n 有哪些核心问题需要解决 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 文本翻译(25%)
  • 格式化(25%)
  • RTL(25%)
  • 内容管理(15%)
  • 路由(10%)

常见错误

  • 回答停留在定义复述,缺少真实项目中的取舍与折中。
  • 只讲正常路径,不提超时、降级、兼容等边界情况。
  • 对关键指标和取舍缺乏量化意识。

口头回答版

  • 文本翻译:key 管理、插值、复数。 - 格式化:日期、数字、货币、度量单位。 - RTL 适配:布局镜像、图标、动画。 - 内容管理:翻译平台集成、版本控制。

FB-33-CO-B-010:如何处理 RTL 布局?

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:locale、TMS、国际化、本地化、Intl 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 如何处理 RTL 布局。

参考答案

  • 使用 CSS 逻辑属性(margin-inline-start、text-align: start)。
  • 设置 html dir="rtl"。
  • 布局使用 flex/grid 时自动适配。
  • 方向性图标需要镜像。
  • 测试真实 RTL 语言。

补充说明

在实际落地 处理 RTL 布局 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 逻辑属性(40%)
  • dir 属性(20%)
  • 图标与动画(25%)
  • 测试(15%)

二、进阶题

常见错误

  • 回答停留在定义复述,缺少真实项目中的取舍与折中。
  • 只讲正常路径,不提超时、降级、兼容等边界情况。
  • 对关键指标和取舍缺乏量化意识。

口头回答版

  • 使用 CSS 逻辑属性(margin-inline-start、text-align: start)。 - 设置 html dir="rtl"。 - 布局使用 flex/grid 时自动适配。 - 方向性图标需要镜像。

FB-33-CO-A-008:ICU MessageFormat 有什么作用?

题型:概念题 难度:🟡 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:locale、TMS、国际化、本地化、Intl 出现频率:中频 预计回答时长:5-8 分钟

题目描述: ICU MessageFormat 有什么作用。

参考答案

ICU MessageFormat 用于处理复杂翻译场景,如插值、复数、选择、日期数字格式化。

示例:

{count, plural, =0 {无消息} one {1 条消息} other {# 条消息&#125;&#125;

补充说明

在实际落地 ICU MessageFormat 有什么作用 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 作用说明(40%)
  • 复数示例(30%)
  • 其他场景(30%)

常见错误

  • 回答停留在定义复述,缺少真实项目中的取舍与折中。
  • 只讲正常路径,不提超时、降级、兼容等边界情况。
  • 对关键指标和取舍缺乏量化意识。

口头回答版

ICU MessageFormat 用于处理复杂翻译场景,如插值、复数、选择、日期数字格式化。 示例: (代码示例)


FB-33-SD-A-001:如何设计一个可扩展的翻译工作流?

题型:系统设计题 难度:🟡 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:locale、TMS、国际化、本地化、Intl 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 如何设计一个可扩展的翻译工作流。

参考答案

  • 开发者使用 key,不手写翻译。
  • 提取工具自动抽取 key 到翻译文件。
  • 上传翻译平台(Crowdin/Lokalise)。
  • 翻译人员翻译,审核人员审核。
  • CI 自动下载翻译并构建。
  • 缺失翻译回退到默认语言。

补充说明

在实际落地 设计一个可扩展的翻译工作流 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 补充说明

在实际落地 设计一个可扩展的翻译工作流 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 角色分工(30%)
  • 工具集成(30%)
  • CI/CD(25%)
  • 兜底机制(15%)

常见错误

  • 回答停留在定义复述,缺少真实项目中的取舍与折中。
  • 只讲正常路径,不提超时、降级、兼容等边界情况。
  • 对关键指标和取舍缺乏量化意识。

口头回答版

  • 开发者使用 key,不手写翻译。 - 提取工具自动抽取 key 到翻译文件。 - 上传翻译平台(Crowdin/Lokalise)。 - 翻译人员翻译,审核人员审核。

FB-33-EN-A-001:全球化部署需要考虑哪些合规问题?

题型:工程化题 难度:🟡 进阶 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:locale、TMS、国际化、本地化、Intl 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 全球化部署需要考虑哪些合规问题。

参考答案

  • 数据本地化(中国个保法、GDPR)。
  • 用户同意(Cookie、隐私政策)。
  • 数据跨境传输。
  • 内容合规(不同地区法律)。
  • 未成年人保护。

补充说明

在实际落地 全球化部署需要考虑哪些合规问题 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 补充说明

在实际落地 全球化部署需要考虑哪些合规问题 时,建议结合 locale、TMS、国际化 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 数据本地化(30%)
  • 用户同意(25%)
  • 跨境传输(20%)
  • 内容合规(15%)
  • 其他(10%)

三、高级题

常见错误

  • 回答停留在定义复述,缺少真实项目中的取舍与折中。
  • 只讲正常路径,不提超时、降级、兼容等边界情况。
  • 对关键指标和取舍缺乏量化意识。

口头回答版

  • 数据本地化(中国个保法、GDPR)。 - 用户同意(Cookie、隐私政策)。 - 内容合规(不同地区法律)。

FB-33-CO-B-011:前端国际化的核心问题有哪些

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:国际化、i18n、翻译、语言、本地化 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请说明前端国际化需要解决的主要问题。

参考答案

核心思路如下:

  1. 文本翻译:提取、管理、加载多语言资源
  2. 复数、日期、数字、货币格式化
  3. 布局方向:RTL 语言支持
  4. 语言切换与状态保持
  5. SEO 与路由
  6. 文化差异与本地化

需要避免的典型误区:

  • 硬编码中文
  • 只翻译文本忽略格式
  • 忽略 RTL

补充说明

在实际落地 前端国际化的核心问题有哪些 时,建议结合 国际化、i18n、翻译 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):文本翻译、复数、日期、数字、货币格式化 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 硬编码中文
  • 只翻译文本忽略格式
  • 忽略 RTL

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

文本翻译;复数、日期、数字、货币格式化;布局方向;语言切换与状态保持;SEO 与路由;文化差异与本地化。同时要避免硬编码中文。


FB-33-CO-A-009:i18n 与 l10n 的区别

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、l10n、国际化、本地化、翻译 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请解释国际化与本地化的区别。

参考答案

核心思路如下:

  1. i18n:设计应用使其可适应不同语言和地区
  2. l10n:针对具体地区进行翻译和文化适配
  3. i18n 是能力,l10n 是内容
  4. 示例:i18n 框架支持,l10n 提供具体文案

需要避免的典型误区:

  • 混用两个概念
  • 只做翻译不做架构适配
  • 忽略本地化文化

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):i18n、l10n 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 混用两个概念
  • 只做翻译不做架构适配
  • 忽略本地化文化

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

i18n;l10n;i18n 是能力,l10n 是内容;示例。同时要避免混用两个概念。


FB-33-SC-A-001:如何设计前端多语言资源管理

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:多语言、资源、JSON、命名空间、懒加载 出现频率:高频 预计回答时长:5-8 分钟

题目描述: 请设计前端多语言资源的组织、加载和维护方案。

参考答案

核心思路如下:

  1. 按页面/模块拆分 namespace,避免全量加载
  2. 资源文件格式:JSON/YAML,键值结构
  3. 按需加载:切换语言或进入路由时加载对应资源
  4. 回退机制:找不到时回退默认语言
  5. 插值与组件:支持变量、HTML、组件替换
  6. 翻译管理平台:Crowdin、Lokalise

需要避免的典型误区:

  • 所有语言一个文件
  • 键名无规范导致冲突
  • 不区分语言包版本

补充说明

在实际落地 设计前端多语言资源管理 时,建议结合 多语言、资源、JSON 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):按页面/模块拆分 namespace,避免全量加载、资源文件格式 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 所有语言一个文件
  • 键名无规范导致冲突
  • 不区分语言包版本

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

按页面/模块拆分 namespace,避免全量加载;资源文件格式;按需加载;回退机制;插值与组件;翻译管理平台。同时要避免所有语言一个文件。


FB-33-CO-A-010:React/Vue 中常见的 i18n 方案

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:React Intl、vue-i18n、FormatJS、i18next 出现频率:高频 预计回答时长:5-8 分钟

题目描述: 请比较主流前端 i18n 库及其特点。

参考答案

核心思路如下:

  1. i18next:跨框架、生态丰富、插件多
  2. react-intl/FormatJS:React 官方推荐,ICU 消息格式
  3. vue-i18n:Vue 生态,语法简洁
  4. 选型:团队栈、ICU 支持、SSR 需求
  5. 统一消息格式便于翻译平台对接

需要避免的典型误区:

  • 每个项目用不同库
  • 消息格式不统一
  • 忽略 SSR

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):i18next、react-intl/FormatJS 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 每个项目用不同库
  • 消息格式不统一
  • 忽略 SSR

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

i18next;react-intl/FormatJS;vue-i18n;选型;统一消息格式便于翻译平台对接。同时要避免每个项目用不同库。


FB-33-PE-A-001:国际化对前端性能的影响及优化

题型:性能优化题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、性能、资源体积、懒加载、打包 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明多语言资源对性能的影响及优化手段。

参考答案

核心思路如下:

  1. 按需加载语言包,避免打包所有语言
  2. 拆分 namespace,路由级加载
  3. 预加载默认语言,其他语言异步加载
  4. 服务端渲染时注入初始语言数据
  5. 压缩资源,使用 CDN

需要避免的典型误区:

  • 打包 50 种语言
  • 切换语言全量刷新
  • 不做资源缓存

补充说明

在实际落地 国际化对前端性能的影响及优化 时,建议结合 i18n、性能、资源体积 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):按需加载语言包,避免打包所有语言、拆分 namespace,路由级加载 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 打包 50 种语言
  • 切换语言全量刷新
  • 不做资源缓存

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

按需加载语言包,避免打包所有语言;拆分 namespace,路由级加载;预加载默认语言,其他语言异步加载;服务端渲染时注入初始语言数据;压缩资源,使用 CDN。同时要避免打包 50 种语言。


FB-33-SC-P-001:如何处理 ICU 复数与插值

题型:场景设计题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:ICU、复数、插值、国际化、格式化 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明 ICU 消息格式中的复数、选择、插值用法。

参考答案

核心思路如下:

  1. 插值:{name} 替换变量
  2. 复数:{count, plural, one {# item} other {# items}}
  3. 选择:{gender, select, male {he} female {she}}
  4. 数字日期:{num, number}、
  5. 让翻译人员掌握 ICU 语法

需要避免的典型误区:

  • 用代码拼接复数
  • 不同语言复数规则不同硬编码
  • 插值不转义导致 XSS

补充说明

在实际落地 处理 ICU 复数与插值 时,建议结合 ICU、复数、插值 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):插值、复数 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 用代码拼接复数
  • 不同语言复数规则不同硬编码
  • 插值不转义导致 XSS

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

插值;复数;选择;数字日期;让翻译人员掌握 ICU 语法。同时要避免用代码拼接复数。


FB-33-CO-P-005:RTL 语言布局如何支持

题型:概念题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:RTL、国际化、布局、CSS、方向 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明支持阿拉伯语、希伯来语等 RTL 语言的方案。

参考答案

核心思路如下:

  1. HTML dir 属性设置为 rtl
  2. CSS 逻辑属性:margin-inline-start 替代 margin-left
  3. 使用 CSS-in-JS 或 PostCSS 插件自动翻转
  4. 图标和动画方向适配
  5. 测试:镜像布局、文字对齐

需要避免的典型误区:

  • 写死 left/right
  • 只做文本翻译不改布局
  • 忽略数字和标点方向

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):HTML dir 属性设置为 rtl、CSS 逻辑属性 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 写死 left/right
  • 只做文本翻译不改布局
  • 忽略数字和标点方向

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

HTML dir 属性设置为 rtl;CSS 逻辑属性;使用 CSS-in-JS 或 PostCSS 插件自动翻转;图标和动画方向适配;测试。同时要避免写死 left/right。


FB-33-SC-A-002:国际化与路由/SEO 的结合

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、路由、SEO、hreflang、SSR 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请设计支持多语言的 URL 和 SEO 方案。

参考答案

核心思路如下:

  1. URL 方案:子目录 /zh/ /en/ 或子域名
  2. HTML lang 属性与 hreflang 标签
  3. SSR 输出对应语言 HTML
  4. 默认语言重定向或 canonical
  5. 搜索引擎可索引各语言版本

需要避免的典型误区:

  • 用 hash 或 cookie 切换语言无独立 URL
  • 缺少 hreflang
  • SSR 语言数据不一致

补充说明

在实际落地 国际化与路由/SEO 的结合 时,建议结合 i18n、路由、SEO 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):URL 方案、HTML lang 属性与 hreflang 标签 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 用 hash 或 cookie 切换语言无独立 URL
  • 缺少 hreflang
  • SSR 语言数据不一致

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

URL 方案;HTML lang 属性与 hreflang 标签;SSR 输出对应语言 HTML;默认语言重定向或 canonical;搜索引擎可索引各语言版本。同时要避免用 hash 或 cookie 切换语言无独立 URL。


FB-33-CO-A-011:时区与日期时间处理

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:时区、日期、国际化、moment、dayjs 出现频率:高频 预计回答时长:5-8 分钟

题目描述: 请说明前端如何处理多时区、夏令时和日期格式化。

参考答案

核心思路如下:

  1. 存储 UTC 时间,显示按用户时区
  2. 使用 Temporal 或 date-fns/dayjs 等现代库
  3. 避免手写时区转换
  4. 让用户选择时区或按浏览器时区
  5. 注意跨天时间边界

需要避免的典型误区:

  • 用本地时间存储
  • 手写时区逻辑
  • 忽略夏令时

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):存储 UTC 时间,显示按用户时区、使用 Temporal 或 date-fns/dayjs 等现代库 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 用本地时间存储
  • 手写时区逻辑
  • 忽略夏令时

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

存储 UTC 时间,显示按用户时区;使用 Temporal 或 date-fns/dayjs 等现代库;避免手写时区转换;让用户选择时区或按浏览器时区;注意跨天时间边界。同时要避免用本地时间存储。


FB-33-SC-P-002:如何设计组件库的多语言支持

题型:场景设计题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:组件库、多语言、i18n、插槽、配置 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请设计一个支持多语言的通用组件库。

参考答案

核心思路如下:

  1. 组件内部文案通过 i18n 配置注入
  2. 提供 locale 属性或全局 ConfigProvider
  3. 允许通过 slot/children 覆盖默认文案
  4. 默认语言包可替换
  5. 避免组件库与业务翻译冲突

需要避免的典型误区:

  • 组件库硬编码中文
  • 文案与组件强耦合
  • 不支持覆盖默认文案

补充说明

在实际落地 设计组件库的多语言支持 时,建议结合 组件库、多语言、i18n 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):组件内部文案通过 i18n 配置注入、提供 locale 属性或全局 ConfigProvider 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 组件库硬编码中文
  • 文案与组件强耦合
  • 不支持覆盖默认文案

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

组件内部文案通过 i18n 配置注入;提供 locale 属性或全局 ConfigProvider;允许通过 slot/children 覆盖默认文案;默认语言包可替换;避免组件库与业务翻译冲突。同时要避免组件库硬编码中文。


FB-33-CO-P-006:翻译管理系统如何与前端集成

题型:概念题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:TMS、翻译、CI/CD、API、Crowdin 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明翻译管理平台与前端工程化的集成。

参考答案

核心思路如下:

  1. 开发提交源语言 key-value
  2. 翻译人员在 TMS 翻译
  3. CI 拉取最新翻译生成语言包
  4. 翻译进度与缺失检查
  5. 回退到源语言或默认语言

需要避免的典型误区:

  • 手动复制翻译文件
  • 翻译完成前无法发布
  • 不同环境翻译不一致

补充说明

在实际落地 翻译管理系统如何与前端集成 时,建议结合 TMS、翻译、CI/CD 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):开发提交源语言 key-value、翻译人员在 TMS 翻译 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 手动复制翻译文件
  • 翻译完成前无法发布
  • 不同环境翻译不一致

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

开发提交源语言 key-value;翻译人员在 TMS 翻译;CI 拉取最新翻译生成语言包;翻译进度与缺失检查;回退到源语言或默认语言。同时要避免手动复制翻译文件。


FB-33-SC-A-003:前端如何做语言切换体验

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:语言切换、i18n、状态、路由、刷新 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请设计流畅的语言切换体验。

参考答案

核心思路如下:

  1. 切换时保存偏好到 localStorage/用户配置
  2. 异步加载新语言包并替换
  3. 必要时刷新页面或路由切换
  4. 图片、日期、数字同步更新
  5. 避免闪烁:先加载资源再切换

需要避免的典型误区:

  • 切换后部分文案未更新
  • 语言偏好未持久化
  • 切换时白屏

补充说明

在实际落地 前端如何做语言切换体验 时,建议结合 语言切换、i18n、状态 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):切换时保存偏好到 localStorage/用户配置、异步加载新语言包并替换 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 切换后部分文案未更新
  • 语言偏好未持久化
  • 切换时白屏

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

切换时保存偏好到 localStorage/用户配置;异步加载新语言包并替换;必要时刷新页面或路由切换;图片、日期、数字同步更新;避免闪烁。同时要避免切换后部分文案未更新。


FB-33-CO-B-012:什么是伪本地化(Pseudolocalization)

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:伪本地化、i18n、测试、占位符 出现频率:低频 预计回答时长:3-5 分钟

题目描述: 请解释伪本地化及其在国际化测试中的作用。

参考答案

核心思路如下:

  1. 伪本地化:用模拟字符替换原文,测试布局扩展
  2. 帮助发现硬编码文本、布局截断、缺少翻译
  3. 常用:添加前缀、拉长文本、变音符号
  4. 可在开发/测试环境自动启用
  5. 不替代真实翻译测试

需要避免的典型误区:

  • 未做伪本地化直接上线
  • 认为伪本地化就是翻译
  • 只在生产环境发现布局问题

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):伪本地化、帮助发现硬编码文本、布局截断、缺少翻译 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 未做伪本地化直接上线
  • 认为伪本地化就是翻译
  • 只在生产环境发现布局问题

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

伪本地化;帮助发现硬编码文本、布局截断、缺少翻译;常用;可在开发/测试环境自动启用;不替代真实翻译测试。同时要避免未做伪本地化直接上线。


FB-33-SC-P-003:国际化项目的测试策略

题型:场景设计题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:i18n、测试、RTL、截图、翻译 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明如何测试国际化前端应用。

参考答案

核心思路如下:

  1. 功能测试:切换语言后所有文案正确
  2. 布局测试:长文本、RTL 不破坏布局
  3. 格式测试:日期、数字、货币、复数
  4. 截图测试:不同语言关键页面
  5. 缺失翻译检测:CI 扫描未翻译 key

需要避免的典型误区:

  • 只测默认语言
  • 忽略 RTL 测试
  • 不测格式规则

补充说明

在实际落地 国际化项目的测试策略 时,建议结合 i18n、测试、RTL 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):功能测试、布局测试 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 只测默认语言
  • 忽略 RTL 测试
  • 不测格式规则

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

功能测试;布局测试;格式测试;截图测试;缺失翻译检测。同时要避免只测默认语言。


FB-33-PE-A-002:多语言包的体积优化

题型:性能优化题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、体积、按需加载、压缩、拆分 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明如何减小小语言包体积。

参考答案

核心思路如下:

  1. 只打包默认语言,其他按需加载
  2. 按路由/页面拆分 namespace
  3. 移除未使用的 key
  4. 压缩 JSON 或转 JS 模块
  5. 服务端提供语言包 CDN

需要避免的典型误区:

  • 全量语言包打包
  • 语言包包含大量未用文案
  • 不压缩传输

补充说明

在实际落地 多语言包的体积优化 时,建议结合 i18n、体积、按需加载 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):只打包默认语言,其他按需加载、按路由/页面拆分 namespace 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 全量语言包打包
  • 语言包包含大量未用文案
  • 不压缩传输

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

只打包默认语言,其他按需加载;按路由/页面拆分 namespace;移除未使用的 key;压缩 JSON 或转 JS 模块;服务端提供语言包 CDN。同时要避免全量语言包打包。


FB-33-CO-P-007:货币与数字格式化

题型:概念题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:货币、数字、i18n、Intl、格式化 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明前端如何正确格式化货币和数字。

参考答案

核心思路如下:

  1. 使用 Intl.NumberFormat
  2. 区分货币符号、小数位、千分位
  3. 注意不同地区小数点和千分位符号
  4. 货币单位与汇率由服务端提供
  5. 不要用字符串拼接货币

需要避免的典型误区:

  • 硬编码 ¥/$
  • 忽略小数位差异
  • 用 toFixed 做货币格式化

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):使用 Intl.NumberFormat、区分货币符号、小数位、千分位 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 硬编码 ¥/$
  • 忽略小数位差异
  • 用 toFixed 做货币格式化

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

使用 Intl.NumberFormat;区分货币符号、小数位、千分位;注意不同地区小数点和千分位符号;货币单位与汇率由服务端提供;不要用字符串拼接货币。同时要避免硬编码 ¥/$。


FB-33-SC-A-004:如何处理翻译中的占位符和 HTML

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、占位符、HTML、XSS、转义 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明翻译文案中包含变量或 HTML 的安全渲染方案。

参考答案

核心思路如下:

  1. 变量插值默认转义
  2. 需要 HTML 时使用库提供的富文本组件
  3. 限制允许的标签和属性
  4. 避免用户输入直接放入翻译
  5. 对富文本做 DOMPurify 过滤

需要避免的典型误区:

  • 直接 v-html 翻译结果
  • 不过滤用户输入
  • 翻译人员插入脚本

补充说明

在实际落地 处理翻译中的占位符和 HTML 时,建议结合 i18n、占位符、HTML 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):变量插值默认转义、需要 HTML 时使用库提供的富文本组件 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 直接 v-html 翻译结果
  • 不过滤用户输入
  • 翻译人员插入脚本

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

变量插值默认转义;需要 HTML 时使用库提供的富文本组件;限制允许的标签和属性;避免用户输入直接放入翻译;对富文本做 DOMPurify 过滤。同时要避免直接 v-html 翻译结果。


FB-33-CO-A-012:国际化中的语言回退策略

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:回退、语言、方言、默认语言、i18n 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明多语言 fallback 策略。

参考答案

核心思路如下:

  1. 用户选择 > 浏览器语言 > 默认语言
  2. 方言回退到基础语言:zh-CN -> zh -> en
  3. 回退链可配置
  4. 找不到翻译时显示 key 或默认语言
  5. 避免空字符串

需要避免的典型误区:

  • 直接回退英文忽略地区
  • 回退链无限循环
  • 缺失翻译显示空

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):用户选择 > 浏览器语言 > 默认语言、方言回退到基础语言 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 直接回退英文忽略地区
  • 回退链无限循环
  • 缺失翻译显示空

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

用户选择 > 浏览器语言 > 默认语言;方言回退到基础语言;回退链可配置;找不到翻译时显示 key 或默认语言;避免空字符串。同时要避免直接回退英文忽略地区。


FB-33-SD-R-005:设计一个可扩展的国际化架构

题型:系统设计题 难度:🔴 架构 岗位层级:架构师 / 专家 面试知识域:33 国际化 标签:i18n、架构、插件、多语言、SSR、组件库 出现频率:低频 预计回答时长:8-15 分钟

题目描述: 请为公司级前端产品设计国际化架构。

参考答案

核心思路如下:

  1. 统一技术选型:在公司级范围选择一套 i18n 库与消息格式(如 ICU MessageFormat),并封装成内部 SDK,统一 API 与配置。
  2. 语言资源分层治理:基础通用文案、业务模块文案、组件库文案分别维护;通过命名空间按需加载,避免打包全部语言包。
  3. 构建与运行时按需加载:按路由/模块拆分语言包,支持 SSR 时服务端注入初始语言、客户端懒加载其余语言;关键路径文案预加载。
  4. 集成翻译管理系统(TMS):提供 Key 提取、翻译进度、审校工作流、缺失检测的自动化流水线;翻译变更触发 CI 自动发布。
  5. RTL 与本地化:从设计系统开始支持 RTL 布局、双向文本、日期/数字/货币格式化;通过视觉回归测试捕获布局问题。
  6. 质量与治理:建立 Key 命名规范、禁用硬编码文案、添加 i18n ESLint 规则;设置翻译覆盖率与缺失 Key 告警。

需要避免的典型误区:

  • 各项目各自为政
  • 组件库与业务翻译不统一
  • 上线前才发现 RTL 问题

补充说明

在实际落地 设计一个可扩展的国际化架构 时,建议结合 i18n、架构、插件 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):统一 i18n 库和消息格式、语言资源分层 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 各项目各自为政
  • 组件库与业务翻译不统一
  • 上线前才发现 RTL 问题

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

统一 i18n 库和消息格式;语言资源分层;按需加载与 SSR 注入;翻译管理系统集成;RTL 与本地化适配;自动化测试与缺失检测。同时要避免各项目各自为政。


FB-33-CO-B-013:Intl API 在前端的使用

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:Intl、DateTimeFormat、RelativeTime、ListFormat 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明 Intl API 能解决哪些国际化问题。

参考答案

核心思路如下:

  1. Intl.DateTimeFormat 格式化日期时间
  2. Intl.NumberFormat 格式化数字、货币、百分比
  3. Intl.RelativeTimeFormat 相对时间
  4. Intl.ListFormat 列表连接
  5. Intl.Collator 字符串排序
  6. 现代浏览器支持,需 polyfill

需要避免的典型误区:

  • 手写日期格式化
  • 忽略浏览器兼容性
  • 不考虑用户 locale

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):Intl.DateTimeFormat 格式化日期时间、Intl.NumberFormat 格式化数字、货币、百分比 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 手写日期格式化
  • 忽略浏览器兼容性
  • 不考虑用户 locale

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

Intl.DateTimeFormat 格式化日期时间;Intl.NumberFormat 格式化数字、货币、百分比;Intl.RelativeTimeFormat 相对时间;Intl.ListFormat 列表连接;Intl.Collator 字符串排序;现代浏览器支持,需 polyfill。同时要避免手写日期格式化。


FB-33-SC-P-004:如何处理多语言下的 SEO 与预渲染

题型:场景设计题 难度:🟣 深入 岗位层级:高级 / 资深 面试知识域:33 国际化 标签:i18n、SEO、SSR、预渲染、hreflang 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明多语言站点的 SEO 最佳实践。

参考答案

核心思路如下:

  1. 每种语言有独立 URL
  2. HTML lang 和 hreflang 标签
  3. SSR/SSG 输出各语言版本
  4. sitemap 包含各语言链接
  5. 避免自动重定向导致爬虫无法索引

需要避免的典型误区:

  • 用 JS 切换语言无独立 URL
  • hreflang 与 URL 不一致
  • 重定向所有爬虫到默认语言

补充说明

在实际落地 处理多语言下的 SEO 与预渲染 时,建议结合 i18n、SEO、SSR 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):每种语言有独立 URL、HTML lang 和 hreflang 标签 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 用 JS 切换语言无独立 URL
  • hreflang 与 URL 不一致
  • 重定向所有爬虫到默认语言

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

每种语言有独立 URL;HTML lang 和 hreflang 标签;SSR/SSG 输出各语言版本;sitemap 包含各语言链接;避免自动重定向导致爬虫无法索引。同时要避免用 JS 切换语言无独立 URL。


FB-33-PE-A-003:国际化对首屏性能的影响

题型:性能优化题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、首屏、SSR、语言包、加载 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明多语言对首屏性能的影响及优化。

参考答案

核心思路如下:

  1. 语言包过大增加请求和解析时间
  2. SSR 时注入当前语言数据减少请求
  3. 按需加载 namespace
  4. 语言包缓存和 CDN
  5. 默认语言内联,其他异步

需要避免的典型误区:

  • 首屏加载所有语言
  • SSR 不注入语言数据
  • 语言包阻塞渲染

补充说明

在实际落地 国际化对首屏性能的影响 时,建议结合 i18n、首屏、SSR 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):语言包过大增加请求和解析时间、SSR 时注入当前语言数据减少请求 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 首屏加载所有语言
  • SSR 不注入语言数据
  • 语言包阻塞渲染

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

语言包过大增加请求和解析时间;SSR 时注入当前语言数据减少请求;按需加载 namespace;语言包缓存和 CDN;默认语言内联,其他异步。同时要避免首屏加载所有语言。


FB-33-CO-A-013:文化本地化与简单翻译的区别

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:本地化、文化、颜色、图标、文案 出现频率:低频 预计回答时长:3-5 分钟

题目描述: 请举例说明本地化不只是翻译。

参考答案

核心思路如下:

  1. 颜色、图标、手势在不同文化含义不同
  2. 日期格式、地址格式、姓名顺序
  3. 支付方式、货币、税务规则
  4. 内容策略:节日、法律、合规
  5. 需要本地团队审核

需要避免的典型误区:

  • 只做直译
  • 使用有文化争议的图标
  • 忽略本地法律法规

补充说明

在实际落地 文化本地化与简单翻译的区别 时,建议结合 本地化、文化、颜色 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):颜色、图标、手势在不同文化含义不同、日期格式、地址格式、姓名顺序 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 只做直译
  • 使用有文化争议的图标
  • 忽略本地法律法规

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

颜色、图标、手势在不同文化含义不同;日期格式、地址格式、姓名顺序;支付方式、货币、税务规则;内容策略;需要本地团队审核。同时要避免只做直译。


FB-33-SC-A-005:如何在前端做翻译质量检查

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:翻译、质量、检查、CI、lint 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明如何在工程流程中保障翻译质量。

参考答案

核心思路如下:

  1. CI 检测未翻译 key 和占位符不匹配
  2. 伪本地化测试布局
  3. 翻译人员与开发协作平台
  4. 关键页面截图对比
  5. 用户反馈渠道与快速修正

需要避免的典型误区:

  • 上线前才给翻译
  • 不检查占位符
  • 无用户反馈机制

补充说明

在实际落地 在前端做翻译质量检查 时,建议结合 翻译、质量、检查 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):CI 检测未翻译 key 和占位符不匹配、伪本地化测试布局 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 上线前才给翻译
  • 不检查占位符
  • 无用户反馈机制

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

CI 检测未翻译 key 和占位符不匹配;伪本地化测试布局;翻译人员与开发协作平台;关键页面截图对比;用户反馈渠道与快速修正。同时要避免上线前才给翻译。


FB-33-CO-B-014:Locale 与 Language Tag 的区别

题型:概念题 难度:🟢 基础 岗位层级:初级 / 高级 面试知识域:33 国际化 标签:Locale、Language Tag、i18n、地区、语言 出现频率:高频 预计回答时长:3-5 分钟

题目描述: 请解释 locale 和 language tag 的含义。

参考答案

核心思路如下:

  1. Language Tag 如 zh-CN、en-US,标识语言+地区
  2. Locale 包含语言、地区、格式约定
  3. Locale 影响日期、数字、货币格式
  4. 选择时应区分语言与地区
  5. 回退链基于 language tag

需要避免的典型误区:

  • 只保存语言不保存地区
  • locale 与格式混用
  • 忽略方言差异

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):Language Tag 如 zh-CN、en-US,标识语言+地区、Locale 包含语言、地区、格式约定 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 只保存语言不保存地区
  • locale 与格式混用
  • 忽略方言差异

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

Language Tag 如 zh-CN、en-US,标识语言+地区;Locale 包含语言、地区、格式约定;Locale 影响日期、数字、货币格式;选择时应区分语言与地区;回退链基于 language tag。同时要避免只保存语言不保存地区。


FB-33-SC-A-006:多语言下的日期格式化

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:日期、格式化、i18n、Intl、locale 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明前端如何按 locale 格式化日期。

参考答案

核心思路如下:

  1. 使用 Intl.DateTimeFormat
  2. 根据用户 locale 选择格式
  3. 区分长、短、数字格式
  4. 存储 UTC,显示本地
  5. 考虑日历差异

需要避免的典型误区:

  • 手写日期格式
  • 忽略用户 locale
  • 时区与 locale 混淆

补充说明

在实际落地 多语言下的日期格式化 时,建议结合 日期、格式化、i18n 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):使用 Intl.DateTimeFormat、根据用户 locale 选择格式 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 手写日期格式
  • 忽略用户 locale
  • 时区与 locale 混淆

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

使用 Intl.DateTimeFormat;根据用户 locale 选择格式;区分长、短、数字格式;存储 UTC,显示本地;考虑日历差异。同时要避免手写日期格式。


FB-33-CO-A-014:翻译中的上下文问题

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:翻译、上下文、一词多义、i18n 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明同一词汇在不同上下文中翻译不同的处理。

参考答案

核心思路如下:

  1. 给翻译 key 添加上下文描述
  2. 同一词不同含义用不同 key
  3. 提供截图或使用场景
  4. 使用 ICU select 处理性别等
  5. 避免孤立字符串

需要避免的典型误区:

  • 同一 key 用于多个含义
  • 不提供上下文
  • 直译导致歧义

补充说明

在实际落地 翻译中的上下文问题 时,建议结合 翻译、上下文、一词多义 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):给翻译 key 添加上下文描述、同一词不同含义用不同 key 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 同一 key 用于多个含义
  • 不提供上下文
  • 直译导致歧义

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

给翻译 key 添加上下文描述;同一词不同含义用不同 key;提供截图或使用场景;使用 ICU select 处理性别等;避免孤立字符串。同时要避免同一 key 用于多个含义。


FB-33-PE-A-004:多语言资源分包策略

题型:性能优化题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:i18n、资源分包、按需加载、性能 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明如何按页面拆分包多语言资源。

参考答案

核心思路如下:

  1. 每个页面/模块独立语言包
  2. 进入路由时加载对应包
  3. 公共文案放基础包
  4. 预加载默认语言
  5. 按语言分包打包

需要避免的典型误区:

  • 所有文案一个文件
  • 不按需加载
  • 分包过细请求过多

补充说明

在实际落地 多语言资源分包策略 时,建议结合 i18n、资源分包、按需加载 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):每个页面/模块独立语言包、进入路由时加载对应包 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 所有文案一个文件
  • 不按需加载
  • 分包过细请求过多

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

每个页面/模块独立语言包;进入路由时加载对应包;公共文案放基础包;预加载默认语言;按语言分包打包。同时要避免所有文案一个文件。


FB-33-SC-A-007:RTL 测试要点

题型:场景设计题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:RTL、测试、布局、方向、i18n 出现频率:中频 预计回答时长:5-8 分钟

题目描述: 请说明 RTL 语言界面测试的关键点。

参考答案

核心思路如下:

  1. 整体布局是否镜像
  2. 图标和箭头方向是否正确
  3. 文本对齐方式
  4. 表单输入框方向
  5. 数字和标点显示

需要避免的典型误区:

  • 只翻译文本不测试布局
  • 使用固定 left/right
  • 忽略图标方向

补充说明

在实际落地 RTL 测试要点 时,建议结合 RTL、测试、布局 的真实场景做验证。重点关注可观测性埋点、异常降级路径和性能基线回归;同时通过灰度发布、指标看板和复盘机制持续迭代,确保方案从“能跑”演进为“可维护、可扩展”。 评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):整体布局是否镜像、图标和箭头方向是否正确 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 只翻译文本不测试布局
  • 使用固定 left/right
  • 忽略图标方向

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

整体布局是否镜像;图标和箭头方向是否正确;文本对齐方式;表单输入框方向;数字和标点显示。同时要避免只翻译文本不测试布局。


FB-33-CO-A-015:ICU Message Format 简介

题型:概念题 难度:🔵 进阶 岗位层级:中级 / 高级 面试知识域:33 国际化 标签:ICU、message format、国际化、复数、插值 出现频率:中频 预计回答时长:3-5 分钟

题目描述: 请说明 ICU Message Format 解决了什么问题。

参考答案

核心思路如下:

  1. 统一插值、复数、选择、数字日期格式
  2. 支持不同语言复数规则
  3. 便于翻译平台解析
  4. 如 {count, plural, one {# item}}
  5. 被 react-intl、FormatJS 使用

需要避免的典型误区:

  • 不用 ICU 自己拼字符串
  • 翻译人员不懂语法
  • 未做语法校验

评分维度

  • 问题理解与分析(35%):是否抓住核心矛盾
  • 方案设计(45%):统一插值、复数、选择、数字日期格式、支持不同语言复数规则 等关键点
  • 落地与优化(20%):是否考虑监控、回滚、演进

常见错误

  • 不用 ICU 自己拼字符串
  • 翻译人员不懂语法
  • 未做语法校验

延伸追问

  • 如果候选人答对了,可追问:能否举一个你实际项目中遇到的具体例子,并说明当时的取舍?
  • 如果候选人答错了,可引导:如果从“稳定性、可维护性、性能”三个维度再看,你还会补充哪些点?

相关题目

  • 暂无

参考资源

口头回答版

统一插值、复数、选择、数字日期格式;支持不同语言复数规则;便于翻译平台解析;如 {count, plural, one {# item}};被 react-intl、FormatJS 使用。同时要避免不用 ICU 自己拼字符串。


基于 MIT 协议发布