本帖最后由 jia2shuo 于 2020-3-7 01:37 编辑
OnStep是一个开源的赤道仪控制系统,其功能很强大,仔细研究会有很多收获。该系统支持手机通过wifi连接来控制赤道仪,也支持通过手柄控制。只是手柄操作界面是英文,对部分英文不太好的可能有点不适应(实际也就是一些常用的词条,)经过一段时间摸索,初步把手柄汉化成功,有部分词条翻译拿不准,所以没有动,显示仍为英文。还有部分词条即使翻译了也无法显示中文,可能是程序的问题,抽时间再研究。今天把汉化的大致过程和方法分享下。
主要分为几个步骤:
1. 中文字库的制作。
2. 程序语言文件的翻译
3. 修改程序配置和部分程序内容。
下面分别介绍:
一. 中文字库的制作(最复杂的一步)
由于手柄是利用u8g2来驱动OLED显示,而u8g2自带的中文字库里不包含该程序需要的文字,而且u8g2字库里文字字体设置太大,在手柄上显示会出现文字重叠,不太理想。所以自己制作了合适的字库。制作好后覆盖u8g2自带的字库即可。具体方法参考这里:
https://www.arduino.cn/thread-92313-1-1.html
制作好后将制作好的字库覆盖掉u8g2自带的字库就行了。
二. 程序语言文件的翻译
在手柄固件所在的目录
(OnStep\addons\St4Serial\SmartHandController)里有个strings_en.h文件,这里就是英文的语言文件,把他复制一个,然后名字改成“strings_cn.h”,用andrino打开它,把里面带双引号的英文翻译成中文,然后保存。
三. 配置程序。
1. 打开arduino,然后打开 config.h,里面有这样几行(新版的程序一般都有,老版的如果没有,你就自己加上)
#define LF_CATALOGS u8g2_font_6x13_tf
#define LF_GREEK u8g2_font_unifont_t_greek
#define LF_STANDARD u8g2_font_helvR10_tf
#define LF_LARGE u8g2_font_helvR12_tf
#define DISPLAY_LANGUAGE L_en
第一行不要改,那个是星表的字体,一般就用原字体就行。
第二行也不用改,那是希腊字符的字体
第三行和第四行需要改一下,后面的值改为 u8g2_font_unifont_t_chinese1,(这是我制作的字库字体的名称),你需要根据自己制作的字库名称来灵活改。
最后那一行 你需要把后面的值 改为 L_cn ,表示选择中文
2. 打开Locale.h 在最后加上
#if DISPLAY_LANGUAGE == L_cn
#include "Strings_cn.h"
#endif
这个语句。这个表示 如果你选择了中文语言,他就加载中文语言文件。 打开Locales.h,最后加上 #define L_cn 5 这样一句
3. 修改程序文件
分别打开程序包里的的,利用 搜索-替换 功能,将程序中所有的
“u8g2_font_6x13_tf”替换成 “LF_CATALOGS”,
“u8g2_font_unifont_t_greek” 替换成“LF_GREEK”
“u8g2_font_helvR10_tf”替换成 “LF_STANDARD”
“u8g2_font_helvR12_tf”替换成 “LF_LARGE”
然后保存。
好了 配置和修改完成,先编译一下,如果能通过,那么就可以向板子上刷了。如果无法通过,你就检查一下看是不是修改程序时哪里语法有错误。一般会提示哪出错了。
OK,就到这里,有什么问题互相交流。
最后附上 我的修改后的程序包和字库文件。 |