Difference between revisions of "Language/Multiple-languages/Culture/Numeration-Tutorial"

From Polyglot Club WIKI
Jump to navigation Jump to search
m (Quick edit)
 
(212 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Finally, the first version of the Numeration tool is released! This version will allow you to practise some Esperanto numerals! English is on the way! More languages to come...
[[File:Numeration20220514.png|thumb]]


[[File:Numeration 20201008.png|thumb|none]]
Finally, the first version of the Numeration tool is released! The current version will allow you to practise Chinese, English, Esperanto, French, German, Japanese, Spanish numerals! More languages to come...  


If you are interested in providing hard-to-find information, please leave a comment.
<span link>Don't hesitate to look into these other pages after completing this lesson:</span> [[Language/Multiple-languages/Culture/How-to-locate-the-origin-of-a-video-or-a-photo|How to locate the origin of a video or a photo]] & [[Language/Multiple-languages/Culture/Philosophical-and-Religious-Texts|Philosophical and Religious Texts]].
== What is the Numeration tool? ==
== What is the Numeration tool? ==
This tool will help you practise reading, writing (hopefully also listening and speaking) numbers, written in Python and YAML.
The Numeration project is for practising conversion of numbers from symbols to writing systems, written in Python and YAML.
 
The Numeration project is for practising conversion of numbers between symbols and writing systems.  
 
 
'''Address:''' [https://gitlab.com/GrimPixel/Numeration '''<big>https://gitlab.com/GrimPixel/Numeration</big>''']


'''Address: <big>https://codeberg.org/GrimPixel/Numeration</big>'''


NB: It would be ridiculous to post this tutorial on GitLab, because this tutorial's target readers are non-programmers, so it is too detailed for programmers.
NB: It would be ridiculous to post this tutorial on such a website, because this tutorial's target readers are non-programmers, so it is too detailed for programmers.


== What are Python and YAML and why choose them? ==
== What are Python and YAML, and why choose them? ==


=== Python ===
=== Python ===
Python is [https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved one of the most favoured languages].
Python is [https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved one of the most favoured languages].


Why not Rust or TypeScript, but Python? Well, because Python codes are very easy to maintain, Python also has some unique useful features including [https://realpython.com/python-f-strings/ f-string] and [https://realpython.com/python-strings/#string-indexing negative indexing]. In addition, Python has a lot of scientific libraries, so it is more relevant to my main area of study.
Why not Rust or TypeScript, but Python? Well, because Python codes are very easy to maintain, Python also has some unique useful features including [https://realpython.com/python-f-strings/ f-string] and [https://realpython.com/python-strings/#string-indexing negative indexing]. In addition, Python has a lot of scientific libraries and is more relevant to my main area of study.


<youtube>_uQrJ0TkZlc</youtube>
<youtube>_uQrJ0TkZlc</youtube>


=== YAML ===
=== YAML ===
YAML is one of [https://www.zionandzion.com/json-vs-xml-vs-toml-vs-cson-vs-yaml/ the most useful data serialization formats].
YAML is [https://www.zionandzion.com/json-vs-xml-vs-toml-vs-cson-vs-yaml/ one of the most useful data serialization formats].


And why not JSON or TOML, but YAML? Because YAML has high readability and is very easy to maintain, at least no need to type soo many quotation marks.
And why not JSON or TOML, but YAML? Because YAML has a high readability and is very easy to maintain, at least no need to type soo many quotation marks.


By the way, XML is not that horrible as described in that linked page. That is a joke with escape characters.
By the way, XML is not that horrible, as described in that linked page. That is a joke with escape characters.


<youtube>cdLNKUoMc6c</youtube>
<youtube>cdLNKUoMc6c</youtube>


== How to get started with Numeration? ==
== <b>How to get started with Numeration?</b> ==
1. Download [https://www.python.org/downloads/ the latest Python] and install it, so you can run Python programs
# Download [https://www.python.org/downloads/ the latest Python] (or theoretically any Python 3 version) and install it, so you can run Python programs. For Linux users, the latest version can be installed following [https://opensource.com/article/20/4/install-python-linux this article].
 
# Download [https://pypi.org/project/ruamel.yaml/ Python's YAML parser], so that the Python interpreter can understand YAML. If you are using Windows, tap WinKey, input "cmd", tap Enter, so the command line is opened. Copy the line starting with "pip" in that webpage, paste into the command line window, tap Enter. For users of other operating systems, you should already have known how to open the command line of your system, I suppose. For Linux users, [https://launchpad.net/sakura Sakura] is recommended because it supports Unicode characters well and is lightweight; for Windows users, [https://conemu.github.io/ ConEmu] is recommended.
2. Download [https://www.jetbrains.com/pycharm/download/ PyCharm], an integrated development environment (IDE), and install it, so you have a graphical user interface (GUI) to edit the code or run it. Alternative: [https://pyzo.org/index.html Pyzo].
# Download required packages for text-to-speech:
 
#* Online Google Translate TTS: [https://pypi.org/project/gTTS/ gTTS]
3. Download [https://pypi.org/project/ruamel.yaml/ Python's YAML parser], so that Python interpreter can understand YAML. If you are using Windows, tap WinKey, input "cmd", tap Enter, so the command line is opened. Copy the line starting with "pip" in that webpage, paste into the command line window, tap Enter. For users of other operating systems, you should already have known how to open the command line of your system, I suppose.
#* Offline TTS: [https://pypi.org/project/pyttsx3/ pyttsx3] (yet to be implemented in Numeration)
#* Audio player: [https://pypi.org/project/playsound2/ playsound2]


They are all open-source.
They are all open-source.


After doing this, go to that '''Address''' above. Download the source code and extract the compressed file. Keep the directory structure unchanged, otherwise you need to change the code to run the program.
If a newer version of Python is available, and you want to use that version, you need to install packages like ruamel.yaml for the new version again. This is how Python works: users can have different versions with different packages and settings.


Open PyCharm, open the project directory, open 'rule/esperanto.py'.
After doing this, go to that '''Address''' above (little punishment for those who don't read from the beginning). Download the source code and extract the compressed file.


Tap "Ctrl + Shift + F10" to run the code in current tab. Tap "Shift + F10" to run the code in the file specified on the upper-right corner.
Use command line to open 'numerate.py': For Windows, there is [https://www.geeksforgeeks.org/cd-cmd-command/ an article about this]; for users of other operating systems, you should have known how to do this. Type 'python numerate.py', it will run in the command line.


You can go to “File -> Settings -> Appearances & Behavior -> Appearance” to change the font and its size.
There are two setting files:
* 'setting.yaml': details of the program, can be changed following the comment, including language selection.
* 'rule/setting/0.yaml': details of writings in languages, can be changed following the comment.


If you are still confused about PyCharm, please watch the first sections of that Mosh's tutorial above.
If you make a copy of 'rule/setting/0.yaml' and change its name, like “qiu.yaml”, and change the settings as you wish, then you can run the program, input the language setting like “yueqiu”, then the Yue Chinese setting in 'rule/setting/qiu.yaml' will be applied.


== Can you explain the code? ==
[[File:Numeration20220514.png]]
The 'rule/lib' folder is the library, in which common functions are stored. The 'rule' folder contains completed and unfinished languages. In the completed 'esperanto.py', you can see several parts:
# Code to enable ruamel
# Functions for writing
# Code to import library
# Code to load setting
# Code to load dictionary
# Code for subject selection and check
# Empty strings (without which PyCharm will give ugly warnings of “potential undefined variables”)
# Code to input notation or “date and time” and check
# Code to write and print nominal number; integer, fraction etc. or ordinal number; date and time


Abbreviations are avoided, so that people can see what code does what thing clearly.
“geany” is a text editor for Linux; I used it to edit the settings.


Further explanation will be included in the manual on how to add a language.
You can practise numbers with Google Translate TTS: in 'setting.yaml', change “mode” to “practising”, then run the program, select language setting, you will hear the TTS if supported; tap “Enter” to see the number in Western Arabic, tap “Enter” to see the writing.


== Why choose Apache 2.0? ==
== Why choose Apache 2.0? ==
I want to let people use this even commercially, e.g. in language-learning games like [https://playinfluent.com/ Influent]. Thus I need a [https://en.wikipedia.org/wiki/Permissive_free_software_license permissive license]. You may ask why not public domain. [https://en.wikipedia.org/wiki/Public_domain_software#Post-copyright_public_domain It's disputable whether people can truly release software in public domain when they are alive].
I want to let people use this even commercially, e.g. in language-learning games like [https://playinfluent.com/ Influent]. Thus, I need a [https://en.wikipedia.org/wiki/Permissive_free_software_license permissive license]. You may ask why not public domain. There are some countries where people cannot put their work in public domain, [https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences None of the current 3 public domain licenses is friendly to commercial use].


[https://en.wikipedia.org/wiki/MIT_license MIT] is good, but there is a problem: it doesn't explain how to deal with patents and trade marks. This allows patent trolls to sue those who use the code commercially without knowing that it contains patent. When the MIT license came into being, there was no software patent, so the license can be called outdated.
[https://en.wikipedia.org/wiki/MIT_license MIT] is good, but there is a problem: it doesn't explain how to deal with patents and trademarks. This allows patent trolls to sue those who use the code commercially without knowing that it contains a patent. When the MIT license came into being, there were not many software patent issues, so the license can be called outdated.


A guy named Lawrence E. Rosen created the [https://en.wikipedia.org/wiki/Academic_Free_License Academic Free License] to deal with this issue and this idea was incorporated into Apache 2.0, a better alternative.
A guy named Lawrence E. Rosen created the [https://en.wikipedia.org/wiki/Academic_Free_License Academic Free License] to deal with this issue and this idea was incorporated into Apache 2.0, a better alternative.
== Explain the code? ==
The main program is “numerate.py”. It reads your selected language codes, read the language settings (rule/library/setting.yaml), then read your subject (mathematical numeral, ordinal number, nominal number, date and time) selection number, then read the notation, convert it to Western Arabic, then call the language's “.py” file and show the result, finally ask you what to do next (do again from a step or end). This is going to be changed: everything before inputting the numeral will be settled in 'setting.yaml' first.
In the language “.py” files, everything is in a function “do”, so it can be called from another file (numerate.py) easily. They read the notation and the language setting as part of the input of the function “do”, then read the corresponding lexicon YAML file. Then the notation will be processed according to different notation types.
=== Magnitude and Archmagnitude ===
There are something to be noticed like the magnitude and archmagnitude.
Take the cardinal number 987654321 as an example:
* digit grouping: 3 (European)
{| class="wikitable"
!
!9
!8
!7
!6
!5
!4
!3
!2
!1
|-
!magnitude
|2
|1
|0
|2
|1
|0
|2
|1
|0
|-
!archmagnitude
|2
|2
|2
|1
|1
|1
|0
|0
|0
|}
* digit grouping: 3 (European double digit group)
{| class="wikitable"
!
!9
!8
!7
!6
!5
!4
!3
!2
!1
|-
!magnitude
|2
|1
|0
|5
|4
|3
|2
|1
|0
|-
!archmagnitude
|1
|1
|1
|0
|0
|0
|0
|0
|0
|}
* digit grouping: 4 (East Asian)
{| class="wikitable"
!
!9
!8
!7
!6
!5
!4
!3
!2
!1
|-
!magnitude
|0
|3
|2
|1
|0
|3
|2
|1
|0
|-
!archmagnitude
|2
|1
|1
|1
|1
|0
|0
|0
|0
|}
* digit grouping: [3, 2] (South Asian)
{| class="wikitable"
!
!9
!8
!7
!6
!5
!4
!3
!2
!1
|-
!magnitude
|1
|0
|1
|0
|1
|0
|2
|1
|0
|-
!archmagnitude
|3
|3
|2
|2
|1
|1
|0
|0
|0
|}
=== Construction of a natural number ===
There are two ways:
* write the digit and magnitude for each place; write the archmagnitude
* write each place or a combination of two places separately; write the archmagnitude
The first one is for Esperanto, Chinese, Japanese in mixed script of Kanji and Kana, etc.
The second one is for English, French, German, Japanese in Kana, etc.
== What are the differences from [https://github.com/savoirfairelinux/num2words num2words]? ==
* Purpose: num2words is simply a tool for outputting the text; Numeration is for educational use with a lot of configurations, so you can see different ways of speaking the number in a language.
* Structure: num2words is done by a bunch of people, so the code styles for languages are different one another; Numeration has merely single (unmarried) contributor, so they are in one style: lots of little functions with self-explaining names and little to no comments.
* Content: num2words has cardinal number, ordinal number, year, currency, and support 32 languages (no Chinese or Esperanto) since 2019; Numeration can do integer, fraction, mixed number, decimal, percentage, scientific notation, ordinal number, nominal number, date and time, and support the languages mentioned above and is counting, and TTS for practice.
* Activity: num2words [https://pypi.org/project/num2words/ releases] is staled in spite of some recent commits, and in its “issue” section, a lot of problems are left unresolved as the contributor of that language goes inactive; Numeration's development is unfinished, updated irregularly, had serious errors, and is free from bugs now, as I know.
== If I want to add a language, what should I know? ==
There are several places you need to visit to make sure it works:
* 'numerate.py'
* 'setting.yaml'
* 'rule/setting/0.yaml'
* 'rule/library/language_decode.yaml'
* 'rule/library/language_encode.yaml'
* 'about/language.yaml'
Just pick a language that is similar to the language you want to add, copy and paste, do some modifications. This will suffice.
== Why are the instructions in the program all imperative, instead of being polite? ==
Imperative is great for simplicity. What's more, there is no sincerity in automatic messages, so I decided not to be courteous in there. My sincerity is elsewhere: Apache 2.0.


== What's the future plan? ==
== What's the future plan? ==
I need to add support to other 4 languages mentioned in 'about/language.yaml' and notations mentioned in 'about/notation.yaml', then I will start supporting other languages covering as many language families as possible, so that people can copy the code of the language in the same family, modify it to support a new language. I will add a guidance on adding a new language, add the TTS support and maybe the SR support, create a GUI with [https://beeware.org/ BeeWare]. I need to accumulate experience through this project, then I can create other ones.
I need to  
* simplify the recognition of notation type (from manual to automatic)
* add support for more numeral systems
* add support for more languages, in which languages being [https://www.mosalingua.com/en/most-studied-languages-in-the-world/ mostly learned] and [https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers mostly used] are given the priority, then [https://en.wikipedia.org/wiki/List_of_official_languages_by_country_and_territory official languages].
* '''[on hold]''' create a GUI with [https://neutralino.js.org/ Neutralinojs] and add [https://palletsprojects.com/p/flask/ Flask] support.
 
The GUI needs to have four output areas, corresponding to four text directions:
{| class="wikitable"
|⮦
Arabic, Hebrew, etc.
|⮧
Latin, Cyrillic, Greek, etc.
|-
|⮠
(traditional) Han, Hangul, Japanese, etc.
|⮡
Mongolian, etc.
|}
 
See https://en.wikipedia.org/wiki/Writing_system#Directionality for details of directions.
 
I need to accumulate experience through this project, then I can create other ones.
 
I had a debate with myself: should the large archmagnitude by Conway-Guy and long scale in Chinese be supported? I thought that there are written rules for them, they exist, so they should be supported. Then I thought that as nearly no one is using them, they are practically not existing. I chose the latter. Maybe I would add support for them later, when I couldn't support more languages due to lack of references.
 
Planned next languages to be supported: Russian, Italian, Standard Arabic.
 
*'''Reviews''': https://polyglotclub.com/language/multiple-languages/tool/14
 
==AUTHOR==
[https://polyglotclub.com/member/GrimPixel GrimPixel]
 
==Other Lessons==
* [[Language/Multiple-languages/Culture/Most-Popular-Sports|Most Popular Sports]]
* [[Language/Multiple-languages/Culture/Similar-Sayings|Similar Sayings]]
* [[Language/Multiple-languages/Culture/Productivity-tools-for-polyglots|Productivity tools for polyglots]]
* [[Language/Multiple-languages/Culture/Philosophical-and-Religious-Texts|Philosophical and Religious Texts]]
* [[Language/Multiple-languages/Culture/Astrology-in-different-Cultures-and-Languages|Astrology in different Cultures and Languages]]
* [[Language/Multiple-languages/Culture/IRFP-in-brief|IRFP in brief]]
* [[Language/Multiple-languages/Culture/How-to-locate-the-origin-of-a-video-or-a-photo|How to locate the origin of a video or a photo]]
* [[Language/Multiple-languages/Culture/What-are-the-differences-between-Ukrainian-and-Russian|What are the differences between Ukrainian and Russian]]
* [[Language/Multiple-languages/Culture/Language-comparisons|Language comparisons]]
<span links></span>

Latest revision as of 10:35, 27 March 2023

Numeration20220514.png

Finally, the first version of the Numeration tool is released! The current version will allow you to practise Chinese, English, Esperanto, French, German, Japanese, Spanish numerals! More languages to come...

If you are interested in providing hard-to-find information, please leave a comment.

Don't hesitate to look into these other pages after completing this lesson: How to locate the origin of a video or a photo & Philosophical and Religious Texts.

What is the Numeration tool?[edit | edit source]

The Numeration project is for practising conversion of numbers from symbols to writing systems, written in Python and YAML.

Address: https://codeberg.org/GrimPixel/Numeration

NB: It would be ridiculous to post this tutorial on such a website, because this tutorial's target readers are non-programmers, so it is too detailed for programmers.

What are Python and YAML, and why choose them?[edit | edit source]

Python[edit | edit source]

Python is one of the most favoured languages.

Why not Rust or TypeScript, but Python? Well, because Python codes are very easy to maintain, Python also has some unique useful features including f-string and negative indexing. In addition, Python has a lot of scientific libraries and is more relevant to my main area of study.

YAML[edit | edit source]

YAML is one of the most useful data serialization formats.

And why not JSON or TOML, but YAML? Because YAML has a high readability and is very easy to maintain, at least no need to type soo many quotation marks.

By the way, XML is not that horrible, as described in that linked page. That is a joke with escape characters.

How to get started with Numeration?[edit | edit source]

  1. Download the latest Python (or theoretically any Python 3 version) and install it, so you can run Python programs. For Linux users, the latest version can be installed following this article.
  2. Download Python's YAML parser, so that the Python interpreter can understand YAML. If you are using Windows, tap WinKey, input "cmd", tap Enter, so the command line is opened. Copy the line starting with "pip" in that webpage, paste into the command line window, tap Enter. For users of other operating systems, you should already have known how to open the command line of your system, I suppose. For Linux users, Sakura is recommended because it supports Unicode characters well and is lightweight; for Windows users, ConEmu is recommended.
  3. Download required packages for text-to-speech:
    • Online Google Translate TTS: gTTS
    • Offline TTS: pyttsx3 (yet to be implemented in Numeration)
    • Audio player: playsound2

They are all open-source.

If a newer version of Python is available, and you want to use that version, you need to install packages like ruamel.yaml for the new version again. This is how Python works: users can have different versions with different packages and settings.

After doing this, go to that Address above (little punishment for those who don't read from the beginning). Download the source code and extract the compressed file.

Use command line to open 'numerate.py': For Windows, there is an article about this; for users of other operating systems, you should have known how to do this. Type 'python numerate.py', it will run in the command line.

There are two setting files:

  • 'setting.yaml': details of the program, can be changed following the comment, including language selection.
  • 'rule/setting/0.yaml': details of writings in languages, can be changed following the comment.

If you make a copy of 'rule/setting/0.yaml' and change its name, like “qiu.yaml”, and change the settings as you wish, then you can run the program, input the language setting like “yueqiu”, then the Yue Chinese setting in 'rule/setting/qiu.yaml' will be applied.

Numeration20220514.png

“geany” is a text editor for Linux; I used it to edit the settings.

You can practise numbers with Google Translate TTS: in 'setting.yaml', change “mode” to “practising”, then run the program, select language setting, you will hear the TTS if supported; tap “Enter” to see the number in Western Arabic, tap “Enter” to see the writing.

Why choose Apache 2.0?[edit | edit source]

I want to let people use this even commercially, e.g. in language-learning games like Influent. Thus, I need a permissive license. You may ask why not public domain. There are some countries where people cannot put their work in public domain, None of the current 3 public domain licenses is friendly to commercial use.

MIT is good, but there is a problem: it doesn't explain how to deal with patents and trademarks. This allows patent trolls to sue those who use the code commercially without knowing that it contains a patent. When the MIT license came into being, there were not many software patent issues, so the license can be called outdated.

A guy named Lawrence E. Rosen created the Academic Free License to deal with this issue and this idea was incorporated into Apache 2.0, a better alternative.

Explain the code?[edit | edit source]

The main program is “numerate.py”. It reads your selected language codes, read the language settings (rule/library/setting.yaml), then read your subject (mathematical numeral, ordinal number, nominal number, date and time) selection number, then read the notation, convert it to Western Arabic, then call the language's “.py” file and show the result, finally ask you what to do next (do again from a step or end). This is going to be changed: everything before inputting the numeral will be settled in 'setting.yaml' first.

In the language “.py” files, everything is in a function “do”, so it can be called from another file (numerate.py) easily. They read the notation and the language setting as part of the input of the function “do”, then read the corresponding lexicon YAML file. Then the notation will be processed according to different notation types.

Magnitude and Archmagnitude[edit | edit source]

There are something to be noticed like the magnitude and archmagnitude.

Take the cardinal number 987654321 as an example:

  • digit grouping: 3 (European)
9 8 7 6 5 4 3 2 1
magnitude 2 1 0 2 1 0 2 1 0
archmagnitude 2 2 2 1 1 1 0 0 0
  • digit grouping: 3 (European double digit group)
9 8 7 6 5 4 3 2 1
magnitude 2 1 0 5 4 3 2 1 0
archmagnitude 1 1 1 0 0 0 0 0 0
  • digit grouping: 4 (East Asian)
9 8 7 6 5 4 3 2 1
magnitude 0 3 2 1 0 3 2 1 0
archmagnitude 2 1 1 1 1 0 0 0 0
  • digit grouping: [3, 2] (South Asian)
9 8 7 6 5 4 3 2 1
magnitude 1 0 1 0 1 0 2 1 0
archmagnitude 3 3 2 2 1 1 0 0 0

Construction of a natural number[edit | edit source]

There are two ways:

  • write the digit and magnitude for each place; write the archmagnitude
  • write each place or a combination of two places separately; write the archmagnitude

The first one is for Esperanto, Chinese, Japanese in mixed script of Kanji and Kana, etc.

The second one is for English, French, German, Japanese in Kana, etc.

What are the differences from num2words?[edit | edit source]

  • Purpose: num2words is simply a tool for outputting the text; Numeration is for educational use with a lot of configurations, so you can see different ways of speaking the number in a language.
  • Structure: num2words is done by a bunch of people, so the code styles for languages are different one another; Numeration has merely single (unmarried) contributor, so they are in one style: lots of little functions with self-explaining names and little to no comments.
  • Content: num2words has cardinal number, ordinal number, year, currency, and support 32 languages (no Chinese or Esperanto) since 2019; Numeration can do integer, fraction, mixed number, decimal, percentage, scientific notation, ordinal number, nominal number, date and time, and support the languages mentioned above and is counting, and TTS for practice.
  • Activity: num2words releases is staled in spite of some recent commits, and in its “issue” section, a lot of problems are left unresolved as the contributor of that language goes inactive; Numeration's development is unfinished, updated irregularly, had serious errors, and is free from bugs now, as I know.

If I want to add a language, what should I know?[edit | edit source]

There are several places you need to visit to make sure it works:

  • 'numerate.py'
  • 'setting.yaml'
  • 'rule/setting/0.yaml'
  • 'rule/library/language_decode.yaml'
  • 'rule/library/language_encode.yaml'
  • 'about/language.yaml'

Just pick a language that is similar to the language you want to add, copy and paste, do some modifications. This will suffice.

Why are the instructions in the program all imperative, instead of being polite?[edit | edit source]

Imperative is great for simplicity. What's more, there is no sincerity in automatic messages, so I decided not to be courteous in there. My sincerity is elsewhere: Apache 2.0.

What's the future plan?[edit | edit source]

I need to

  • simplify the recognition of notation type (from manual to automatic)
  • add support for more numeral systems
  • add support for more languages, in which languages being mostly learned and mostly used are given the priority, then official languages.
  • [on hold] create a GUI with Neutralinojs and add Flask support.

The GUI needs to have four output areas, corresponding to four text directions:

Arabic, Hebrew, etc.

Latin, Cyrillic, Greek, etc.

(traditional) Han, Hangul, Japanese, etc.

Mongolian, etc.

See https://en.wikipedia.org/wiki/Writing_system#Directionality for details of directions.

I need to accumulate experience through this project, then I can create other ones.

I had a debate with myself: should the large archmagnitude by Conway-Guy and long scale in Chinese be supported? I thought that there are written rules for them, they exist, so they should be supported. Then I thought that as nearly no one is using them, they are practically not existing. I chose the latter. Maybe I would add support for them later, when I couldn't support more languages due to lack of references.

Planned next languages to be supported: Russian, Italian, Standard Arabic.

AUTHOR[edit | edit source]

GrimPixel

Other Lessons[edit | edit source]