LayUI组件国际化多国语言版本脚本-上篇提取中文字符

最近项目需要使用多国语言版本,但是项目之前的代码使用了Layui组件,全网找不到layui的多语言,只能自己动手做,使用Python脚本提取组件中所有的中文。

1、到官网下载完整的版本,一定不要用压缩包,改了容易报错

2、Python遍历文件夹

python 复制代码
import io
import os
import re
import hashlib


filepath = "\\layui\\layui-zh-CN\\modules" 

# 遍历指定目录,显示目录下的所有文件名
def each_file(filepath):
    chinese_charsList = []
    languagefile = "language.txt"
    for root, dirs, files in os.walk(filepath):
        for file in files:
            if(file.find(languagefile)== -1):#过滤语言包,避免重复运行一直累加
                filename = os.path.join(root, file)
                print(filename+"\n")

                filtered_chinese_chars = read_file(filename)
                chinese_charsList = chinese_charsList + filtered_chinese_chars

    #chinese_charsList = list(set(chinese_charsList))
    # 构建新的文件路径,将后缀改为.txt
    new_file_path = os.path.join(filepath, languagefile)
    if(len(chinese_charsList)>0):
        with open(new_file_path, 'w', encoding='utf-8') as file:
            file.write("\n".join(chinese_charsList))

3、提取中文字符,并保存到language.txt,保存格式为KeyValue模式,方便替换的时候查找

python 复制代码
def read_file(filename):
    #if(filename.find('carousel.js')!= -1):
        chinese_pattern = re.compile('[\u4e00-\u9fff]+')
        filtered_chinese_chars = []
        with open(filename, 'r', encoding='utf-8') as file:
            for line in file:
                matches = chinese_pattern.findall(line)
                for match in matches:
                    #过滤js文件里面 // 和*开头的行
                    if (not line.strip().startswith('//')) and (not line.strip().startswith('*')): 
                        #查找字符串面是否直接带// /*
                        index_target = line.find(match)
                        if index_target > 0:
                            preceding_text = line[:index_target]
                            if ("//" not in preceding_text) and ("/*" not in preceding_text):
                                #增加字符串的Md5标识,方便之后翻译后替换
                                md5 = hashlib.md5(match.encode('utf-8')).hexdigest()
                                file_name = os.path.basename(filename)
                                #保存格式文件名,字符串M5,需要翻译的汉字
                                filtered_chinese_chars.append(file_name+"_"+md5+"="+match)
                                #print(match)

        
        return filtered_chinese_chars

4、运行主程序

python 复制代码
if __name__ == '__main__':
  each_file(filepath)
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙3 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_426003963 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
长沙三为智能科技3 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python