mirror of
https://github.com/kejilion/sh.git
synced 2025-08-17 20:41:11 +08:00
Add files via upload
This commit is contained in:
parent
d31295a99e
commit
7644481116
2 changed files with 12269 additions and 0 deletions
12193
ir/kejilion.sh
Normal file
12193
ir/kejilion.sh
Normal file
File diff suppressed because it is too large
Load diff
76
ir/to-fa.py
Normal file
76
ir/to-fa.py
Normal file
|
@ -0,0 +1,76 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from deep_translator import GoogleTranslator
|
||||
import re
|
||||
import os
|
||||
|
||||
def is_chinese(text):
|
||||
return bool(re.search(r'[\u4e00-\u9fff]', text))
|
||||
|
||||
def translate_text(text):
|
||||
try:
|
||||
return GoogleTranslator(source='zh-CN', target='fa').translate(text)
|
||||
except Exception as e:
|
||||
print(f"\nTranslation error: {e}")
|
||||
return text
|
||||
|
||||
def translate_line_preserving_variables(line):
|
||||
"""
|
||||
Translate only Chinese parts in echo/read/send_stats commands, excluding shell variables
|
||||
"""
|
||||
# Match double or single quoted strings
|
||||
def repl(match):
|
||||
full_string = match.group(0)
|
||||
quote = full_string[0]
|
||||
content = full_string[1:-1]
|
||||
|
||||
# Split by variable expressions
|
||||
parts = re.split(r'(\$\{?\w+\}?)', content)
|
||||
translated_parts = [
|
||||
translate_text(p) if is_chinese(p) else p
|
||||
for p in parts
|
||||
]
|
||||
return quote + ''.join(translated_parts) + quote
|
||||
|
||||
return re.sub(r'(?:\'[^\']*\'|"[^"]*")', repl, line)
|
||||
|
||||
def translate_file(input_file, output_file):
|
||||
total_lines = sum(1 for _ in open(input_file, 'r', encoding='utf-8'))
|
||||
processed_lines = 0
|
||||
|
||||
with open(input_file, 'r', encoding='utf-8') as f_in, \
|
||||
open(output_file, 'w', encoding='utf-8') as f_out:
|
||||
|
||||
for line in f_in:
|
||||
processed_lines += 1
|
||||
progress = processed_lines / total_lines * 100
|
||||
print(f"\rProcessing: {progress:.1f}% ({processed_lines}/{total_lines})", end='')
|
||||
|
||||
leading_space = re.match(r'^(\s*)', line).group(1)
|
||||
stripped = line.strip()
|
||||
|
||||
if stripped.startswith('#') and is_chinese(stripped):
|
||||
comment_mark = '#'
|
||||
comment_text = stripped[1:].strip()
|
||||
if comment_text:
|
||||
translated = translate_text(comment_text)
|
||||
f_out.write(f"{leading_space}{comment_mark} {translated}\n")
|
||||
else:
|
||||
f_out.write(line)
|
||||
|
||||
elif any(cmd in stripped for cmd in ['echo', 'read', 'send_stats']) and is_chinese(stripped):
|
||||
translated_line = translate_line_preserving_variables(line)
|
||||
f_out.write(translated_line)
|
||||
|
||||
else:
|
||||
f_out.write(line)
|
||||
|
||||
print("\nTranslation completed.")
|
||||
print(f"Original file size: {os.path.getsize(input_file)} bytes")
|
||||
print(f"Translated file size: {os.path.getsize(output_file)} bytes")
|
||||
|
||||
if __name__ == "__main__":
|
||||
input_file = 'kejilion.sh'
|
||||
output_file = 'kejilion_fa.sh'
|
||||
translate_file(input_file, output_file)
|
Loading…
Add table
Add a link
Reference in a new issue