Untuk mengaudit setiap kunci penyetempatan dalam app Mac, bina sasaran yang berkaitan, semak setiap jadual rentetan bagi semua bahasa yang disokong, kemudian uji variasi mesej dalam app yang sedang berjalan. Kelengkapan katalog dan paparan masa jalan yang betul memerlukan semakan yang berasingan.
Aliran kerja ini untuk pembangun yang menyelenggara app desktop Mac dalam Xcode. Tugas khususnya ialah menghasilkan rekod yang boleh dijejaki tentang mesej yang hilang, terjemahan yang belum selesai, argumen yang salah dan masalah paparan. Contohnya menggunakan label dan kiraan rekaan; contoh tersebut menerangkan kaedah audit yang boleh anda gunakan pada projek sendiri.
Tentukan maksud mesej yang lengkap
Mulakan dengan lembaran kerja audit ringkas. Catat sasaran app, himpunan sumber, jadual rentetan, kunci, penyetempatan yang disokong, variasi yang diperlukan, keadaan terjemahan dan hasil masa jalan. Anggap setiap gabungan himpunan–jadual–kunci sebagai identiti mesej yang berasingan supaya teks kunci yang sama dalam sumber berbeza tidak menyembunyikan sesuatu yang tertinggal.
Apple mendokumenkan bahawa API yang boleh disetempatkan boleh menentukan jadual dan himpunan, dan sumber di luar himpunan utama memerlukan himpunan yang sesuai untuk carian. Oleh itu, menyemak fail Localizable.xcstrings lalai sahaja mungkin terlepas mesej di tempat lain dalam app. Lihat Menyediakan teks app anda untuk terjemahan.
Semak penyetempatan yang disokong oleh projek dalam editor projek: pilih projek di bawah Project, buka Info dan periksa Localizations. Semak juga sumber yang disertakan dalam penyetempatan tersebut. Menambah sokongan untuk bahasa dan rantau oleh Apple menerangkan tetapan projek dan pemilihan sumber ini.
Untuk lembaran kerja, anda boleh menggunakan nama samaran rekaan seperti Penyetempatan A, Penyetempatan B dan Penyetempatan C. Simpan pemetaan nama samaran itu kepada pengecam penyetempatan sebenar projek dalam rekod kerja anda. Nama samaran ini ialah label lembaran kerja, bukannya nilai untuk dimasukkan ke dalam Xcode.
Gunakan kontrak pelengkapan berikut untuk audit. Ini kaedah semakan yang dicadangkan, bukannya status pelengkapan yang ditakrifkan oleh Apple.
| Semakan | Bukti yang perlu direkodkan |
|---|---|
| Inventori | Mesej mempunyai sasaran, himpunan, jadual dan kunci yang dikenal pasti. |
| Penemuan | Mesej diekstrak daripada kod atau diselenggara secara manual dengan sengaja. |
| Liputan | Setiap penyetempatan yang diperlukan mempunyai variasi mesej yang diperlukan. |
| Argumen | Setiap argumen mengekalkan makna yang dimaksudkan dan jenis yang serasi. |
| Masa jalan | Mesej dan nilai yang betul muncul dalam antara muka Mac yang berkaitan. |
| Tindakan | Setiap penemuan telah dibaiki, dikecualikan dengan sengaja berserta sebab, atau masih terbuka. |
Bina inventori katalog sebelum menyemak terjemahan
Buka katalog rentetan sedia ada dalam projek. Jika sasaran tidak mempunyai katalog, cara penciptaan yang didokumenkan oleh Apple ialah File > New > File from Template, kemudian pilih String Catalog. Nama lalai ialah Localizable; gunakan nama jadual yang dijangka oleh kod anda. Pilih Product > Build untuk mengisi dan mengemas kini katalog. Lihat Menyetempatkan dan mempelbagaikan teks dengan katalog rentetan.
Bina setiap skema Mac yang berkaitan dan jangan anggap satu binaan yang berjaya sudah melengkapkan inventori. Apple menerangkan bahawa pengekstrakan menemukan rentetan untuk skema dan platform semasa. Mesej yang tiada daripada satu binaan perlu disiasat sebelum anda membuat kesimpulan bahawa mesej itu tidak digunakan. Had ini diterangkan dalam Menemui Katalog Rentetan.
Semak tetapan binaan Use Compiler to Extract Swift Strings. Apple secara jelas mensyaratkannya untuk menyertakan semua teks Swift yang boleh disetempatkan dalam eksport penyetempatan. Jika anda memerlukan salinan pertukaran untuk kerja terjemahan, pilih projek dan pilih Product > Export Localizations, kemudian pilih penyetempatan yang diperlukan. Pakej .xcloc yang dieksport ialah Katalog Penyetempatan Xcode, berbeza daripada jadual rentetan .xcstrings individu. Lihat Mengeksport penyetempatan.
Seterusnya, telusuri bahagian biasa app desktop: tetingkap utama, menu, bar alat, tetapan, panel, keadaan kosong dan label yang bergantung pada kiraan. Bagi setiap mesej milik app yang ditemui, cari entri lembaran kerjanya. Semakan songsang ini—daripada antara muka yang kelihatan kepada inventori—membantu mendedahkan teks yang tidak pernah dimasukkan ke dalam katalog.
Jangan anggap pengekstrakan menemukan setiap ungkapan rentetan sewenang-wenangnya. Apple menerangkan pengekstrakan melalui API yang boleh disetempatkan. Apabila mesej yang dijangka tiada, periksa cara kod mencipta dan menghantarnya sebelum menambah entri kedua secara manual. Lihat Menyediakan teks app anda untuk terjemahan.
Asingkan pengekstrakan, carian dan pemformatan masa jalan
Operasi ini menjawab soalan yang berbeza. Pengekstrakan menanyakan sama ada Xcode boleh menemukan mesej semasa pembangunan. Carian menanyakan sumber setempat yang diminta oleh app yang sedang berjalan. Pemformatan masa jalan membekalkan kandungan berubah-ubah yang dipaparkan oleh mesej terpilih.
Dalam SwiftUI, jenis argumen penting. Literal seperti Text("Open collection") terlibat dalam carian setempat. Menghantar pemboleh ubah String biasa kepada pemula yang sepadan biasanya memaparkan pemboleh ubah itu tanpa penyetempatan. Apple mendokumenkan perbezaan ini dalam LocalizedStringKey.
Mencipta LocalizedStringKey secara jelas daripada pemboleh ubah meminta carian, tetapi itu tidak membuktikan bahawa pengekstrakan masa binaan menemukan setiap kemungkinan nilai pemboleh ubah. Bagi kunci yang dipilih secara dinamik, bandingkan keseluruhan set kunci yang dibenarkan dengan katalog. Siasat setiap nilai yang tiada padanan dan jangan bergantung pada nilai yang kebetulan muncul semasa ujian.
Interpolasi juga memainkan peranan pada peringkat mesej. SwiftUI boleh mencari mesej setempat yang mengandungi penentu format dan menggantikan nilai interpolasi sebelum pemaparan. Apple mengesyorkan interpolasi untuk menggabungkan teks yang boleh disetempatkan dalam dokumentasi Text.
Pertimbangkan mesej ilustrasi yang melaporkan bilangan item. Katalog menyimpan struktur mesej dan variasi yang boleh disetempatkan; kiraan yang berubah-ubah ialah sebahagian daripada tingkah laku masa jalan. Menguji kiraan 1 dan 24 tidak sepatutnya memerlukan dua kunci yang diselenggara secara berasingan hanya kerana nombornya berubah.
Label yang kelihatan munasabah ialah bukti yang lemah bahawa carian berjaya. Apple menyatakan bahawa SwiftUI boleh memaparkan kunci itu sendiri apabila tidak menemui nilai setempat. Jika kunci ialah teks sumber yang boleh dibaca, masalah carian mungkin kelihatan seperti label biasa. Sahkan penyetempatan yang dipilih dan entri katalog bersama-sama hasil paparan. Lihat Menyediakan paparan untuk penyetempatan.
Semak setiap bahasa dan setiap variasi yang diperlukan
Semak satu jadual pada satu masa dan satu penyetempatan pada satu masa. Bagi setiap mesej, periksa keadaan terjemahan, teks, argumen dan variasi yang diperluas. Biarkan baris yang belum selesai terbuka walaupun mesej di sekelilingnya sudah lengkap.
Aliran kerja katalog Apple membezakan entri New, Needs Review, entri yang diterjemahkan dan rentetan Stale. Entri lapuk tidak lagi ditemukan dalam kod; entri yang diselenggara secara manual tidak dikemas kini atau dibuang secara automatik semasa penyegerakan. Pastikan kunci lapuk tidak diperlukan sebelum memadamkan terjemahannya. Lihat Menemui Katalog Rentetan.
Bagi mesej yang bergantung pada kiraan, Control-click kunci berinterpolasi dan pilih Vary by Plural. Semak setiap bentuk yang disediakan oleh Xcode bagi setiap penyetempatan. Bentuk yang diperlukan mungkin berbeza, jadi bilangan baris yang sama dengan penyetempatan sumber bukan semakan yang mencukupi. Jika katalog menyertakan variasi peranti, periksa nilai khusus Mac dan nilai umum. Apple mendokumenkan kedua-dua kawalan ini dalam Menyetempatkan dan mempelbagaikan teks dengan katalog rentetan.
Semak makna argumen dan juga rupanya. Bagi mesej rekaan yang melaporkan item merentas kumpulan, kenal pasti argumen yang mewakili bilangan item dan argumen yang mewakili bilangan kumpulan. Terjemahan boleh mengubah kedudukan kedua-duanya, tetapi maknanya perlu dikekalkan. Sesi katalog Apple menerangkan kedudukan argumen, penentu jenis dan penggantian jamak dalam Menemui Katalog Rentetan.
Tambahkan konteks apabila label ringkas mempunyai makna yang kabur. Komen untuk Open boleh menjelaskan bahawa ia ialah tindakan pada baris koleksi. Parameter comment SwiftUI membawa konteks itu ke dalam output penyetempatan; Apple menerangkannya dalam Menyediakan paparan untuk penyetempatan.
Gunakan matriks liputan yang menampakkan kerja belum selesai
Satu peratusan berguna untuk menjejak kemajuan katalog, tetapi audit memerlukan lajur berasingan bagi liputan dan tingkah laku. Contoh berikut menunjukkan sebabnya. Nombornya rekaan dan mewakili pasangan mesej–penyetempatan, bukannya ukuran daripada sesuatu app.
Katakan inventori mengandungi 48 mesej yang diperlukan dan tiga penyetempatan yang disokong. Ini menghasilkan 144 pasangan yang diperlukan: 48 didarab dengan 3. Setiap pasangan mungkin mengandungi cabang jamak atau peranti tambahan yang memerlukan semakan tersendiri.
| Penyetempatan | Pasangan yang diperlukan | Semakan katalog selesai | Semakan masa jalan selesai |
|---|---|---|---|
| Penyetempatan A | 48 | 48 | 48 |
| Penyetempatan B | 48 | 46 | 44 |
| Penyetempatan C | 48 | 48 | 45 |
| Jumlah | 144 | 142 | 137 |
Di sini, dua pasangan masih memerlukan kerja katalog dan tujuh lagi belum selesai disemak pada masa jalan. Kumpulan tersebut mungkin bertindih, jadi menjumlahkannya tidak akan menghasilkan kiraan mesej berlainan yang belum selesai dengan tepat. Kekalkan kedua-dua penemuan pada baris masing-masing.
Bagi setiap baris yang belum selesai, catat tindakan seterusnya yang khusus: cari mesej sumber yang hilang, lengkapkan cabang jamak, sahkan argumen, siasat pemilihan himpunan atau semak semula antara muka pada lebar yang lebih kecil. Ini menjadikan matriks tersebut barisan kerja pembaikan dan bukannya laporan kemajuan hiasan.
Jalankan app Mac dalam setiap penyetempatan yang disokong
Gunakan tetapan skema Xcode untuk semakan peringkat app yang boleh diulang. Pilih Product > Scheme > Edit Scheme, pilih Run, buka Options, kemudian pilih App Language dan App Region. Tutup dialog, pilih destinasi jalankan Mac dan jalankan app. Ulangi langkah ini untuk gabungan yang disokong dalam audit anda. Apple mendokumenkan urutan ini dalam Menguji penyetempatan semasa menjalankan app.
Ikuti laluan yang sama dalam antara muka pada setiap larian. Uji setiap mesej dengan keadaan yang berkaitan: koleksi kosong, satu item, beberapa item dan label rekaan yang lebih panjang. Bagi mesej jamak, pilih nilai tambahan yang diperlukan untuk menguji cabang dalam penyetempatan tersebut; set kiraan tetap yang kecil tidak membuktikan liputan cabang yang lengkap.
Periksa ayat penuh, nilai yang digantikan, pembalutan teks, pemotongan teks serta lebar menu atau kawalan. Apabila mesej mempunyai dua kiraan, ubah kedua-duanya secara berasingan. Contohnya, menukar bilangan item sambil mengekalkan bilangan kumpulan membantu mendedahkan kesilapan pemetaan argumen.
Pratonton SwiftUI boleh memendekkan kitaran pembaikan. Apple menyokong penetapan nilai persekitaran locale pratonton dan penciptaan berbilang pratonton setempat selepas menambah atau mengimport penyetempatan tersebut. Gunakannya untuk menyemak semula paparan yang bermasalah, kemudian sahkan laluan sebenar dalam app. Lihat Mempratonton penyetempatan.
Tutup audit apabila setiap pasangan mesej–penyetempatan yang diperlukan mempunyai tindakan yang didokumenkan dan cabang yang diperlukan telah disemak. Simpan inventori, laluan ujian dan penemuan yang belum selesai bersama-sama. Rekod itu menjadikan audit seterusnya boleh dilaksanakan: mesej yang berubah mempunyai lokasi, argumen yang dijangka, variasi yang diperlukan dan cara yang boleh diulang untuk memeriksa paparannya.
Sumber
- Menyetempatkan dan mempelbagaikan teks dengan katalog rentetan — Apple Developer
- Menyediakan teks app anda untuk terjemahan — Apple Developer
- Menambah sokongan untuk bahasa dan rantau — Apple Developer
- Menemui Katalog Rentetan — Apple Developer
- Mengeksport penyetempatan — Apple Developer
- LocalizedStringKey — Apple Developer
- Text — Apple Developer
- Menyediakan paparan untuk penyetempatan — Apple Developer
- Menguji penyetempatan semasa menjalankan app — Apple Developer
- Mempratonton penyetempatan — Apple Developer