Java开源ERP系统Axelor汉化方法初探

news2025/4/21 19:48:33

Axelor简介

汉化过程介绍

定义语言和本地化

导出多语言记录

导入翻译

验证翻译

调整翻译


  • Axelor简介

        2024年6月份Axelor ERP发布了8.1版本,适配JDK11及PostgreSQL12及以上版本(7及以前版本适配JDK8及PostgreSQL10)数据库。v8版本较之前版本在界面上有很大的变化,深色(Dark)主题更Nice了。

浅色(Light)主题仍保持Axelor的简洁明亮的风格。Axelor在java开源ERP系统中具有很强的竞争力。

        Axelor使用Gradle作为构建工具,前端采用ReactJS,但基本不需要开发人员写前端代码,官方的open-suite-webapp(一套完整的ERP系统,也就是本文中描述的这套系统)中也只有axelor-human-resource和axelor-project两个模块有单独的js模块代码,其余均为java或groove代码,因此对项目二次开发支持还是相当友好。

        Axelor发布的版本中集成了Studio开发环境、BPM Studio以及WS Studio,使得二次开发效率得到更好的提升。本文中就不对这些内容展开描述了。以下截图为示例BMP流程(披萨发货流程)

Studio主要用于界面设计的调整,也可以进行项目的实体设计等,类似Axelor的一个低代码开发平台。

        Axelor ERP多语言支持方面较Odoo(另外一个Python语言的开源ERP)要少很多,Odoo17中支持的多语言有72种,而Axelor默认的只有英语和法语,但是Axelor中,多语言的处理也还算友好,并不复杂。下面就介绍一种简单的快速翻译成中文的处理方法,供Axelor爱好者参考。

  • 汉化过程介绍

        汉化处理的过程大体分为以下几个步骤:

  • 定义语言和本地化

        增加语言:进入Application config->General data->Language增加中文记录,如下:

        增加本地化:进入Application config->General data->Locallizatuions增加中文记录,如下:

  • 导出多语言记录

        官网对这部分的介绍并不详细,论坛中推荐的方式是通过Advanced Export(Application config->Technical maintenance->Advanced Export),然后做后续的处理,本文采用的是直接从数据库表获取记录方式。

        Axelor的多语言记录全部保存在数据库表“meta_translation”中,所以只要把这里的记录导出后进行翻译即可,该表的结构也很简单:

        翻译主要用到的就是message_key和message_value两个字段,其中message_key是程序中处理和检索多语言的键值,字符串类型,根据模块中开发人员熟悉的语言进行预定义,message_value是界面中显示的内容,所以真正要翻译的就是message_value。因此这里只要把这两个内容导出来,对message_value进行翻译后再导入到meta_translation表中即可。

        假设我们希望通过英文的多语翻译成中文,那么只要在SQL工具中执行以下语句,并将结果保存为excel文件即可(本文使用Google文档翻译,所以导出Excel,如果使用其他文档翻译器,根据文档翻译器支持的文档格式导出或者导出后再转换),导出的文件编码为UTF-8

select message_key,message_value from meta_translation where language = 'en' and  COALESCE(message_value,'') !='';
  • 导入翻译

        将上述字段导出Excel后,将文件另存一份,其中一份只保留需要翻译的message_value这一列(这里假设为文件B,原始导出的文件为A),然后把文件交给Google进行翻译,将翻译后的文件下载(这里假设文件C),将C中内容复制到文件A中(注意不要错行),然后在Excel中通过公式方式做SQL拼接,将A文件中的message_value和message_key拼接为insert语句,

INSERT INTO meta_translation (id,  version, message_key, language, message_value) 

其中,id取值为nextval('meta_translation_seq'), version取值为0,languzge取值为"zh",message_value和message_key分别为Excel表中的行记录。将拼接好的SQL通过SQL命令行或者工具执行插入。这里需要补充说明的是,由于key和value的值中均有可能存在单引号或者双引号这种特殊字符,需要对这两部分的值针对这些特殊字符进行替换处理,以保证拼接后的SQL能正常执行,当然也可以忽略这些内容,后续手工再做翻译的调整。

  • 验证翻译

        打开应用右上角的用户配置,选择中文。

        界面中如果已经能正常显示中文即表示翻译已经生效

加载完成后

打开一个节点

如果希望登陆界面也默认是中文,需要修改Axelor系统的启动配置文件中的application.locale = zh_CN,具体间在线文档。

  • 翻译调整

      由于不同翻译器对计算机系统这种相对比较专业的翻译并不一定完全符合使用习惯,因此,如果对机器翻译的结果不满意时,可以通过Administration->View Management->All Translations进行调整处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1902004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

景区气象站:守护旅行安全的智能向导

在繁忙的现代社会,人们越来越渴望逃离城市的喧嚣,寻找一处宁静的自然之地放松身心。景区,作为大自然与人类文明交织的瑰宝,吸引了无数游客前来探访。然而,多变的天气往往给游客的旅行带来不确定性。 景区气象站&#x…

Python + OpenCV 开启图片、写入储存图片

这篇教学会介绍OpenCV 里imread()、imshow()、waitKey() 方法,透过这些方法,在电脑中使用不同的色彩模式开启图片并显示图片。 imread() 开启图片 使用imread() 方法,可以开启图片,imread() 有两个参数,第一个参数为档…

nginx的正向代理和反向代理以及tomcat

nginx的正向代理和反向代理: 正向代理以及缓存配置: 代理:客户端不再是直接访问服务端,通过代理服务器访问服务端。 正向代理:面向客户端,我们通过代理服务器的IP地址访问目标范围端。 服务端只知道代理…

10.x86游戏实战-汇编指令lea

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

云端AI大模型群体智慧后台架构思考

