នៅក្នុងភាសា 14 ក្នុងចំណោម 42 ភាសារបស់យើង ទម្រង់ពហុវចនៈដែលហៅថា "one" មិនមែនសម្រាប់តែលេខ 1 នោះទេ

ភាសា

ខ្សែអក្សរ "%d habits left today" គឺជាដៃគូពហុវចនៈនៃខ្សែអក្សរ "One habit left today" របស់កម្មវិធីមួយ។ Android ជ្រើសរើសរវាងពួកវាតាមប្រភេទ៖ ភាសាអង់គ្លេសប្រើ "one" សម្រាប់លេខ 1 និង "other" សម្រាប់អ្វីៗទាំងអស់ផ្សេងទៀត។ នៅក្នុងភាសារុស្ស៊ី ប្រភេទ "one" ត្រូវបានប្រើសម្រាប់លេខ 1, 21, 31, 41 ជាដើម។ ការត្រួតពិនិត្យការបកប្រែរបស់យើងបានធ្វើខុសពីរដងនៅថ្ងៃតែមួយ ម្តងក្នុងទិសដៅម្ខាង។

ការបកប្រែត្រឹមត្រូវដែលវាបានបដិសេធ

នៅថ្ងៃទី 2 ខែវិច្ឆិកា យើងបានដំណើរការឈុតកម្មវិធីបកប្រែរបស់យើងលើកម្មវិធីឧទាហរណ៍របស់វាម្តងទៀត។ សម្រាប់ "one" ជាភាសារុស្ស៊ី គំរូបានសរសេរ "Осталась %d привычка на сегодня"៖ "%d habit left today" ជាមួយនឹងលេខ។ ការត្រួតពិនិត្យរបស់យើងបានប្រៀបធៀបវាជាមួយទម្រង់ "one" ជាភាសាអង់គ្លេស បានរកឃើញ %d ដែលភាសាអង់គ្លេសមិនមាន ហើយបានបដិសេធវាជា placeholder ដែលត្រូវបានបង្កើតឡើងថ្មី។ គំរូត្រឹមត្រូវ។ អ្នកប្រើប្រាស់ដែលមានទម្លាប់ 21 នៅសល់ទទួលបានទម្រង់នេះ ដូច្នេះវាត្រូវបង្ហាញលេខ។ យើងបានផ្លាស់ប្តូរការត្រួតពិនិត្យ៖ ទម្រង់មួយអាចបន្ថែមចំនួនដែលទម្រង់ "other" ជាភាសាអង់គ្លេសប្រើ។ ការដំណើរការបន្ទាប់បានសរសេរខ្សែអក្សរទាំង 350 នៃឧទាហរណ៍។

ការបកប្រែខុសដែលវានឹងអនុញ្ញាតឱ្យឆ្លងកាត់

ការត្រួតពិនិត្យដូចគ្នាបានអនុញ្ញាតឱ្យផ្ទុយពីនេះឆ្លងកាត់។ ប្រសិនបើគំរូបានសរសេរ "Осталась одна привычка" ("one habit left") គ្មានអ្វីត្រូវបានបាត់បង់នៅក្នុងខ្សែអក្សរទេ ដូច្នេះវាបានឆ្លងកាត់ ហើយអ្នកប្រើប្រាស់ដែលមានទម្លាប់ 21 នៅសល់នឹងត្រូវបានប្រាប់ថាពួកគេមានមួយ។ ច្បាប់ចាស់បានអនុញ្ញាតឱ្យទម្រង់ "one" ណាមួយលុបលេខចេញ ព្រោះនៅក្នុងភាសាអង់គ្លេស "one" គឺមានតែលេខ 1 ប៉ុណ្ណោះ។

ឥឡូវនេះ ការត្រួតពិនិត្យដឹងថាប្រភេទនីមួយៗគ្របដណ្តប់លើលេខណាខ្លះ ដោយផ្អែកលើ CLDR ដែលជាច្បាប់ពហុវចនៈ Unicode ដែល Android និង ICU ប្រើ។ ទម្រង់សម្រាប់ប្រភេទដែលគ្របដណ្តប់លើលេខច្រើនត្រូវបង្ហាញលេខ។ ទម្រង់សម្រាប់លេខតែមួយអាចលុបវាចេញបាន៖ "one" ជាភាសាអាល្លឺម៉ង់គឺមានតែលេខ 1 ដូច្នេះ "Noch eine Gewohnheit" គឺល្អនៅទីនោះ។

កន្លែងដែល "one" មិនមែនគ្រាន់តែជាលេខ 1

នៅក្នុងភាសាគោលដៅ 14 ក្នុងចំណោម 41 ភាសាដែលទិន្នន័យ CLDR នៅក្នុង Babel 2.10 ដឹង "one" គ្របដណ្តប់លើលេខច្រើនជាងលេខ 1៖

នៅក្នុងសារ ICU មែកធាងមួយរបស់វាផ្លាស់ប្តូររឿងនេះ។ ជាមួយនឹង =0{…} នៅក្នុងសារ "one" ជាភាសាបារាំងត្រូវបានទុកឱ្យនៅសល់តែលេខ 1 ហើយការត្រួតពិនិត្យគិតគូរពីរឿងនោះ។

ត្រួតពិនិត្យប្រៀបធៀបជាមួយខ្សែអក្សររបស់ Android ខ្លួនឯង

មុននឹងដំណើរការបទបញ្ជា យើងបានសាកល្បងវាលើសារពហុវចនានុក្រមនៅក្នុងខ្សែអក្សរក្រមូលនៃ Android framework: ការបកប្រែចំនួន 897 ក្នុងភាសា 39 របស់យើង។ វាមិនបានរកឃើញកំហុសណាមួយឡើយ។ អ្នកបកប្រែរបស់ Google បានដាក់លេខនៅក្នុងគ្រប់មែកធាងដែលគ្របដណ្តប់លើលេខច្រើន រួមទាំងពាក្យ "one" របស់ភាសារុស្ស៊ី ទោះបីជាភាសាអង់គ្លេសផ្តល់ឱ្យលេខ 1 នូវមែកធាងដាច់ដោយឡែករបស់វាក៏ដោយ។ នៅពេលដែលយើងបានដកលេខចេញពីមែកធាង "one" របស់ភាសារុស្ស៊ីមួយដោយដៃ ការត្រួតពិនិត្យបានបង្ហាញថាទម្រង់នេះត្រូវបានប្រើសម្រាប់លេខ 21, 31, 41 និង 51 ផងដែរ។

បទបញ្ជានេះមាននៅក្នុង translation-checks 1.2.0 ដែលមានឥតគិតថ្លៃនៅលើ GitHub សម្រាប់សារ ICU និងនៅក្នុង Polyglot 1.2.0 សម្រាប់ពហុវចនានុក្រម Android និងសារ ICU ទាំងពីរ។ ការត្រួតពិនិត្យផ្សេងទៀតដែលយើងបានបន្ថែមនៅសប្តាហ៍នេះ មាននៅក្នុង កំណត់សម្គាល់អំពីអក្សរនៃអក្សរសាស្ត្រផ្សេង។

បានធ្វើបច្ចុប្បន្នភាព: