拿来即用,随处执行,不需要任何环境,不管是mac本还是Windows的,而且使用到的翻译api不需要注册不需要花钱
# 前言
在软件开发过程中,命名是一个极为重要且充满挑战的任务。一个好的命名不仅能够提高代码的可读性,还能减少后期维护的复杂性。然而,对于很多开发者,特别是那些需要在多种语言之间切换的开发者,命名往往是一个头疼的问题。为了解决这个痛点,我们开发了一个简单而实用的命名工具,希望能够帮助大家在开发过程中更加轻松地处理命名问题。
# 为什么用
在实际开发中,我们经常会遇到需要将中文名称转换为英文名称的情况,特别是在变量名、类名等命名时。手动翻译和格式转换不仅费时费力,而且容易出错。因此,我们希望通过一个自动化的工具来简化这个过程,提高效率。
# 为什么使用go
选择Go语言来实现这个工具,主要有以下几个原因:
- 简单高效:Go语言的语法简单,学习曲线平缓,适合快速开发。
- 并发支持:Go语言内置对并发的支持,可以方便地处理并发任务。
- 跨平台:Go语言编译出来的可执行文件可以在多个平台上运行,这使得我们的工具可以在不同的操作系统上使用。
- 性能优越:Go语言编译出的二进制文件执行效率高,适合需要高性能的工具开发。
# 解决了什么痛点
- 命名困难:许多开发者在命名时会感到困惑,尤其是需要从中文翻译成英文并符合命名规范时。这个工具自动化了这一过程,大大降低了命名的难度。
- 时间浪费:手动翻译和格式转换不仅耗费大量时间,而且容易出错。我们的工具通过调用翻译API并自动转换格式,节省了开发者的时间。
- 一致性问题:不同开发者在命名时可能会有不同的习惯和风格,导致代码风格不一致。使用工具可以确保命名的一致性,提升代码质量。
# 关键代码
func main() {
reader := bufio.NewReader(os.Stdin)
for {
// 提示用户输入
fmt.Println("请输入翻译前缀和中文,例如:xt 项目管理")
// 读取用户输入
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("读取输入失败:", err)
continue
}
// 去掉输入末尾的换行符
input = strings.TrimSpace(input)
parts := strings.SplitN(input, " ", 2)
if len(parts) != 2 {
fmt.Println("输入格式不正确,请输入前缀和中文短语,例如:xt 项目管理")
continue
}
prefix, chinese := parts[0], parts[1]
// 调用翻译API
translations, err := translate(chinese)
if err != nil {
fmt.Println("翻译失败:", err)
continue
}
// 清理HTML标签
for i := range translations {
translations[i] = cleanHTMLTags(translations[i])
}
// 如果有多个翻译结果,让用户选择一个
selectedTranslation := translations[0]
if len(translations) > 1 {
fmt.Println("请选择一个翻译结果:")
for i, translation := range translations {
fmt.Printf("%d: %s\n", i+1, translation)
}
var choice int
_, err := fmt.Scanln(&choice)
if err != nil || choice < 1 || choice > len(translations) {
fmt.Println("选择无效,默认使用第一个翻译结果")
} else {
selectedTranslation = translations[choice-1]
}
}
var formatted string
// 根据前缀进行格式化
switch prefix {
case "xt":
formatted = toCamelCase(selectedTranslation)
case "cl":
formatted = toUpperCaseSnake(selectedTranslation)
case "dt":
formatted = toPascalCase(selectedTranslation)
case "sq":
formatted = toLowerCaseSnake(selectedTranslation)
default:
fmt.Println("无效的前缀")
continue
}
// 复制到剪贴板
err = clipboard.WriteAll(formatted)
if err != nil {
fmt.Println("无法复制到剪贴板:", err)
continue
}
// 提示成功
fmt.Println("翻译成功,结果已复制到剪贴板:", formatted)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 项目演示之小驼峰命名
# 项目演示之大驼峰命名
# 项目演示之常量命名
这里图片出现点问题,和上面演示是一样的
# 获取
如有需要可以关注下方公众号回复transition
获取