前端应用的多语言解决方法、存储介质与流程

文档序号:15079529发布日期:2018-08-03 12:18阅读:166来源:国知局

本发明涉及前端产品的语言包处理领域,具体说的是前端应用的多语言解决方法、存储介质。



背景技术:

目前一些国际化的前端产品中,例如游戏、web、app等,其语言国际化的解决方案,大多是创建一个语言包文件,文件内容是是key,value形式的列表,其中key是语言标记,value是具体的语言内容,例如,中文的语言包文件的列表格式如下所示:

{

sc:您确定要删除吗?,

xdr:默认为该版本自动下单时的接单人,

xmxz:需要来源项目选择

}

英文的语言包文件的列表格式如下所示:

{

sc:Are you sure delete date?,

xdr:Default version accecpter,

xmxz:Please choice project

}

实际运用时,各国语言是分开存储在不同的文件上的。

然后在代码中,使用key来表示具体的含义,原先的代码以及国际化后的代码如下所示:

原来的代码:

其中,i18n是多语言转换函数,根据当前语言环境,将key:sc转换为对应语种的文字。可以看出,国际化后的代码“丢失”了原代码的关键信息(这里代码关键信息的意思是,开发者通过查看代码,能够直观了解该代码的意图),使得代码变得不再完整清晰,无法直观的看出要做的事情。例如:原先的代码中显示“你确定要删除吗?”,开发者一看就知道这个地方是一个删除模块,目的是希望用户对删除进行再次确认。然而国际化后,代码中只留下一个“sc”标志,即key的值,这个“sc”是什么意思,无法理解?这样的做法非常不利于中大规模应用和多人协同应用的开发和调试。



技术实现要素:

本发明所要解决的技术问题是:提供一种前端应用的多语言解决方法、存储介质,使得语言环境转换前后的代码一致,保证代码的关键信息不丢失,使代码更加清晰可读和易于维护。

为了解决上述技术问题,本发明采用的技术方案为:

一种前端应用的多语言解决方法,包括:

依据语言环境的切换对代码进行转换,转换后的代码中包含多语言转换函数;其中,所述多语言转换函数中包含切换前的语言环境的语言包文件中value的具体语言内容。

本发明提供的另一个技术方案为:

一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述前端应用的多语言解决方法所包含的步骤。

本发明的有益效果在于:本发明转换后的代码使用多语言转换函数将所要转换的语言内容包裹起来,在转换函数中写明转换前语言环境的语言包文件中value的具体语言内容。由此实现在依据语言环境转换代码时,能直接依据key:value的对应关系将上述的具体语言内容转换为对应语种的文字,并且使得转换后的代码仍然保有原本应有的信息,即转换前的信息,而不是key的值这一标志。本发明实现了语言环境转换前后的代码一致,保证代码的关键信息不丢失,使代码更加清晰可读和易于维护,更有益于中大规模应用和多人协同应用的开发和调试。

附图说明

图1为本发明的实施例一的流程示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:多语言转换函数中包含转换前语言环境的语言包文件中value的具体语言内容;实现语言环境转换前后的代码一致,保证代码的关键信息不丢失,使代码更加清晰可读和易于维护。

本发明涉及的技术术语解释:

请参阅图1,本发明提供一种前端应用的多语言解决方法,包括:

依据语言环境的切换对代码进行转换,转换后的代码中包含多语言转换函数;其中,所述多语言转换函数中包含切换前的语言环境的语言包文件中value的具体语言内容。

从上述描述可知,本发明的有益效果在于:通过使转换后的代码,和国转换之前保持一致,保证代码的关键信息不丢失,使代码更加清晰可读和易于维护。

进一步的,所述多语言转换函数还包含所述value对应的key的值。

进一步的,若所述多语言转换函数中包含的所述key不为空,则

所述多语言转换函数在被调用时,直接依据所包含的key的值,从转换后的语言环境的语言包文件中获取所述key的值对应的value的具体语言内容。

