Skip to content

Commit 01887d6

Browse files
authored
Merge pull request #26 from intersystems-ru/translate
Translate
2 parents dc52f24 + 2ef797d commit 01887d6

File tree

5 files changed

+80
-0
lines changed

5 files changed

+80
-0
lines changed

Form.inc.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,8 @@
3838
3939
#; Test if object variable is defined and not Null
4040
#define isDefObject(%obj) ($Data(%obj)#2&&$IsObject(%obj))
41+
42+
#define domain "RESTFORMS"
43+
#define domainq """"_$$$domain_""""
4144
]]></Routine>
4245
</Export>

Form/Generators.cls.xml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,32 @@ Validate FORMORDERBY parameter value if present</Description>
7777
quit sc
7878
]]></Implementation>
7979
</Method>
80+
81+
<Method name="translate">
82+
<Description>
83+
Fill ^CacheMsg global for further translation</Description>
84+
<Internal>1</Internal>
85+
<ClassMethod>1</ClassMethod>
86+
<CodeMode>objectgenerator</CodeMode>
87+
<GenerateAfter>generateMetadata</GenerateAfter>
88+
<Implementation><![CDATA[
89+
#Include Form
90+
#dim sc As %Status = $$$OK
91+
set className = %compiledclass.Name
92+
set formNameKey = %class.Parameters.FindObjectId(className _ "||" _ $$$formNameParam)
93+
set formName = $get(%parameter($$$formNameParam))
94+
return:(($$$skipClasses[className)||(formName="")||(formNameKey="")) sc
95+
96+
#dim prop As %Dictionary.PropertyDefinition
97+
for i = 1:1:%class.Properties.Count() {
98+
set prop = %class.Properties.GetAt(i)
99+
set displayName = prop.Parameters.GetAt($$$propDisplayNameParam)
100+
if prop.Internal || prop.Calculated || prop.ReadOnly || prop.Private || prop.Identity || prop.MultiDimensional || displayName = "" continue
101+
102+
do ##class(Form.Util.Translate).insert(displayName)
103+
}
104+
quit $$$OK
105+
]]></Implementation>
106+
</Method>
80107
</Class>
81108
</Export>

Form/Property.cls.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ w ##class(Form.Property).getPropertyDisplayName("Form.Test.Simple", "text")</Des
163163
<ReturnType>%String</ReturnType>
164164
<Implementation><![CDATA[
165165
set displayName = ..getPropertyParam(className, name, $$$propDisplayNameParam)
166+
set displayName = ##class(Form.Util.Translate).get(displayName)
166167
set:displayName="" displayName = name
167168
return displayName
168169
]]></Implementation>

Form/REST/Abstract.cls.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
<Super>%CSP.REST</Super>
88
<TimeCreated>64090,76470.397537</TimeCreated>
99

10+
<Parameter name="CONTENTTYPE">
11+
<Default>application/json</Default>
12+
</Parameter>
13+
1014
<Parameter name="UseSession">
1115
<Type>Integer</Type>
1216
<Default>1</Default>

Form/Util/Translate.cls.xml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Export generator="Cache" version="25">
3+
<Class name="Form.Util.Translate">
4+
<Description>
5+
Support for metadata translation </Description>
6+
<IncludeCode>Form</IncludeCode>
7+
<TimeCreated>64386,54065.171182</TimeCreated>
8+
9+
<Method name="get">
10+
<Description>
11+
Get translated value of a text
12+
w ##class(Form.Util.Translate).get()</Description>
13+
<ClassMethod>1</ClassMethod>
14+
<FormalSpec>text:%String</FormalSpec>
15+
<Implementation><![CDATA[
16+
set domain = $$$domain
17+
set language=""
18+
19+
if $isObject($g(%request)) {
20+
set language=$$MatchLanguage^%occMessages(%request.GetCgiEnv("HTTP_ACCEPT_LANGUAGE"))
21+
}
22+
23+
set:language="" language = $s($mvv(58)="":"en",1:$mvv(58))
24+
25+
set id = $zcrc(text, 7)
26+
set text = $$$GetAppMessage(language, domain, id, text)
27+
set text = $zcvt(text, "O", "UTF8")
28+
quit text
29+
]]></Implementation>
30+
</Method>
31+
32+
<Method name="insert">
33+
<Description>
34+
Add text to ^CacheMsg
35+
do ##class(Form.Util.Translate).Insert()</Description>
36+
<ClassMethod>1</ClassMethod>
37+
<FormalSpec>text</FormalSpec>
38+
<Implementation><![CDATA[
39+
set text = $$$quote(text)
40+
set domain = $$$domainq
41+
set a = $$macroText^%occMessages($lb(text, domain))
42+
]]></Implementation>
43+
</Method>
44+
</Class>
45+
</Export>

0 commit comments

Comments
 (0)