单词翻译工具
翻译结果将显示在这里
前端:
基础框架:HTML(页面结构)+ CSS(样式美化)+ JavaScript(交互逻辑)
后端:
Go(Golang)
核心能力:搭建 HTTPS 服务,处理翻译请求和跨域访问
内置中英文词典映射,无需调用第三方接口
初始化时自动生成反向词典,实现双向翻译
package main
import (
"encoding/json"
"log"
"net/http"
"strings"
"unicode"
)
// 词典数据(英→中)
var dict = map[string]string{
"apple": "苹果",
"book": "书",
"computer": "电脑",
"hello": "你好",
"world": "世界",
"water": "水",
"cat": "猫",
"dog": "狗",
"sun": "太阳",
"moon": "月亮",
"tree": "树",
"flower": "花",
"bird": "鸟",
}
// 反向词典(中→英)
var reverseDict map[string]string
// 初始化:生成反向词典
func init() {
reverseDict = make(map[string]string, len(dict))
for eng, chi := range dict {
reverseDict[chi] = eng
}
}
// 翻译响应结构
type TranslationResponse struct {
Input string `json:"input"`
Output string `json:"output"`
Error string `json:"error"`
}
// 判断是否包含中文
func hasChinese(s string) bool {
for _, r := range s {
if unicode.Is(unicode.Han, r) {
return true
}
}
return false
}
// 翻译处理函数
func translateHandler(w http.ResponseWriter, r *http.Request) {
// 设置JSON响应头
w.Header().Set("Content-Type", "application/json; charset=utf-8")
// 跨域配置(生产环境建议替换为你的WordPress域名)
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET, OPTIONS")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
// 处理预检请求
if r.Method == http.MethodOptions {
w.WriteHeader(http.StatusNoContent)
return
}
// 仅允许GET方法
if r.Method != http.MethodGet {
res := TranslationResponse{Error: "仅支持GET请求"}
w.WriteHeader(http.StatusMethodNotAllowed)
json.NewEncoder(w).Encode(res)
return
}
// 获取输入单词
word := strings.TrimSpace(r.URL.Query().Get("word"))
if word == "" {
res := TranslationResponse{Error: "请提供单词参数(?word=需要翻译的内容)"}
w.WriteHeader(http.StatusBadRequest)
json.NewEncoder(w).Encode(res)
return
}
// 翻译逻辑
var result string
var exists bool
if hasChinese(word) {
result, exists = reverseDict[word]
} else {
result, exists = dict[word]
}
// 返回结果
if !exists {
res := TranslationResponse{
Input: word,
Output: "",
Error: "未找到对应翻译",
}
w.WriteHeader(http.StatusNotFound)
json.NewEncoder(w).Encode(res)
return
}
res := TranslationResponse{
Input: word,
Output: result,
Error: "",
}
json.NewEncoder(w).Encode(res)
}
func main() {
// 注册路由
http.HandleFunc("/translate", translateHandler)
// 证书和密钥的路径(请替换为你的实际绝对路径)
certFile := "/data/igo/1022/igozhang.cn.pem" // 例如:/home/ubuntu/igozhang.cn.pem
keyFile := "/data/igo/1022/igozhang.cn.key" // 例如:/home/ubuntu/igozhang.cn.key
// 启动HTTPS服务(监听8001端口)
log.Printf("正在启动HTTPS服务,监听端口: 8001")
log.Printf("证书路径: %s", certFile)
log.Printf("密钥路径: %s", keyFile)
// 关键:使用ListenAndServeTLS启动HTTPS服务
err := http.ListenAndServeTLS(":8001", certFile, keyFile, nil)
if err != nil {
// 启动失败时输出详细错误(方便排查)
log.Fatalf("服务启动失败: %v,请检查证书路径和端口是否被占用", err)
}
}