如何解决——汉化英文界面出现乱码

ONLYOFFICE界面汉化,onlyoffice汉化

上面链接里同样介绍了如何汉化和开发。

我用golang的beego框架开发了文档管理,实现实时文档协作。

首先是安装docker,然后是拉取document
server镜像,再就是汉化界面,最后是用golang提供回调和存储编辑后的文档。

汉化的步骤:1、删除容器里的文件,替换windows下的字体。

 删除容器 /usr/share/fonts下的所有文件. 然后运行script:
documentserver-generate-allfonts.sh 然后清理浏览器缓存。

//进入容器(运行的镜像)内,删除/usr/share/fonts下除truetype外其他文件和文件夹

$ dockerexec -it 38e27 /bin/bash

[email protected]:/#dir或者ls
–al

 

[email protected]:~#cd
/usr/share/fonts/

[email protected]:/usr/share/fonts#ls

truetype  X11

//删除文件夹X11

[email protected]:/usr/share/fonts#rm
-R dir X11

rm:cannot remove dir: No such file or directory

[email protected]:/usr/share/fonts#ls

truetype

[email protected]:/usr/share/fonts#cd
truetype

[email protected]:/usr/share/fonts/truetype#ls
–al

[email protected]:/usr/share/fonts/truetype#ls
-al

total462392

drwxr-xr-x11 root   root       4096 Feb 19 04:17 .

………………

//删除trutype文件夹下所有文件,除了custome文件夹外

[email protected]:/usr/share/fonts/truetype#rm
-R dir *.*

rm:cannot remove dir: No such file or directory

[email protected]:/usr/share/fonts/truetype#rm
-R dir *

rm:cannot remove dir: No such file or directory

rm:cannot remove custom: Device or resource busy

[email protected]:/usr/share/fonts/truetype#ls

custom

[email protected]:/usr/share/fonts/truetype#ls
-al

total 12

drwxr-xr-x10 root root 4096 Feb 19 10:14 .

drwxr-xr-x  6 root root 4096 Feb 19 10:12 ..

drwxr-xr-x  2 root root 4096 Feb 19 03:48 custom

……

 

[email protected]:/usr/share/fonts/truetype#exit

exit

 

[email protected]
~/winfont

//将当前文件夹C:\Users\Administrator\下的winfont文件夹内的字体全部拷贝到容器的文件夹/usr/share/fonts/truetype中

$ tar -cv* | docker exec -i 6df tar x -C /usr/share/fonts/truetype

kaiu.ttf

msjh.ttc

msjhbd.ttc

msjhl.ttc

msyh.ttc

msyh.ttf

msyhbd.ttc

msyhl.ttc

simfang.ttf

simhei.ttf

simkai.ttf

simli.ttf

simsun.ttc

simsunb.ttf

simyou.ttf

……

 

[email protected]
~/winfont

//进入容器内

$ dockerexec -it 6df /bin/bash

[email protected]:/#sudo
mkfontscale

[email protected]:/#sudo
mkfontdir

[email protected]:/#sudo
fc-cache -fv

/usr/share/fonts:caching, new cache contents: 0 fonts, 1 dirs

…………

fc-cache:succeeded

[email protected]:/#exit

exit

//退出容器

[email protected]
vnsc威尼斯城官方网站,~/winfont

$ dockerexec 6df /usr/bin/documentserver-generate-allfonts.sh

GeneratingAllFonts.js, please wait…Done

onlyoffice-documentserver:docservice:stopped

onlyoffice-documentserver:docservice:started

onlyoffice-documentserver:converter:stopped

onlyoffice-documentserver:converter:started

 

如果机器重启后,不要用dockerrun命令,要用dockerstart

具体步骤见图:

然后在调用onlyoffice协同编辑的页面中,设置”lang”: “zh-CN”,

