Melanjutkan serangkaian artikel tentang pengaturan pelokalan berkelanjutan. Anda dapat menemukan yang pertama di sini . Pada artikel ini saya akan memberi tahu Anda cara mengintegrasikan bundel Serge-Smartcat-GitLab dan mengkonfigurasi file konfigurasi Serge menggunakan contoh proyek uji. Instruksi untuk Ubuntu.
Instalasi melalui vagrantfile
Jika Anda tidak memiliki server dengan Ubuntu, Anda dapat menggunakan Vagrant. Cara kerjanya:
- Instal Vagrant dan VirtualBox mengikuti instruksi .
- Unduh skrip vagrantfile dan bash.
- Luncurkan vagrantfile mengikuti instruksi .
Hasil build Vagrant akan menjadi mesin virtual Ubuntu tempat Serge diinstal dengan plugin Smartcat. Semua file yang diperlukan akan disalin, kunci ssh dibuat. Anda dapat segera melanjutkan untuk mengatur proyek dan meluncurkan aplikasi.
Instalasi manual
Pembuatan Pengguna
Buat grup pengguna layanan:
sudo groupadd serge
Buat pengguna serge dengan direktori home / usr / local / serge:
sudo useradd -g serge serge -m -d /usr/local/serge
Instal Serge
Dokumentasi lengkap Serge ada di sini .
Perbarui metadata dari database paket lokal:
sudo apt-get -qq update
Instal alat perakitan, serta paket yang diperlukan. Sebelum memulai instalasi, pastikan Perl 5.10 atau lebih tinggi diinstal.
sudo apt-get -qq -y install build-essential libssl-dev libexpat-dev unzip wget
Buka direktori home pengguna serge dan instal Serge dengan semua dependensi yang diperlukan.
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
Menginstal Plugin Smartcat
sudo cpanm HTTP::Daemon@6.01 sudo cpanm Serge::Sync::Plugin::TranslationService::Smartcat sudo cpan install LWP::Protocol::https
Penciptaan Kunci
Buat pengguna serge dengan kunci ssh yang akan digunakan pengguna serge di GitLab:
sudo -u serge ssh-keygen -t rsa -N "" -f .id_rsa_serge
Integrasi dengan GitLab
Buat pengguna serge di GitLab dan tambahkan ke semua repositori pengembang.
Salin kunci ssh dari file id_rsa_serge.pub ke pengaturan profil pengguna serge di GitLab. Ini diperlukan agar Serge dapat menerima dan mengirim string di GitLab.
Instalasi selesai!
Integrasi Smartcat
Untuk memulai, Anda harus:
- Mendaftar untuk Smartcat .
- Buat proyek dengan menunjukkan bahasa yang ingin Anda terjemahkan. Saat mengatur plugin, Anda akan memerlukan kode bahasa yang digunakan oleh Smartcat.
- Dapatkan project_id , token , dan token_id .
- Menulis ke support@smartcat.ai dan meminta untuk mengaktifkan dukungan untuk algoritma parsing file Serge
Mengkonfigurasi Serge-Smartcat
Sebelum melanjutkan ke pengaturan, saya akan menjelaskan prinsip umum operasi. Siklus lokalisasi standar mencakup 5 langkah:

- pull - dapatkan baris baru dari repositori.
- pull-ts - dapatkan string lokal dari Smartcat (plugin Smartcat diaktifkan).
- localize - semua format sumber dari repositori diuraikan dan dikonversi ke file .po, terjemahan yang diterima ditulis ke file .po. Semua baris ditulis ke database memori terjemahan Serge.
- push-ts - baris baru yang diterima pada langkah pertama dikirim ke Smartcat (menggunakan plugin Smartcat).
- string yang dilokalisasikan dilakukan di GitLab.
Anda dapat menggunakan integrasi dengan sistem CAT lain, misalnya, ada plugin untuk Pootle .
Serge dan git gudang
Bagaimana Serge tahu jalur mana yang harus dikirim untuk terjemahan? Untuk menentukan baris baru, alat git standar digunakan: perbedaan antara cabang master dan yang sekarang diambil. Diff dikirim untuk terjemahan.

Penting : Sebagai aturan, cabang master dilindungi, oleh karena itu cabang terjemahan tambahan digunakan untuk mendefinisikan diff, kami menyebutnya basis-terjemahan. Yaitu, setelah rilis dilepaskan pada master, master juga harus dipegang dalam basis-terjemahan.
Ada poin penting di sini. Adalah perlu untuk membangun proses sedemikian rupa sehingga, di satu sisi, pengembang memahami apa dan pada saat apa akan pergi ke terjemahan, dan di sisi lain, sehingga techpec tidak berjalan dalam lingkaran, memegang kepalanya, karena perbedaannya adalah 1000 baris. Dan sepertinya hanya judulnya yang diperbaiki.
Prinsip kerja
Serge memasuki repositori, mengambil semua cabang, dan mulai membandingkannya dengan cabang master. Untuk setiap cabang di mana diff terdeteksi, itu membuat satu set dokumen terjemahan dalam proyek Smartcat. Agar tidak terjebak dalam kekacauan cabang yang tidak relevan dan tidak berdiri di dekat setiap pengembang dengan pertanyaan: "apakah Anda ingat untuk menghapus cabang?", Sangat nyaman untuk menggunakan awalan. Sebagai contoh, Serge hanya bekerja dengan cabang yang memiliki awalan terjemahan .
Juga penting bahwa teks-teks yang sudah dibaca dan disetujui yang siap untuk penerjemahan jatuh ke cabang dengan terjemahan awalan. Lagipula, tidak ada yang mau menguraikan sejarah commit dengan sia-sia mencoba memahami teks macam apa itu dan mengapa berbeda seperti ini?
Persiapan Konten
Proses persiapan konten kami adalah sebagai berikut:

Pernyataan masalah. Ketika tugas berada di tahap formulasi, kadang-kadang teks sudah muncul di sana yang harus masuk ke aplikasi tidak berubah. Jika ya, copywriter dan penulis teknis membantu menyelesaikannya.
Pengembangan tata letak. Ketika perancang menyiapkan tata letak, penulis teknis dan copywriter membacakan semua teks. Dengan demikian, tata letak yang disimpulkan dalam bahasa Inggris termasuk dalam pengembangan. Pengembang tidak harus berpikir tentang teks, ia hanya mengambil garis yang sudah jadi dari tata letak.
Pengembangan. Sayangnya, langkah-langkah sebelumnya tidak dapat mencakup semua jenis teks yang mungkin. Misalnya, tata letak tidak termasuk validator, kesalahan API, beberapa modal windows. Jika selama proses pengembangan itu perlu menambahkan baris, penulis teknis dan copywriter menyediakan semua teks yang diperlukan pengembang.
Dengan demikian, pada suatu titik waktu, kami memiliki keadaan di mana cabang berisi semua teks baru yang diperlukan untuk bagian dari kode yang sedang dikembangkan di dalamnya. Pada titik ini, cabang baru dibuat darinya dengan terjemahan awalan- dan Serge dapat memulai proses penerjemahan. Ketika terjemahan siap, pengembang mengambilnya dari cabang terjemahan, dan kemudian bertindak berdasarkan aliran git yang diterima dalam tim.
Proses ini meminimalkan keterlibatan pengembang dalam proses pelokalan, dan juga meminimalkan jumlah tenaga kerja manual: Anda hanya perlu membuat cabang.
Penjelasan lebih lanjut tentang proses penyetelan sangat bergantung pada fakta bahwa tim memiliki pengaturan dan proses yang serupa.
Penyiapan proyek
Masuk sebagai serge:
sudo -Hu serge -i
Buat direktori grup:
mkdir groups
Direktori ini akan meng-host proyek yang sesuai dengan repositori di GitLab. Masuk akal untuk mengulangi struktur grup repositori dan lokasinya untuk memudahkan navigasi.
Buat direktori untuk proyek pertama:
cd groups mkdir myproject cd myproject
Salin file konfigurasi Serge. Anda dapat menginstal komandan tengah malam dan mengelola file menggunakan manajer file. Sebelum memasang MC, Anda harus keluar dari akun gabung.
exit sudo apt install mc sudo -Hu serge -i
File yang akan disalin dari / usr / local / serge / serge-master / bin / tools / fitur-branch-config-generator:
- File konfigurasi Serge: myproject.cfg
- file templat pekerjaan: myproject.inc
- .serge template: myproject.serge.tmpl
- file untuk menambahkan cabang secara manual: myproject_branches.txt
- skrip untuk bekerja dengan 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/
Buat file untuk merekam log plugin:
mkdir log cd log touch smartcat.log
Konfigurasikan myproject.inc
- Di bidang nama, tentukan format file sumber daya yang digunakan dalam proyek.
- Isi id dengan mask% yourproject%.% Yourformat%.% Yourmasterbranchname%.
- Di bidang destination_languages, tentukan bahasa yang ingin Anda terjemahkan.
- Isi sumber dengan topeng ./%proyekAnda%/%AndaMasterbranch%/res/en.
- Isi output_file_path dengan mask ./%proyek Anda%/%ourmasterbranch%/res/% LANG% /% FILE%.
- Isi source_match dengan mask.% Yourformat%.
- Bergantung pada format file sumber daya, tentukan plugin yang diperlukan untuk parsing. Plugin terdaftar dalam dokumentasi server . Isi ts_file_path dengan mask ./po/%proyek Anda%/% LOCALE% /% FILE% .po.
- Isi master_job dengan mask% yourproject%.% Format% Anda.% Yourmasterbranch%.
Parameter yang tersisa dibiarkan tidak berubah.
Konfigurasikan myproject.serge.tmpl
- project_id - id proyek di Smartcat
- token_id, token - data dari Smartcat
- remotepath - di sini Anda harus menentukan dengan benar nama parameter dan nilainya {% yourmasterbranch %% ssh_path_to_your_repo% #% yourmasterbranch%}
- $ FBCGEN_DIR_PADDED -% ssh_path_to_your_repo% # FBCGEN_BRANCH
- id - job.yourmasterbranch
- nama - proyek Anda
- source_language - id
- destination_languages - bahasa yang perlu diterjemahkan
- source_dir - ./branches/yourmasterbranch/%path_to_resource_files%
- source_match - id.% format% Anda
- db_source - DBI: SQLite: dbname -./% proyek Anda% .db3
- db_namespace -% yourproject%
- ts_file_path - ./po/PROJECT_ID_IN_SMARTCAT/% LANG% /% FILE% .po
- output_file_path - ./branches/%yourmasterbranch%/%path_to_resource_files%/% LOCALE%. % format Anda%
- output_lang_rewrite {
zh-hans zh-cn '' zh-hant-tw zh-tw
} - Parameter ini memungkinkan Anda untuk mendefinisikan kembali penamaan bahasa. Jika penunjukan bahasa dalam proyek tidak cocok dengan penunjukan yang digunakan dalam Smartcat, Anda dapat mendefinisikannya kembali. - master_job - pekerjaan.% yourmasterbranch%
- @inherit -. # jobs /:% yourmasterbranch%
- source_dir (dalam FBCGEN_BRANCH_JOBS) - ./branches/$FBCGEN_DIR/%path_to_resource_files%/
- output_file_path (dalam FBCGEN_BRANCH_JOBS) - ./branches/$FBCGEN_DIR/%path_to_resource_files%/% LOCALE%. % format Anda%
Penting! Di source_path_prefix, akhir harus menjadi titik% FBCGEN_BRANCH.
Panggilan ke plugin Smartcat harus ditambahkan ke bagian myproject.serge.tmpl yang sesuai
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 } }
Deskripsi beberapa parameter:
- disassemble_algorithm_name Serge.io PO - gunakan hash kunci yang diteruskan ke Serge. Parameter ini diperlukan untuk mengoptimalkan waktu eksekusi dari perintah pull-ts dan push-ts.
- complete_projects NO - pilih baris dari Smartcat hanya jika semua dokumen dalam proyek selesai. Untuk integrasi kami, proyek di Smartcat identik dengan repositori di GitLab, dan termasuk sekumpulan dokumen. Dokumen adalah produk Cartesian dari jumlah cabang di repositori dan bahasa tempat terjemahan dibuat. Artinya, jika di repositori Anda ada 2 cabang yang perlu diterjemahkan ke dalam 6 bahasa, 12 dokumen akan dibuat dalam proyek.
- complete_documents YES - pilih baris dari Smartcat jika dokumen dalam status selesai. Ini dilakukan untuk meminimalkan jumlah komit ke repositori.
Contoh Proyek Kustom
Di bawah ini adalah file konfigurasi untuk proyek dengan 6 bahasa. Proyek menyimpan baris sumber dalam format js. Format penamaan file 5 karakter digunakan. Path ke file sumber daya: ./branches/base-translate/client/src/translations.
myproject.cfg
myproject.inc
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
Peluncuran aplikasi
Kloning repositori
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/
Siklus lokalisasi
File .serge terbentuk:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" /usr/local/serge/serge-master/fbcgen.pl myproject.cfg
Mengambil perubahan dari semua cabang repositori:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull --initialize myproject.local.serge
Kumpulan perubahan terjemahan untuk semua cabang dari Smartcat:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull-ts myproject.local.serge
Pembentukan basis data dan .po:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge localize myproject.local.serge
Mengirim data baru dari repositori ke Smartcat:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push-ts myproject.local.serge
Mengirim transfer yang diterima ke repositori di cabang yang sesuai:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push myproject.local.serge
Artikel-artikel berikut akan dikhususkan untuk Pemecahan Masalah dan deskripsi kasus integrasi khusus.
Artikel terakhir: 20 proyek, 20 bahasa, batas waktu kemarin. Bagian 3