由上述描述可知,若提供有key参数,则转换函数可以直接依据提供的key参数在当前语言环境的语言包文件中快速获取对应的语言内容,而不用进行搜索确定,省去搜索语言包带来的损耗,显著提升转换效率。

进一步的,若所述多语言转换函数中包含的所述key为空,或者不包含所述key,则

所述多语言转换函数在被调用时,依据多语言转换函数包含的所述具体语言内容,从转换前的语言环境的语言包文件中确定对应的key的值,然后从转换后的语言环境的语言包文件中,依据所述key的值获取对应的具体语言内容并返回。

由上述描述可知,若搜索语言包带来的消耗不大(例如2万条以内的pc环境,或者5千条以内的移动端环境),则可以不提供该参数,以提升开发效率,节约开发成本。

进一步的,所述确定对应的key的值,具体为:

通过遍历所述转换前的语言环境的语言包文件中的value组数,获取所述具体语言内容对应的key的值。

由上述描述可知,通过遍历查找提高所述搜索效率。

进一步的,还包括:

加载转换前的语言环境的语言包文件;

加载转换后的语言环境的语言包文件。

由上述描述可知,可以事先加载转换前后的语言包文件,便于快速搜索进行代码转换。

进一步的,还包括:语言包文件为key与对应value的列表形式进行存储。

由上述描述可知,语言包文件采用上述列表形式,便于依据对应关系快速搜索确定所需的具体语言内容,同时易于维护。

本发明提供的另一个技术方案为:

一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的前端应用的多语言解决方法所包含的步骤。

从上述描述可知,本发明的有益效果在于:对应本领域普通技术人员可以理解实现上述前端应用的多语言解决方法这一技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。

实施例一

请参照图1,本实施例提供一种前端应用的多语言解决方法,能够运用于所有需要进行国际化的前端产品中,包括游戏、web、app等的不同语言切换。本实施例如图1所示,可以包括以下步骤:

S1:创建语言包文件。

具体的,依据所支持的语言环境创建对应的语言包文件,例如:想同时支持中、英、日三国语言的切换,则需要同时创建中文语言包文件、英文语言包文件、日文语言包文件。

所创建的语言包文件按照key:value的对应关系,以列表形式进行存储。其中,key为语言标记,value为对应的具体语言内容。具体格式如下:

{

sc:您确定要删除吗?,

xdr:默认为该版本自动下单时的接单人,

xmxz:需要来源项目选择

}

其中的“sc”、“xdr”以及“xmxz”为key;各自对应的具体语言内容如“您确定要删除吗?”为对应“sc”的value。上述代码列表为中文的语言包文件;英文的语言包文件的代码列表如下:

{

sc:Are you sure delete date?,

xdr:Default version accecpter,

xmxz:Please choice project

}

各国的语言包文件分别存储在不同的文件上。

下面,将以中英文语言环境之间进行切换,当前用户语言环境(切换后的语言环境)为英文为例进行说明。

S2:编写多语言转换函数。

可以采用常用的i18n多语言转换函数实现。多语言转换函数能根据当前语言环境,通过key:value的对应关系将当前文字转换为对应语种(切换后的语言环境)的文字。但是需要强调的是,现有的多语言转换函数如下所示:

原来的代码:

其中的转换函数中,直接使用符号“sc”指代原先代码中显示的文字内容,在转换函数被调用时,虽然能依据符号“sc”从英文语言包中寻找“sc”对应的内容进行替换,但是就现在的代码而言,已经失去了原有重要的关键信息,技术人员并不能通过代码直观的了解代码的意图。

而本实施例中,该步骤所编写的i18n多语言转换函数,为:function i18n(value,key=null)。由于本实施例是以中文转换为英文为例进行说明,因此多语言转换函数中,value:中文语言的具体内容“您确定要删除吗?”,对应中文语言包中的value;key:具体语言内容对应所在语言包的key值“sc”,该参数允许为空。

可见,本实施例的多语言转换函数中包含了切换前的语言环境的语言包文件中value的具体语言内容,还可以包含参数key(key=null即该参数为空)。该转换函数能根据输入参数,返回当前环境(转换后的语言环境)对应的语言文字,例如输入是你好,当前是英文环境,输出就是hello。

关于是否提供key参数(即key是否为null),可以由具体的业务根据实际场景决定,提供key的目的是为了i18n能够更快的找到当前语言环境的语言内容(不用在英文语言包中寻找value的具体内容对应的key值),所以如果在现有硬件环境下,搜索语言包带来的消耗不大(例如2万条以内的pc环境,或者5000条以内的移动端环境),完全可以不提供这个参数,以提升开发效率节约开发成本;若语言包很小,可以选择不提供参数key,以此减小开发成本,提高开发效率。

S3:编写国际化代码。

将具体的业务逻辑代码,使用上述的多语言转换函数将所要进行语种转换的具体语言内容包裹起来,例如,对应上述中的“原先的代码”,依据是否提供“key值”,可以分别提供两种不同的代码形式:

国际化(英文)的代码1:

function makeConfirm(){

AlertPanel.show(i18n('能确定要删除吗?'))

}

以及国际化代码2:

function makeConfirm(){

AlertPanel.show(i18n('能确定要删除吗?','sc'))

}

可知,转换后的代码中,在其多语言转换函数中直接写入切换前的语言环境的语言包文件中value的具体语言内容“您确定要删除吗?”,这样便实现即使切换了语言环境,但是代码转换前后仍然保持一致,代码的关键信息并不会丢失,保证了代码的清晰可读性,同时又易于维护。

S4:获取当前语言环境;

S5:判断当前语言环境是否为中文,若是,则直接调用原始代码,直接返回value的具体语言内容;若否,则执行S6;

S6:加载当前语言环境的语言包文件(即切换后的英文语言环境的语言包文件),保存到变量cur-lan中;

S7:加载中文语言环境的语言包文件(即切换前的中文语言环境的语言包文件),保存到变量cu-lan中;

S8:调用并执行所编写的国际化代码。

具体的,包括:

S81:判断所编写的国际化代码中多语言转换函数的参数key是否为null,即是否为空,若是,则执行S82;若否,则执行S84;

S82:遍历转换前的语言环境的语言包文件中的value组数,获取转换函数中包含的具体语言内容(即转换函数中value)所对应的key的值;然后执行S84;具体的,即通过对比中文语言包文件中value的具体内容,获取“您确定要删除吗?”对应的key值为“sc”;

S83:从转换后的语言环境的语言包文件中,依据所述key的值获取对应的具体语言内容并返回。具体的,即从英文语言包中,获取到key值为“sc”的英文语言“Are you sure delete data?”,并返回至前端显示。继续执行S9;

S82:直接依据多语言切换函数中包含的key的值,返回cur-lan[key];

具体的,即从英文语言包文件中获取所述key的值对应的value的具体语言内容“Are you sure delete data?”,并返回至前端显示。继续执行S9;

S9:前端表现:将多语言切换函数返回的“Are you sure delete data?”传递给AlertPanel.show进行显示,完成语言包替换。

本实施例通过方向查找,实现多语言环境下代码的高可读性。

实施例二

本实施例对应实施例一,提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例一所述的前端应用的多语言解决方法所包含的全部或者部分步骤。

综上所述,本发明提供的一种前端应用的多语言解决方法、存储介质,所编写的多语言转换函数中包含转换前语言环境的语言包文件中value的具体语言内容;实现语言环境转换前后的代码一致,保证代码的关键信息不丢失,使代码更加清晰可读和易于维护。进一步的,支持依据具体的业务需求,灵活选择是否提供key参数,实现开发效率、成本以及代码转换效率之间的权衡,提高实用性。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1