20 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ, 20 рднрд╛рд╖рд╛рдУрдВ, рдХрд▓ рдХреА рд╕рдордп рд╕реАрдорд╛ред рднрд╛рдЧ реи

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


рдпреЛрдирд┐рдВрдЯрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрдирд╛


рдпрджрд┐ рдЖрдкрдХреЗ рд╣рд╛рде рдореЗрдВ рдЙрдмрдВрдЯреВ рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рд╡реИрдЧреНрд░рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


  1. рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди тАЛтАЛрдХрд░рддреЗ рд╣реБрдП Vagrant рдФрд░ VirtualBox рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
  2. рдпреЛрдирд┐рдЧреНрд░рдВрде рдФрд░ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред
  3. рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди тАЛтАЛрдХрд░рддреЗ рд╣реБрдП рдпреЛрдирд┐рдВрдЯрд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ ред

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


рдореИрдиреБрдЕрд▓ рд╕реНрдерд╛рдкрдирд╛


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрдорд╛рдг


рдПрдХ рд╕рд░реНрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдмрдирд╛рдПрдБ:


sudo groupadd serge 

рдШрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / usr / рд╕реНрдерд╛рдиреАрдп / рд╕рд░реНрдЬ рдХреЗ рд╕рд╛рде рд╕рд░реНрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ:


 sudo useradd -g serge serge -m -d /usr/local/serge 

рд╕рд░реНрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдкреВрд░реНрдг рд╕рд░реНрдЬ рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдБ рд╣реИ ред
рд╕реНрдерд╛рдиреАрдп рдкреИрдХреЗрдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:


 sudo apt-get -qq update 

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЙрдкрдХрд░рдг, рд╕рд╛рде рд╣реА рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рд╕реНрдерд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░реНрд▓ 5.10 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред


 sudo apt-get -qq -y install build-essential libssl-dev libexpat-dev unzip wget 

рд╕рд░реНрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред


 cd /usr/local/serge sudo -u serge wget https://github.com/evernote/serge/archive/master.zip -O serge-master.zip sudo -u serge unzip serge-master.zip sudo -u serge unlink serge-master.zip cd serge-master sudo cpan App::cpanminus sudo cpanm --installdeps . sudo -u serge sudo ln -s /usr/local/serge/serge-master/bin/serge /usr/local/bin/serge 

рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


 sudo cpanm HTTP::Daemon@6.01 sudo cpanm Serge::Sync::Plugin::TranslationService::Smartcat sudo cpan install LWP::Protocol::https 

рдкреНрд░рдореБрдЦ рдирд┐рд░реНрдорд╛рдг


Sit рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░реНрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ рдЬреЛ рд╕рд░реНрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ GitLab рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛:


 sudo -u serge ssh-keygen -t rsa -N "" -f .id_rsa_serge 

GitLab рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг


GitLab рдореЗрдВ рдПрдХ рд╕рд░реНрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕рднреА рдбреЗрд╡рд▓рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
GitLab рдореЗрдВ рд╕рд░реНрдЬ рдпреВрдЬрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП id_rsa_serge.pub рдлрд╛рдЗрд▓ рд╕реЗ ssh рдХреА рдХреЙрдкреА рдХрд░реЗрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╕рд░реНрдЬ рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВ рдФрд░ рднреЗрдЬ рд╕рдХреЗрдВред


рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реНрдг рд╣реИ!


рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:


  1. рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЕрдк рдХрд░реЗрдВред
  2. рдЙрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рднрд╛рд╖рд╛ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  3. Project_id , token рдФрд░ token_id рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  4. Support@smartcat.ai рдкрд░ рд▓рд┐рдЦреЗрдВ рдФрд░ рд╕рд░реНрдЬ рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ

