Mudlet: Berhenti kehilangan terjemahan saat memodifikasi

Dibuat pada 7 Sep 2018  ·  28Komentar  ·  Sumber: Mudlet/Mudlet

Ringkasan singkat masalah / Deskripsi fitur yang diminta:

Kami baru-baru ini melakukan beberapa pembaruan kecil pada string, atau bahkan komentar pada string. Setelah mengunggahnya ke Crowdin, semua terjemahan yang baru saja dilakukan pada string ini hilang. Mereka harus tetap utuh atau setidaknya memberi pilihan untuk memutuskan.

Langkah-langkah untuk mereproduksi masalah / Alasan menambahkan fitur:

  1. Unggah file ke Crowdin, mulailah menerjemahkan
  2. Ubah string yang diterjemahkan di sumber github
  3. Tinjau Crowdin. Terjemahan hilang!

Keluaran kesalahan / Hasil yang diharapkan dari fitur

Basis Pengetahuan Crowdin menjelaskan ini:

Memperbarui File Sumber
Jika beberapa string sumber diubah, sistem akan menampilkan dialog dengan daftar string tersebut. Anda akan dapat memilih terjemahan yang ada yang ingin Anda simpan tanpa perubahan atau hapus, dan apakah Anda ingin menyimpan atau menghapus persetujuan.
crowdin

Bagian itu secara khusus berbicara tentang memperbarui file secara manual melalui situs web Crowdin.
Bagaimana dialog ini dapat dimulai, ketika file yang diperbarui tiba melalui integrasi github?

Informasi tambahan, seperti versi Mudlet, sistem operasi, dan ide tentang cara memecahkan / menerapkan:

Contoh perubahan bahasa Spanyol dari koleksi
1

Terjemahan bahasa Spanyol "begitu" hilang. Dalam hal ini, string sumber bahkan tidak berubah, tetapi hanya komentar string. Dalam kasus lain, sebuah string sangat panjang (~100 kata) dan hanya 1 kata yang berubah, sisanya tidak berubah. Tentu saja, sebagian besar terjemahannya masih valid, jadi tidak boleh dihapus seperti ini.

Penerjemah masih dapat melihat "begitu" sebagai saran, jika mereka berusaha untuk mengklik setiap string lagi (termasuk yang belum diterjemahkan), tetapi saran itu ada di antara saran lain dan bahkan tidak ditandai sebagai "ini telah terjemahan dari string ini sebelumnya"

2

discussion i18n & l10n

Komentar yang paling membantu

Terima kasih, dihargai :) kami akan mempelajari ini.

Semua 28 komentar

Ada ide bagaimana cara mengatasinya? @crowdin

Di mana Anda menarik garis antara menyimpan atau membuang terjemahan?

Bagi saya, mengembalikan terjemahan ke TM tampaknya yang terbaik, sangat mudah untuk menariknya kembali dan penerjemah dapat memutuskan apakah mereka ingin menggunakan kembali teks tersebut atau tidak.

Tepatnya, garis itu perlu digambar satu per satu untuk setiap string, seperti yang disarankan oleh tangkapan layar dari Crowdin.

Saya akan menyambut opsi bagi penerjemah untuk memulai dialog sembulan itu setelah menarik string dari github.

Saat ini, mereka bahkan tidak dapat membedakan, string mana yang telah diterjemahkan sebelumnya, untuk memperbaiki tarikan dengan cepat.

Saya tidak merasa masuk akal untuk menghabiskan waktu berjam-jam di setiap modifikasi, meneliti terjemahan mana yang rusak.

Saat menggunakan Ahli Bahasa Qt sendiri (atau lebih tepatnya lupdate ) untuk memperbarui sekelompok file .ts khusus bahasa dari kode sumber secara langsung, lupdate memiliki opsi:

          Drop all obsolete and vanished strings.

Hanya jika opsi itu diberikan, hal itu menyebabkan tidak digunakan, atau usang - menurut saya, perubahan dalam komentar diperlakukan oleh CrowdIn - string akan dihapus dari file .ts . Entah bagaimana kita perlu membuat CrowdIn berperilaku seperti itu untuk kita. :berdoa:

Yang penting saya tidak berpikir bahwa perubahan dalam komentar (meskipun mungkin perubahan disambiguasi berbeda) harus menghapus terjemahan - mungkin dapat diterima untuk kehilangan status "disetujui" tetapi tidak untuk dilupakan.

Halo semuanya,

Perlu diketahui bahwa Anda dapat menyimpan terjemahan untuk string yang dimodifikasi saat memperbarui file melalui CLI / API / GitHub juga, dengan menentukan parameter update_option dalam file konfigurasi ( crowdin.yml ) yang disimpan di repo Anda.

Info lebih lanjut:
https://support.crowdin.com/configuration-file/#changed -strings-update

Setelah Anda melakukan perubahan, harap Jeda & Lanjutkan integrasi di Crowdin untuk menerapkan perubahan

Harapan itulah yang Anda butuhkan!

Terima kasih atas tanggapannya!

@Kebap opsi mana yang Anda inginkan?

Terima kasih teman-teman. Ini luar biasa. Akan meninjau opsi secara detail.

Saya ingin mencoba opsi "update_as_unapproved", ini tampaknya merupakan kompromi yang baik: Terjemahan tetap utuh, tetapi kehilangan status yang disetujui.

Sekarang, ketika saya menguji ini, sepertinya tidak berhasil. String masih kehilangan terjemahannya. Saya bahkan melangkah lebih jauh dengan meningkatkan tata letak singkat yang dibuat secara otomatis dari file yaml konfigurasi , sehingga mencerminkan dengan tepat contoh yang diberikan di bagian Basis Pengetahuan yang ditautkan di atas.

Namun, Crowdin tampaknya sayangnya hanya mengganti string, alih-alih menyimpan terjemahannya dan hanya menghapus persetujuan. Apakah saya salah melakukannya?

String sebelumnya memiliki terjemahan dan persetujuan (persetujuan tampaknya tidak terlihat dalam file .ts?)
image

Opsi pembaruan "update_as_unapproved" diuji dengan tata letak yaml pendek dan panjang, keduanya menghasilkan hasil yang sama
image

Setelah memodifikasi string (atau komentar), Crowdin sekarang menampilkan string yang dimodifikasi tanpa terjemahan dan persetujuan
image

Crowdin Diff melaporkan string sebagai "dihapus dan ditambahkan" bukan "disimpan tetapi kehilangan persetujuannya"
image

-- Tolong balas di atas baris ini --

        Hi everyone,

Tampaknya masalahnya adalah bahwa dalam proyek Anda, file Anda adalah .html dan
.ts. File jenis tersebut tidak memiliki struktur KEY:VALUE yang jelas,
oleh karena itu ketika Anda memperbarui file, setiap string yang diubah adalah
dianggap sebagai string baru. Ini adalah perilaku yang diharapkan dari sistem,
tapi saya akan bertanya kepada para pengembang apakah ada sesuatu yang bisa dilakukan dalam hal ini
kasus begitu mereka berada di kantor!

Bagaimana Anda menilai balasan saya?
Bagus [1] Oke [2] Tidak Bagus [3]

--
Sungguh-sungguh,
Olga Kuhta
Manajer Sukses Pelanggan

Tautan:

[1]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/1/
[2]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/2/
[3]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/3/

    > On Sat, Sep 8, 2018 at 1:34:23 EEST, Mudlet/mudlet <[email protected]> wrote:

Saya ingin mencoba opsi "update_as_unapproved", ini sepertinya
kompromi yang baik: Terjemahan tetap utuh, tetapi kehilangan persetujuannya
status.

Sekarang, ketika saya menguji ini, sepertinya tidak berhasil. Senar masih hilang
terjemahan mereka. Saya bahkan melangkah lebih jauh dengan meningkatkan secara otomatis
membuat tata letak singkat dari file konfigurasi yaml [1], sehingga
mencerminkan persis contoh yang diberikan di bagian Basis Pengetahuan [2]
terkait di atas.

Tetap saja, Crowdin tampaknya sayangnya hanya menggantikan
string, alih-alih menyimpan terjemahannya dan hanya menghapus
persetujuan. Apakah saya salah melakukannya?

String sebelumnya memiliki terjemahan dan persetujuan (sepertinya persetujuan
tidak terlihat dalam file .ts?)
[3]

Opsi pembaruan "update_as_unapproved" diuji dengan pendek dan panjang
tata letak yaml, keduanya menghasilkan hasil yang sama
[4]

Setelah memodifikasi string (atau komentar), Crowdin sekarang menunjukkan modifikasi
string tanpa terjemahan dan persetujuan
[5]

Crowdin Diff melaporkan string sebagai "dihapus dan ditambahkan" bukan "disimpan tetapi
kehilangan persetujuan mereka"
[6]

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub [7], atau matikan suara
benang [8].

Tautan:

[1] https://github.com/Kebap/Mudlet/blob/crowdin-test/.crowdin.yml
[2]
https://support.crowdin.com/configuration-file/#changed -strings-update
[3]
https://user-images.githubusercontent.com/117238/45245753-12b3a300-b2fe-11e8-819a-fbc1cab389cd.png
[4]
https://user-images.githubusercontent.com/117238/45245828-632b0080-b2fe-11e8-8457-d16f53e62976.png
[5]
https://user-images.githubusercontent.com/117238/45245723-e7c94f00-b2fd-11e8-831d-14f3c0151aa8.png
[6]
https://user-images.githubusercontent.com/117238/45245651-843f2180-b2fd-11e8-8744-b431244e39e8.png
[7]
https://github.com/Mudlet/Mudlet/issues/1961#issuecomment -419583856
[8]
https://github.com/notifications/unsubscribe-auth/AA0k1tqzDWWwb2qGudFk9ENRg7Hm3D-Hks5uYvRcgaJpZM4WeaRq

Ya, Qt IDE menggunakan file .ts. Tentunya ini bukan ceruk. Adakah rekomendasi dari pengembang Crowdin?

Umpan balik dari Qt tidak meyakinkan:

(Kebap) Hai semuanya! Adakah yang pernah menggunakan situs web layanan berbasis web untuk menangani terjemahan dan penerjemah? Kami menggunakan Crowdin dan sepertinya tidak berfungsi dengan baik dengan format file Qt .ts. Mereka tampaknya berpikir setiap string yang dimodifikasi adalah string baru dan akan menghapus terjemahan lama. Lihat utas berikut untuk detailnya. Bagaimana kita bisa menyelesaikan ini? https://github.com/Mudlet/Mudlet/issues/1961
(frkleint) Kebap: Saya akan merekomendasikan posting ke milis http://lists.qt-project.org/mailman/listinfo/localization
(Kebap) Sepertinya milis itu tentang proyek terjemahan Qt itu sendiri. Namun mungkin ada orang lain yang membangun proyek mereka sendiri dengan Qt dan menerjemahkan ke bahasa lain?
(frkleint) Kebap: Ya, tapi pengelola/orang yang tepat akan membacanya

Biarkan saya memeriksa semua detail, @Kebap. Saya punya satu "rencana B" di kepala saya, perlu mengujinya.

Bolehkah Anda menyimpan teks sumber / terjemahan di elemen file .ts? Dalam Anda dapat memiliki ID string unik misalnya

Saat ini kami mengimpor/mengunggah satu file mudlet.ts yang berisi teks sumber ke CrowdIn dan mereka memprosesnya untuk menghasilkan mudlet_xx_YY.ts di mana xx adalah kode bahasa dua huruf dan YY adalah kode negara dua huruf. mudlet.ts yang berasal, saya yakin, dihasilkan/diperbarui dengan utilitas Qt lupdate yang saya jalankan dari direktori ./translations sumber kami sebagai lupdate -locations absolute ../src/mudlet.pro -ts ./mudlet.ts {at setidaknya dari *nux OS}.

