рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛ рд╣реИ, рдЬреЛ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
write "Hello, World!"
рдЖрд╡реЗрджрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред
рд▓реЗрдХрд┐рди рд╕рдордп рдмреАрдд рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдм, рдЖрдкрдХреЛ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИред
рдХрдЯ рдХреЗ рддрд╣рдд рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрдЪ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛
Cach├й DBMS рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, JavaScipt рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рддрд╛рд░, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рдЖрджрд┐ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдиреЛрдЯ: рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХрдИ рд╡рд░реНрдЧреЛрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ, рд╡реЗрдм рдкреЗрдЬреЛрдВ, рдЬреЗрдПрд╕ рд▓рд┐рдкрд┐рдпреЛрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред
рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рддрдВрддреНрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ, рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ "рдлрд┐рд╢ рдЖрдЙрдЯ" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕реНрд╡рдпрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдореЗрдВ рд╣реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ, рд╕рддреНрд░ рдХреА рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдЯреЛрд░ рд╕реЗ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓реНрдп рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдкреВрд░реНрдг рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред
рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреЛрд░ (рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛), рд╕рд╛рде рд╣реА рдЗрд╕ рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рднрд╛рд╖рд╛ рдмрджрд▓рдирд╛, рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд / рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЖрджрд┐ред рдШред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
- рдкрдардиреАрдп - рдЕрддрд┐рд░рд┐рдХреНрдд - рд╕реНрд░реЛрдд рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЕрдкреНрд░рдпреБрдХреНрдд;
- рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рд╕реНрд╡рдд: рдкреВрд░реНрдг рднрдВрдбрд╛рд░рдг
рдиреЛрдЯ: рдЬрдм рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреЛрдб рд╕реЗ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕реЗ рдкреНрд░реЗрдд рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдирд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
- рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдХреЛ "рдордХреНрдЦреА рдкрд░" рдмрджрд▓реЗрдВред рдпрд╣ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рджреЛрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ;
- рдХрд┐рд╕реА рджреА рдЧрдИ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдбреЛрдореЗрди рд╕реЗ (рдбреЛрдореЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдо);
- XML рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд / рдЖрдпрд╛рдд рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рддрд░реАрдХреЗред
рддреЛ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЙрджрд╛рд╣рд░рдг рднреА рджреЗрдЦреЗрдВред
рдкрд░рд┐рдЪрдп
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдПрдБ:
#Include %occMessages
test () {
write "$$$DefaultLanguage=" , $$$DefaultLanguage ,!
write "$$$SessionLanguage=" , $$$SessionLanguage ,!
set msg1= $$$Text ( ", !" , "asd" )
set msg2= $$$Text ( "@my@, !" , "asd" )
write msg1,!,msg2,!
}
рдкрд░рд┐рдгрд╛рдо:
USER>d ^test $$$DefaultLanguage=ru $$$SessionLanguage=ru , ! , !
рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛
^CacheMsg("asd") = "ru" ^CacheMsg("asd","ru",2915927081) = ", !" ^CacheMsg("asd","ru","my") = ", !"
рджреВрд╕рд░реЗ, рдпрджрд┐ рдЖрдк
$ $ $ рдореИрдХреНрд░реЛ рдкрд░ рд╣реЛрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдордзреНрдпрд╡рд░реНрддреА (рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд) рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб (INT-code) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
test () {
write "$$$DefaultLanguage=" , $get (^%SYS( "LANGUAGE" , "CURRENT" ), "en" ),!
write "$$$SessionLanguage=" , $get (^||%Language, "en" ),!
set msg1= $get (^CacheMsg( "asd" , $get (^||%Language, "en" ), "2915927081" ), ", !" )
set msg2= $get (^CacheMsg( "asd" , $get (^||%Language, "en" ), "my" ), ", !" )
write msg1,!,msg2,!
}
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╢реБрд░реВ рдореЗрдВ рдЙрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдореЗрдВ (рдкреНрд░рдмрдВрдзрди рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ) Cach├й DBMS рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИ;
рдиреЛрдЯ: рдЬрдм рдЙрдирдХреЗ рд╣реИрд╢ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
- рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛ рдЕрдкрдиреЗ CRC32 рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ - CRC32 рдпрд╛ рд▓рд╛рдЗрди рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░, рдбреЛрдореЗрди, рдХрд░рдВрдЯ рд╕рд┐рд╕реНрдЯрдо рд▓реИрдВрдЧреНрд╡реЗрдЬ - рдХреЛ CacheMsg рдЧреНрд▓реЛрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рд▓рд╛рдЗрди рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдХреЛрдб рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдЬреА рд╡реИрд╢реНрд╡рд┐рдХ ^ рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ ^ ||% рднрд╛рд╖рд╛ ?
- рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдРрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ), рддреЛ рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА;
- рдбреЛрдореЗрди рддрдВрддреНрд░ рдЖрдкрдХреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрд╡рд╛рдж рдЖрджрд┐ред
рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдореМрдЬреВрджрд╛
$ $ $ рдЯреЗрдХреНрд╕реНрдЯ рдореИрдХреНрд░реЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ ..., рддреЛ рдЖрдк рдЕрдкрдирд╛ рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝
## рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдФрд░ / рдпрд╛
## рдлрдВрдХреНрд╢рди рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред
рдЪрд▓рд┐рдП рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреЛрд░ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рдХреЛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЕрдиреБрд╡рд╛рдж рдХреЛ рд╡рд╛рдкрд╕ рд▓реЛрдб рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рдеред
рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо
% рдореЗрдердбрдмреЗрд░ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рдЖрдпрд╛рдд (),
рдЖрдпрд╛рддрдбрд╛рдпрд░ (),
рдирд┐рд░реНрдпрд╛рдд (),
ExportDomainList ():
do ##class ( %MessageDictionary ). Export ( "messages.xml" , "ru" )
рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ "
messages_ru.xml " рдорд┐рд▓рддреА рд╣реИред рдЗрд╕реЗ "
messages_en.xml " рдХрд╛ рдирд╛рдо рджреЗрдВ, рдЗрд╕рдореЗрдВ рднрд╛рд╖рд╛ рдХреЛ "
en " рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВред
рдЕрдЧрд▓рд╛, рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдпрд╛рдд рдХрд░реЗрдВ:
do ##class ( %MessageDictionary ). Import ( "messages_en.xml" )
рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧрд╛:
^CacheMsg("asd") = "ru" ^CacheMsg("asd","en",2915927081) = "Hello, World!" ^CacheMsg("asd","en","my") = "Hello, World!" ^CacheMsg("asd","ru",2915927081) = ", !" ^CacheMsg("asd","ru","my") = ", !"
рдЕрдм рд╣рдо "рдордХреНрдЦреА рдкрд░" рднрд╛рд╖рд╛ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
#Include %occMessages
test ()
{
set $$$SessionLanguageNode = "ru"
set msg1= $$$Text ( ", !" , "asd" )
set msg2= $$$Text ( "@my@, !" , "asd" )
write msg1,!,msg2,!
set $$$SessionLanguageNode = "en"
set msg1= $$$Text ( ", !" , "asd" )
set msg2= $$$Text ( "@my@, !" , "asd" )
write msg1,!,msg2,!
set $$$SessionLanguageNode = "pt-br"
set msg1= $$$Text ( ", !" , "asd" )
set msg2= $$$Text ( "@my@, !" , "asd" )
write msg1,!,msg2,!
}
рдкрд░рд┐рдгрд╛рдо:
USER>d ^test , ! , ! Hello, World! Hello, World! , ! , !
рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдЧреИрд░- рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЙрджрд╛рд╣рд░рдг (рдирд┐рдпрдорд┐рдд рд╡рд░реНрдЧ)
рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг:
Include %occErrors
Class demo.test Extends %Persistent
{
Parameter DOMAIN = "asd" ;
ClassMethod Test()
{
do ##class ( %MessageDictionary ). SetSessionLanguage ( "ru" )
write $$$Text ( ", !" ),!
do ##class ( %MessageDictionary ). SetSessionLanguage ( "en" )
write $$$Text ( ", !" ),!
do ##class ( %MessageDictionary ). SetSessionLanguage ( "pt-br" )
write $$$Text ( ", !" ),!
#dim ex as %Exception.AbstractException
try
{
$$$ThrowStatus ( $$$ERR ( $$$AccessDenied ))
} catch (ex)
{
write $system .Status . GetErrorText (ex. AsStatus (), "ru" ),!
write $system .Status . GetErrorText (ex. AsStatus (), "en" ),!
write $system .Status . GetErrorText (ex. AsStatus (), "pt-br" ),!
}
}
}
рдиреЛрдЯ: рдмреЗрд╢рдХ, рдЖрдк рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо:
USER>d ##class(demo.test).Test() , ! Hello, World! , ! #822: ERROR #822: Access Denied ERRO #822: Acesso Negado
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
- рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рд╣реА рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпреЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ % qCacheMsg рд╕рд┐рд╕реНрдЯрдо рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ;
- рд╣рдо рдбреЛрдореЗрди рдирд╛рдо рдХреЛ рдПрдХ рдмрд╛рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ $ $ $ рдкрд╛рда рдореИрдХреНрд░реЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- $$$ рдкрд╛рда рдореИрдХреНрд░реЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдСрдлрд╝рд▓рд╛рдЗрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред
рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЙрджрд╛рд╣рд░рдг
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
/// Created using the page template: Default
Class demo.test Extends %ZEN.Component.page
{
/// , .
Parameter APPLICATION;
/// .
Parameter PAGENAME;
/// , .
Parameter DOMAIN = "asd" ;
/// Style CSS .
XData Style
{
< style type = "text/css" >
</ style >
}
/// XML .
XData Contents [ XMLNamespace = "www.intersystems.com/zen" ]
{
< page xmlns = "www.intersystems.com/zen" title = "" >
< checkbox onchange = "zenPage.ChangeLanguage();" />
< button caption = "" onclick = "zenPage.clientTest(2,3);" />
< button caption = "" onclick = "zenAlert(zenPage.ServerTest(1,2));" />
</ page >
}
ClientMethod clientTest(
a ,
b ) [ Language = javascript ]
{
zenAlert(
$$$FormatText($$$Text( "(1)^ %$# @*&' %1=%2" ), '"' ,a + b), '\n' ,
zenText( 'msg3' ,a + b), '\n' ,
$$$Text( " !" )
);
}
ClassMethod ServerTest(
A ,
B ) As %String [ ZenMethod ]
{
&js< zenAlert( #( .. QuoteJS ( $$$FormatText ( $$$Text ( "(2)^ %$# @*&' ""=%1" ),A+B)) )# ); >
quit $$$TextJS ( " Cach├й!" )
}
Method ChangeLanguage() [ ZenMethod ]
{
#dim %session as %CSP.Session
set %session. Language = $select (%session. Language = "en" : "ru" ,1: "en" )
&js< zenPage.gotoPage( #( .. QuoteJS (.. Link ( $classname ()_ ".cls" )) )# ); >
}
Method %OnGetJSResources( ByRef pResources As %String ) As %Status [ Private ]
{
Set pResources( "msg3" ) = $$$Text ( "(3)^ %$# @*&' ""=%1" )
Quit $$$OK
}
}
рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдЧреНрд░рд╛рд╣рдХ рдХреА рдУрд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░рдиреЗ рдХреЗ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- $$$ рдкрд╛рда рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬрд┐рд╕реЗ " zenutils.js " рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб zenText () рд╡рд┐рдзрд┐ рдФрд░ % OnGetJSResources () рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрджреНрдзрддрд┐ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ: рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг - ZEN рдШрдЯрдХ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЗрдбрд░, рд╕рдВрдХреЗрдд, рдЖрджрд┐ред
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдЙрдиреНрдореБрдЦ рдШрдЯрдХ рдмрдирд╛рдПрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, jQuery рдпрд╛ extJS рдкрд░ рдпрд╛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЖрдзрд╛рд░рд┐рдд - рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ % ZEN.Datatype.caption : рдЬрд╝реЗрди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг - рднрд╛рд╖рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк % рд╕рддреНрд░ рдФрд░ / рдпрд╛ % рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреА рднрд╛рд╖рд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЬрд╝реЗрди рд╡рд┐рд╢реЗрд╖ рдЪрд░
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕рддреНрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
рд╡реГрджреНрдзрд┐рдЕрдкрдиреА рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдирд╛
рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдХрд░рдг рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рдлрд┐рд░ рднреА, рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рддреНрд░реБрдЯрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ "
messages_ru.xml " рдмрдирд╛рдПрдБ, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА:
<?xml version="1.0" encoding="UTF-8"?> <MsgFile Language="ru"> <MsgDomain Domain="asd"> <Message Id="-1" Name="ErrorName1"> 1</Message> <Message Id="-2" Name="ErrorName2"> 2 %1 %2</Message> </MsgDomain> </MsgFile>
рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ:
do ##class ( %MessageDictionary ). Import ( "messages_ru.xml" )
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдмрдирд╛рдП рдЧрдП рдереЗ:
- ^ CacheMsg
USER>zw ^CacheMsg ^CacheMsg("asd","ru",-2)=" 2 %1 %2" ^CacheMsg("asd","ru",-1)=" 1"
- ^ CacheMsgNames
USER>zw ^CacheMsgNames ^CacheMsgNames("asd",-2)="ErrorName2" ^CacheMsgNames("asd",-1)="ErrorName1"
"CustomErrors" рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
USER>Do ##class(%MessageDictionary).GenerateInclude("CustomErrors",,"asd",1) Generating CustomErrors.INC ...
рдиреЛрдЯ: рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП GenerateInclude () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВред
рдлрд╝рд╛рдЗрд▓ "
CustomErrors.inc ":
#define asdErrorName2 "<asd>-2"
#define asdErrorName1 "<asd>-1"
рдЕрдм рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдФрд░ / рдпрд╛ рдЫреЛрдЯреЗ рддреНрд░реБрдЯрд┐ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
Include CustomErrors
Class demo.test [ Abstract ]
{
ClassMethod test( A As %Integer ) As %Status
{
if A=1 Quit $$$ERROR ( $$$asdErrorName1 )
if A=2 Quit $$$ERROR ( $$$asdErrorName2 , "f" , "6" )
Quit $$$OK
}
}
рдкрд░рд┐рдгрд╛рдо:
USER>d $system.OBJ.DisplayError(##class(demo.test).test(1)) <asd>-1: 1 USER>d $system.OBJ.DisplayError(##class(demo.test).test(2)) <asd>-2: 2 f 6 USER>w $system.Status.GetErrorText(##class(demo.test).test(1),"en") ERROR <asd>-1: bla-bla-bla 1 USER>w $system.Status.GetErrorText(##class(demo.test).test(2),"en") ERROR <asd>-2: bla-bla-bla 2 f 6
рдиреЛрдЯ: рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдереЗред