CN115618887B - 动态长文本国际化方法、装置、设备及存储介质 - Google Patents
动态长文本国际化方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115618887B CN115618887B CN202211268587.5A CN202211268587A CN115618887B CN 115618887 B CN115618887 B CN 115618887B CN 202211268587 A CN202211268587 A CN 202211268587A CN 115618887 B CN115618887 B CN 115618887B
- Authority
- CN
- China
- Prior art keywords
- module
- template
- file
- internationalization
- dynamic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 70
- 238000009877 rendering Methods 0.000 claims abstract description 46
- 238000013519 translation Methods 0.000 claims abstract description 18
- 238000013507 mapping Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims abstract description 14
- 230000002708 enhancing effect Effects 0.000 claims abstract description 9
- 230000001960 triggered effect Effects 0.000 claims abstract description 5
- 230000003068 static effect Effects 0.000 claims description 22
- 238000003780 insertion Methods 0.000 claims description 11
- 230000037431 insertion Effects 0.000 claims description 11
- 238000007781 pre-processing Methods 0.000 claims description 7
- 238000012856 packing Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 6
- 238000012550 audit Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012384 transportation and delivery Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/55—Rule-based translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/58—Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种动态长文本国际化方法,包括:构建国际化词条模块,获取动态模版文件转换为字符串,并按照预设规则映射至词条文件中;调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译;监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力;将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,返回渲染结果作为调用国际化模块的结果显示;基于模版语言自身的能力,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,完成对动态文本的国际化处理。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种动态长文本国际化方法、装置、设备及存储介质。
背景技术
软件开发中,每个开发者能希望编写的程序可以让全世界的用户使用,它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换种说法,应用程序的功能和代码设计时考虑在不同地区运行的需要,其代码适应不同区域要求。开发这样的的过程,就称为国际化(internationalization),简称i18n。
目前主流的国际化方案是i18next以及formatjs。两者都提供了一个全局的语言对象对词条文件进行管理,通过切换语言,来改变当前阅读的词条文件的实际内容,从而达到国际化的效果。词条文件常以key:value的形式,存储在json文件中。通过访问key值,最终来获取对应的词条内容。配合打包工具,从而只需要将词条文件放置在对应语言的文件目录底下,各自管理翻译即可。
现有的国际化方案更多的是提供一种管理词条,切换语言的能力,更适合的静态语言文件。但是在软件开发中,需要国际化的模块除了常规的静态的文字展示,也存在着动态的语言场景,例如基于单复数的展示,基于当前事物状态展示不同的文本等场景。尤其是在动态长文本中,例如基于用户操作展示不同的事件审计,同一个事件审计会因为每次具体的操作不同而展示不同的参数,在这种场景下,上述的解决方案除了文本凭拼接的方式外都没有更好的做法,而只能发生在代码中的文本拼接又破坏了原先文案与代码分离的维护模式,且难以进行有效的文案验证,对于没有代码基础的翻译人员而言也十分吃力。基于字符串拼接的翻译方式还有一个致命问题就是对于不同语言而言,语法是不同的,语序也是不同的,显然代码并不能进行语法判断,同样的文本拼接在中文环境下是正常的,但是在英文环境下并不一定就是符合语法的。
鉴于此,有必要提出一种动态长文本国际化方法适应动态长文本场景。
发明内容
本发明的目的是提供一种动态长文本国际化方法、装置、设备及存储介质解决了只能通过文本拼接的方式来处理动态长文本的问题。
本发明所提供的一种动态长文本国际化方法,包括:
构建国际化词条模块,获取动态模版文件转换为字符串,并按照预设规则映射至词条文件中;
调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译;
监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力;
将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为调用国际化模块的结果显示;
基于模版语言自身的能力,在所述模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,完成对动态文本的国际化处理。
作为优选地,所述基于模版语言自身的能力,在所述模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,完成对动态文本的国际化处理包括:
S10:预先打包静态词条文件,i18n模块仅读取json文件,
S20:通过预制的脚本处理,将移动语言文件、ejs文件或者hbs文件,读取相关的文件内容,将内容映射至对应的json文件下,作为符合i18n调用的合法词条文件;
S30:在实际软件开发处,业务代码进行i18n词条调用,
S40:监听到i18n模块,进行词条调用时进入到中间件处理中,
S50:中间件会读取到原始的模版文件词条,
S60:获取所述步骤S30透传过来的参数,结合所述步骤S50获取到的模版语言内容,通过模版引擎渲染。
作为优选地,所述构建国际化词条模块,获取动态模版文件转换为字符串,并按照预设规则映射至词条文件中包括:
预先打包静态词条文件,所述静态词条文件包括第一词条文件,用于固定展示词条文件,存储json文件中,第二词条文件,用于处理动态逻辑判断的模版文件,存储于模板引擎文件下;
增加预处理插件模块,通过预制的脚本处理,扫描不同语言目录底下的词条文件,读取移动语言文件、ejs文件或者模板引擎文件中相关的文件内容,将获取到的文件内容映射至对应的json文件下,生成符合国际化调用的合法词条文件;
将模版语言文件所在目录通过nodejs的文件操作fs模块进行扫描,合并到静态文本所在目录对应的文件下。
作为优选地,所述调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译中,通过直接调用所述国际化模块来获取对应的翻译,从业务代码处进行所述国际化模块的调用。
作为优选地,所述监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染中,在每一次调用模块执行结束后进入所述中间模块,判断是否正常返回原始的国际化模块调用的结果。
作为优选地,所述监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染中,进行所述模板引擎的编译工作,通过编译模板的方式来进行编译,为模板引擎提供编译能力。
作为优选地,所述将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为调用国际化模块的结果显示中,
所述模版引擎提供预设标签,将所述预设标签转换为需要的业务数据;将指定的伪语句按照预设流程来变换输出。
本发明所提供的一种动态长文本国际化装置,其特征在于,包括:
国际化词条构建模块,用于构建国际化词条模块,获取动态模版文件转换为字符串,并按照预设规则映射至词条文件中;
国际化调用模块,用于调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译,并触发编译能力;
国际化中间件模块,用于监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染;
模板语言处理模块,用于将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为调用国际化模块的结果显示;
基于模版语言自身的能力,在所述模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,完成对动态长文本的国际化处理。
本发明所提供的一种电子设备,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如本发明实施例所述的适用于动态长文本国际化方法。
本发明所提供的一种可读存储介质,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如本发明实施例所述的动态长文本国际化方法。
针对现有技术,本发明具有如下的有益效果:
本发明通过解决在常见的国际化解决方案i18next中增加预处理插件模块,借助模版语言的能力,在模板引擎文件中,通过变量和模板引擎提供的if/else等判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,从而解决了只能通过文本拼接的方式来处理动态长文本的问题。
此外,动态的逻辑判断维护在模版语言中,使得文案管理与代码之间是低耦合的状态,更能有效的推进翻译交付和业务代码之间的平行进行。
且针对模版语言和实际代码调用可以再另外各自提供单测方案,极大的保证了文***性。
附图说明
图1为本发明实施例一中所述动态长文本国际化方法的结构框图;
图2为本发明实施例一中所述动态长文本国际化方法的步骤示意图;
图3为本发明实施例一中通过handlebars.compile的方式来进行编译的具体示意图;
图4为本发明实施例一中所述模板引擎的转换示意图;
图5-8为本发明实施例一中动态判断和变量***的过程;
图9为本发明实施例一中原词条文件结构的具体示意图;
图10为本发明实施例一中含有hbs文件后的词条文件的具体示意图;
图11为本发明实施例一中所述动态长文本国际化方法的具体步骤示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1-2所示,本发明所提供的一种动态长文本国际化方法,包括:
S1:构建国际化词条模块,获取动态模版文件转换为字符串,并按照预设规则映射至词条文件中;i18n词条构建模块,I18next本身只支持以key:value提供的存储对象来作为词条资源,为了解决动态拼接的问题,我们会引入模版引擎的技术。通过直接调用所述国际化模块来获取对应的翻译,从业务代码处进行所述国际化模块的调用。
具体地,构建国际化词条模块包括:预先打包静态词条文件,所述静态词条文件包括第一词条文件,用于固定展示词条文件,存储json文件中,第二词条文件,用于处理动态逻辑判断的模版文件,存储于模板引擎文件下;
增加预处理插件模块,通过预制的脚本处理,扫描不同语言目录底下的词条文件,读取移动语言文件、ejs文件或者模板引擎文件中相关的文件内容,将获取到的文件内容映射至对应的json文件下,生成符合国际化调用的合法词条文件;
将模版语言文件所在目录通过nodejs的文件操作fs模块进行扫描,合并到静态文本所在目录对应的文件下。node.js是一个基于Chrome V8引擎的JavaScript运行环境。
S2:调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译;这里主要是通过传递key值给到全局的i18n模块,来获取到对应的翻译。本实施例直接调用i18next.t来获取即可。
S3:监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力;中间件模块,即在正常的i18n调用模块执行结果返回前,本实施例设计多一层处理模块,在每一次调用模块执行结束后,立即进入该模块,在这层处理模块中间判断是否正常返回原先的i18n调用模块的结果还是提供另外的结果。在本实施例中,采用的中间件模块,主要就是进行hbs的编译工作。通过handlebars.co mpile的方式来进行编译,参考图3所示。
S4:将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为调用国际化模块的结果显示中;本实施例采用的模板引擎,本实施例用于Web开发的模板引擎,是为了使用户界面与业务数据内容分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档,其过程如图四所示。
其中,动态判断和变量***的过程如下:例如更新数据中心,如果只更新名字的情况下,则需要展示,参考图5所示;如果只更新连接集群的话,则需要展示,参考图6所示;如果同时更新了名字和集群的话,则需要展示,参考图7所示;通过书写hbs文件,我们可以将提供如下hbs文件,参考图8所示:
最终我们的调用只需要是i18next.t(key,{fieldsChange:[{field:“nam e”,srcChange:“old-name”,destChange:“new-name”}]})
剩下的判断在hbs文件中的if/else(判断语句)中进行,对于外部调用而言,我们只需要传递变量即可。
本领域技术人员可以理解,模板引擎的基本机理就是替换(转换),模版引擎提供了特定的标签,将指定的标签转换为需要的业务数据;将指定的伪语句按照某种流程来变换输出。
基于模版语言自身的能力,在所述模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,完成对动态文本的国际化处理。
在本实施例中,为了使文案管理与代码间的低耦合,我们引入的模版引擎为handlebars,handlbars文件简称为hbs文件。Handlebars是JavaScript一个语义模板库,通过对view和data的分离来快速构建Web模板,Handlebars是一种简单的模板语言。由于静态词条文件最终是以key:value键值的形式,打包在json文件中,在实际业务处进行注入的。所以也需要通过给hbs文件提供一个通用的处理,才能在无论ui还是server侧都被方便的加入进来。JSON是一种基于JavaScript语法子集的开放标准数据交换格式。
该模块主要是通过书写了nodejs脚本来执行相关的处理,处理过程如图三所示。nodejs是一个基于ChromeV8引擎的JavaScript运行环境,一个让JavaScript运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
例如,原词条文件结构如图9所示,含有hbs文件后的词条文件如图10所示。
本实施例中构建模块会处理的事情就是将`templates/`下的文件通过nodejsfs操作进行扫描,并合并到locales临时文件夹/对应的文件下。Templates文件夹功能:该文件夹中存储着常用程序的模板文件,如winword.doc、powerpnt.ppt、excel.xls等,模板就是包含有段落结构、字体样式和页面布局等元素的样式。它决定了文档的基本结构和设置的样式。fs全称是filesystem(文件***),它是NodeJS提供的文件操作API。fs模块用于对***文件及目录进行读写操作,是一个非常重要的模块,对文件的操作都基于它。该模块的所有方法都有同步和异步两种方式。
例如`templates/en-US/auditLog/UPDATE_DATACENTER.ejs`会被合并到`locales/en-US/auditLog.json`文件下,并作为一个`{UPDATE_DATACENTER:FILE_CONTENT`的形式存在。
如果`locales`不存在该文件,则会新增一份json文件,例如上述的`templates/en-US/test/demo.ejs`最后会被处理为`locales/en-US/test.json`下的`{demo:FILE_CONTENT}`的词条。
本领域技术人员可以理解,例如文件目录为`模版语言目录/英文/事件审计/更新数据中心.ejs`会被合并到`静态文本/英文/事件审计.json`文件下,并作为一个`{更新数据中心:‘更新数据中心.ejs的文本内容’}`的形式存在。
如果静态文本所在目录不存在该文件,则会新增一份json文件,例如上述的`模版语言目录/英文/测试/示例.ejs`最后会被处理为`静态文本/英文/测试.json`下的`{示例:‘示例.ejs的文本内容’}`的词条。
本实施例中步骤S4为模版语言的处理模块,步骤S3的中间件模块会将原始参数透传至模版语言模块,即上述所说的handlebars.compile过程,该调用会将handlebars原生提供的编译能力。本实施例额外提供一份函数文件,注入到handlerbar作为helper函数,增强handlebars的处理能力。模版语言模块在此进行写在其中的动态判断和变量***等。最终结果作为步骤S1中i18n调用模块的结果展示。
如图11所示,本实施例中,所述基于模版语言自身的能力,在所述模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,完成对动态文本的国际化处理具体包括:
S10:预先打包静态词条文件,i18n模块仅读取json文件,本实施例所采用的静态词条文件分为两种,一种为固定展示的词条文件,这类词条我们存储在json文件中;一种是可以处理动态逻辑判断的模版文件,我们存在hbs文件下。由于i18n模块只能读取json文件。
S20:通过预制的脚本处理,将移动语言文件、ejs文件或者hbs文件,读取相关的文件内容,将内容映射至对应的json文件下,作为符合i18n调用的合法词条文件;
S30:在实际软件开发处,业务代码进行i18n词条调用;
S40:监听到i18n模块,进行词条调用时进入到中间件处理中,返回前结果前经过中间件;
S50:中间件会读取到原始的模版文件词条;
S60:获取所述步骤S30透传过来的参数,结合所述步骤S50获取到的模版语言内容,通过模版引擎渲染。即本实施例进行i18next.t的时候可能携带了除词条对应的key之外的其他变量,结合步骤S50获取到的模版语言内容,交由模版引擎一起渲染,由于我们使用的是hbs文件格式,在这里我们使用handlebars.compile编译模板就能完成渲染。至此我们完成了一个i18n调用至模版引擎渲染的过程,模版引擎的渲染结果会作为i18n调用的结果,在中间件模块返回至调用处,作为最终的调用结果。
本实施例中所限定的长文本是指内容包含条件变化的样式固定的长语句,所述条件变化包括一种或多种条件判断,比较复杂的,非简短的语句,样式固定例如:
编辑虚拟机xxx,虚拟机的变化如下:
-yyy
xxx和yyy就是变化的内容。
其中yyy是根据实际虚拟机的变化有多种组合的这种情况。
如果上述文本只是编辑虚拟机xxx,只传入一个字符串即可。
本实施例采用的文本中yyy段还需要包含各种条件判断之类的。
本实施例通过解决在常见的国际化解决方案i18next中增加预处理插件模块,借助模版语言的能力,在hbs文件中,通过变量和handlerbars提供的if/else等判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回至调用结果中,从而解决了只能通过文本拼接的方式来处理动态长文本的问题。
此外,动态的逻辑判断维护在模版语言中,使得文案管理与代码之间是低耦合的状态,更能有效的推进翻译交付和业务代码之间的平行进行。且针对模版语言和实际代码调用可以再另外各自提供单测方案,极大的保证了文***性。
实施例二
本发明所提供的一种动态长文本国际化装置,其特征在于,包括:
国际化词条构建模块1,用于构建国际化词条模块,获取动态模版文件转换为字符串,并按照预设规则映射至词条文件中;
国际化调用模块2,用于调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译;
国际化中间件模块3,用于监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模版语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力;
模板语言处理模块4,用于将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为调用国际化模块的结果显示;
基于模版语言自身的能力,在所述模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回指至调用结果中,完成对动态长文本的国际化处理。
本实施例通过解决在常见的国际化解决方案i18next中增加预处理插件模块,借助模版语言的能力,在hbs文件中,通过变量和handlerbars提供的if/else等判断语句,自行处理动态的逻辑判断,并通过调用模版语言自身的渲染引擎来渲染,最后输出返回至调用结果中,从而解决了只能通过文本拼接的方式来处理动态长文本的问题。动态的逻辑判断维护在模版语言中,使得文案管理与代码之间是低耦合的状态,更能有效的推进翻译交付和业务代码之间的平行进行。且针对模版语言和实际代码调用可以再另外各自提供单测方案,极大的保证了文***性。
上述国际化词条构建模块1、国际化调用模块2、国际化中间件模块3、模板语言处理模块4的具体内容及实现方法,均如实施例一中所述,在此不再赘述。
实施例三
本发明所提供的一种电子设备,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如本发明实施例所述的适用于动态长文本国际化方法。
本发明所提供的一种可读存储介质,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如本发明实施例所述的动态长文本国际化方法。
该一种动态长文本国际化设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)和存储器,一个或一个以上存储应用程序或数据的存储介质(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块,每个模块可以包括对一种动态长文本国际化设备中的一系列指令操作。
进一步地,处理器可以设置为与存储介质通信,在动态长文本国际化的设备上执行存储介质中的一系列指令操作。
一种动态长文本国际化设备还可以包括一个或一个以上电源,一个或一个以上有线或无线网络接口,一个或一个以上输入输出接口,和/或,一个或一个以上操作***,例如Windows Serve、Vista等等。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被一个或多个处理器执行时,实现如本发明实施例一中的动态长文本国际化方法。实施例二中的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质。该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行实施例一中动态长文本国际化的步骤。
本领域技术人员可以理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机软件存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等各种可以存储程序代码的介质。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种动态长文本国际化方法,其特征在于,包括:
构建国际化模块,获取动态模板文件转换为字符串,并按照预设规则映射至词条文件中;
调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译;
监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模板语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力;进入中间件模块处理即在正常的国际化模块的调用执行结果返回前,在每一次对国际化模块的调用执行结束后,立即进入中间件模块,判断是否正常返回原先的国际化模块的调用结果;
将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为国际化模块的调用结果显示;
基于模板语言自身的能力,在模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模板语言自身的渲染引擎来渲染,最后输出返回值至调用结果中,完成对动态文本的国际化处理;
所述构建国际化模块,获取动态模板文件转换为字符串,并按照预设规则映射至词条文件中包括:
预先打包静态词条文件,所述静态词条文件包括第一词条文件,用于固定展示词条文件,存储于json 文件中,第二词条文件,用于处理动态逻辑判断的模板文件,存储于模板引擎文件下;
增加预处理插件模块,通过预制的脚本处理,扫描不同语言目录底下的词条文件,读取移动语言文件、ejs文件或者模板引擎文件中相关的文件内容,将获取到的文件内容映射至对应的json文件内容下,生成符合国际化调用的合法词条文件;
将模板语言文件所在目录通过nodejs的文件操作fs 模块进行扫描,合并到静态文本所在目录对应的文件下。
2.如权利要求1所述的一种动态长文本国际化方法,其特征在于,所述基于模板语言自身的能力,在模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模板语言自身的渲染引擎来渲染,最后输出返回值至调用结果中,完成对动态文本的国际化处理包括:
S10:预先打包静态词条文件,i18n 模块仅读取 json 文件;
S20:通过预制的脚本处理,将移动语言文件、ejs 文件或者 hbs 文件,读取相关的文件内容,将文件内容映射至对应的 json 文件内容下,作为符合 i18n 模块调用的合法词条文件;
S30:在实际软件开发处,业务代码进行 i18n 模块调用;
S40:监听到 i18n模块 ,进行词条调用时进入到中间件模块处理中;
S50:中间件模块会读取到原始的模板文件词条;
S60:获取所述步骤S30透传过来的参数,结合所述步骤 S50获取到的模板语言内容,通过模板引擎渲染。
3.如权利要求1所述的一种动态长文本国际化方法,其特征在于,所述调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译中,通过直接调用所述国际化模块来获取对应的翻译,从业务代码处进行所述国际化模块的调用。
4.如权利要求1所述的一种动态长文本国际化方法,其特征在于,所述监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模板语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力中,进行所述模板引擎的编译工作,通过编译模板的方式来进行编译,为模板引擎提供编译能力。
5.如权利要求1所述的一种动态长文本国际化方法,其特征在于,所述将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为国际化模块的调用结果显示中,
所述模板引擎提供预设标签,将所述预设标签转换为需要的业务数据;将指定的伪语句按照预设流程来变换输出。
6.一种动态长文本国际化装置,其特征在于,包括:
国际化词条构建模块,用于构建国际化模块,获取动态模板文件转换为字符串,并按照预设规则映射至词条文件中;
国际化调用模块,用于调用国际化模块进行词条获取,通过传递键值到全局的所述国际化模块来获取对应的翻译;
国际化中间件模块,用于监测到所述国际化模块,进入中间件模块处理,将原始参数透传至模板语言模块,读取已有的词条文件,调用模板引擎进行渲染,并触发编译能力;进入中间件模块处理即在正常的国际化模块调用执行结果返回前,在每一次对国际化模块调用执行结束后,立即进入中间件模块,判断是否正常返回原先的国际化调用模块的结果;
模板语言处理模块,用于将helper函数注入所述模板引擎,增强所述模板引擎自身的处理能力,对所述模板语言进行处理,输入动态操作,所述动态操作包括动态判断和变量***,返回渲染结果作为国际化模块的调用结果显示;
基于模板语言自身的能力,在模板引擎文件中,通过变量和判断语句,自行处理动态的逻辑判断,并通过调用模板语言自身的渲染引擎来渲染,最后输出返回值至调用结果中,完成对动态长文本的国际化处理;
所述构建国际化模块,获取动态模板文件转换为字符串,并按照预设规则映射至词条文件中包括:
预先打包静态词条文件,所述静态词条文件包括第一词条文件,用于固定展示词条文件,存储于json 文件中,第二词条文件,用于处理动态逻辑判断的模板文件,存储于模板引擎文件下;
增加预处理插件模块,通过预制的脚本处理,扫描不同语言目录底下的词条文件,读取移动语言文件、ejs文件或者模板引擎文件中相关的文件内容,将获取到的文件内容映射至对应的json文件内容下,生成符合国际化调用的合法词条文件;
将模板语言文件所在目录通过nodejs的文件操作fs 模块进行扫描,合并到静态文本所在目录对应的文件下。
7.一种电子设备,其特征在于,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如权利要求1至5中任意一项所述的动态长文本国际化方法。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至5中任意一项所述的动态长文本国际化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211268587.5A CN115618887B (zh) | 2022-10-17 | 2022-10-17 | 动态长文本国际化方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211268587.5A CN115618887B (zh) | 2022-10-17 | 2022-10-17 | 动态长文本国际化方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115618887A CN115618887A (zh) | 2023-01-17 |
CN115618887B true CN115618887B (zh) | 2023-07-25 |
Family
ID=84862975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211268587.5A Active CN115618887B (zh) | 2022-10-17 | 2022-10-17 | 动态长文本国际化方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115618887B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988292A (zh) * | 2019-12-17 | 2021-06-18 | 青岛海信传媒网络技术有限公司 | 一种多语言翻译文件生成方法及终端 |
WO2022142035A1 (zh) * | 2020-12-29 | 2022-07-07 | 平安普惠企业管理有限公司 | ***语言国际化维护方法、装置及计算机可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983238B2 (en) * | 2001-02-07 | 2006-01-03 | American International Group, Inc. | Methods and apparatus for globalizing software |
CN104571977A (zh) * | 2014-12-05 | 2015-04-29 | 北京赛德高科铁道电气科技有限责任公司 | 基于html模板的报表打印方法及*** |
CN105138350B (zh) * | 2015-07-29 | 2018-08-31 | 北京四方继保自动化股份有限公司 | 一种组态软件国际化多语言的实现方法 |
CN105511865A (zh) * | 2015-11-30 | 2016-04-20 | 大连文森特软件科技有限公司 | 一种能够使用多语言或多引擎进行代码开发的方法及*** |
CN106371829B (zh) * | 2016-08-24 | 2019-05-17 | 北京邮电大学 | 基于模块化思想的模板框架设计方法及*** |
CN106569793B (zh) * | 2016-09-19 | 2020-02-14 | 浪潮集团有限公司 | 一种基于Node.js的国际化实现方法 |
US10339029B2 (en) * | 2016-11-01 | 2019-07-02 | Ca, Inc. | Automatically detecting internalization (i18n) issues in source code as part of static source code analysis |
CN109062913B (zh) * | 2018-09-17 | 2023-07-11 | 福建天泉教育科技有限公司 | 国际化资源智能获取方法、存储介质 |
CN110413574B (zh) * | 2019-07-30 | 2023-04-07 | 深圳市携众通科技有限公司 | 一种自动生成代码国际化资源的方法 |
CN113361286A (zh) * | 2020-03-06 | 2021-09-07 | 北京沃东天骏信息技术有限公司 | 信息提示方法和装置 |
CN111652003B (zh) * | 2020-06-09 | 2023-08-15 | 广东小天才科技有限公司 | 语言翻译处理方法、装置、电子设备和介质 |
CN112612448A (zh) * | 2020-12-16 | 2021-04-06 | 平安普惠企业管理有限公司 | 前端国际化多页面打包方法、装置及计算机设备 |
US11741295B2 (en) * | 2021-01-07 | 2023-08-29 | Vmware, Inc. | Independent rendering engine for a user interface internationalization |
CN114254661A (zh) * | 2021-12-16 | 2022-03-29 | 深圳壹账通智能科技有限公司 | 应用的国际化语言翻译方法和***、电子设备及存储介质 |
-
2022
- 2022-10-17 CN CN202211268587.5A patent/CN115618887B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988292A (zh) * | 2019-12-17 | 2021-06-18 | 青岛海信传媒网络技术有限公司 | 一种多语言翻译文件生成方法及终端 |
WO2022142035A1 (zh) * | 2020-12-29 | 2022-07-07 | 平安普惠企业管理有限公司 | ***语言国际化维护方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115618887A (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831384B (zh) | 语言切换方法和装置、设备及存储介质 | |
US20090132232A1 (en) | Methods and apparatus for implementing multilingual software applications | |
US20110179073A1 (en) | Method for Localizing Text in a Software Application | |
JPH10326255A (ja) | 言語から独立したメッセージの操作方法 | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
CN113126990B (zh) | 一种页面开发方法、装置、设备及存储介质 | |
CN113139390A (zh) | 一种应用于代码字符串的语言转换方法和装置 | |
CN111176650B (zh) | 解析器生成方法、检索方法、服务器及存储介质 | |
CN112306620B (zh) | 自定义表单控件的多语言加载方法及装置 | |
JP2023541186A (ja) | 可視化ページレンダリング方法、装置、機器及び記憶媒体 | |
CN114153459A (zh) | 接口文档生成方法及装置 | |
US11080024B2 (en) | In-line code adornments | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN112130952A (zh) | 多语言显示方法、装置、设备及产品 | |
CN112632333A (zh) | 查询语句生成方法、装置、设备及计算机可读存储介质 | |
CN115618887B (zh) | 动态长文本国际化方法、装置、设备及存储介质 | |
CN114064601A (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN114327492A (zh) | 一种代码翻译方法、装置及设备 | |
CN111639504A (zh) | 网页的多语言翻译方法和装置及设备 | |
CN116150527A (zh) | 组件样式隔离方法、装置、设备、存储介质及产品 | |
CN111443979B (zh) | 文档处理方法、装置、计算机设备及存储介质 | |
CN112732254A (zh) | 网页开发方法、装置、计算机设备和存储介质 | |
JPWO2006016477A1 (ja) | 翻訳システム、翻訳サーバ、翻訳サーバの処理方法、プログラム、情報記憶媒体および翻訳装置 | |
LEHRHUBER | Pdf support for qualitative research in the cloud | |
CN113792557A (zh) | 语言文件的生成方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 8b, building 1, No. 48, Zhichun Road, Haidian District, Beijing 100098 Patentee after: Beijing Zhiling Haina Technology Co.,Ltd. Country or region after: China Address before: 8b, building 1, No. 48, Zhichun Road, Haidian District, Beijing 100098 Patentee before: Beijing zhilinghaina Technology Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |