Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • M MathJax
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 304
    • Issues 304
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 15
    • Merge requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • MathJax
  • MathJax
  • Wiki
  • Mathjax v2.x potential feature — localization

Mathjax v2.x potential feature — localization · Changes

Page history
Updated Mathjax v2.x potential feature: localization (rest) authored Aug 22, 2022 by Davide P. Cervone's avatar Davide P. Cervone
Show whitespace changes
Inline Side-by-side
Mathjax-v2.x-potential-feature-—-localization.rest 0 → 100644
View page @ f891d146
.. contents::
Requirements
--------------------------------------
MathJax currently uses a number of English language strings in its UI, namely the MathJax Menu and the various messages (processing, error etc). To support global use of MathJax, we plan to implement a full localization of the UI that allows MathJax users to flexibly decide on the locale and allows translators to contribute easily and efficiently.
The implementation should answer the following questions.
* How does MathJax decide which language to use?
* How much control should the author have?
* How much control should the visitor have?
* Can MathJax automatically decide the language?
* Can other software communicate preferences to MathJax (e.g., AT software, dynamic l11n code)?
* What happens when the required language is not available?
* **How do we guarantee availability of international characters?**
* How do we deal with non-roman languages?
* How do we deal with non-Arabic numerals?
* How do we deal with vertical writing?
* Who makes the translation?
* Do we have enough complexity to need professional translations?
* how do we communicate to translators what needs to be translate?
* **What languages should we deliver out of the box?**
* **How should MathJax extensions be localized?**
* Can we add translations without making a new release?
* Where can you find translations?
* Can you provide private translations?
* How do we encourage giving translation back?
* Do we allow alternative or additional translations? (say, redirect to tech support)
* Do we force CDN users to give their translations back?
* **Do we allow style changes in translations (cf. HTML snippets)? (different language, different need)**
technical considerations
---------------------------------------
* replace all relevant strings by tokens, have service routine look up the string associated with that token & use the result
* prevents typos breaking translations
* helps with combined strings (e.g. "File xyz not found").
* standard approach to l10n -- Fred, Davide have experience from other projects
* define file format (in particular, for contributions)
* 1 file per language vs multiple files per language
* PRO >1 file: modular nature of MathJax, l10n tied to loading of components, efficient, need to handle extension translations anyway
* PRO 1 file: simplify 3rd party contributions/hosting, (also, size of 1 file still very small)
* either way make sure people can find them easily -> repository?
* could build on Tom's extension json
* define l10n interface, API for extension authors
* will allow contributions before implementation is complete
* defensive programming for UI strings added in the future
* amount of strings: rough estimates (from Davide)
* largest : TeX input jax -- 50 or so TeX error messages
* 8 TeX extensions that include error messages.
* MathML input jax -- 8 error messages
* MathJax.js itself -- 12 processing messages, file loading/failure messages.
* HTML-CSS output jax -- 13 messages about font loading.
* The menu code: menu labels -- dialogs concerning switching renderers -- the about box
* FontWarnings extension, v1.0-warning dialog
* some HTML snippets (e.g., the dialog messages about switching renderers).
* possible solution: translation mechanism could return fullHTML snippet (not just string)
* translation would include not just the text, but the structure appropriate for that text (e.g., the correct things will be in bold, and so on)
* security concerns with 3rd party translations?
* international characters
* MathJax fonts don't include accented characters etc
* use mtextFontInherit configuration property -> messages will be displayed in the font used by surrounding text -- which presumably will support the language
* configure MathJax list of fonts to include fonts that have unkown characters -- better handling outside of an <mtext> context.
how will MathJax be informed about available translations?
------------------------------------------------------------------
* CDN will include official/tested translations
* page authors will be able to load translations from elsewhere/local -- also while using CDN (just like configurations now)
* 3rd party extensions might need 4th party translations
* should users be able to side-load? If so, how?
* pages using CDN are not aware of the 3rd-party translations even if browser properly identifies language
* menu option "Other" -> enter URL // navigate to translation site
* alternative: proper browser extensions (e.g., Fred’s Firefox extension)
how should the language be chosen?
------------------------------------------------------------------
* page authors specify in configuration
* English default & fallback
* automatic mechanisms for MathJax to determine language
* most methods without server help unreliable or unclear, see links at the end (browser locales, navigator object, css lang pseudo-class) (T, D)
* accept-language header
* js has no direct access to header -> would require server-side helper -> creates lag
* optional, default off?
* customers with local server situations (e.g. Sage) could prefer this
* mathjax-menu-cookie (like choice of renderer now, cf language switching below)
language switching
-----------------------------------------------------------------
* static language switching (i.e., different pages for different languages) is obviously possible for page authors
* MathJax could support dynamic switching mechanisms to change l10n if page authors provide such features (e.g. l10n.js)
* adding MathJax language submenu?
* PRO it is the standard solution after http-headers, helps user when automatic/page-author setup fails, when locales are wrong for user, when display is not working due to missing fonts
* CON: switching could fail to work as expected (e.g. local fonts issues), menu clutter
* page-author should be able to (de)activate this menu, restrict language choices?
* pages with many languages (wikipedia etc) might want this
* should an already set user choice (cookie) override page author?
* default on or off?
* language submenu generated automatically by the client-side script?
* based on the list of translation files available on the CDN?
* the translation file shouldn't be loaded by the client until the language is selected in the submenu
* how reliable is the font situation (cf. international characters above)?
how to let translators know what there is to be translated
--------------------------------------------------------------
* provide a template file with tokens and original strings
* what they do: replace the originals with the translations.
* create tests to ensure all strings in all supported languages were supplied.
miscellanea
-----------------------------------------
* with new release announce a changelog of dialogs to help people updating the translation.
* decimal points, names of trigonometric functions
* MathML leaves this to author (e.g. wikipedia content)
* TeXinput could do this in theory, but better with author
* utf8 characters in strings no problem for MathJaxTeX.
* For RTL languages, the horizontal position of some UI widgets should probably be mirrored too. For example, MathJax's status/message bar should be positioned on the right instead. Compare Mozilla's MathML Start page in [en-US](https://developer.mozilla.org/en-US/docs/Mozilla_MathML_Project/Start) and [ar](https://developer.mozilla.org/ar/docs/Mozilla_MathML_Project/Start).
helpful links
------------------------------------------
* examplel 10n/i18n
http://codex.wordpress.org/I18n_for_WordPress_Developers
* javascript&locales
http://stackoverflow.com/questions/673905/best-way-to-determine-users-locale-within-browser
http://stackoverflow.com/questions/2678230/how-to-getting-browser-current-locale-preference-using-javascript
* Browser language detection
http://stackoverflow.com/questions/1043339/javascript-for-detecting-browser-language-preference
http://stackoverflow.com/questions/673905/best-way-to-determine-users-locale-within-browser
http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with-a-little-help-from-json-and-the-server/
* CSS2 language pseudo-class
http://www.w3.org/TR/CSS2/selector.html#lang
* Links about localization in general
* http://edutechwiki.unige.ch/en/Software_localization
* http://translate.sourceforge.net/wiki/guide/start
\ No newline at end of file
Clone repository

MathJax Wiki

  • Contributing
    • Contributor License Agreement etc
    • Quick guide to translating mathjax
  • Development
    • Development Process
      • Release Process Checklist
      • Documentation Update Process
      • Source Control Policies
      • GitHub
    • Design Documents
      • MathJax Roadmap
      • Semantic Enrichment project
      • CDN Hosting
      • Performance Discussion
      • Profiling and Diagnostics Tools
      • Documentation generation guide
      • Testing
        • Platforms supported
        • Test Machines
  • MathJax web presence