[html] view plain copy

  1.                 “editorConfig”: {  
  2.                     “callbackUrl”: “”,  
  3.                     “user”: {  
  4.                         “id”: “{{.Uid}}”,  
  5.                         “name”: “{{.Uname}}”  
  6.                     },  
  7.                     “lang”: “zh-CN”,//”en-US”,  
  8.                 },  

详细代码见

查看评论

上面链接里同样介绍了如何汉化和开发。 我用golang的beego框架开…

1.登录页面

①登录:)

②登录账号与密码:Kylin默认账号为:ADMIN默认密码:KYLIN(区分大小写,必须全都大写)

vnsc威尼斯城官方网站 1

login

在较早期的Dev开发中,基本上都是在使用一个DLL包的汉化文件,如基于13.1的汉化包文件Dxper.LocalizationCHS.Win.v13.1.5.dll,这个汉化包也比较方便,大多数时候复制一个文件就搞定了。不过这样的汉化包一般同步更新比较慢,最近使用了DevExpress当前较新版本14.*后,希望集成使用官方的汉化文件,本文介绍在使用官方汉化文件的一些历程和心得,希望对后来者有帮助。

汉化一个英文版软件时,出现中文显示乱码的问题。在网上找了一些资料,按照下面的步骤进行修改后,解决了中文乱码问题。

2.Project

初次登录Kylin时,需要新建一个Project,才能利用kylin为我们做OLAP分析。

点击左上角的加号(Add Project):

vnsc威尼斯城官方网站 2

Add Project

输入Project相应信息:

vnsc威尼斯城官方网站 3

Project Info

本教程之后的讲述均在已经创建好的Project–Test中进行,具体如下图所示:

vnsc威尼斯城官方网站 4

Test Project

我们知道,如果使用有其他方处理汉化包文件(类似汉化包Dxper.LocalizationCHS.Win.v13.1.5.dll),这样的方式就是复制文件比较方便,如果使用官方汉化包,复制的文件比较多,比较零散。但是使用官方汉化包也有好处,就调用的时候,一句话就可以把界面线程的语言进行切换了,而且打包的时候,也不会有太多的不同。

第一种情况:

3.Datasource:

存在于Hive中的数据库会同步显示到kylin web页面中的Datasource下。

选中某个数据库下的某张表,在页面右侧即会展现该表的字段信息,下图以数据库weishu,表A_1为例:

vnsc威尼斯城官方网站 5

Table A_1

Datasource的右手边有四个小图标,它们的从左往右功能分别是:加载Hive表,从同步的目录中导入,即将上张图中左侧的数据库中的表导入,上传Hive表,添加流表。(工作中常用的是第二个,即从同步的目录中导入相应的hive
table)分别如下所示:

vnsc威尼斯城官方网站 6

Load Hive Table

vnsc威尼斯城官方网站 7

Load Hive Table From Tree

vnsc威尼斯城官方网站 8

Add Streaming Table

Upload load Hive Table 省略

 

修改RC文件中的英文为中文,界面显示乱码,按照下面的步骤解决了。

4.Model

成功创建好Project后,需要为我们将要inner
join的两张表,创建一个model(模型),如下图所示,点击+NEW按钮,选择New
Model:

vnsc威尼斯城官方网站 9

Add The Module

①填写相应的model info:

vnsc威尼斯城官方网站 10

Model Info

②选择事实表:

事实表(Fact
Table)是中心表,包含了大批数据并不冗余,其数据列可分为两类:

包含大量数据事实的列;

与维表(Dimension Table)的primary key相对应的foreign key。

vnsc威尼斯城官方网站 11

Fact Table

③添加查找表

Lookup
Table包含对事实表的某些列进行扩充说明的字段。本案例以T_PROCESSAPPLY为lookup
table。

vnsc威尼斯城官方网站 12

Lookup Table

可以看到,kylin提供了两种join的方式:left join和inner
join,本案例采用的是inner join的方式。

vnsc威尼斯城官方网站 13

Join Type

点击New Join
Condition添加新的join条件,这里我们将两张表的WORKFLOWNUMBER做关联,所以join条件按下图的方式进行选择:

vnsc威尼斯城官方网站 14

Inner Join

选择以及添加好Fact table和Look Table后的图例如下:

vnsc威尼斯城官方网站 15

Data Model

④.添加Dimensions:

维表(Dimension Table)是由fact table与lookup
table逻辑抽象出来的表,包含了多个相关的列(即dimension),以提供对数据的多维观察;其中dimension的值的数目称为cardinatily

事实表APPROVALHISTORY的WORKFLOWNUMBER、和APPROVALTIME被抽出来做dimension,与查找表T_PROCESSAPPLY表被抽出来的dimension:WORKFLOWNUMBER和STAUS组合分析数据。

vnsc威尼斯城官方网站 16

Dimensions

⑤添加Measure columns:

Measure为事实表的列度量,Kylin提供诸如:

Sum

Count

Max

Min

Average

Distinct Count (based on HyperLogLog)

等函数,一般配合group by dimesion使用。

本案例以APPROVALHISTORY中的WORKFLOWNUMBER字段做列度量:

vnsc威尼斯城官方网站 17

Measures

⑥Settings:

Cube中细讲,点击右下角的save

vnsc威尼斯城官方网站 18

Settings

点击弹窗中的yes,完成model:innerjoint_t2的创建

vnsc威尼斯城官方网站 19

Save

1、如何在程序中使用官方汉化文件

Dev的官方汉化文件,是一系列的独立资源类,它对应着不同的界面汉化内容,如下界面截图所示。

建立两个MFC工程,一个英文版,一个中文版,然后对比两个工程的rc文件;
1、改一下
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
2、改一下
VALUE “Translation”
3、改一下
“#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n”
    “#ifdef _WIN32\r\n”
    “LANGUAGE 4, 2\r\n”
    “#pragma code_page(936)\r\n”
4、重新组建
5、完成。

5.Cube

创建cube,点击+New,选中New Cube

vnsc威尼斯城官方网站 20

Add New Cube

①Cube info

vnsc威尼斯城官方网站 21

Cube Info

②Diemnsions

选择Auto Generator:

vnsc威尼斯城官方网站 22

Dimensions

本案例全部勾选:

vnsc威尼斯城官方网站 23

Auto Generator

选中并点击OK后的图例如下图所示:

vnsc威尼斯城官方网站 24

Click OK

两种维度说明:目的——->为了减少cuboid的数目

lNormal,为最常见的类型,与所有其他的dimension组合构成cuboid。

lDerived,指该dimensions与维表的primary
key是一一对应关系,可以更有效地减少cuboid数量,详细的解释参看这里;并且derived
dimension只能由lookup table的列生成。

vnsc威尼斯城官方网站 25

Derived

③Measures:

kylin会为每一个cube创建一个聚合函数为count(1)的度量,它不需要关联任何列,用户自定义的度量可以选择SUM、COUNT、DISTINCT
COUNT、MIN、MAX,而每一个度量定义时还可以选择这些聚合函数的参数,可以选择常量或者事实表的某一列,一般情况下我们当然选择某一列。这里我们发现kylin并不提供AVG等相对较复杂的聚合函数(方差、平均差更没有了),主要是因为它需要基于缓存的cube做增量计算并且合并成新的cube,而这些复杂的聚合函数并不能简单的对两个值计算之后得到新的值,例如需要增量合并的两个cube中某一个key对应的sum值分别为A和B,那么合并之后的则为A+B,而如果此时的聚合函数是AVG,那么我们必须知道这个key的count和sum之后才能做聚合。这就要求使用者必须自己想办法自己计算了。

无特殊要求,保持默认即可:

vnsc威尼斯城官方网站 26

Measures

④Refresh Setting

vnsc威尼斯城官方网站 27

Refresh Setting

设置增量cube信息,首先需要选择事实表中的某一个时间类型的分区列(貌似只能是按照天进行分区),然后再指定本次构建的cube的时间范围(起始时间点和结束时间点),这一步的结果会作为原始数据查询的where条件,保证本次构建的cube只包含这个闭区间时间内的数据,如果事实表没有时间类型的分区别或者没有选择任何分区则表示数据不会动态更新,也就不可以增量的创建cube了。

可以在该选项中选择分区字段,根据这个字段来获取每次预计算的输入数据区间,Kylin中将每一个区间计算的结果称之为一个Segment,预计算的结果存储在hbase的一个表中。通常情况下这个分区字段对应hive中的分区字段,以天为例子,每次预计算一天的数据。这个过程称之为build。

除了build这种每个时间区间向前或者向后的新数据计算,还存在两种对已完成计算数据的处理方式。第一种称之为Refresh,当某个数据区间的原始数据(hive中)发生变化时,预计算的结果就会出现不一致,因此需要对这个区间的segment进行刷新,即重新计算。第二种称之为Merge,由于每一个输入区间对应着一个Segment,结果存储在一个htable中,久而久之就会出现大量的htable,如果一次查询涉及的时间跨度比较久会导致对很多表的扫描,性能下降,因此可以通过将多个segment合并成一个大的segment优化。但是merge不会对现有数据进行任何改变。

说句题外话,在kylin中可以设置merge的时间区间,默认是7、28,表示每当build了前一天的数据就会自动进行一个merge,将这7天的数据放到一个segment中,当最近28天的数据计算完成之后再次出发merge,以减小扫描的htable数量。但是对于经常需要refresh的数据就不能这样设置了,因为一旦合并之后,刷新就需要将整个合并之后的segment进行刷新,这无疑是浪费的。

注意:kylin不支持删除某一天的数据,如果不希望这一天数据存在,可以在hive中删除并重新refresh这段数据

⑤Advanced Settings

vnsc威尼斯城官方网站 28

Advanced Settings



vnsc威尼斯城官方网站 29

Rowkeys

1、设置Rowkey

2、设置维度组

3、设置Cube Size

在进入到设置RowKey的时候会看到每一个维度的设置(Derived维度看到的是外键列而不是Derived的列),每一个维度可以设置ID(通过拖拽可以改变每一个维度的ID)、Mandatory、Dictionary和Length。

设置rowkey,这一步的建议是看看就可以了,不要进行修改,除非对kylin内部实现有比较深的理解才能知道怎么去修改。当然这里有一个可以修改的是mandatory
dimension,如果一个维度需要在每次查询的时候都出现,那么可以设置这个dimension为mandatory,可以省去很多存储空间,另外还可以对所有维度进行划分group,不会组合查询的dimension可以划分在不同的group中,这样也会降低存储空间。

注意:new aggregation group,是kylin 1.5的新特性;

老版本中的agg是需要选中所有可能被使用的纬度字段,以供查询;但存在高纬度的查询需求,例如查询某订单编号编号的数据,这时应该仅仅做filter,而不需要为此做cube,但在老版本的agg中,是不允许在group中来制定prune细节。

而新的特性中,new
agg允许设置field是compute(参与cube)还是skip(不参与cube)

⑥Configuration Overwrites

写入配置,直接Next。

⑦Overview

vnsc威尼斯城官方网站 30

Overview

配置概览,t3改写为t2,因为innerjoint_t2已经建立,所以教程虽按t2讲,实则创建的是innerjoint_t3。

点击save,选择Yes,创建成功

vnsc威尼斯城官方网站 31

Save

 vnsc威尼斯城官方网站 32

以上这些文件是全部界面方面的汉化处理,一般情况下,我们不需要全部的内容,只需要我们使用到对应模块的汉化资源就可以了,所以即使是复制,也是复制一部分进行使用。

一般情况下,我们根据需要复制一部分即可。

vnsc威尼斯城官方网站 33

准备好上面的文件后,我们在程序代码里面,需要增加一句话,指定去对应目录获取汉化资源文件即可。

vnsc威尼斯城官方网站 34