Ada alternatif tapi saya tidak tahu apakah CrowdIn dapat bekerja seperti itu di mana kami menyediakan file .ts individu (saat ini:

  • mudlet_de_DE.ts
  • mudlet_el_GR .ts`
  • mudlet_en_GB.ts
  • mudlet_es_ES.ts
  • mudlet_fr_FR.ts
  • mudlet_it_IT.ts
  • mudlet_nl_NL.ts
  • mudlet_pl_PL.ts
  • mudlet_ru_RU.ts
  • mudlet_zh_CN.ts
  • mudlet_zn_TW.ts

) ke CrowdIn dan minta tim penerjemah/penerjemah mengerjakannya. Ini berarti bahwa upaya terjemahan yang ada disimpan dalam setiap file .ts - ini sebenarnya adalah bagaimana Qt membayangkan terjemahan harus dilakukan - karena lupdate kemudian akan memperbarui setiap file terjemahan individu dengan perubahan dari sumber kode saat dijalankan tetapi tidak akan membuang (kecuali secara eksplisit diberitahukan dengan argumen -no-obsolete ) teks lama yang tidak lagi muncul di sumber. Kelemahan dari ini adalah tidak ada satu file sumber untuk semua terjemahan yang mungkin membingungkan/tidak berfungsi dengan sistem CrowdIn. Keuntungannya adalah #1963 langsung menjadi bukan masalah karena kami dapat menghasilkan file mudlet_en_US.ts yang hanya berbentuk jamak dan hanya menyertakannya dalam unggahan ke CrowdIn pada rilis/versi/perubahan apa pun...

Saya pikir Crowdin membutuhkan satu file sebagai input. Saya ingat bahwa selama pengaturan tidak menyukai banyak file - yaitu, masalahnya adalah file input dan output sama.

Meskipun kita bisa saja menamai file input dan output secara berbeda?

Crowdin pasti dapat menangani beberapa file input, seperti dalam string yang berbeda untuk diterjemahkan. Namun dalam rencana SlySven, mereka semua akan memiliki konten yang identik. Itu berarti, bahkan tim penerjemah Polandia akan melihat semua file termasuk mudlet_it_IT.ts dan mudlet_ru_RU.ts, dll. Oleh karena itu, kami tidak melanjutkan jalan itu lebih jauh dan malah memilih satu file terjemahan pusat.

edit: Penjelasan untuk membuat file .ts benar, tetapi perintah sebenarnya yang digunakan adalah: lupdate -recursive .\src\ -ts .\translationsmudlet.ts

Tidak yakin apa yang Anda maksud di sana Vadim, tetapi saya pikir Kebap berada di jalur yang sama - kami dapat memasukkan semua file tetapi bagaimana kami kemudian mengatakan/memberi tahu CrowdId bahwa hanya mudlet_ru_RU.ts dari set yang harus ditampilkan ke Penerjemah Rusia (Rusia) ?

@vadi2 Anda benar, disarankan untuk mengunggah satu file sumber, Crowdin akan menghasilkan file yang diterjemahkan sendiri.

Tolong jangan mengunggah file seperti mudlet_ru_RU.ts ke dalam proyek.

Mungkin kita bisa mengatur panggilan untuk mendiskusikannya lebih lanjut? Tolong hubungi saya di andriy(at)crowdin.com

Saya memiliki satu ide dalam pikiran yang pasti akan berhasil, tetapi perlu mendengar apakah Anda akan senang dengannya. Masalahnya adalah .ts tidak memiliki pengenal unik untuk setiap string - seperti di .po, file di mana msgid adalah sumber & pengenal yang sama, <source> adalah teks & pengenal juga (bersama dengan elemen <context> dan <name> , setiap string dianggap unik dan jika Anda memodifikasi <source> , string tersebut dianggap baru dan Anda tidak dapat menyimpan terjemahan untuk dimodifikasi string dalam hasil).

Bagaimanapun, ada solusi/solusi yang cukup bagus yang ingin saya diskusikan/tunjukkan kepada tim Anda;)

... dan hanya beberapa konten yang akan sama - teks dari sumber - tetapi terjemahan yang sudah dilakukan untuk setiap lokal juga disimpan di file masing-masing, dan ada di setiap siklus pembaruan-terjemahan berikut.

Jika saya memahaminya, skema pengidentifikasi pesan unik juga diizinkan dalam sistem Qt tetapi lebih sulit untuk dikerjakan - dan perubahan di tengah proyek adalah tugas non-sepele (kedua sistem saling eksklusif dan Anda memerlukan metodologi yang sangat baik untuk menghasilkan pengidentifikasi yang bermakna) - dan bagian dari manfaat skema yang ada adalah bahwa string duplikat bisa digabungkan menjadi satu terjemahan umum, hanya saja mengubah satu membutuhkan yang lain untuk berubah juga jika mereka dimaksudkan untuk menjadi sama...

Ketika kami menerjemahkan semua string dalam suatu bahasa menjadi 100% dan kemudian mengedit beberapa dalam rilis, bukankah masih sangat mudah untuk melewati dan menambahkannya kembali berkat TM?

Masalah ini sepertinya hanya masalah nyata karena kita belum mencapai 100%.

@vadi2 jika Anda ingin memiliki kemampuan untuk menerjemahkan string yang baru ditambahkan secara otomatis dengan bantuan TM, Anda dapat mengatur alur kerja tersebut menggunakan fitur Alur Kerja Lanjutan (Saya baru saja mengaktifkannya untuk akun Anda)
https://support.crowdin.com/advanced-workflows/

Terima kasih, dihargai :) kami akan mempelajari ini.

@Kebap menulis:

edit: Penjelasan untuk membuat file .ts benar, tetapi perintah sebenarnya yang digunakan adalah: lupdate -recursive .\src\ -ts .\translationsmudlet.ts

-recursive adalah kasus argumen default dan tidak diperlukan - dan begitu juga -locations absolute untuk file baru rupanya... :slightly_smiling_face: - Saya baru saja menemukan ini saat memeriksa untuk melihat efeknya masalah yang masih dimiliki lupdate dengan literal string mentah C++11/14 { QTBUG , #1310} dan apakah string hilang dari file mudlet.ts karena mereka mengacaukannya.. . :mengernyit:

@Kebap Apakah ini masih menjadi masalah?

Ya, meskipun tidak seburuk sebelum perubahan. Tapi itu masih membingungkan, bahkan untuk yang diinisiasi, seperti yang Anda lihat dari masalah terkait dari seminggu yang lalu.

Juga ada sedikit perlombaan saat ini sementara sebagian besar bahasa belum mendekati 100%, apakah mereka akan menerjemahkan string lebih cepat daripada kehilangan terjemahan lagi?

Terlebih lagi, saya menemukan masalah yang tampaknya mengembalikan terjemahan yang dihapus. Saat ini saya tidak menemukan cara untuk menghapus terjemahan dari Crowdin. Setelah pembaruan berikutnya, itu akan ditambahkan secara otomatis lagi.

@Andrulko Apakah Anda memiliki pembaruan di sini? Anda menyebutkan rencana B di atas..

Juga, mengapa Crowdin melakukan perilaku aneh ini di TM sekarang!? Lihat tangkapan layar di bawah untuk perbandingan.

Semua yang kami ubah disini adalah h3 menjadi a . Tidak ada tag lain yang disentuh. Sekarang apa yang terjadi?

Apakah Anda mengharapkan penerjemah mengganti setiap {[=-lt;-=]}h2{[=-gt;-=]}{[=-lt;-=]}u{[=-gt;-=]} menjadi <h2><u> atau lebih tepatnya <0> secara manual?

Tautan ke contoh: https://crowdin.com/translate/mudlet/137/en-de
Contoh cuplikan layar:
grafik

Saya pikir itu bug di TM Crowdin. Mungkin yang terbaik adalah melaporkannya sebagai masalah terpisah kepada mereka.

Saya telah memberi tahu mereka di sini juga: https://crowdin.com/contacts

Halo, kami telah memeriksa permintaan Anda dan membalas email Anda. Beri tahu kami jika Anda memiliki pertanyaan lain!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat