DBMS Cach├й рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛ рд╣реИ, рдЬреЛ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
write "Hello, World!"

рдЖрд╡реЗрджрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред
рд▓реЗрдХрд┐рди рд╕рдордп рдмреАрдд рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдм, рдЖрдкрдХреЛ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИред
рдХрдЯ рдХреЗ рддрд╣рдд рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрдЪ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИред


рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛


Cach├й DBMS рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, JavaScipt рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рддрд╛рд░, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рдЖрджрд┐ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдиреЛрдЯ: рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХрдИ рд╡рд░реНрдЧреЛрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ, рд╡реЗрдм рдкреЗрдЬреЛрдВ, рдЬреЗрдПрд╕ рд▓рд┐рдкрд┐рдпреЛрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред
рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рддрдВрддреНрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
  1. рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ, рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ "рдлрд┐рд╢ рдЖрдЙрдЯ" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рд╕реНрд╡рдпрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдореЗрдВ рд╣реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ, рд╕рддреНрд░ рдХреА рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдЯреЛрд░ рд╕реЗ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓реНрдп рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкреВрд░реНрдг рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред
рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреЛрд░ (рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛), рд╕рд╛рде рд╣реА рдЗрд╕ рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рднрд╛рд╖рд╛ рдмрджрд▓рдирд╛, рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд / рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЖрджрд┐ред рдШред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
  1. рдкрдардиреАрдп - рдЕрддрд┐рд░рд┐рдХреНрдд - рд╕реНрд░реЛрдд рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЕрдкреНрд░рдпреБрдХреНрдд;
  2. рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рд╕реНрд╡рдд: рдкреВрд░реНрдг рднрдВрдбрд╛рд░рдг
    рдиреЛрдЯ: рдЬрдм рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреЛрдб рд╕реЗ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕реЗ рдкреНрд░реЗрдд рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдирд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
  3. рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдХреЛ "рдордХреНрдЦреА рдкрд░" рдмрджрд▓реЗрдВред рдпрд╣ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рджреЛрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ;
  4. рдХрд┐рд╕реА рджреА рдЧрдИ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдбреЛрдореЗрди рд╕реЗ (рдбреЛрдореЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдо);
  5. 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,!
}


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
  1. рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╢реБрд░реВ рдореЗрдВ рдЙрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдореЗрдВ (рдкреНрд░рдмрдВрдзрди рдкреЛрд░реНрдЯрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ) Cach├й DBMS рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИ;
    рдиреЛрдЯ: рдЬрдм рдЙрдирдХреЗ рд╣реИрд╢ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
  2. рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛ рдЕрдкрдиреЗ CRC32 рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ - CRC32 рдпрд╛ рд▓рд╛рдЗрди рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░, рдбреЛрдореЗрди, рдХрд░рдВрдЯ рд╕рд┐рд╕реНрдЯрдо рд▓реИрдВрдЧреНрд╡реЗрдЬ - рдХреЛ CacheMsg рдЧреНрд▓реЛрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  3. рд▓рд╛рдЗрди рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдХреЛрдб рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдЬреА рд╡реИрд╢реНрд╡рд┐рдХ ^ рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ ^ ||% рднрд╛рд╖рд╛ ?
  4. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдРрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ), рддреЛ рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА;
  5. рдбреЛрдореЗрди рддрдВрддреНрд░ рдЖрдкрдХреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрд╡рд╛рдж рдЖрджрд┐ред

рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдореМрдЬреВрджрд╛ $ $ $ рдЯреЗрдХреНрд╕реНрдЯ рдореИрдХреНрд░реЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ ..., рддреЛ рдЖрдк рдЕрдкрдирд╛ рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ ## рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдФрд░ / рдпрд╛ ## рдлрдВрдХреНрд╢рди рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред

рдЪрд▓рд┐рдП рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреЛрд░ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рдХреЛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЕрдиреБрд╡рд╛рдж рдХреЛ рд╡рд╛рдкрд╕ рд▓реЛрдб рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рдеред
рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо % рдореЗрдердбрдмреЗрд░ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рдЖрдпрд╛рдд (), рдЖрдпрд╛рддрдбрд╛рдпрд░ (), рдирд┐рд░реНрдпрд╛рдд (), 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 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЙрджрд╛рд╣рд░рдг


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

/// 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
}

}


рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
  1. рдЧреНрд░рд╛рд╣рдХ рдХреА рдУрд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░рдиреЗ рдХреЗ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
    • $$$ рдкрд╛рда рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬрд┐рд╕реЗ " zenutils.js " рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
    • рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб zenText () рд╡рд┐рдзрд┐ рдФрд░ % OnGetJSResources () рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрджреНрдзрддрд┐ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

    рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ: рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг
  2. ZEN рдШрдЯрдХ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЗрдбрд░, рд╕рдВрдХреЗрдд, рдЖрджрд┐ред
    рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдЙрдиреНрдореБрдЦ рдШрдЯрдХ рдмрдирд╛рдПрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, jQuery рдпрд╛ extJS рдкрд░ рдпрд╛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЖрдзрд╛рд░рд┐рдд - рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
    рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ % ZEN.Datatype.caption : рдЬрд╝реЗрди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг
  3. рднрд╛рд╖рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк % рд╕рддреНрд░ рдФрд░ / рдпрд╛ % рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреА рднрд╛рд╖рд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЬрд╝реЗрди рд╡рд┐рд╢реЗрд╖ рдЪрд░

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕рддреНрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

рдЫрд╡рд┐
рд╡реГрджреНрдзрд┐

рдЕрдкрдиреА рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдирд╛


рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдХрд░рдг рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рдлрд┐рд░ рднреА, рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рддреНрд░реБрдЯрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ " 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" )

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдмрдирд╛рдП рдЧрдП рдереЗ:

"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 
рдиреЛрдЯ: рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдереЗред

Source: https://habr.com/ru/post/In144312/


All Articles