យើងបានពិនិត្យម៉ាស៊ីនបកប្រែទាំងអស់។ ការពិនិត្យទាំងនោះហើយដែលខុស។
ភាសា
មុនពេលចេញផ្សាយឈុតកម្មវិធីបកប្រែរបស់យើង យើងបានដំណើរការវាលើកម្មវិធីឧទាហរណ៍តូចមួយ៖ 70 ខ្សែអក្សរក្នុងទម្រង់ប្រាំមួយ (JSON, Flutter ARB, Android, Apple .strings, gettext និង Markdown) ទៅជាភាសាអាល្លឺម៉ង់ រុស្ស៊ី ជប៉ុន អារ៉ាប់ និងអេស្ប៉ាញ ដោយប្រើគំរូបើកចំហទំហំ 27 ពាន់លានប៉ារ៉ាម៉ែត្រនៅលើម៉ាស៊ីនរបស់យើង។ ខ្សែអក្សរដែលបានបកប្រែទាំងអស់ត្រូវបានពិនិត្យមុននឹងត្រូវបានសរសេរ។ បួនក្នុងចំណោម 350 ខ្សែអក្សរត្រូវបានបដិសេធ។ ការបដិសេធទាំងបួននោះខុស។
អ្វីដែលការពិនិត្យស្វែងរក
ការបកប្រែដែលធ្វើឱ្យកម្មវិធីដំណើរការខុស គឺអាក្រក់ជាងគ្មានការបកប្រែ ដូច្នេះខ្សែអក្សរនីមួយៗត្រូវរក្សាទុកកន្លែងទំនេររបស់វា (%1$s, {name}, {{count}}) ស្លាក ការបញ្ឈប់បន្ទាត់ និង URL របស់វា; វាត្រូវស្ថិតនៅក្នុងអក្សររបស់ភាសាគោលដៅ; វាមិនត្រូវទទេ វែងពេក ឬនៅសល់ជាភាសាអង់គ្លេសទេ; និងទម្រង់ពហុវចនៈត្រូវគ្របដណ្តប់លើប្រភេទដែលភាសានោះមានឱ្យបានត្រឹមត្រូវ។ ខ្សែអក្សរដែលបរាជ័យត្រូវបានស្នើសុំឡើងវិញដោយបញ្ជាក់ពីបញ្ហា ហើយខ្សែអក្សរដែលបរាជ័យម្តងទៀតត្រូវបានទុកចោល ដូច្នេះកម្មវិធីបង្ហាញជាភាសាអង់គ្លេសសម្រាប់ខ្សែអក្សរនោះ។
ការបដិសេធទាំងបួន
- ពាក្យ "Backups" ជាភាសាអាល្លឺម៉ង់គឺ "Backups"។ ការពិនិត្យបានហៅវាថាមិនទាន់បកប្រែ។ ភាសាអាល្លឺម៉ង់ប្រើពាក្យអង់គ្លេស។ ពាក្យដូចគ្នាមួយគឺត្រឹមត្រូវជាញឹកញាប់; ពាក្យដូចគ្នាពីរ ឬច្រើនជាងនេះមិនត្រឹមត្រូវទេ ដូច្នេះនេះគឺជាច្បាប់ឥឡូវនេះ។
- បន្ទាត់រុស្ស៊ី និងជប៉ុនមួយដែលមានអាសយដ្ឋានអ៊ីមែល បានបរាជ័យការពិនិត្យអក្សរ៖ តិចជាង 60% នៃអក្សរគឺជាអក្សរស៊ីរីលីក ឬជប៉ុន ព្រោះ
[email protected]សរសេរជាអក្សរឡាតាំង។ ឥឡូវនេះអាសយដ្ឋានត្រូវបានចាត់ទុកដូចជាកន្លែងទំនេរ៖ ពួកវាត្រូវត្រឡប់មកវិញដោយមិនផ្លាស់ប្តូរ ហើយពួកវាមិនត្រូវបានរាប់ជាអក្សរទេ។ - សារពហុវចនៈជប៉ុនមួយ ត្រូវបានបញ្ជូនត្រឡប់មកវិញជា
{count, plural, =0{連続記録なし} other{{count}日連続}}។ សាខា{連続記録なし}គ្មានចន្លោះទេ ដូច្នេះគំរូកន្លែងទំនេរបានចាត់ទុកវាជាអថេរឈ្មោះ 連続記録なし។ វង់ក្រចកសាខាក្នុងសារពហុវចនៈឥឡូវនេះជារចនាសម្ព័ន្ធ ហើយឈ្មោះកន្លែងទំនេរត្រូវតែជា ASCII។
នៅពេលដែលការពិនិត្យត្រូវបានកែតម្រូវ ការដំណើរការលើកទីពីរបានស្នើសុំគំរូសម្រាប់តែខ្សែអក្សរបួននោះ ដោយសារអ្វីៗទាំងអស់ផ្សេងទៀតស្ថិតនៅក្នុងអនុស្សាវរីយ៍បកប្រែ ហើយបានសរសេរខ្សែអក្សរទាំង 350 ក្នុងរយៈពេល 45 វិនាទី។
ផ្នែកដែលយើងរំពឹងថានឹងបរាជ័យ ប៉ុន្តែមិនបានបរាជ័យ
ពហុវចនៈគឺជាកន្លែងដែលការបកប្រែដោយមិនប្រុងប្រយ័ត្នតែងតែបរាជ័យ៖ ភាសាអង់គ្លេសមានទម្រង់មួយ និងទម្រង់ផ្សេងទៀត ភាសារុស្ស៊ីមានទម្រង់មួយ តិច ច្រើន និងទម្រង់ផ្សេងទៀត ភាសាអារ៉ាប់មានប្រភេទចំនួនប្រាំមួយ ហើយភាសាជប៉ុនមានតែទម្រង់តែមួយ។ យើងបានស្នើសុំយកតែប្រភេទរបស់ភាសាគោលដៅតែប៉ុណ្ណោះ ហើយបានពិនិត្យមើលកន្លែងទុកទិន្នន័យ (placeholders) នៃទម្រង់នីមួយៗ។ គំរូបានសរសេរ "1 день, 2 дня, 5 дней" សម្រាប់ភាសារុស្ស៊ី និងទម្រង់អារ៉ាប់ទាំងប្រាំមួយ។ ពហុវចនៈ Android ទាំងអស់បានឆ្លងកាត់ការពិនិត្យនៅលើកដំបូងគ្រប់ភាសាទាំងប្រាំ ហើយសារពហុវចនៈទាំងអស់ក៏បានឆ្លងកាត់ដែរ លើកលែងតែសារភាសាជប៉ុនដែលការពិនិត្យរបស់យើងបានអានខុស។
អ្វីដែលការពិនិត្យមិនអាចចាប់បាន
បន្ទាប់មក យើងបានបកប្រែឈុតអក្សរវេបសាយចំនួន 22 ពីឧទាហរណ៍ទៅជាភាសាទាំង 42 ដែល Polyglot ចេះ៖ ឈុតអក្សរចំនួន 924 ក្នុងចំណោម 924 បានឆ្លងកាត់ការពិនិត្យ។ ពេលអានពួកវា មានមួយបានលេចធ្លោ។ ក្នុងភាសាខ្មែរ ឃ្លា "You are offline" ត្រូវបានបកប្រែត្រឡប់មកវិញជាប្រយោគដែលមានន័យថា "អ្នកកំពុងតភ្ជាប់អនឡាញ"។ វាជាប្រយោគខ្មែរដែលមានរចនាសម្ព័ន្ធត្រឹមត្រូវ ក្នុងអក្សរខ្មែរត្រឹមត្រូវ ដោយគ្មានអ្វីខ្វះខាត ដូច្នេះការពិនិត្យទាំងអស់បានអនុញ្ញាតឱ្យវាឆ្លងកាត់។ ការពិនិត្យចាប់បានអ្វីដែលធ្វើឱ្យកម្មវិធីខូច ប៉ុន្តែន័យខុសត្រូវការមនុស្សដែលអានភាសានោះបាន។
ចំណុចសំខាន់
ការពិនិត្យស្វ័យប្រវត្តិលើលទ្ធផលដែលបង្កើតដោយម៉ាស៊ីន ត្រូវការលទ្ធផលពិតប្រាកដដើម្បីយកមកធៀប។ ការធ្វើតេស្តឯកតា (Unit tests) ជាមួយការបកប្រែដែលបង្កើតឡើងដោយកុន បានឆ្លងកាត់ ប៉ុន្តែគំរូពិតប្រាកដមួយដែលសរសេរភាសាជប៉ុនពិតប្រាកដ បានរកឃើញចន្លោះប្រហោងក្នុងរយៈពេលប៉ុន្មាននាទី។ Polyglot ត្រូវបានដាក់ចេញជាមួយការពិនិត្យទាំងនេះ ដែលបានជួសជុលរួច ព្រមទាំងការធ្វើតេស្តសម្រាប់ករណីទាំងបួន។