当前位置: 首页 > article >正文

LayUI组件国际化多国语言版本脚本-下篇根据语种替换

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

1、请将翻译后language.txt,放到layui目录的Models下。

2、读取language.txt,保存到字典中

import io
import os
import re
import hashlib

filepath = "layui\\layui-en-US\\modules" 
#读取翻译文件
file_data_dict = {}

languagefile = "language.txt"

#读取语言文件
def read_file_to_dict(file_path):
    global languagefile
    global file_data_dict
    with open(file_path+"\\"+languagefile, 'r',encoding='utf-8') as file:
        for line in file.readlines():
            line = line.strip()  # 去除每行首尾的空白字符
            if line:  # 跳过空行
                key, value = line.split('=')
                key = key.replace(" ","")#去掉里面可能出现的空格,google翻译后会出现个别空格,正常人工翻译不用管
                file_data_dict[key] = value

3、根据字典文件的内容进行替换

# 遍历指定目录,显示目录下的所有文件名
def each_file(filepath):
    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)

    
#读取文件并替换本文件
def read_file(filename):
    #if(filename.find('carousel.js')!= -1):
        chinese_pattern = re.compile('[\u4e00-\u9fff]+')
        new_lines = []
        with open(filename, 'r', encoding='utf-8') as file:
            for line in file:
                matches = chinese_pattern.findall(line)
                new_line = 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)
                                key = file_name+"_"+md5
                                value = file_data_dict[key]
                                #替换掉
                                print(line)
                                new_line = new_line.replace(match, value)
                                print(new_line)

                                #进行文件替换 file_data_dict
                                #print(match)
                new_lines.append(new_line)
            #保存文件
        with open(filename, 'w', encoding='utf-8') as file:
            file.writelines(new_lines)

4、执行主程序

if __name__ == '__main__':
  read_file_to_dict(file_path=filepath)
  each_file(filepath)


http://www.kler.cn/a/391681.html

相关文章:

  • 【数据结构】第1天之Java中的数据结构
  • 计算机网络 (33)传输控制协议TCP概述
  • 转运机器人在物流仓储行业的优势特点
  • HTML5实现好看的端午节网页源码
  • 给DevOps加点料:融入安全性的DevSecOps
  • TypeScript 爬虫项目实战:抓取豆瓣电影 Top 250(TypeScript简单应用)
  • idea的mapper.xml文件里写sql语句出现Tag name expected错误提示
  • hadoop健康舆情研究-计算机毕业设计源码05954
  • 【计网】实现reactor反应堆模型 --- 处理数据发回问题 ,异常处理问题
  • TTL电平是什么?
  • PCL 点云分割 分割多个平面
  • 【软考】系统分析师第二版 新增章节 第20章微服务系统分析与设计
  • HTTP的诞生:它解决了哪些网络通信难题?
  • 如何下载西瓜视频没有水印
  • 2024年Postman 下载安装的详细图文教程
  • 【SpringMVC】——Cookie和Session机制
  • 【面试分享】xshell连接Linux服务器22端口执行命令top期间的技术细节和底层逻辑
  • CV图像处理小工具——语义分割json生成检测框json
  • Windows 安装和配置虚拟机
  • python爬虫(二)爬取国家博物馆的信息
  • 使用nossl模式连接MySQL数据库详解
  • 2024 年 10 款替代 Postman 的工具,有免费有开源
  • 我来讲一下-Service Mesh.
  • 【Linux】网络编程3
  • 计算机网络之会话层
  • Ubuntu linux 命令总结