Skip to content

Add Italian translation #257

Description

@Tnonis90

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

Activity

  1. NSoiffer commented on Mar 19, 2024

    @NSoiffer
    Collaborator

    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?

  2. Tnonis90 commented on Mar 22, 2024

    @Tnonis90
    ContributorAuthor

    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!

  3. NSoiffer commented on Mar 23, 2024

    @NSoiffer
    Collaborator

    I've created an "it" branch. Clone MathCAT and checkout that branch. There are instructions for translators here. Here's a short list:

    1. Go to Rules/Languages/it
    2. 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.
    3. 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.
    4. Open all the files in SharedRules and do the same thing as for SimpleSpeak_Rules.yaml
    5. 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.

  4. NSoiffer commented on Mar 24, 2024

    @NSoiffer
    Collaborator

    @Tnonis90

    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?

  5. Tnonis90 commented on Mar 25, 2024

    @Tnonis90
    ContributorAuthor
  6. Tnonis90 commented on Mar 26, 2024

    @Tnonis90
    ContributorAuthor
  7. NSoiffer commented on Apr 12, 2024

    @NSoiffer
    Collaborator

    @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.

  8. Tnonis90 commented on Apr 15, 2024

    @Tnonis90
    ContributorAuthor
  9. NSoiffer commented on Apr 17, 2024

    @NSoiffer
    Collaborator

    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.

  10. NSoiffer commented on Apr 17, 2024

    @NSoiffer
    Collaborator

    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.

  11. Tnonis90 commented on Apr 23, 2024

    @Tnonis90
    ContributorAuthor
  12. Tnonis90 commented on Apr 23, 2024

    @Tnonis90
    ContributorAuthor
  13. NSoiffer commented on Apr 24, 2024

    @NSoiffer
    Collaborator

    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.

  14. Tnonis90 commented on Apr 29, 2024

    @Tnonis90
    ContributorAuthor
  15. NSoiffer commented on Apr 30, 2024

    @NSoiffer
    Collaborator

    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.

  16. 21 remaining items

  17. Tnonis90 commented on Sep 24, 2025

    @Tnonis90
    ContributorAuthor
  18. CristianCantoro commented on Sep 24, 2025

    @CristianCantoro
    Contributor

    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.

  19. Tnonis90 commented on Sep 24, 2025

    @Tnonis90
    ContributorAuthor
  20. CristianCantoro commented on Sep 28, 2025

    @CristianCantoro
    Contributor

    I have created a new pull request #409, which updates all the files in the it folder, with the exception of unicode-full.yaml.

  21. NSoiffer commented on Nov 17, 2025

    @NSoiffer
    Collaborator

    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.

  22. NSoiffer commented on Apr 1, 2026

    @NSoiffer
    Collaborator

    @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?

  23. moved this from Triage to In progress in MathCAT Project Boardon Jul 28, 2026
  24. CristianCantoro commented on Aug 16, 2026

    @CristianCantoro
    Contributor

    @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 it branch. In that branch, there is also a file called ClearSpeak_Rules-bk.yaml which 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.

  25. CristianCantoro commented on Aug 18, 2026

    @CristianCantoro
    Contributor

    @NSoiffer, I am reading the instructions and I have run audit-translations on the it files.

    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.yaml
    

    I get the following output audit-translations_it.log.

    For example,for the file SharedRules/default.yaml I 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?

  26. moritz-gross commented on Sep 18, 2026

    @moritz-gross
    Collaborator

    hi @CristianCantoro, sorry for the late reply.
    You can think of the audit-translations tool like a less noisy git diff for 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    rulesPertains to RulestranslationLanguage translation of math/code

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions