提示语词条在英文环境下显示中文解决方案
金蝶云社区-justice
justice
4人赞赏了该文章 678次浏览 未经作者许可,禁止转载编辑于2018年11月26日 09:10:25

解决思路:

1.先在多语言平台查看是否翻译

2.若有翻译,查看是否进入语言包

3.若有进入语言包,再查找具体原因,代码程序,进程问题等等

 

操作方法

一般问题会出在程序提示语和界面词条

1.程序提示语

1)先在多语言平台查看是否翻译

先在对应领域代码找到词条编号,例如:this.View.ShowErrMessage(Kingdee.BOS.Resource.ResManager.LoadKDString("未选择要撤消拆分的资产卡片", "003268000006106", BOS.Resource.SubSystemType.FIN));
可以根据汉字,或者编号查找
 


然后登录多语言平台,搜索该词条是否翻译

http://172.17.xx.xx/k3cloud/silverlight/ML.aspx


kingdee    用户名   密码

 

若没翻译,提bug,并云之家立即通知国际化平台部杨媛媛\罗娟去翻译

若有翻译,执行第二步

 

2)若有翻译,看是否进入语言包

语言包地址:\\172.17.32.30\PkgWH\History\K3Cloud_V7_ML,找到最新的语言包去解压(F2解压),找到对应的领域的resource文件,拖到一个工具上上打开,去查找


 

F2解压,或者去svn上看,解压之后里面的内容就在D:\svn\k3cloud_std\branches\k3cloud_std_v7.0_bl\K3MultilangTrans\1.0\1033

我们打包的时候就是把D:\svn\k3cloud_std\branches\k3cloud_std_v7.0_bl\K3MultilangTrans\1.0\1033里面的这些东西塞到包里的

 

若查不到,就是没进入语言包,那就是语言包的问题

若有查到,执行第三步

 

3)如词条进入语言包,就说明语言包没问题,剩下的就是业务代码逻辑问题,就要查找为什么显示中文了

一般有代码程序问题,或者线程进程问题,得调试代码了

调试方法:要拉取bos代码加载工程:Kingdee.BOS.DataEntity,工程所在路径:http://192.168.16.99/svn/k3cloud_bos/branches/k3cloud_bos_v7.0_bl/BOS/Common/Src/Kingdee.BOS.DataEntity

Kingdee.BOS.Resource.ResManager.LoadKDString("表体为空!","002073030022258",Kingdee.BOS.Resource.SubSystemType.BOS)

多语言取词条逻辑.jpg

线程问题:

或者以下方式调用
Task.Factory.StartNew(() =>
{
    CultureInfoUtils.SetCurrentLanguage(this.Context);
    DoYourAction();
};
 
或者以下方式调用
Var task = new Task(()=>{
CultureInfoUtils.SetCurrentLanguage(this.Context);
DoYourAction();
}
 
或者Action.BeginInvoke的方式调用异步线程都需要设置线程环境!
…...
 
总而言之, 必须在线程函数中调用CultureInfoUtils.SetCurrentLanguage(ctx)设置当前线程上下文语言环境!
 
如果在代码里开启了新的线程,在新线程里获取翻译的字符串有可能会有问题,需要在开启线程的时候(MainWorker.QuequeTask),加一句CultureInfoUtils.SetCurrentLanguage(this.Cotext);


赞 4