前端国际化:让你的网站走向世界

前端国际化:让你的网站走向世界

毒舌时刻

前端国际化?这不是大公司才需要的吗?

"我的网站只面向国内用户,要什么国际化?"——结果业务拓展到海外,临时抱佛脚,
"我直接用中文写死,多简单!"——结果需要支持英文时,满世界找字符串,
"我用Google翻译,多快!"——结果翻译质量差,用户体验差。

醒醒吧,国际化不是可选的,而是现代前端开发的标配!

为什么你需要这个?

  • 全球用户覆盖:吸引来自不同国家和地区的用户
  • 业务拓展:为未来的海外业务做准备
  • 用户体验:让用户使用自己熟悉的语言
  • 品牌形象:展现专业、全球化的品牌形象

反面教材

// 反面教材:硬编码字符串 function Header() { return ( <div className="header"> <h1>欢迎来到我的网站</h1> <nav> <a href="/">首页</a> <a href="/about">关于我们</a> <a href="/contact">联系我们</a> </nav> </div> ); } // 反面教材:手动切换语言 function App() { const [language, setLanguage] = useState('zh'); const getText = (key) => { const texts = { zh: { welcome: '欢迎', about: '关于我们', contact: '联系我们' }, en: { welcome: 'Welcome', about: 'About Us', contact: 'Contact Us' } }; return texts[language][key]; }; return ( <div> <button onClick={() => setLanguage('zh')}>中文</button> <button onClick={() => setLanguage('en')}>English</button> <h1>{getText('welcome')}</h1> {/* 其他内容 */} </div> ); } 

正确的做法

// 正确的做法:使用专业的国际化库 // 安装依赖:npm install i18next react-i18next // i18n.js import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import zh from './locales/zh.json'; import en from './locales/en.json'; // 配置i18next i18n .use(initReactI18next) .init({ resources: { zh: { translation: zh }, en: { translation: en } }, lng: 'zh', // 默认语言 fallbackLng: 'en', // 回退语言 interpolation: { escapeValue: false // React已经默认转义 } }); export default i18n; // locales/zh.json /* { "welcome": "欢迎来到我的网站", "nav": { "home": "首页", "about": "关于我们", "contact": "联系我们" }, "greeting": "你好,{{name}}!", "count": "你有 {{count}} 条消息" } */ // locales/en.json /* { "welcome": "Welcome to my website", "nav": { "home": "Home", "about": "About Us", "contact": "Contact Us" }, "greeting": "Hello, {{name}}!", "count": "You have {{count}} messages" } */ // 正确的做法:在组件中使用 import React from 'react'; import { useTranslation } from 'react-i18next'; function Header() { const { t } = useTranslation(); return ( <div className="header"> <h1>{t('welcome')}</h1> <nav> <a href="/">{t('nav.home')}</a> <a href="/about">{t('nav.about')}</a> <a href="/contact">{t('nav.contact')}</a> </nav> </div> ); } function Greeting({ name }) { const { t } = useTranslation(); return ( <div> {/* 带参数的翻译 */} <p>{t('greeting', { name })}</p> </div> ); } function MessageCount({ count }) { const { t } = useTranslation(); return ( <div> {/* 复数形式 */} <p>{t('count', { count })}</p> </div> ); } // 正确的做法:语言切换组件 import React from 'react'; import { useTranslation } from 'react-i18next'; function LanguageSwitcher() { const { i18n } = useTranslation(); const changeLanguage = (lng) => { i18n.changeLanguage(lng); }; return ( <div className="language-switcher"> <button onClick={() => changeLanguage('zh')}>中文</button> <button onClick={() => changeLanguage('en')}>English</button> </div> ); } 

毒舌点评

看看,这才叫前端国际化!不是简单地手动切换字符串,而是使用专业的国际化库,统一管理翻译资源。

记住,国际化不仅仅是翻译文本,还包括日期、时间、数字、货币等格式的本地化,以及RTL(从右到左)语言的支持。

所以,别再觉得国际化麻烦了,它是你网站走向世界的必备技能!

总结

  • 使用专业库:如i18next、react-intl等
  • 统一管理翻译资源:将翻译文本放在单独的JSON文件中
  • 支持参数化翻译:处理带变量的文本
  • 支持复数形式:根据数量变化显示不同的文本
  • 自动检测语言:根据用户浏览器设置自动切换语言
  • 本地化格式:处理日期、时间、数字等的本地化
  • RTL支持:支持从右到左的语言如阿拉伯语
  • 懒加载翻译:按需加载翻译资源,减少包大小

国际化,让你的网站更具全球视野!

Read more

我给自己招了个AI编辑部:用OpenClaw全自动运营公众号,日更再也不秃头

我给自己招了个AI编辑部:用OpenClaw全自动运营公众号,日更再也不秃头

我给自己招了个AI编辑部:用OpenClaw全自动运营公众号,日更再也不秃头 选题、写稿、配图、排版、发布——全让AI干了。我?我负责躺着审稿。 做过公众号的朋友都懂:日更是一种修行,周更是一种挣扎,月更是一种自我安慰。 每天的流程大概是这样的:打开热搜找选题 → 打开浏览器扒素材 → 打开编辑器憋文章 → 打开PS做配图 → 打开公众号后台调排版 → 点击发布 → 看着个位数的阅读量陷入沉思。 一套组合拳下来,4到6个小时没了,头发也少了几根。 直到有一天,我发现了 OpenClaw——一个可以部署在自己电脑上的AI助手。关键是,它可以装各种 Skills(技能插件),组合起来简直就是一个AI编辑部:选题、写稿、配图、排版、推送到公众号草稿箱,全链路自动化。 我当时的反应是:这不就是我梦寐以求的"带薪摸鱼"方案吗? 先交代一下我的装备 在开始之前,先说明一下我的部署环境,

AI与单片机之:STM32上运行AI大模型的四种方案!(含案例,建议收藏)

AI与单片机之:STM32上运行AI大模型的四种方案!(含案例,建议收藏)

前几天小编写了2篇文章 “为什么AI会改变单片机的未来?” 单片机上如何运行AI?单片机如何“学会思考”之TinyML崛起!(含案例,建议收藏), 引起了非常多的留言、关注和加群讨论。但是,仍然有读者朋友给小编留言,能否整理一些关于比较常用芯片比如STM32实用AI大模型的案例。为了满足粉丝朋友的诉求,小编整理了“在STM32单片机上运行AI大模型的”真实案例。 从粉丝的一个问题引出本文的思考:AI 模型能跑在 STM32 上吗? 一:先说结论 先说结论:不仅能跑,还一共有四种方案。 方案一:STM32官方提供的 STM32Cube.AI(X-CUBE-AI) 其实原理是我们把在 PC 上训练好的神经网络自动转换成可在 MCU 上运行的 C 库;然后在自己的软件/代码工程中调用已经编译产生的C库。 方案二:直接用 TensorFlow Lite Micro(TFLM)+ CMSIS-NN 在 STM32

AI风口劝退指南:为什么99%的普通人不该盲目追AI?理性入局的完整路径与实战建议(2026深度解析)

AI风口劝退指南:为什么99%的普通人不该盲目追AI?理性入局的完整路径与实战建议(2026深度解析) 摘要: 2026年,AI大模型热潮持续升温,但“全民学AI”的背后,是大量非科班、无基础、资源匮乏者陷入时间、金钱与心理的三重亏损。本文从认知偏差、能力错配、资源垄断、职业断层、教育泡沫五大维度,系统剖析为何多数人不应盲目追逐AI风口,并提供一条分阶段、可落地、高性价比的理性参与路径。全文包含技术原理详解、真实失败案例、实用代码示例、调试技巧及职业规划建议,全文约9800字,适合所有对AI感兴趣但尚未入局、或已深陷焦虑的技术爱好者阅读。 一、引言:当“AI=财富自由”成为时代幻觉 2026年3月,某技术论坛上一则帖子引发广泛共鸣: “辞职三个月,每天16小时啃《深度学习》《Attention Is All You Need》,结果连Hugging Face的Trainer都配置失败。存款耗尽,