这样如果我们是直接复制文件去机器上运行,记得把zh-CN目录下的资源文件一并复制过去,运行起来就可以看到Dev控件的中文化菜单或者提示了。

 

 

6.Build

创建成功后的cube是disable状态,需要build一下:

vnsc威尼斯城官方网站 35

Disable

vnsc威尼斯城官方网站 36

Build

建立build job成功:

vnsc威尼斯城官方网站 37

Build Job

2、如何在安装包里面使用汉化文件

对于这么多汉化文件,看起来虽然比较多,但是,打包的时候,你最终也只是把这些零散的内容整合到安装包里面了,所以没有太多的不一样的地方。

一般情况下,我们在安装包里面,集成汉化文件的时候,就在文件视图里面,把对应的zh-CN目录整个拖动到VS的安装包设计器里面,就可以了,这样所有相关的文件都会加入进来,也是非常方便的。

vnsc威尼斯城官方网站 38

做好这一步,其他的内容,就是按照常规的方式进行添加或者处理就可以了,对于安装包,有时候通过刷新引用关系,并检查某些文件是否遗漏即可。

以上是基于VS2010的安装包处理,对于VS2012、VS2013以上,他们的做法上有所不同,不过总体的步骤是一致的。

 

第二种情况:

7.Monitor

点击monitor,实时观测build状态。

vnsc威尼斯城官方网站 39

Monitor

点击每个build后的

vnsc威尼斯城官方网站 40

click it

查看具体状态:

vnsc威尼斯城官方网站 41

具体状态

Build成功:

vnsc威尼斯城官方网站 42

Build Successfully

此时,cube状态变为Ready:

vnsc威尼斯城官方网站 43

Ready

3、DevExpress14的版本使用总结

对于引入Dev14.*的版本,由于它们增加了对PDF的改善支持,因此我们可以直接在附件里面预览PDF文档而没有出现格式出错的情况了(13.*处理PDF的格式会有问题),另外还增强了XtraSpreadSheet的功能,因此也可以使用这个模块来处理Excel的相关内容了,Word照常可以使用RichEdit控件进行预览和处理,不过格式显示依旧有一些失真,有些地方字体显示还是不太好。

不过基于PDF、RichEdit和SpreadSheet的功能,可以使用它们进行很好的应用了。如我在我的《Winform开发框架》、《混合式开发框架里面》使用的通用附件管理模块,就是基于这些特点,实现图片、Excel文档、Word文档和PDF等文档的在线预览和管理操作,界面截图如下所示。

vnsc威尼斯城官方网站 44

由于引进了一些新的对象,如Range等,这些如果你在Aspose.Cell里面已经使用它来处理报表方面的时候,那么就需要特别声明了,因为它会和DevExpress里面的SpreadSheet里面的对象类产生冲突,一般情况下处理下就可以了。

vnsc威尼斯城官方网站 45

除了这些,基本上没有其他的冲突问题,DevExpress版本的更新,依旧保持比较的向后兼容的情况。

 

按照第一种情况的步骤修改RC文件后,在一个工程中,有四个对话框,其中一个对话框正确显示中文,其他三个界面中仍然出现中文乱码的问题。

8.Insight:

vnsc威尼斯城官方网站 46

Insight

SQL查询语句:

vnsc威尼斯城官方网站 47

SQL

成功查询:

vnsc威尼斯城官方网站 48

成功查询

注意事项:

①如果cube在build中出现错误,需要在monitor中discard对应的cube才能重新build

②删除model前必须先drop掉里面的cube,而drop掉cube前如果cube是Ready状态需要先disable。

vnsc威尼斯城官方网站 49



Disable

vnsc威尼斯城官方网站 50

Drop

按照下面步骤操作后,解决该问题。

  1. 切换到资源试图页面

  2. 在【Dialog】目录下,选中对话框,右键菜单属性。

  3. 在属性窗口中,将语言改成 “中文(中国)”。

4. 保存、重新生成:

相关文章