littleknife 发表于 2024-10-23 14:08:30

【v14】设置addCultureInfo后,getCultureInfo为空

我设置了一个自定义的culture,用于国际化翻译,但是我发现设置addCultureInfo之后,getCultureInfo为空了,请问是代码写得有问题吗

Wilson.Zhang 发表于 2024-10-23 14:08:31

本帖最后由 Wilson.Zhang 于 2024-10-29 08:57 编辑

您好!关于您需要自定义多语言的需求,具体思路如下:

1. 通过CultureManager:getResources()获取当前使用的语言资源,并参考其数据结构将各属性赋值为原内容对应的越南语,记为newResource。
2. 通过CultreManager:addCultureInfo()将newResource与语言资源名称建立映射关系,此处的语言资源名称可自定义。
3. 至此,SpreadJS内部即拥有了自定义的语言资源,只需要使用CultureManager:culture()将自定义语言资源设置为当前资源即可。

我们自行翻译了部分资源的越南语版本,设置后效果如下图所示,左侧为越南语,右侧为中文。附上demo,以供参考。


另外,关于您在9楼提到的报错现象,原因是使用CultureManager:addCultureInfo()时的第二个参数cultureInfo为null,因此,通过CultureManager:getCultureInfo()获取结果为null。如果您需要使用CultureInfo实例,可以创建一个实例,并传参至CultureManager:addCultureInfo()。

可以参考官网教程深入了解下自定义多语言设置:
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/culture/custom-localization/purejs

Wilson.Zhang 发表于 2024-10-23 14:33:44

您好!CultureManager:addCultureInfo()的参数列表包括必填参数cultureName(字符串)、culture(CultureInfo类型实例)和选填参数language,如下图所示。因此,您代码中需要按照规定的参数列表传参调用addCultureInfo。


我们基于您提供的demo,按上述说明调整了相关代码,作为附件提供给您参考。

关于API,可以参考官网API文档了解详情:
CultureManager:addCultureInfo()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Common.CultureManager#addcultureinfo

littleknife 发表于 2024-10-25 10:00:17

Wilson.Zhang 发表于 2024-10-23 14:33
您好!CultureManager:addCultureInfo()的参数列表包括必填参数cultureName(字符串)、culture(CultureInf ...

那请问下多语言我应该怎么去设置呢,我是根据这个帖子的步骤进行多语言的设置的https://gcdn.grapecity.com.cn/showtopic-157315-1-337.html

Wilson.Zhang 发表于 2024-10-25 11:19:02

littleknife 发表于 2024-10-25 10:00
那请问下多语言我应该怎么去设置呢,我是根据这个帖子的步骤进行多语言的设置的https://gcdn.grapecity.c ...

如果您需要自定义语言,那么,首先需要根据官方定义的CultureInfo类型的数据结构定义各个数据属性数据对应于您需要的每一种语言的数据内容,然后通过CultureManager:addCultureInfo()将CultureInfo添加至本地化管理器中。之后,便可以通过CultureInfo:culture()将语言设置为您已经成功添加的CultureInfo。可以再理解下您找到的资源文件内的思路。

关于CultureInfo的数据结构,可以参考官网API和产品默认的CultureInfo实例了解,可通过如下代码获取默认中文和英文CultureInfo实例:
//获取中文CultureInfo
GC.Spread.Common.CultureManager.getCultureInfo('zh-cn');
//获取英文CultureInfo
GC.Spread.Common.CultureManager.getCultureInfo('en-us');

CultureInfo--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Common.CultureInfo


littleknife 发表于 2024-10-25 14:39:50

Wilson.Zhang 发表于 2024-10-25 11:19
如果您需要自定义语言,那么,首先需要根据官方定义的CultureInfo类型的数据结构定义各个数据属性数据对 ...

那按照我的理解,addCultureInfo接收的第三个参数,language,就是getResources获取的吗

Wilson.Zhang 发表于 2024-10-25 15:40:29

littleknife 发表于 2024-10-25 14:39
那按照我的理解,addCultureInfo接收的第三个参数,language,就是getResources获取的吗

并不对等,它们之间没有完全对应关系。您也可以在浏览器右侧的控制台通过API调用测试了解。对于您的需求,建议参考4楼给出的方案。

littleknife 发表于 2024-10-25 15:52:07

Wilson.Zhang 发表于 2024-10-25 15:40
并不对等,它们之间没有完全对应关系。您也可以在浏览器右侧的控制台通过API调用测试了解。对于您的需求 ...

4楼给的方案不能满足,我需要的就是既能设置多语言又不报错,能给个具体的例子吗,API也没有说明啊

Wilson.Zhang 发表于 2024-10-25 17:41:56

littleknife 发表于 2024-10-25 15:52
4楼给的方案不能满足,我需要的就是既能设置多语言又不报错,能给个具体的例子吗,API也没有说明啊

您当前的需求是可能在SpreadJS添加多种语言资源吗?需要您详细介绍下需求,我们帮您梳理下。

littleknife 发表于 2024-10-25 18:16:41

Wilson.Zhang 发表于 2024-10-25 17:41
您当前的需求是可能在SpreadJS添加多种语言资源吗?需要您详细介绍下需求,我们帮您梳理下。
我们当前的需求是,spread支持多语言,但是spread支持的多语言有限,比如越南语就不支持。然后我们这边的做法是,将resource抽出来,然后对每一个词条做翻译操作,然后再塞回去,这也是为什么我一开始使用getResources

但是我跟着官方的设置了之后,下面的代码报错, 所以我现在不知道怎么办了

页: [1] 2
查看完整版本: 【v14】设置addCultureInfo后,getCultureInfo为空