首页 > 编程语言 >第四十四章 在CSP应用程序中本地化文本 - 显示本地化字符串的其他选项

第四十四章 在CSP应用程序中本地化文本 - 显示本地化字符串的其他选项

时间:2022-11-12 09:36:20浏览次数:46  
标签:语言 第四十四章 本地化 消息 FormatText 文本 CSP String

目录

第四十四章 在CSP应用程序中本地化文本 - 显示本地化字符串的其他选项

显示本地化字符串的其他选项

在运行时显示本地化字符串的最简单方法是使用本章前面介绍的$$$Text宏之一。

本主题解释了在运行时从消息字典中检索消息文本的其他方法。如果消息文本包含参数(%1%2%3%4),则在页面上显示文本之前,还必须指定相应的替换文本。

%response.GetText Method

类中的%CSP.Response提供了一个GetText实例方法,使能够从消息字典中检索文本,并用值替换消息可能具有的任何参数。在CSP类代码中,对象中当前实例化的%CSP.Response由变量%Response表示。本主题将该方法称为%Response.GetText

方法签名为:

 method GetText(language As %String = "",
                domain As %String = "",
                id As %String,
                default As %String,
                args...) returns %String
  • domain - (可选)指定消息的域的字符串。如果未指定,域默认为%Response.Domain.
  • language - (可选)RFC1766以指定语言的代码。Caché将该字符串转换为全小写。如果未指定,则Language默认为%Response.Language的值,它会自动从浏览器设置中获取其运行时值。
  • id - 消息ID。
  • default - 找不到由语言、域和ID标识的消息时使用的字符串。
  • arg1, arg2, and so on - 消息参数的替换文本。所有这些都是可选的,所以可以使用%response.GetText(),即使消息没有参数。

FormatText Method

类中的%Library.MessageDictionary提供了FormatText()类方法,使能够用文本替换消息参数。当已经从消息字典中获得消息文本时,可以使用FormatText()

ClassMethod FormatText(text As %String, args...) As %String
  • text - 消息文本。在%Response.GetText$$$Text返回的使用%String
  • arg1, arg2, and so on - 消息参数的替换文本。

$$$FormatText Macros

这些宏使能够用文本替换消息参数。当已经从消息字典中获得消息文本时,可以使用它们:

  • $$$FormatText

  • $$$FormatTextJS (applies JavaScript escaping to the $$$FormatText result)

  • $$$FormatTextHTML (applies HTML escaping to the $$$FormatText result)

这些宏位于%occMessages.inc中,该文件包含在%occInclude.inc`中。

$$$FormatText宏返回%String。语法是:

$$$FormatText(text,arg1,arg2,...)
  • text - 消息文本。在%Response.GetText$$$Text返回的使用%String
  • arg1, arg2, and so on - 消息参数的替换文本。

MatchLanguage()方法

需要设置CSP响应的语言属性。为此,请设置%response.Language属性,使用%MessageDictionaryO的MatchLanguage()方法返回的值:

 Set language = ##class(%MessageDictionary).MatchLanguage(languages,domain,flag)

这将查找与指定域的语言列表中的语言最匹配的语言。该方法使用HTTP 1.1匹配规则(RFC 2616)。语言列表是以逗号分隔的RFC 1766列表,语言名称。列表中的每种语言可以被赋予相关联的质量值,该质量值表示用户对由语言列表指定的语言的偏好的估计。质量值默认为q=1

比如da,en-GB;q=0.8,en;q=0.7意味着:I prefer Danish, but will accept British English and other types of English 如果列表中的语言完全等于标记,或者完全等于标记的前缀,使得前缀后面的第一个标记字符是连字符(-),则该语言匹配支持的语言标记。特殊语言星号(*),如果出现在输入列表中,则匹配列表中没有任何其他语言与之匹配的所有支持的语言。

分配给支持的语言标签的语言质量因子是列表中与该语言标签匹配的最长语言的质量值。返回的语言是被分配了最高质量因子的受支持语言。

s flag (system)是一个可选标志,指示是匹配系统消息还是应用程序消息。

标签:语言,第四十四章,本地化,消息,FormatText,文本,CSP,String
From: https://www.cnblogs.com/yaoxin521123/p/16882696.html

相关文章

  • CSP2022 游记
    坐标JX。初赛不明不白的得了\(95\)分,然后不明不白的全省第一,挺离谱的。然后复赛就被吊打/kk。这篇游记写的比较随便。Day-12发现考点是九江,不是以往的南昌。而......
  • [题解] [CSP-J 2022] 逻辑表达式 思路整理
    标签:分治。题目传送门:P8815[CSP-J2022]逻辑表达式题目大意给一个包含0、1、|、&、(、)的逻辑表达式(保证正确)。在计算表达式时采用“短路”策略:计算表达式a&b......
  • 考csp的小女孩
    “再多复习一个数据结构吧。”小女孩脑袋里想着splay,在考场外孤苦伶仃地站着,周围的人熙熙攘攘,他们都有说有笑,仿佛做足了准备,只有这个考csp的小女孩因紧张而瑟瑟发抖。进考......
  • CSP 2022
    终于考完期中了QAQJA不会。B把两个式子联立后消元解二次方程。C把表达式树弄出来之后找最浅的确定节点。D先排序,令\(f_{i,j}\)表示以点\(i\)结尾花费\(j\)......
  • 题解 LGP7071 【 [CSP-J2020] 优秀的拆分】
    postedon2020-11-1217:22:31|under题解|source本题正解是二进制or位运算理解题目P7071优秀的拆分(民间数据)题目链接:https://www.luogu.com.cn/problem......
  • 题解 LGP7909 【[CSP-J 2021] 分糖果】
    postedon2021-10-2322:52:47|under题解|source分类讨论。一句话题意:求\(\max\limits_{i=l}^{r}\{i\bmodn\}\)首先画个数轴,按除以\(n\)向下取整的商把这些整......
  • 题解 LGP8819【[CSP-S 2022] 星战】
    postedon2022-10-3011:39:14|under题解|sourceproblem一个\(n\)个点\(m\)条边的有向图,\(q\)次操作:删除一条边,保证存在;增加一条边,保证不存在;删除一个点......
  • 题解 LGP8817【[CSP-S 2022] 假期计划】
    postedon2022-10-2923:32:15|under题解|sourceproblem\(n\)个点\(m\)条边的无向无权图,令\(to(i,j)=[\operatorname{dist}(i,j)\leqk+1]\),点带权\(a_i\),求:......
  • CSP-S2022 总结
    调整了下心态开考顺序开题看完\(T1,T2\)直接开打\(T2\)的线段树,还是比较好写的然后思考先打\(T1\)呢还是拍\(T2\),最后决定拍\(T2\),稳一点发现随机数据很弱,决定......
  • 2022CSP-J题解
    2022CSP-J如期举行,<del>本人在封控区参加不了</del>,CCF收钱之后题目确实是变简单了,所以半场外人士写了一片题解,希望对各位大佬有帮助。#T1-乘方第一题往往没有**实现难......