1 Star 1 Fork 0

cyan-inn / awesome-prometheus-alerts-zh

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

awesome-prometheus-alerts-zh

介绍

awesome-prometheus-alerts 翻译为中文

rules源仓库为https://github.com/samber/awesome-prometheus-alerts

使用百度API翻译为中文

翻译脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024/4/17 11:20
# @Author  : unclear
# @File    : translate_prometheus_rule.py
"""
将普罗米修斯的rules翻译成中文
源目录: rules
目标目录:rules_zh
"""
import re
import os
import time
import requests
import yaml
import json
import hashlib
import random

def parse_yaml_file(yaml_file_path):
    with open(yaml_file_path, 'r', encoding='utf-8') as stream:
        try:
            data = yaml.safe_load(stream)
            return data
        except yaml.YAMLError as exc:
            print("Error parsing YAML file:", exc)

def write_to_yaml_file(data, output_file):
    with open(output_file, 'w', encoding='utf-8') as file:
        yaml.dump(data, file, allow_unicode=True, default_flow_style=False)


def baidu_translate(text, from_lang='en', to_lang='zh'):
    # 创建盐值
    salt = str(random.randint(32768, 65536))
    app_id = 'xxx'  # appid
    secret_key = 'xx'  # 密钥
    # 取出模板变量
    var_list = re.findall(r'{{[^}]+}}', text.split('\n')[0])
    to_translate_text = re.sub(r'{{[^}]+}}', '#', text.split('\n')[0])
    print(to_translate_text)

    # 拼接待签名串
    sign_str = app_id + to_translate_text + salt + secret_key

    # MD5加密
    m = hashlib.md5()
    m.update(sign_str.encode('utf-8'))
    sign = m.hexdigest()

    # 构建请求参数
    params = {
        'appid': app_id,
        'q': to_translate_text,
        'from': from_lang,
        'to': to_lang,
        'salt': salt,
        'sign': sign
    }

    # 发送GET请求
    url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
    response = requests.get(url, params=params)

    # 解析响应内容
    result = json.loads(response.text)
    # print(result)
    if 'trans_result' in result and result['trans_result']:
        # 免费版的api 1s只能请求1次
        time.sleep(1.1)
        # 取出翻译的第一个结果
        translated_text = result['trans_result'][0]['dst']
        print(translated_text, var_list)

        # 换回变量
        handled_text = '\n'.join([translated_text.replace('#', '{}').format(*var_list), *text.split('\n')[1:]])
        return handled_text
    else:
        print(result)
        raise Exception('Translation failed or no results returned.')

def traverse_directory_recursively(directory):
    for entry in os.listdir(directory):
        full_path = os.path.join(directory, entry)
        print(full_path)
        if os.path.isdir(full_path):
            traverse_directory_recursively(full_path)
        else:
            content = parse_yaml_file(full_path)
            zh_full_path = full_path.replace('rules', 'rules_zh')
            if not os.path.exists(os.path.dirname(zh_full_path)):
                os.makedirs(os.path.dirname(zh_full_path))
            if os.path.isfile(zh_full_path):
                print(zh_full_path)
                continue
            for one_rule in content['groups']:
                if one_rule['rules']:
                    for one_alert in one_rule['rules']:
                        print(one_alert)
                        one_alert['annotations']['description'] = baidu_translate(one_alert['annotations']['description'])
                        one_alert['annotations']['summary'] = baidu_translate(one_alert['annotations']['summary'])
                        print(one_alert)
            write_to_yaml_file(content, zh_full_path)

traverse_directory_recursively('rules')

空文件

简介

awesome-prometheus-alerts 翻译为中文 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/cyan-inn/awesome-prometheus-alerts-zh.git
git@gitee.com:cyan-inn/awesome-prometheus-alerts-zh.git
cyan-inn
awesome-prometheus-alerts-zh
awesome-prometheus-alerts-zh
master

搜索帮助