
拿来即用,随处执行,不需要任何环境,不管是mac本还是Windows的,而且使用到的翻译api不需要注册不需要花钱
在软件开发过程中,命名是一个极为重要且充满挑战的任务。一个好的命名不仅能够提高代码的可读性,还能减少后期维护的复杂性。然而,对于很多开发者,特别是那些需要在多种语言之间切换的开发者,命名往往是一个头疼的问题。为了解决这个痛点,我们开发了一个简单而实用的命名工具,希望能够帮助大家在开发过程中更加轻松地处理命名问题。
在实际开发中,我们经常会遇到需要将中文名称转换为英文名称的情况,特别是在变量名、类名等命名时。手动翻译和格式转换不仅费时费力,而且容易出错。因此,我们希望通过一个自动化的工具来简化这个过程,提高效率。
选择Go语言来实现这个工具,主要有以下几个原因:
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)
}
}![iShot_2024-07-16_14.11.59.mp4 [视频转webp输出图片]](https://developer.qcloudimg.com/http-save/yehe-100000/e589d363af12d1e138aaa5c2ae399df3.png)
![iShot_2024-07-16_14.17.22.mp4 [视频转 webp 输出图片]](https://developer.qcloudimg.com/http-save/yehe-100000/4f88178fde773d485deabd3ed7ff31d2.webp)
这里图片出现点问题,和上面演示是一样的