温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#如何实现文件筛选读取并翻译的自动化工具

发布时间:2023-03-16 09:52:12 来源:亿速云 阅读:92 作者:iii 栏目:开发技术

这篇文章主要介绍了C#如何实现文件筛选读取并翻译的自动化工具的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#如何实现文件筛选读取并翻译的自动化工具文章都会有所收获,下面我们一起来看看吧。

思路

  • 首选读取项目文件夹下的所有文件路径

  • 筛选路径文件后缀.只对.cs或自定义的文件操作读取

  • 使用正则表达式进行查询并处理为数组

  • 调用免费的百度翻译api进行任意类型的翻译

  • 使用replace进行替换字符串,并保存

准备工作

1,百度智能云领取免费的api接口

C#如何实现文件筛选读取并翻译的自动化工具

2,创建应用

C#如何实现文件筛选读取并翻译的自动化工具

3,调试api

C#如何实现文件筛选读取并翻译的自动化工具

代码实现

以上准备工作就绪后,代码就比较容易实现了,完整控制台代码如下:

Program.cs

using Batch_translation;
using System.Text.RegularExpressions;

Console.WriteLine("请按下任意键进行批量翻译!");
Console.ReadLine();



string strFolderPath = "you FolderPath";//你的项目文件夹路径
string[] files = Directory.GetFiles(strFolderPath, "*", SearchOption.AllDirectories); // 获取文件夹下所有文件路径,包括子文件夹
string[] subFolders = Directory.GetDirectories(strFolderPath, "*", SearchOption.AllDirectories); // 获取所有子文件夹路径

foreach (var filePath in files)
{
    //业务逻辑
    if (filePath.EndsWith(".cs"))
    {
        BatchTran(filePath);//获取文件内容并进行转换操作
    }
}
foreach (var folder in subFolders)
{
    foreach (var filePath in Directory.GetFiles(folder))
    {
        //业务逻辑
        if (filePath.EndsWith(".cs"))
        {
            BatchTran(filePath);//获取文件内容并进行转换操作
        }
    }
}

Console.WriteLine("转化完成");




void BatchTran(string filePath)
{
    /* 核心逻辑:
    首选读取项目文件夹下的所有文件路径
    筛选路径文件后缀.只对.cs或自定义的文件操作读取
    使用正则表达式进行查询并处理为数组
    调用免费的百度翻译api进行任意类型的翻译
    使用replace进行替换字符串,并保存
     */

    BaiDuApi baiDuApi = new BaiDuApi("you apikey", "you secretKey");//百度api 初始化
    string content = File.ReadAllText(filePath);//读取文本
    string pattern = @"("".*[\u4E00-\u9FA5]+.*[\u4E00-\u9FA5]+.*"")";//定义所需要的正则表达式(ps:此正则表示查询英文双引号下的中文)
    Regex myRegex = new Regex(pattern);
    MatchCollection collection = myRegex.Matches(content);
    foreach (Match match in collection)
    {
        var oldStr = "";
        oldStr = match.Value;//.Substring(0, match.Value.Length - 1)

        var newStr = baiDuApi.Translate(oldStr);
        if (!string.IsNullOrEmpty(newStr))
            content = content.Replace(oldStr, newStr);
    }
    if (collection.Count > 0)
        // 将修改后的内容写入到文件中
        File.WriteAllText(filePath, content);
}

BaiDuApi.cs

using System;
using System.IO;
using Newtonsoft.Json;
using RestSharp;
 
namespace Batch_translation
{
    public class BaiDuApi
    {
 
        private readonly string apiKey;
        private readonly string secretKey;
        public BaiDuApi(string apiKey, string secretKey)
        {
            this.apiKey = apiKey;
            this.secretKey = secretKey;
        }
 
        public string Translate(string sourceText)
        {
            var token = GetAccessToken(apiKey, secretKey);
            if (token == "")
                return "";
            var client = new RestClient($"https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token={token}");
            var request = new RestRequest("", Method.Post);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
 
            // 定义一个匿名类型对象
            var data = new { from = "zh", to = "en", q = sourceText };
            // 将对象序列化成 JSON 字符串
            string body = JsonConvert.SerializeObject(data);
            request.AddParameter("application/json", body, ParameterType.RequestBody);
            var response = client.Execute(request);
            if (response.Content == null)
            {
                return "";
            }
            var dataResult = JsonConvert.DeserializeObject<BaiDuMode>(response.Content);
            if (dataResult.result != null)
            {
                if (dataResult.result.trans_result != null && dataResult.result.trans_result.Count > 0)
                {
                    return dataResult.result.trans_result[0].dst;
                }
            }
            return sourceText;
        }
 
 
        /**
        * 使用 AK,SK 生成鉴权签名(Access Token)
        * @return 鉴权签名信息(Access Token)
        */
        static string GetAccessToken(string API_KEY, string SECRET_KEY)
        {
            var client = new RestClient($"https://aip.baidubce.com/oauth/2.0/token");
            var request = new RestRequest("", Method.Post);
            request.AddParameter("grant_type", "client_credentials");
            request.AddParameter("client_id", API_KEY);
            request.AddParameter("client_secret", SECRET_KEY);
            var response = client.Execute(request);
            Console.WriteLine(response.Content);
            if (response.Content == null)
                return "";
            var result = JsonConvert.DeserializeObject<dynamic>(response.Content);
            return result.access_token.ToString();
        }
 
 
    }
}

关于“C#如何实现文件筛选读取并翻译的自动化工具”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C#如何实现文件筛选读取并翻译的自动化工具”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI