跳到主要内容
弗美科技
服务案例

进口旅游网站的三语切换,最后卡在日期格式上

入境游网站要中英日三语,60 个行程页没有各建一套,而是主表加翻译表。真正卡住的是日期格式:日文写 2026年11月5日,英文写 05 Nov 2026。CSV 批量回填时 2000 多行错了 37 行,最后靠 fgetcsv 和一张格式表收的尾。

2016年7月22日多语言旅游网站字段设计

这是一个做入境游的客户,主要接日本和英语国家的团。网站要中、英、日三语,行程页大概 60 个,每页有标题、简介、行程天数、出发日期、价格、注意事项六块内容。听着不复杂,做起来最费劲的不是翻译,是日期和货币。

结构先定死

我们没有给每种语言各建一套页面。数据库里行程主表存公共字段(天数、价格、出发城市 id),另开一张翻译表,按 language_code 加 item_id 存文本,三个语言就是三行。后台加一条行程,编辑填三次文字,不用复制整页。

语言放 URL 第一段:/ja/tours/12、/en/tours/12。Nginx 里一条 rewrite 就够,不用为每种语言配一套路由。

日期格式吵了两轮

日文站客户要求写成「2026年11月5日」,英文站要「05 Nov 2026」,中文站「2026-11-05」。同一趟团期,三个页面显示三样。一开始想用 PHP 的 strftime 按 locale 切,结果服务器上 locale 不全,日文环境没装,直接退回英文。

后来改成自己写了个小函数:日期字段在库里统一存 DATE 类型,输出时按 language_code 查一张格式表,三个模板字符串。代码不到二十行,比折腾系统 locale 稳。

价格不换算,但格式要变

客户明确说页面只显示人民币,不自动换汇,怕汇率对不上。但英文和日文站的数字分隔符、货币符号位置不一样:¥12,800 和 12,800 元。这个也是格式表的一部分。另外日文站的「注意事项」普遍比中文长一截,卡片高度不固定,我们把列表改成 flex 换行,没写死高度。

翻译回填那两周

内容不是我们翻的,客户找了译员。后台给了个批量导入,CSV 三列:item_id、language_code、text。第一版导入脚本没处理换行,译员在单元格里敲了回车,一行拆成两行,2000 多行数据错了 37 行。改成用 PHP 的 fgetcsv 并把 enclosure 设对之后才准。那天我们把导进来的数据全表核了一遍,按 item_id 排序打印出来,一页页对。

上线后

切语言的下拉放在右上角,用 cookie 记住选择,下次直接进对应语种。没做按浏览器语言自动跳,客户说团队里有人浏览器是英文但想看中文站,别自作主张。

站点现在还在跑。后来加过签证申请表单,是另一回事了。

商务咨询 · 免费初步沟通

需要针对你的场景给个建议?

把业务背景和当前系统情况告诉我们,我们会给出可执行的思路。

在线留言

周一至周五 9:00–18:00 · 工作日 9:00–18:00 响应,留言会在一个工作日内回复。

商务微信
商务微信二维码

扫一扫,加商务微信咨询服务与方案报价

或填写需求表单