рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдкрд░ рдЬреЙрди рд░реЗрдЬрд┐рдЧ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ Node.js + Express рдкрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ (рд╡рд┐рджреЗрд╢реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╣реБрдд рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЧреИрд░-рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖реА рджреЗрд╢реЛрдВ рдореЗрдВ рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рд╡рд╛рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ)ред рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рдЬрд┐рд╕ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рд╡рд╣ рдмрд╣реБрдд рдордЬрдмреВрддреА рд╕реЗ рдиреЛрдб рд╕реЗ рдЬреБрдбрд╝реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ рдпрд╛ рджреБрдирд┐рдпрд╛ рднрд░ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЬрд╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдЬреЛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:


рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рддрд░рд╣ рдХреБрдЫ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:


рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдФрд░ рдЙрдк-рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдХреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдмрд╕ рдПрдХ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдЙрдк-рдбреЛрдореЗрди рдЬреЛрдбрд╝рдХрд░:


рджреЛрдиреЛрдВ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдорд╛рди рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рджреВрд╕рд░рд╛ рдЬрд╛рдкрд╛рдиреА рдореЗрдВ рд╣реЛрдЧрд╛ред

рдкреЗрдЬ рд╣реЗрдбрд░ рдореЗрдВ, рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрд╕реА рдкреЗрдЬ рдХрд╛ рд▓рд┐рдВрдХ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ:



рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк 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 рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрд╛ред рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:


рдЪреВрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рд╕реЗрдЯ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рддрд░реНрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ i18n-рдиреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдорд┐рд▓рд╛, рдЬреЛ рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдПрдХ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рднрд╛рд╖рд╛ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖рдХрд░ Node.js. рдХреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ

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



рдХрдо рд╕реЗ рдХрдо, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИ (рдпрд╣ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИ)ред

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ i18n рд╕рдВрдкрддреНрддрд┐ рдХреЛ request рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

 app.use(function(req, res, next) { req.i18n = new i18n(/* options... */); 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 %} 

__(...) рдХреЙрд▓ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж


рдЕрдм рддрдХ, рдореИрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд╡рдпрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрд╡реЗрджрди рдЕрднреА рднреА рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рджрд░реНрдЬрди рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред

рдореИрдВ рдХреБрдЫ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдкреЗрд╢реЗрд╡рд░ рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рдмрд┐рдирд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:




рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдЗрдЯ рдХреЗ рдмрдврд╝рдиреЗ рдкрд░ рд╕рдВрднрд╡рддрдГ рдмрд╣реБрдд рдХреБрдЫ рдмрджрд▓рдирд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд░реНрдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ рд╣реИрдВ, рдореБрдЦреНрдпрддрдГ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ Google рдиреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░рд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

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


All Articles