рд╕рд░реНрдЬ-рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рд╕реЗрдЯрдЕрдк рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдорд╛рдирдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЪрдХреНрд░ рдореЗрдВ 5 рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдЫрд╡рд┐


  • рдкреБрд▓ - рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕реЗ рдирдИ рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  • рдкреБрд▓-рдЯреАрдПрд╕ - рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ (рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдкреНрд▓рдЧрдЗрди рд╕рдХреНрд╖рдо рд╣реИ) рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  • рд╕реНрдерд╛рдиреАрдпрдХрд░рдг - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд╛рд░реНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд╛рд░реНрд╕ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдЯрд╛рдкреВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рд░реНрдЬ рдЕрдиреБрд╡рд╛рдж рдореЗрдореЛрд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • push-ts - рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдирдИ рд▓рд╛рдЗрдиреЗрдВ Smartcat (Smartcat plugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред
  • рдзрдХреНрдХрд╛ - рд╕реНрдерд╛рдиреАрдпрдХрд░рдг GitLab рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВред
    рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп CAT рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Pootle рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИред

рд╕рд░реНрдЬ рдФрд░ рдЧрд┐рдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА


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


рдЫрд╡рд┐


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


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


рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд


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


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


рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдХрд░рдирд╛


рд╣рдорд╛рд░реА рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


рдЫрд╡рд┐


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рдиред рдЬрдм рдХрд╛рд░реНрдп рд╕реВрддреНрд░реАрдХрд░рдг рдЪрд░рдг рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХрднреА-рдХрднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рда рд╡рд╣рд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡реЗ рд╣реИрдВ, рддреЛ рдПрдХ copywriter рдФрд░ рддрдХрдиреАрдХреА рд▓реЗрдЦрдХ рдЙрдиреНрд╣реЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред


рд▓реЗрдЖрдЙрдЯ рдХрд╛ рд╡рд┐рдХрд╛рд╕ред рдЬрдм рдбрд┐рдЬрд╛рдЗрдирд░ рдиреЗ рд▓реЗрдЖрдЙрдЯ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рддреЛ рддрдХрдиреАрдХреА рд▓реЗрдЦрдХ рдФрд░ рдХреЙрдкреАрд░рд╛рдЗрдЯрд░ рдиреЗ рд╕рднреА рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкрдврд╝рд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдХрдЯреМрддреА рдХрд┐рдП рдЧрдП рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рдмрд╕ рд▓реЗрдЖрдЙрдЯ рд╕реЗ рддреИрдпрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИред


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


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


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


рдЯреНрдпреВрдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдФрд░ рд╡рд░реНрдгрди рдЗрд╕ рддрдереНрдп рдкрд░ рдмрд╣реБрдд рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯреАрдо рдореЗрдВ рд╕рдорд╛рди рд╡реНрдпрд╡рд╕реНрдерд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВред


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк


рд▓реЙрдЧ рдЗрди рд╕рд░реНрдЬ:


 sudo -Hu serge -i 

рд╕рдореВрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ:


 mkdir groups 

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


рдкрд╣рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:


 cd groups mkdir myproject cd myproject 

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


 exit sudo apt install mc sudo -Hu serge -i 

/ Usr / рд╕реНрдерд╛рдиреАрдп / рд╕рд░реНрдЬ-рдорд╛рд╕реНрдЯрд░ / рдмрд┐рди / рдЙрдкрдХрд░рдг / рд╕реБрд╡рд┐рдзрд╛-рд╢рд╛рдЦрд╛-рд╡рд┐рдиреНрдпрд╛рд╕-рдЬрдирд░реЗрдЯрд░ рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ:


  • рд╕рд░реНрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓: myproject.cfg
  • рдиреМрдХрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓: myproject.inc
  • .serge рдЯреЗрдореНрдкреНрд▓реЗрдЯ: myproject.serge.tmpl
  • рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓: myproject_branches.txt
  • GitLab рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ: fbcgen.pl

 cp /usr/local/serge/serge-master/bin/tools/feature-branch-config-generator/{myproject.cfg,myproject.inc,myproject.serge.tmpl,myproject_branches.txt} /usr/local/serge/serge-master/groups/myproject cp /usr/local/serge/serge-master/bin/tools/feature-branch-config-generator/fbcgen.pl /usr/local/serge/serge-master/ 

рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:


 mkdir log cd log touch smartcat.log 

Myproject.inc рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


  • рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
  • рдЖрдИрдбреА рдХреЛ рдорд╛рд╕реНрдХ% yourproject%ред% Yourformat%ред% Yourmasterbranchname% рдХреЗ рд╕рд╛рде рднрд░реЗрдВред
  • рдЧрдВрддрд╡реНрдп_ рднрд╛рд╖рд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдЙрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд┐рдирдореЗрдВ рдЖрдк рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  • рд╕реНрд░реЛрдд рдХреЛ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рднрд░реЗрдВ ред/%yourproject%/%yourmasterbranch%/res/enред
  • рдЖрдЙрдЯрдкреБрдЯ_рдлрд╛рдЗрд▓_рдкреИрде рдХреЛ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рднрд░реЗрдВ ред/yyourproject%/%yourmasterbranch%/res/% LANG% /% FILE%ред
  • Source_match рдХреЛ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рднрд░реЗрдВред% Yourformat%ред
  • рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдкреНрд▓рдЧ рд╕рд░реНрдЬ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред Ts_file_path рдХреЛ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рднрд░реЗрдВ ред/po/%yourproject%/% LOCALE% /% FILE% .poред
  • рдорд╛рд╕реНтАНрдЯрд░_рдЬреЙрдм рдХреЛ рдорд╛рд╕реНтАНрдХ% yourproject%ред% Yourformat%ред% Yourmasterbranch% рд╕реЗ рднрд░реЗрдВред
    рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Myproject.serge.tmpl рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


  • Project_id - Smartcat рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдИрдбреА
  • token_id, token - рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рд╕реЗ рдбреЗрдЯрд╛
  • remotepath - рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдЙрд╕рдХреЗ рдорд╛рди {% yourmasterbranch %% ssh_path_to_your_repo% #% yourmasterbranch%} рджреЛрдиреЛрдВ рдХрд╛ рд╕рд╣реА-рд╕рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  • $ FBCGEN_DIR_PADDED -% ssh_path_to_your_repo% # FBCGEN_BRANCH
  • рдЖрдИрдбреА - job.yourmasterbranch
  • рдирд╛рдо - yourproject
  • source_language - en
  • рдЧрдВрддрд╡реНрдп_ рднрд╛рд╖рд╛рдПрдВ - рдРрд╕реА рднрд╛рд╖рд╛рдПрдВ рдЬрд┐рдирдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛
  • source_dir --/branches/yourmasterbranch/%path_to_resource_file%
  • source_match - enред% yourformat%
  • db_source - DBI: SQLite: dbname -./% yourproject% .db3
  • db_namespace -% yourproject%
  • ts_file_path --/po/PROJECT_ID_IN_SMARTCAT/% LANG% /% FILE%ред
  • output_file_path --/branches/%yourmasterbranch%/%path_to_resource_files%/% LOCALE%ред % рдЖрдкрдХрд╛%
  • output_lang_rewrite {
    zh-hans zh-cn '' zh-hant-tw zh-tw
    } - рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдкрдХреЛ рднрд╛рд╖рд╛ рдкрджрдирд╛рдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рднрд╛рд╖рд╛ рдкрджрдирд╛рдо рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрджрдирд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдорд╛рд╕реНрдЯрд░_рдЬреЙрдм - рдиреМрдХрд░реАред% yourmasterbranch%
  • @inherit - # рдиреМрдХрд░рд┐рдпрд╛рдВ /:% yourmasterbranch%
  • source_dir (FBCGEN_BRANCH_JOBS рдореЗрдВ -)
  • output_file_path (FBCGEN_BRANCH_JOBS рдореЗрдВ) - ./ranran//FFBCGEN_DIR/%path_to_resource_files%/% LOCALE%ред % рдЖрдкрдХрд╛%

рдорд╣рддреНрд╡рдкреВрд░реНрдг! Source_path_prefix рдореЗрдВ, рдЕрдВрдд рдмрд┐рдВрджреБ FBCGEN_BRANCH рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


Smartcat рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдЙрдЪрд┐рдд рдЕрдиреБрднрд╛рдЧ myproject.serge.tmpl рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП


 sync { ts { plugin Smartcat data { project_id 12345678-1234-1234-1234-1234567890123 token_id 12345678-1234-1234-1234-1234567890123 token 1_qwertyuiopasdfghjklzxcvbn push { disassemble_algorithm_name Serge.io PO } pull { complete_projects NO complete_documents YES } log_file ./log/smartcat.log } } 

рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг:


  • disassemble_algorithm_name рд╕рд░реНрдЬрд┐рдпреЛред PO - рд╕рд░реНрдЬ рдХреЛ рджреА рдЧрдИ рдкреНрд░рдореБрдЦ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкреБрд▓-рдЯреАрдПрд╕ рдФрд░ рдкреБрд╢-рдЯреАрдПрд╕ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
  • рдкреВрд░рд╛_рдкреНрд░реЛрдЬреЗрдХреНрдЯ NO - рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рдЪреБрдиреЗрдВ рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреВрд░реЗ рд╣реЛ рдЧрдП рд╣реИрдВред рд╣рдорд╛рд░реЗ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдорд╛рд░реНрдЯрдХрд╛рдЯ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рднрдВрдбрд╛рд░ рдХрд╛ рдкрд░реНрдпрд╛рдп рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдЙрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ 2 рд╢рд╛рдЦрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ 6 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 12 рджрд╕реНрддрд╛рд╡реЗрдЬ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред
  • рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рддреЛ complete_documents YES - рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рдЪреБрдиреЗрдВред рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХрдорд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг


рдиреАрдЪреЗ 6 рднрд╛рд╖рд╛рдУрдВ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЗрдПрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрд░реЛрдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред 5-рдХреИрд░реЗрдХреНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдордХрд░рдг рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрде: ./branches/base-translate/client/src/translationsред


myproject.cfg


 # This is a configuration file for fbcgen.pl # Usage: fbcgen.pl myproject.cfg # Root directory where the master branch checkout is located. # (path is relative to the location of the configuration file itself). # The local checkout should be initialized *before* fbcgen.pl is run. # You can run `serge --initialize onboarding-frontend.serge.tmpl` # to do an initial checkout of the project data. $data_dir = './branches/base-translate'; $branch_list_file = 'myproject_branches.txt'; # Where to load Serge config template from. # (path is relative to the location of the configuration file itself). $template_file = "myproject.serge.tmpl"; # Where to save the localized Serge config file. # (path is relative to the location of the configuration file itself). $output_file = "myproject.local.serge"; our $skip_branch_mask = '^(master)$'; # skip these branches unconditionally our $unmerged_branch_mask = '^(translate-)'; # process unmerged branches matching this mask our $any_branch_mask = '^(translate-)'; # additionally, process these branches even if they were merged # Filter out commits that match this mask when determining if branch is inactive. $skip_commit_mask = '^l10n@example.com'; # This sub returns a hash map of additional parameters # that can be referenced in template as `$FBCGEN_<VARIABLE_NAME>`. # For example, `EXTRA_INCLUDE` parameter generated in the function below # is referenced in `myproject.serge.tmpl` file as `$FBCGEN_EXTRA_INCLUDE`. $calculate_params = sub { my ($branch) = @_; return { # for branch names starting with `release/`, return an empty string; # otherwise, return a string that will be used in the `@include` directive EXTRA_INCLUDE => $branch =~ m!^release/! ? '' : "myproject.inc#skip-saving-localized-files\n" } } 

myproject.inc


 # Here we define a job template (common parameters) that will be reused # across all jobs in the generated configuration file. # Certain job parameters (like job ID and paths) will be overridden # in each feature branch job. job-template { name JS file processing ('master' branch) id myproject.js.base-translate # master job id db_namespace myproject destination_languages ru ko de ja zh-Hans source_dir ./myproject/base-translate/res/en output_file_path ./myproject/base-translate/res/%LANG%/%FILE% source_match \.js$ parser { plugin parse_js } ts_file_path ./po/myproject/%LOCALE%/%FILE%.po callback_plugins { :feature_branch { plugin feature_branch data { master_job myproject.js.base-translate # this must match your master job id } } } } # This block will be included conditionally # for all branches except the `release/` ones (see myproject.cfg). # This allows one to skip saving localized files in non-release branches # (but still gather from them strings for translation). skip-saving-localized-files { callback_plugins { :skip-saving-localized-files { plugin process_if phase can_generate_localized_file data { if { lang_matches . then { return NO } } } } } } 

myproject.serge.tmpl


 sync { ts { plugin Smartcat data { project_id %project_id% token_id %token_id% token %token% push { disassemble_algorithm_name Serge.io PO } pull { complete_projects NO complete_documents YES } } } vcs { plugin git data { local_path ./branches add_unversioned YES name L10N Robot email l10n-robot@example.com remote_path { base-translate git@gitlab.loc:common/myproject.git#base-translate /* FBCGEN_BRANCH_REMOTES $FBCGEN_DIR_PADDED git@gitlab.loc:common/myproject.git#$FBCGEN_BRANCH */ } } } } jobs { :develop { id job.base-translate name myproject source_language en destination_languages ru zh-Hans ko de ja optimizations NO source_dir ./branches/base-translate/client/src/translations source_match `en-US.js` debug NO parser { plugin parse_js } leave_untranslated_blank YES db_source DBI:SQLite:dbname=./myproject.db3 db_namespace myproject ts_file_path ./po/1bd80338-a0b5-48b3-822c-e90affd2cdcc/%LANG%/%FILE%.po output_file_path ./branches/base-translate/client/src/translations/%CULTURE%.%EXT% output_bom NO output_lang_rewrite { zh-Hans zh } callback_plugins { :feature_branch { plugin feature_branch data { master_job job.base-translate } } } } /* FBCGEN_BRANCH_JOBS :$FBCGEN_DIR { @inherit .#jobs/:develop id job.$FBCGEN_DIR $FBCGEN_EXTRA_INCLUDE source_path_prefix $FBCGEN_BRANCH. source_dir ./branches/$FBCGEN_DIR/client/src/translations/ output_file_path ./branches/$FBCGEN_DIR/client/src/translations/%CULTURE%.%EXT% } */ } 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ


рднрдВрдбрд╛рд░ рдХрд╛ рдХреНрд▓реЛрди


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" git clone -b base-translate git@gitlab.loc:groups/myproject.git branches/base-translate/ 

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЪрдХреНрд░


.Serge рдлрд╝рд╛рдЗрд▓ рдмрдирддреА рд╣реИ:


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" /usr/local/serge/serge-master/fbcgen.pl myproject.cfg 

рд╕рднреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдирд╛:


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull --initialize myproject.local.serge 

рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рд╕реЗ рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣:


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull-ts myproject.local.serge 

рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ .po рдХрд╛ рдЧрдарди:


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge localize myproject.local.serge 

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕реНрдорд╛рд░реНрдЯрдХреИрдЯ рдкрд░ рдирдпрд╛ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛:


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push-ts myproject.local.serge 

рдЙрдкрдпреБрдХреНрдд рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


 GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push myproject.local.serge 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдВрдЧреЗред
рдЕрдВрддрд┐рдо рд▓реЗрдЦ: 20 рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ, 20 рднрд╛рд╖рд╛рдПрдВ, рдХрд▓ рдХреА рд╕рдордп рд╕реАрдорд╛ред рднрд╛рдЧ 3

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


All Articles