рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ Node.js + Express рдкрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ (рд╡рд┐рджреЗрд╢реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╣реБрдд рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЧреИрд░-рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖реА рджреЗрд╢реЛрдВ рдореЗрдВ рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рд╡рд╛рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ)ред рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рдЬрд┐рд╕ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рд╡рд╣ рдмрд╣реБрдд рдордЬрдмреВрддреА рд╕реЗ рдиреЛрдб рд╕реЗ рдЬреБрдбрд╝реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ рдпрд╛ рджреБрдирд┐рдпрд╛ рднрд░ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЬрд╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдЬреЛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкреВрд░реНрдг рд╕рдорд╛рдирддрд╛ред рд╡рд╣реА рд╕рд╛рдордЧреНрд░реА рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
- рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЙрдк-рдбреЛрдореЗрди рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
- рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВред рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдорд╢реАрди рдЕрдиреБрд╡рд╛рдж рд╡рдХреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рдЕрдкрдардиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдареЛрдХрд░ рдЦрд╛рдиреЗ рд╕реЗ рдмреБрд░рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдЖрдИрдкреА рдпрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рднрд╛рд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИред рдПрдХ рд╣реА URL рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕рд╛рдЗрдЯ рдХреЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрдИ рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд╕рдорд╛рди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП - рдЕрдЧрд░ рдореИрдВ foo.com рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдореБрдЭреЗ es.foo.com рдкрд░ рднреЗрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╕реНрдкреЗрди рд╕реЗ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореЗрд░реА рдореВрд▓ рднрд╛рд╖рд╛ рдореЗрдВ (рд╕рдВрднрд╡рддрдГ) рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рддрд░рд╣ рдХреБрдЫ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:
- domain.com - рдореБрдЦреНрдп (рдЕрдВрдЧреНрд░реЗрдЬреА) рд╕рдВрд╕реНрдХрд░рдг;
- ja.domain.com - рдЬрд╛рдкрд╛рдиреА рд╕рдВрд╕реНрдХрд░рдг;
- XX.domain.com - рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБред
рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдФрд░ рдЙрдк-рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдХреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдмрд╕ рдПрдХ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдЙрдк-рдбреЛрдореЗрди рдЬреЛрдбрд╝рдХрд░:
- domain.com/search?q=mountain
- ja.domain.com/search?q=mountain
рджреЛрдиреЛрдВ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдорд╛рди рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рджреВрд╕рд░рд╛ рдЬрд╛рдкрд╛рдиреА рдореЗрдВ рд╣реЛрдЧрд╛ред
рдкреЗрдЬ рд╣реЗрдбрд░ рдореЗрдВ, рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрд╕реА рдкреЗрдЬ рдХрд╛ рд▓рд┐рдВрдХ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ:
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк Google рдЦреЛрдЬ рдЗрдВрдЬрди рдХреЛ рдореЗрд░реА рд╕рд╛рдЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
rel = "рд╡реИрдХрд▓реНрдкрд┐рдХ" hreflang = "x" рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдореИрдВ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдкреГрд╖реНрда рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ Google рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдПрдЧрд╛ред
<link rel="alternate" hreflang="ja" href="http://ja.domain.com/" />
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреА рд╕рд╛рдордЧреНрд░реА рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд╡рд╛рдж рдпрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдЗрдЯ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдВрдХ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдирдХреА рдореВрд▓ рднрд╛рд╖рд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реИ (рдФрд░ рдпрд╣рд╛рдВ рднрд╛рд╖рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ):
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рдХреЗ
рд╕реНрд╡реАрдХреГрдд рднрд╛рд╖рд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреЗрдЦрдирд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХрд╛ рдкреГрд╖реНрда рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд╣реЛ рдФрд░ рдХрднреА рдХреИрд╢ рди рд╣реЛред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╢ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдХрдИ Node / Express рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рдордиреЗ Nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдиреЛрдб рдкрд░ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдм рдХреБрдЫ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рднрд╛рд╖рд╛ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рд╕реВрдЪрдирд╛рдПрдВ рднреА рд╢рд╛рдорд┐рд▓ рдереАрдВред
рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рдЧреНрд░рд╛рд╣рдХ рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдмрд╛рдзрд╛ рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИ: DOM / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд╖рд╛ рдХрд╛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Nginx
AcceptedLanguage рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдХреА рд╕реЗрдЯ рдХреА рдФрд░ рдЗрд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рджрд┐рдпрд╛ред рдпрд╣рд╛рдБ Nginx рд╡рд┐рдиреНрдпрд╛рд╕ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
set_from_accept_language $lang en ja; add_header Set-Cookie lang=$lang;
рдЕрдм рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рдмрдЪрд╛ рдерд╛ рд╡рд╣ рдХреБрдХреА рдХреЛ рдкрдврд╝рдирд╛ рдерд╛ рдФрд░ рдЕрдЧрд░ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд╖рд╛ рдкреГрд╖реНрда рдХреА рднрд╛рд╖рд╛ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рдереА рддреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдерд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, Nginx рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдХреИрд╢ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдкреГрд╖реНрда рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд╛ рддрд░реНрдХ
рдореИрдВрдиреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛
Node.js рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрд╛ред рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- рд╕рднреА рдЕрдиреБрд╡рд╛рдж JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ;
- рдпреЗ рдлрд╛рдЗрд▓реЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдордп рдордХреНрдЦреА рдкрд░ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ;
- рдЕрдиреБрд╡рд╛рдж
__("Some string")
рдХреЛ рдмреБрд▓рд╛рдХрд░ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХреГрдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЕрдиреБрд╡рд╛рдж рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ "Some string"
рдХреЛ рдЕрдиреБрд╡рд╛рдж рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рд╕реЗрдЯ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рддрд░реНрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ
i18n-рдиреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдорд┐рд▓рд╛, рдЬреЛ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдПрдХ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рднрд╛рд╖рд╛ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖рдХрд░ Node.js. рдХреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ
рдпрджрд┐ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдЕрдиреБрд░реЛрдз рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдПрдХ рдЧрд▓рдд рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
рдХрдо рд╕реЗ рдХрдо, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИ (рдпрд╣ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИ)ред
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ
i18n
рд╕рдВрдкрддреНрддрд┐ рдХреЛ
request
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:
app.use(function(req, res, next) { req.i18n = new i18n(); next(); });
рдХрд╛рдо рдХрд╛ рд╕рдВрдЧрдарди
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд╛ рддрд░реНрдХ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ:
- рдЕрдиреБрд╡рд╛рдж рдлрд╛рдЗрд▓реЗрдВ рд╣рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВ;
- рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдФрд░ рдбрд┐рдмрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЙрддреНрдкрд╛рджрди рдореЗрдВ:
- рд╕рднреА рдЕрдиреБрд╡рд╛рдж рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдЪрд┐рдд рд╣реИрдВ;
- рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрднреА рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ;
- рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рджреЛ рдкреНрд░рдореБрдЦ рдЕрдВрддрд░ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЕрджреНрдпрддрди рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рднреА рд▓рд╛рдЗрди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдЙрддреНрдкрд╛рджрди рдореЗрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рд┐рдП - рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдмреЗрд╡рдХреВрдлреА рд╣реИред
рдХреЛрдб рд╕рдВрдЧрдарди
рд▓рд╛рдЗрдиреЗрдВ рдЬрд┐рдирдХреА рдЕрдиреБрд╡рд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡реЗ рдХрд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ (рднрдЧрд╡рд╛рди рди рдХрд░реЗ!) рд╢реИрд▓рд┐рдпрд╛рдБред
рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдореИрдВрдиреЗ рддреБрд░рдВрдд рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдХреЛрдИ рдкрд╛рда рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рдереАрдВред рдпрджрд┐ рдореБрдЭреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рдкрд╛рда рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ
рдЕрдкрдиреЗ рдорд╛рдЗрдХреНрд░реЛ-рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдХрд░реВрдВрдЧрд╛ ред
рдореИрдВ рд╕реАрдПрд╕рдПрд╕ рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдирддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реАрдбреАрдПрди рдкрд░ рд░рдЦрдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдХрдИ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рдЬрдм рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдпреЛрдЧреНрдп рддрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдПрдХреНрд╕рдкреНрд░реЗрд╕ рджреГрд╢реНрдп рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдореИрдВ рдЕрдиреБрд░реЛрдз рд╕реЗ рдЬреБрдбрд╝реА
i18n
рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
module.exports = { index: function(req, res) { req.render("index", { title: req.i18n.__("My Site Title"), desc: req.i18n.__("My Site Description") }); } };
рдореИрдВ
рд╕реНрд╡рд┐рдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдиреБрд╡рд╛рдж рддрдХрдиреАрдХ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реЛрдЧреА:
{% extends "page.swig" %} {% block content %} <h1>{{ __("Welcome to:") }} {{ title }}</h1> <p>{{ desc }}</p> {% endblock %}
__(...)
рдХреЙрд▓ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж
рдЕрдм рддрдХ, рдореИрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд╡рдпрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрд╡реЗрджрди рдЕрднреА рднреА рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рджрд░реНрдЬрди рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред
рдореИрдВ рдХреБрдЫ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдкреЗрд╢реЗрд╡рд░ рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рдмрд┐рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рддреИрдпрд╛рд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░ рдЕрдиреБрд╡рд╛рдж рд╡рд╛рд▓реЗ рдХрдИ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Drupal рдврд╛рдВрдЪреЗ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрдИ рдРрд╕реЗ рдЕрдиреБрд╡рд╛рдж рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред рдореБрдЭреЗ рд╡рд╣рд╛рдБ рдХреБрдЫ рддреИрдпрд╛рд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдорд┐рд▓реЗред
- рдЗрд╕реА рддрд░рд╣ рдХреА рдмрд╣реБрднрд╛рд╖реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдпрджрд┐ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдЧреБрдгрд╡рддреНрддрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдЖрдкрдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдорд╛рди рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╣рд╛рдВ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдЦреЛрдЬ рдЗрдВрдЬрди рд╣реИ, рдЗрд╕рд▓рд┐рдП Google рдкреГрд╖реНрдареЛрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд▓рд╛рдЗрдиреЗрдВ рдореЗрд░рд╛ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВред
- Google рдЕрдиреБрд╡рд╛рдж рд╣рд╛рдВ, рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рдХреНрдпрд╛ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ Google рдЕрдиреБрд╡рд╛рдж рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рдкреНрд░рдЧрддрд┐ рд╕реЗ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢рдмреНрджреЛрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реБрдПред рдЕрдм рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЬреЛ рдЙрдирдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдХреЗ рдмрдврд╝рдиреЗ рдкрд░ рд╕рдВрднрд╡рддрдГ рдмрд╣реБрдд рдХреБрдЫ рдмрджрд▓рдирд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд░реНрдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ рд╣реИрдВ, рдореБрдЦреНрдпрддрдГ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ Google рдиреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░рд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред