Youtube рдФрд░ Instagram рдХреА рддрд░рд╣: рдкрд╛рдпрдерди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

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



рдкрд░рд┐рдЪрдп


рдпрд╣ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (i18n) рдЕрдЬрдЧрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЧрд╛рдЗрдб рд╣реИред рдпрд╣ рдЧрд╛рдЗрдб рдЕрдЬрдЧрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдПрдХ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдореЗрдВ 10-15 рдорд┐рдирдЯ рд▓рдЧреЗрдВрдЧреЗред

рд╣рдо рдЕрдЬрдЧрд░ рднрд╛рд╖рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреНрдпрд╛ рд╣реИ:

рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (I18N) рд╡рд┐рднрд┐рдиреНрди рджреЗрд╢реЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рдПрдХ рд╡реНрдпрд╛рдкрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рд╣реИ:

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг (L10N) рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рджрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдФрд░ рдЕрдиреБрд╡рд╛рдж рдкрд╛рда рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрдиреБрд╡рд╛рдж:

  • рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдкреНрд░рд╛рд░реВрдк;
  • рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рд░реВрдк;
  • рд╕рдордп рдХреНрд╖реЗрддреНрд░
  • рдПрдХ рдХреИрд▓реЗрдВрдбрд░
  • рдореБрджреНрд░рд╛ рдЕрднреНрдпрд╛рд╡реЗрджрди;
  • рдХрд░ / рд╡реИрдЯ;
  • рддрд╛рдкрдорд╛рди рдФрд░ рдЕрдиреНрдп рдЙрдкрд╛рдп;
  • рдЬрд╝рд┐рдк рдХреЛрдб, рдЯреЗрд▓реАрдлреЛрди;
  • рдкрддрд╛ рд╕реНрд╡рд░реВрдкрдг;
  • рдмрдВрджреЛрдмрд╕реНрдд рдХрд╛ рдХреЛрдбред



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



рдПрдХ рдЖрд╡реЗрджрди рдЕрдиреБрд╡рд╛рдж рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЙрджрд╛рд╣рд░рдг

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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рддрдВрддреНрд░ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░


рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ:

  1. рдЕрдЬрдЧрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реАрдзреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рджред
  2. рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рджред
  3. рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рджред

1. рдЕрдЬрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж


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

рдЕрдиреБрд╡рд╛рдж рдХреА рддреИрдпрд╛рд░реА


рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмреИрдмреЗрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд╕рд╛рде рджрд┐рдирд╛рдВрдХ, рдореБрджреНрд░рд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдо рддреМрд░ рдкрд░ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЕрдЬрдЧрд░-рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ (рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ)ред

рдкрд╛рдпрдерди рдмрд╣реБрднрд╛рд╖рд╛рд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯред GNU рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдмрд╣реБрднрд╛рд╖реА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рдЦрд╛ рд╣реБрдЖ, рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ рдЬреЛ рдЧрд┐рдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЕрдиреБрд╡рд╛рдж рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрдирдкреБрдЯ рддрдХ рдкрд╣реБрдВрдЪрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рднреА рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди _ ('some_text') рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

import gettext import os localedir = os.path.join(os.path.abspath('/path/to/locales'), 'locales') translate = gettext.translation('domain_name', localedir, ['ru']) _ = translate.gettext print(_('some_text')) print(_('some_text_2')) 

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

рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, Translate.gettext рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдиреАрдЪреЗ _ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╛рдпрдерди рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИред

_ () тАЛтАЛрдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд╡рд╛рдж рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЙрдбреНрдпреВрд▓ xgettext рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рд░реНрдХрд░ _ () рдХреЛ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдкреЙрдЯ-рдлрд╛рдЗрд▓) рдмрдирд╛рддрд╛ рд╣реИред рдкреЙрдЯ-рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕реНрдерд╛рдкрд┐рдд рдмрд╛рдмреЗрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдмреИрдмреЗрд▓ рд╕реЗрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╛ рддреЛ рдорд╛рдирдХ рдЕрдЬрдЧрд░ рдбрд┐рд╕реНрдЯрд┐рд▓реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕реЗрдЯрдкреНрдЯреВрд▓рд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ, рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрдЯрдЕрдк-рдереНрд░реЙрдо рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 from babel.messages import frontend as babel from distutils.core import setup setup(name='foo', version='1.0', cmdclass = {'extract_messages': babel.extract_messages, 'init_catalog': babel.init_catalog, 'update_catalog': babel.update_catalog, 'compile_catalog': babel.compile_catalog,} ) 

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

extract_messages

рдпрд╣ рдХрдорд╛рдВрдб GNU xgettext рдЯреВрд▓ рдкрд░ рдПрдХ рд░реИрдкрд░ рд╣реИ, рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ _ () рдЕрдиреБрд╡рд╛рдж рдпреЛрдЧреНрдп рдЯреИрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде setup.cfg рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

 [extract_messages] input_dirs = foobar output_file = foobar/locales/messages.pot 


  • input_dirs - рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рд╕реЗ _ () рдХреЛрдб рдореЗрдВ рд╕рднреА рд▓реЗрдмрд▓ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЪреБрдиреЗ рдЬрд╛рдПрдВрдЧреЗред
  • output_file - .pot рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде

рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 $ python setup.py extract_messages 


 running extract_messages extracting messages from foobar/__init__.py extracting messages from foobar/core.py ... writing PO template file to foobar/locales/messages.pot 

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

 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2018-01-28 16:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" #: src/main.py:5 msgid "some_text" msgstr "" #: src/main.py:6 msgid "some_text_2" msgstr "" 

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

init_catalog

рдпрд╣ рдХрдорд╛рдВрдб GNU msginit рдЯреВрд▓ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬреЛ рдкреЙрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдИ рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИред

 $ python setup.py init_catalog -l en -i foobar/locales/messages.pot \ -o foobar/locales/en/LC_MESSAGES/base.po 

 running init_catalog creating catalog 'foobar/locales/en/LC_MESSAGES/messages.po' based on 'foobar/locales/messages.pot' 

рдорд╣рддреНрд╡рдкреВрд░реНрдг! рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ, рд╕рдореНрдореЗрд▓рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ:

рд╕реНрдерд╛рдиреЛрдВ // LC_MESSAGES / .po

- рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЕрдВрдЧреНрд░реЗрдЬреА (рдПрди) рд╣реИред рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдЕрдореЗрд░рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рдЕрдиреБрд╡рд╛рдж en_US рд╣реИ;

- рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдбреЛрдореЗрдиред рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдмрдврд╝рддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдбреЛрдореЗрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдзрд┐рднрд╛рд░ рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

update_catalog

рдпрд╣ рдХрдорд╛рдВрдб GNU msgmerge рдЯреВрд▓ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬреЛ * .po рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдирдП рдЕрдиреБрд╡рд╛рдж рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рд╣рдо рдмрд╕ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

 $ python setup.py update_catalog -l en -i foobar/locales/messages.pot \ -o foobar/locales/en/LC_MESSAGES/base.po 

 running update_catalog updating catalog 'foobar/locales/en/LC_MESSAGES/base.po' based on 'foobar/locales/messages.pot' 

рдПрди рдХреЗ рдмрдЬрд╛рдп рдЖрд░рдпреВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╣рдо рд░реВрд╕реА рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

compile_catalog

рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб GNU msgfmt рдЯреВрд▓ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдпрд╣ * .po рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдпреЛрдЧреНрдп рд╕рдВрджреЗрд╢ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрд╛рдЗрдирд░реА * .mo рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

 $ python setup.py compile_catalog --directory foobar/locales --domain base 

 running compile_catalog compiling catalog to foobar/locales/en/LC_MESSAGES/base.mo 

--directory - рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрде,
--domain - рдЕрдиреБрд╡рд╛рдж рдбреЛрдореЗрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ, рд╣рдо рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЬрдЧрд░ рд▓рд┐рдкрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рдЕрдиреБрдХреВрд▓рд┐рдд * .mo рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде, рддрд╛рдХрд┐ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреЛрдПрдбрд┐рдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╕рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИред



рдХрд╡рд┐рддрд╛ - рдЕрдиреБрд╡рд╛рдж рдЖрд╡реЗрджрди

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп, рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ .mo рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

рдирддреАрдЬрддрди, рдЕрдиреБрд╡рд╛рдж рдХреИрдЯрд▓реЙрдЧ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

 locales тФЬтФАтФА en тФВ тФФтФАтФА LC_MESSAGES тФВ тФЬтФАтФА base.mo тФВ тФФтФАтФА base.po тФЬтФАтФА ru тФВ тФФтФАтФА LC_MESSAGES тФВ тФЬтФАтФА base.mo тФВ тФФтФАтФА base.po тФФтФАтФА messages.pot 


рдЕрдиреБрд╡рд╛рдж рдорд╛рд░реНрдХрд░ рдирд╛рдо рдХрдиреНрд╡реЗрдВрд╢рди

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

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

profile.user_form.component.title: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛
profile.user_form.component.save: рд╕рд╣реЗрдЬреЗрдВ
profile.user_form.field.username: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо
profile.user_form.field.password: рдкрд╛рд╕рд╡рд░реНрдб


рдЖрд╡реЗрджрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рдбреЙрдХрдЯрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ .mo рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 $ python setup.py compile_catalog --domain <> 

рд╣рдо .OGignore рдореЗрдВ * .mo рдФрд░ * .pot рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ:

# рдЕрдиреБрд╡рд╛рдж
* .рдореЛ
* .рдкреЛрдЯ

2. рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж


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

 translations = get_gettext_translations() env = Environment(extensions=['jinja2.ext.i18n']) env.install_gettext_translations(translations) 

рдлрд┐рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 {{ gettext('some_text') }} {{ gettext('Hello %(name)s!')|format(name='World') }} 

3. рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж


рдЖрдЗрдП рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ noSQL рдФрд░ newSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╛рди рд╣реИред

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

1) рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЗрдВ


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



рд╡рд░реНрдгрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:



рдлрд╛рдпрджреЗ:

  • рд╕рд░рд▓ рдФрд░ рдХреБрд╢рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
  • рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд░рд▓ рдкреНрд░рд╢реНрдиред


рдиреБрдХрд╕рд╛рди:
  • рдХреЗрдВрджреНрд░реАрдХрд░рдг рдХрд╛ рдЕрднрд╛рд╡

рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рднрд┐рдиреНрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдХрд┐рддрдиреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИред

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

рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

 SELECT p.product_name, p.price, p.description FROM product p WHERE p.language_code = @language_code; 

2) рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдЯреЗрдмрд▓


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред



рдкреЗрд╢реЗрд╡рд░реЛрдВ:

  • рдЕрдирд╛рд░рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдХреНрд╡реЗрд░реАрдЬрд╝ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрдмрд▓ рд╣реЛрддреЗ рд╣реИрдВред
  • рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред
  • рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд╛рд╖рд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢реЗрд╖ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдиреБрдХрд╕рд╛рди:

  • рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдЕрдиреБрд╡рд╛рдж рддрд╛рд▓рд┐рдХрд╛ рдлреВрд▓рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╕рдордп, рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

 SELECT tp.text, p.price, tc.text, c.contact_name FROM order_line o, product p, customer c, translation tp, translation tc, language l WHERE o.product_id = p.id AND o.customer_id = c.id AND p.name_translation_id = tp.id AND c.name_translation_id = tc.id AND tp.language_id = l.id AND tc.language_id = l.id AND l.name = @language_code AND o.id = ***; 

3) рдЕрдиреБрд╡рд╛рджрд┐рдд рдФрд░ рдЧреИрд░-рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдЗрдпрд╛рдБ рдмрдирд╛рдирд╛


рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ, рдЗрдХрд╛рдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЕрдиреБрд╡рд╛рджрд┐рдд рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкреНрд░рддрд┐рд╖реНрдард┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред



рдкреЗрд╢реЗрд╡рд░реЛрдВ:

  • рдРрд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд╛рдж рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рдирдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдЗрд╕рд▓рд┐рдП, рдРрд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрдЧрд╛,
  • ORM рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ,
  • рдЕрдиреБрд╡рд╛рджрд┐рдд рдкрд╛рда рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ SQL рдХреНрд╡реЗрд░реА,
  • рд╕рднреА рдЙрдкрд▓рдмреНрдз рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдиреБрдХрд╕рд╛рди:

  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдЬрдЯрд┐рд▓рддрд╛ред

рдпрд╣рд╛рдБ рдПрдХ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдкрд╛рда рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛:

 SELECT pt.product_name, pt.description, p.price FROM order_line o, product p, product_translation pt, language l WHERE o.product_id = p.id AND AND p.id = pt.product_non_trans_id AND pt.language_id = l.id AND l.name = @language_code; 

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


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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХреА:

  • рдХреЛрдб рдореЗрдВ: рд╣рдо рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдПрдХ рд╕реЗрд╡рд╛ рдпрд╛ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде gui рдмрдирд╛;
  • рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ: рдбрд╛рдпрдиреЗрдорд┐рдХ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рдмрд┐рдирд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ;
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд▓реЗрдЦ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

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


All Articles