You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The glossary keeps list, type and Boolean in English but says nothing about object or module #58
L02 reported 144 entries whose translation is the English verbatim. #49 triaged them into two piles, and the exemption moved 54 rather than the 38 that triage predicted. The extra 16 are type (12) and Boolean (4), which the glossary already holds as keep_en and which #49 had counted as real findings.
The glossary wins, because it is the written decision and the check is only reading it. But the rows are not consistent with each other:
term
in the glossary
L02 today
list
kept
exempt
type
kept
exempt
Boolean
kept
exempt
object
absent
36 findings
module
absent
41 findings
All five are the same thing in the corpus: a Sphinx index category, generated from .. index:: object: bytearray and the like, sitting one entry away from the identifier it categorises. Here is one such cluster from c-api/intro.po:
builtins and sys name modules and stay in English. module is the English word for the category and wants translating. object and type are the same pair one level up, and the glossary currently keeps one and has no opinion about the other.
So somebody has to decide, per word, whether the Vietnamese documentation says kiểu or type, and đối tượng or object. That is terminology work and not a code change. What the code can do is stop the two answers coexisting, which is what G03 now does for the kept side.
There is a second, smaller thing in the same measurement. Lists is still reported 3 times while list is kept, because the whole-msgid match in L02 is exact and an inflected or capitalised form misses it. That is deliberate for now, a hard check that exempts loosely is worse than one that reports 3 extra entries, but it is the same shape as the inflectional-divergence check G-g was filed for.
Decide object and module, and add whichever rows the decision produces
Re-read type and Boolean against that decision, since they were curated before the index-category pattern was understood
Decide whether L02's whole-msgid match should fold case and inflection, or whether Lists is corpus work
All three boxes, and the first one turned out to be the wrong question. The issue asked which of object and module should be kept in English, on the assumption that a word gets one answer. Reading the rest of the keep_en list showed that six of them need two.
float is số thực in a sentence. float on its own is a cell in the struct format-code table, sitting between _Float16 and f. type is kiểu in a sentence and the argparse keyword in a table of argparse keywords. list is danh sách in a sentence and a cell in the json conversion table next to array. While L02 read keep_en a row could only say one of those, and the one that got written was whichever silenced the louder check. That is why G03 was reporting 71 correct translations of type, list and float as glossary violations.
So Term gained identifier and L02 reads Glossary.standalone, which is keep_en or identifier. No existing row changed meaning: a term that is English in every sentence is English on its own too.
object and module. Measured over the pinned mirror, counting prose the matcher finds the term in and masking markup on the Vietnamese side:
term
Vietnamese
English
object
đối tượng 63
object 46
list
danh sách 34
list 15
type
kiểu 30
type 16
float
số thực 4
float 4
module
mô-đun 17
module 64
object goes to đối tượng and does not get identifier, because 35 of its 36 standalone entries are the index category and read "bytearray (object)" to somebody using the index. The one exception is the JSON conversion table.
module had no majority and did not get one by area either, so it is decided on the reason. mô-đun is module spelled with a hyphen and carries nothing a reader does not already get from module, where đối tượng, kiểu, danh sách and số thực are Vietnamese words that mean something. bytecode, docstring, iterable, lambda, traceback and REPL are already kept on that reasoning.
type and Boolean re-read.type moved to kiểu with identifier. Boolean did not move: its 4 standalone entries are index categories and the 3 prose entries that mention it all leave it in English, so the row was right.
Lists. No folding. It is a section heading three times, each followed by prose beginning "Lists are mutable sequences", and a heading is translated. A hard check that exempts loosely is worse than one that reports 3 entries somebody has to translate. G-g still stands as filed for the inflection question in general.
What moved.L02 86 to 45, which is the hard one. G03 94 to 103, G02 191 to 339, G04 143 to 313, all soft. 41 hard findings traded for 327 soft ones, and the soft ones are the work list: 198 of the 362 new ones are machine output from the 2026-08-17 tier 1 run, and 65 of G03's 103 are the model writing mô-đun because nothing told it not to. The next run clears those. The remaining 164 are human translations disagreeing with each other.
reports/quality.md now says 0.19 misses per machine entry rather than 0.05, and the reason it said 0.05 is that the glossary had nothing to say about the words the model was getting wrong.
import, slice and callable are the same shape as float and are left as they are. Their Vietnamese moves with the part of speech, nhập for the verb and import for the noun in "hệ thống import", and a row naming one rendering would fail G02 on the other. Filed as the next thing rather than guessed at here.
Activity
tamnd commentedon Aug 18, 2026
Done in #60 and content tamnd/python-docs-vi-machine-translation#56.
All three boxes, and the first one turned out to be the wrong question. The issue asked which of
objectandmoduleshould be kept in English, on the assumption that a word gets one answer. Reading the rest of thekeep_enlist showed that six of them need two.floatissố thựcin a sentence.floaton its own is a cell in thestructformat-code table, sitting between_Float16andf.typeiskiểuin a sentence and theargparsekeyword in a table ofargparsekeywords.listisdanh sáchin a sentence and a cell in thejsonconversion table next toarray. WhileL02readkeep_ena row could only say one of those, and the one that got written was whichever silenced the louder check. That is whyG03was reporting 71 correct translations oftype,listandfloatas glossary violations.So
TermgainedidentifierandL02readsGlossary.standalone, which iskeep_en or identifier. No existing row changed meaning: a term that is English in every sentence is English on its own too.objectandmodule. Measured over the pinned mirror, counting prose the matcher finds the term in and masking markup on the Vietnamese side:objectđối tượng63object46listdanh sách34list15typekiểu30type16floatsố thực4float4modulemô-đun17module64objectgoes tođối tượngand does not getidentifier, because 35 of its 36 standalone entries are the index category and read "bytearray (object)" to somebody using the index. The one exception is the JSON conversion table.modulehad no majority and did not get one by area either, so it is decided on the reason.mô-đunismodulespelled with a hyphen and carries nothing a reader does not already get frommodule, wheređối tượng,kiểu,danh sáchandsố thựcare Vietnamese words that mean something.bytecode,docstring,iterable,lambda,tracebackandREPLare already kept on that reasoning.typeandBooleanre-read.typemoved tokiểuwithidentifier.Booleandid not move: its 4 standalone entries are index categories and the 3 prose entries that mention it all leave it in English, so the row was right.Lists. No folding. It is a section heading three times, each followed by prose beginning "Lists are mutable sequences", and a heading is translated. A hard check that exempts loosely is worse than one that reports 3 entries somebody has to translate.G-gstill stands as filed for the inflection question in general.What moved.
L0286 to 45, which is the hard one.G0394 to 103,G02191 to 339,G04143 to 313, all soft. 41 hard findings traded for 327 soft ones, and the soft ones are the work list: 198 of the 362 new ones are machine output from the 2026-08-17 tier 1 run, and 65 ofG03's 103 are the model writingmô-đunbecause nothing told it not to. The next run clears those. The remaining 164 are human translations disagreeing with each other.reports/quality.mdnow says 0.19 misses per machine entry rather than 0.05, and the reason it said 0.05 is that the glossary had nothing to say about the words the model was getting wrong.import,sliceandcallableare the same shape asfloatand are left as they are. Their Vietnamese moves with the part of speech,nhậpfor the verb andimportfor the noun in "hệ thống import", and a row naming one rendering would failG02on the other. Filed as the next thing rather than guessed at here.