Repository navigation
Add Italian translation #257
Description
Activity
I'm very glad to help out with the Italian translations.
I'll build an initial translation in the next day or two and let you know the details.
I know a little about the LAMBDA math code, but I need a specification as to how the MathML maps to its linear format (I didn't see anything at https://www.lambdaproject.org/). I just finished implementing the German LaTeX braille code. For that, I didn't translate directly to the braille dots, but instead to the ASCII chars for LaTeX and then let the current braille mapping table do the translation. I was told that was preferable because each country that might the LaTeX use this would have different 8-dot mappings, or might use a 6-dot mapping. I suspect something similar is desirable for the LAMBDA code. Is that true?
Thanks for letting me know. At
www.veia.it
you can download Lambda 1.44, which does contain an XML specification with all Braille markup code. Do not use Lambda 2, as everything's embedded in the executable file in that specific version.Thanks!
I've created an "it" branch. Clone MathCAT and checkout that branch. There are instructions for translators here. Here's a short list:
- Go to Rules/Languages/it
- Open unicode.yaml and look through the translations. They are likely mostly good. If a translation is good, change the "t: ..." to "T: ...". This marks the translation as having been verified that it is good. There are some if tests for some things and those translations are more likely to be not as good. Hopefully the syntax is understandable.
- Open SimpleSpeak_Rules.yaml and again look through the translations (search for "t: "). Again, there are tests here such as for Verbosity and for Blindness. English often uses "the square root of ..." in a verbose setting, but in a terse one, it might be shortened to "square root x" (dropping "the" and "of"). If Italian never uses those extra words, just use an empty string. In a second pass, we can talk about making the rules more natural for Italian.
- Open all the files in SharedRules and do the same thing as for SimpleSpeak_Rules.yaml
- Open definitions.yaml. This has words for cardinal numbers (one, two, three...) and ordinal numbers (first, second, third...). Also for words used in fractions ("half", ...). These translations are likely correct, but there might be some bad ones.
At any point, you can test these out in NVDA if you have the MathCAT addon. After installing the addon, to test, copy the 'it' directory to
%AppData%\nvda\addons\MathCAT\globalPlugins\MathCAT\Rules\Languages. Start NVDA or if it is running, restart NVDA (or you can go to/click on NVDA:Tools:Reload Plugins). If you have an Italian voice, it should use the Italian speech rules. Go to any page with MathML (e.g, https://it.wikipedia.org/wiki/Equazione_di_secondo_grado) and the math should be spoken in Italian. If NVDA+MathPlayer works with LAMBDA, NVDA+MathCAT should also, so that would be another source of math. If NVDA says there is an error in speaking the math, open the NVDA log (NVDA+F1). The message is a little bit hard to understand, but it will hopefully guide you to a place where you have a typo (e.g, accidentally deleted a quote mark).A similar process applies to MathCAT in JAWS. However, I haven't used JAWS much and not with MathCAT at all. I'm not sure where the MathCAT files are stored, but wherever that is, a similar process (copy the files to Rules/Languages/it) as with NVDA should be followed. I'm not sure if it picks up the Italian voice automatically. In NVDA, that's code that I wrote.
Good luck. If you want to do a teleconference call some time, I can walk you through the process and that might clear up some questions. In a few hours, you might have something that speaks ok for some expressions and in a few days, does ok for many common expressions. To get a really natural translation, you may want to add or delete some rules and I can talk you through those or write them for you with your input.
At some point, you should do some work on unicode-full.yaml. This is where less commonly used characters can be found. It is a huge file (~3,600 lines), so you may want scan through every now and then when you are feeling a little bored and translate characters you think are really poorly translated (anything marked with 'google translation' is more likely poorly translated).
And also we can talk about whether it makes sense to implement ClearSpeak or some other speech style.
Thanks for letting me know. At www.veia.it you can download Lambda 1.44, which does contain an XML specification with all Braille markup code.
I only see options for LAMBDA 2, BM2021, and EBKey. I tried BM2021 in the hopes that was old version, but after downloading, I see the "BM" stands for "Braille Music", so that's not the right thing. The EBKey description also indicates that's right either. I didn't see anything else that I could download. Can you clarify what I should get?
- Hello, I’ll start working on this today. I won’t do Unicode and Unicode Full first, because Freedom will run those through a script which takes the translations directly from JAWS, which I’ve curated manually hence I don’t need to do the work twice. Tommaso
- Hello, my initial commit should be present in the dedicated fork, IT branch. I have taken care of all files, except Unicode and Unicode full, as I said, which will be handled via scripts that fetch the info from JAWS. So far all seems to play well and the math speaks very well in Italian. I should say that my testing has been on a limited subset of Wikipedia pages, and should continue in the next days. So far, I have found a problem with an untranslatable string, “out of” This string speaks when you up arrow out of an inner element (e.g. denominator). Could you please tell me where to fix this string so it speaks in correct Italian? As for the Braille, I’ve retrieved the correct link for lambda 1.44, which has been removed from thehomepage. The link is https://veia.it/it/scarica_lambda You should be able to get the program there. Let’s proceed and test further! Best regards Cordiali Saluti Tommaso Nonis Vision Dept S.r.l. Via G.B. Morgagni,6 20129 Milano T 02-29.53.48.62 Web: <http://www.visiondept.it/> VisionDept.it Iscriviti alla <http://www.visiondept.it/about.html#mc_embed_signup> NewsLetter <https://www.facebook.com/VisionDeptSrl/> <https://www.instagram.com/visiondept/> <https://twitter.com/visiondept1> <https://www.visiondept.it/cert_jaws_index.html>
@Tnonis90 : I don't see your commit. Did you forget to do a "git push"?
Also, I think I answered this:
So far, I have found a problem with an untranslatable string, “out of” This string speaks when you up arrow out of an inner element (e.g. denominator). Could you please tell me where to fix this string so it speaks in correct Italian?
In case I didn't, you need to translate navigate.yaml -- I left that out of my shortened instructions by accident.
- I pushed it using Github desktop to the IT branch. The sha is: 21ebc2e And the commit name is Initial Italian Translation. Do you still have issues locating it? We can maybe look into seeing what was wrong there. Tommaso
When I click on your SHA, the top of the page says "This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository."
I need to get some sleep now. If you don't beat me to it, I'll look into what's going on when I get up and see if I can correct it/bring it into the repo.
I asked my git-savy son for help and the only thing we could come up with is to essentially clone things and copy files over. That's error-prone.
If you created a fork, and committed your changes there, I could do something, but I'd need to know what your fork is.
Maybe you can try and do a pull request from your repo or branch into the MathCAT repo. That would likely be the shortest path to getting this right. One place I saw says that the error sometimes comes from pushing a tag, not a branch.
- Before making more mistakes, I believe it’d be better to do a conference call. What time would suit you best? I’m six hours after eastern time Tommaso
- Ok, it looks like I created my own repo and that’s where the branch is. What’s the shortest path to bring the IT branch into the NSoiffer/MathCat? Tommaso
Probably the best path is to do a "Pull Request" (on top, third item after "code" and "issues") on your repo's page. It will probably suggest what to do. If not click "New pull request" (on top right) and then choose the "...compare across forks" link.
- I hope I’ve done this correctly Tommaso
As you probably saw, I merged your code into the 'it' branch. I know you want to use the JAWS character translations for the characters they have. However, if you think the current files are good enough to use until you do more work, let me know and I'll merge the 'it' branch into main.
21 remaining items
- Hello, I’d be happy to jump back on board with this as well. Neil, I tried to contact you with a Braille sample of the Lambda code. The problem is, right now, that the only code that is *really* used in Italy is the Lambda math code, which is what both Lambda and Edico (two main software packages for math) are adopting. I strongly believe that this is what we should be using in Mathcat. I did extract a compendium of the Lambda math code. Neil, should I re-send you a sample of that? Tommaso Nonis Cordiali Saluti Tommaso Nonis Vision Dept S.r.l. Via G.B. Morgagni,6 20129 Milano T 02-29.53.48.62 Web: VisionDept.it<http://www.visiondept.it/> Iscriviti alla NewsLetter<http://www.visiondept.it/about.html#mc_embed_signup> [logo-face]<https://www.facebook.com/VisionDeptSrl/> ***@***.*** <https://www.instagram.com/visiondept/> [logo-twitter] <https://twitter.com/visiondept1> [JAWS Certified, 2024]<https://www.visiondept.it/cert_jaws_index.html> Da: Cristian Consonni ***@***.***> Inviato: lunedì 22 settembre 2025 02:21 A: NSoiffer/MathCAT ***@***.***> Cc: Tommaso Nonis ***@***.***>; Mention ***@***.***> Oggetto: Re: [NSoiffer/MathCAT] Add Italian translation (Issue #257) [https://avatars.githubusercontent.com/u/367272?s=20&v=4]CristianCantoro left a comment (daisy/MathCAT#257)<#257 (comment)> I am working on this and I have created PR #405<#405>. — Reply to this email directly, view it on GitHub<#257 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BG7SQRPUJH5UWU2MVMAW2TL3T46F5AVCNFSM6AAAAACGZZHW6SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTGMJWGM3TSNJSGI>. You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
I have created a new pull request #407, which rebases the translation commits onto the current main.
What’s still needed is a full review and update of all translation files. Since the it branch was originally created in November 2024, some strings have changed in main, so these need to be translated. In addition, any missing translations should be completed.
Once that’s done, we can proceed to test the translations with both NVDA and Rust.
- Can you contact me privately at ***@***.******@***.***> To further discuss steps? Cordiali Saluti Tommaso Nonis Vision Dept S.r.l. Via G.B. Morgagni,6 20129 Milano T 02-29.53.48.62 Web: VisionDept.it<http://www.visiondept.it/> Iscriviti alla NewsLetter<http://www.visiondept.it/about.html#mc_embed_signup> [logo-face]<https://www.facebook.com/VisionDeptSrl/> ***@***.*** <https://www.instagram.com/visiondept/> [logo-twitter] <https://twitter.com/visiondept1> [JAWS Certified, 2024]<https://www.visiondept.it/cert_jaws_index.html> Da: Cristian Consonni ***@***.***> Inviato: mercoledì 24 settembre 2025 16:20 A: NSoiffer/MathCAT ***@***.***> Cc: Tommaso Nonis ***@***.***>; Mention ***@***.***> Oggetto: Re: [NSoiffer/MathCAT] Add Italian translation (Issue #257) [https://avatars.githubusercontent.com/u/367272?s=20&v=4]CristianCantoro left a comment (daisy/MathCAT#257)<#257 (comment)> I have created a new pull request #407<#407>, which rebases the translation commits onto the current main. What’s still needed is a full review and update of all translation files. Since the it branch was originally created in November 2024, some strings have changed in main, so these need to be translated. In addition, any missing translations should be completed. Once that’s done, we can proceed to test the translations with both NVDA and Rust. — Reply to this email directly, view it on GitHub<#257 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BG7SQRNWDV5HOG2W3QNV4R33UKR7PAVCNFSM6AAAAACGZZHW6SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTGMRYG43DKNBWGY>. You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
I have created a new pull request #409, which updates all the files in the
itfolder, with the exception ofunicode-full.yaml.Sorry it took me so long to get to this. The next step is to add at least a few tests so that I can rule out simple mistakes like syntax errors. See https://nsoiffer.github.io/MathCAT/helpers.html#automatic-tests-for-your-translation.
I ran one example and it uncovered some bad indentation and also a missing file (SharedRules/calculus.yaml -- it needs translation but it is small). I have pushed this to my 'it' branch, so you should pull from there.
If you can't run Rust, let me know and I'll run a few files and send you the output. You can then copy over any correct results (as per the instructions I've pointed to) or try to fix the problem. I can help if fixing the problem is not obvious.
- addedrulesPertains to RulesPertains to RulestranslationLanguage translation of math/codeLanguage translation of math/code
on Mar 6, 2026 @CristianCantoro, @Tnonis90: As you may have noticed the repo is now under the DAISY umbrella. DAISY has some funds to do translations for MathCAT that must be used by June 30. Are either of you able to write the tests and finish the Italian (speech) translations by June 30? If not one of you two, do you know people who can?
@NSoiffer sorry for coming back to this issue so late, but the last few months have been quite complicated for me. I never had the time to look into the Rust test, but I see that the new setup has automated CI/testing, so that maybe is not needed anymore?
I have created pull request #695, to clean up some files in the
itbranch. In that branch, there is also a file calledClearSpeak_Rules-bk.yamlwhich looks like a backup file that has been left there and maybe it can be deleted?At the moment, the only file that is missing to be translated is
unicode-full.yaml. I had already started working on it, but I haven't committed my changes yet.@NSoiffer, I am reading the instructions and I have run
audit-translationson theitfiles.However, I am not sure what I need to do with that output, some guidance would be appreciated.
If I run the following command:
uv run --project PythonScripts audit-translations it --exclude unicode-full.yamlI get the following output audit-translations_it.log.
For example,for the file
SharedRules/default.yamlI get these warnings──────────────────────────────────────────────────────────────────────────────────────────────────────── ⚠ SharedRules/default.yaml en: 37 rules → it: 36 rules ──────────────────────────────────────────────────────────────────────────────────────────────────────── ≠ Rule Issues [11] (grouped by rule and issue type) • nofix-intent (*) Missing in Translation [1] • (line 655 in en) • default (mi) Untranslated Text [1] • (line 63 it) "text()" Condition Differences [1] • (line 63 en, 60 it) Conditions differ • default (menclose) Untranslated Text [1] • (line 531 it) "'x'" • default (mn) Condition Differences [1] • (line 46 en, 40 it) Conditions differ Structure Differences [1] • (line 43 en, 43 it) Rule structure differs (test/if/then/else blocks) • default (mtd) Condition Differences [1] • (line 475 en, 472 it) Conditions differ Structure Differences [1] • (line 486 en, 482 it) Rule structure differs (test/if/then/else blocks) • silent-intent (*) Match Pattern Differences [1] • (line 647 en, 633 it) Match pattern differs • function-intent (*) Condition Differences [1] • (line 726 en, 700 it) Conditions differ Structure Differences [1] • (line 735 en, 705 it) Rule structure differs (test/if/then/else blocks)what am I supposed to do with this?
hi @CristianCantoro, sorry for the late reply.
You can think of the audit-translations tool like a less noisygit difffor translators.
The main way to is it is to just go through the differences and see if any of them stick out as a likely bug.
If not, then they can be marked as ok using the comment# audit-ignore.
I think we have some updated guides for translators since you wrote this?
If no, I think the best would be to reach out to other translators of the MathCAT project, as they have more practical experience than I do.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIn progress
Hello @NSoiffer ,
this is Tommaso from VisionDept SRL., the italian distributor for Vispero / JAWS. We are interested in tackling the Italian for MathCAT, and are ready to start translating.
Regarding speech, I kindly ask you to set up the environment with the automatic translations, so we can start out.
As for Braille, we'd need a discussion on what code to choose: in italy, almost everyone nowadays uses the LAMBDA Math Code (Italian version). Do you happen to have any familiarity with that?
Thanks a lot, and ook forward to getting started with this.
Tommaso