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

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

毒舌时刻

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

"我的网站只面向国内用户,要什么国际化?"——结果业务拓展到海外,临时抱佛脚,
"我直接用中文写死,多简单!"——结果需要支持英文时,满世界找字符串,
"我用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

本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)

本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)

ESPHome 是一款用于 ESP8266 和 ESP32 芯片设备的开源系统,它允许用户通过定义简单的 YAML 配置文件来创建复杂的物联网( IoT )设备应用,而无需直接编写底层代码,特别适合于智能家居解决方案,可以与 Home Assistant 完美集成,但也可以独立使用。本文将详细介绍如何在 Linux 系统局域网内部署 ESPHome 并结合路由侠实现外网访问局域网内部署的 ESPHome 。 第一步,本地部署 ESPHome 1,本教程使用 Linux Ubuntu 系统进行演示,首先输入以下命令更新软件包列表并安装一些必要的依赖项。 sudo apt-get update && sudo apt-get install -y python3-pip python3-dev git 2,安装虚拟环境 venv 模块。 sudo

基于ROS的视觉导航系统实战:黑线循迹+激光笔跟随双模态实现(冰达机器人Nano改造)

基于ROS的视觉导航系统实战:黑线循迹+激光笔跟随双模态实现(冰达机器人Nano改造)

本篇内容是对另一篇文章《双轮智能平衡车基于图像识别技术探究道路自动驾驶理论模型与应用》的补充,有兴趣的同学可以先去那篇文章补一下课,再来看本篇文章效果更佳哦!!! 同时本次分享内容资源均同步上传至github与ZEEKLOG,想要深入学习的同学可以去下载学习!! (资源名称:基于ROS的视觉导航系统实战) 话不多说让我们进入正题吧!         在机器人室内导航场景中,视觉导航凭借低成本、高灵活性的优势成为教育机器人与服务机器人的主流方案。本文基于冰达机器人Nano系列进行硬件改造与软件开发,搭建了一套基于ROS的轻量级视觉导航系统,实现黑线循迹与红外激光笔动态跟随双模态功能。系统兼容ROS Melodic/Noetic版本,针对冰达机器人Nano的算力与底盘特性进行深度优化,低算力依赖、实时性强,非常适合入门级机器人开发者学习与二次拓展。本文将从项目设计、硬件改造、环境配置、代码实现、运行调试到扩展方向进行全流程精细讲解,并附上完整可运行代码与问题排查指南。 目录 1. 项目概述与核心亮点 2. 硬件配置与冰达机器人Nano改造方案 3. 软件环境配置(含版本适

无人机目标检测数据集介绍-14,751张图片 无人机检测 航拍图像

无人机目标检测数据集介绍-14,751张图片 无人机检测 航拍图像

🚁 无人机目标检测数据集介绍-14,751张图片 * 📦 已发布目标检测数据集合集(持续更新) * 🚁 无人机实例目标检测数据集介绍 * 📌 数据集概览 * 包含类别 * 🎯 应用场景 * 🖼 数据特性 * 🌟 项目功能 * 🔗 技术标签 * YOLOv8 训练实战 * 📦 1. 环境配置 * 安装 YOLOv8 官方库 ultralytics * 📁 2. 数据准备 * 2.1 数据标注格式(YOLO) * 2.2 文件结构示例 * 2.3 创建 data.yaml 配置文件 * 🚀 3. 模型训练 * 关键参数补充说明: * 📈 4. 模型验证与测试 * 4.1 验证模型性能 * 关键参数详解 * 常用可选参数 * 典型输出指标 * 4.2 推理测试图像 * 🧠 5. 自定义推理脚本(