1 大模型的调研 1.1 主流的大模型 openai-chatgpt 阿里巴巴-通义千问 一个专门响应人类指令的大模型。我是效率助手,也是点子生成机,我服务于人类,致力于让生活更美好。 百度-文心一言(千帆大模型) 文心一言"…

Web漏洞扫描工具AppScan与AWVS测评及使用体验

AppScan和AWVS业界知名的Web漏洞扫描工具,你是否也好奇到底哪一个能力更胜一筹呢?接下来跟随博主一探究竟吧。 1. 方案概览 第一步:安装一个用于评测的Web漏洞靶场(本文采用最知名和最广泛使用的靶场,即OWASP Benchma…

04.ffmpeg打印音视频媒体信息

目录 1、相关头文件 2、相关结构体 3、相关函数 4、函数详解 5、源码附上 1、相关头文件 #include <libavformat/avformat.h> 包含格式相关的函数和数据结构 #include <libavutil/avutil.h> 包含一些通用实用函数 2、相关结构体 AV…

Redis基础教程(九):redis有序集合

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

Zabbix触发器

目录 触发器基础概念 创建和管理触发器 示例 定义一个触发器 在 Zabbix 中&#xff0c;触发器&#xff08;Trigger&#xff09;用于定义在监控数据满足特定条件时触发警报或动作。触发器是实现监控告警和自动响应的核心组件之一。以下是关于 Zabbix 触发器的详细解释和用法…

刷代码随想录有感(127):动态规划——判断是否为子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {vector<vector<int>>dp(s.size() 1, vector<int>(t.size() 1, 0));for(int i 1; i < s.size(); i){for(int j 1; j < t.size(); j){if(s[i …

警惕AI泡沫:巨额投资与回报失衡

尽管高科技巨头们在AI基础设施上投入巨资&#xff0c;但AI带来的收入增长尚未显现&#xff0c;揭示了生态系统末端用户价值的重大缺口。 红杉资本分析师David Cahn认为&#xff0c;AI企业需每年赚取约6000亿美元才能抵消其AI基础设施&#xff08;如数据中心&#xff09;的成本&…

02STM32环境搭建新建工程

STM32环境搭建&新建工程 软件安装&#xff1a;开发方式&新建工程步骤&架构 个人心得 软件安装&#xff1a; 安装Keil5 MDK 安装器件支持包 软件注册 安装STLINK驱动 安装USB转串口驱动 开发方式&新建工程步骤&架构 STM32开发方式&#xff1a; 1.寄存器 …

Python人形机踊跃跨栏举重投篮高维数动作算法模型

&#x1f3af;要点 &#x1f3af;运动功能&#xff1a; 1 m / s 1 m / s 1m/s上台阶、站立平衡、 1 m / s 1 m / s 1m/s行走、坐椅子、 5 m / s 5 m / s 5m/s跑步、 1 m / s 1 m / s 1m/s爬行、穿越森林、取物、穿越迷宫、 1 m / s 1 m / s 1m/s上滑梯、 5 m / s 5 m / s 5m/s…

基于Redis和阻塞队列的 异步秒杀业务

异步前 之前的秒杀业务的查询优惠券、查询订单、减库存、创建订单都要查询数据库&#xff0c;而且有分布式锁&#xff0c;使得整个业务耗时长&#xff0c;对此采用异步操作处理&#xff0c;异步操作类似于餐厅点餐&#xff0c;服务员负责点菜产生订单、厨师负责根据订单后厨做…

破解宇宙终极奥秘,战胜昊天无上束缚

在幽邃的暗夜下&#xff0c;细品着夫子与昊天跨越千年的智勇交锋&#xff0c;我的思绪不禁飘向了更加深远的宇宙边际&#xff0c;回响起那些关于人类如何挑战天命、战胜上天的过往。 宇宙奥秘 在浩瀚无垠的宇宙深渊中&#xff0c;隐藏着一段超越凡尘的规则。昊天&#xff0c;…

文件上传(本地、OSS)

什么是文件上传&#xff1a;将文件上传到服务器。 文件上传-本地存储 前端 <template> <div><!-- 上传文件需要设置表单的提交方式为post&#xff0c;并设置enctype属性、表单项的type属性设置为file --><form action"http://localhost:8080/wedu/…

Python 异步编程介绍与代码示例

Python 异步编程介绍与代码示例 一、异步编程概述 异步编程是一种编程范式&#xff0c;它旨在处理那些需要等待I/O操作完成或执行耗时任务的情况。在传统的同步编程中&#xff0c;代码会按照顺序逐行执行&#xff0c;直到遇到一个耗时操作&#xff0c;它会阻塞程序的执行直到…

Hugging face Transformers(2)—— Pipeline

Hugging Face 是一家在 NLP 和 AI 领域具有重要影响力的科技公司&#xff0c;他们的开源工具和社区建设为NLP研究和开发提供了强大的支持。它们拥有当前最活跃、最受关注、影响力最大的 NLP 社区&#xff0c;最新最强的 NLP 模型大多在这里发布和开源。该社区也提供了丰富的教程…

gptoolbox matlab工具箱cmake 调试笔记

一、问题描述 起因&#xff1a;在matlab中运行Offset surface of triangle mesh in matlab的时候报错&#xff1a; 不支持将脚本 signed_distance 作为函数执行: E:\MATLAB_File\gptoolbox\mex\signed_distance.m> 出错 offset_bunny (第 22 行) D signed_distance(BC,V,F…

Vim编辑器与Shell命令脚本

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、Vim文本编辑器 二、编写Shell脚本 三、流程控制语句 四、计划任务服务程序 致谢 一、Vim文本编辑器 “在Linux系统中一切都是文件&am…