Difference between revisions of "Language/Multiple-languages/Culture/Numeration-Tutorial"
m (Quick edit) |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[File:Numeration20220514.png|thumb]] | [[File:Numeration20220514.png|thumb]] | ||
Finally, the first version of the Numeration tool is released! The current version will allow you to practise Chinese, English, Esperanto, French, German, Japanese numerals! More languages to come... | <big>(update in progress; information here may be outdated)</big> | ||
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. | If you are interested in providing hard-to-find information, please leave a comment. | ||
Line 7: | Line 9: | ||
== What is the Numeration tool? == | == What is the Numeration tool? == | ||
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 from symbols to writing systems, written in Python and YAML. | ||
'''Address: <big>https://codeberg.org/GrimPixel/Numeration</big>''' | '''Address: <big>https://codeberg.org/GrimPixel/Numeration</big>''' | ||
== What are Python and YAML, and why choose them? == | == What are Python and YAML, and why choose them? == | ||
Line 19: | Line 17: | ||
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? | Why not Rust or TypeScript, but Python? 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 === | === YAML === | ||
YAML is [https://www.zionandzion.com/json-vs-xml-vs-toml-vs-cson-vs-yaml/ one of the most useful data | YAML is [https://www.zionandzion.com/json-vs-xml-vs-toml-vs-cson-vs-yaml/ one of the most useful data serialisation 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. | 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. | ||
== <b>How to get started with Numeration?</b> == | == <b>How to get started with Numeration?</b> == | ||
# Download [https://www.python.org/downloads/ the latest Python] | # Download [https://www.python.org/downloads/ the latest Python] 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 | # 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. | ||
# | # Install required packages in `requirements.txt`: | ||
They are all open-source. | 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. | 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. | ||
Line 52: | Line 42: | ||
* 'setting.yaml': details of the program, can be changed following the comment, including language selection. | * '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. | * 'rule/setting/0.yaml': details of writings in languages, can be changed following the comment. | ||
[[File:Numeration20220514.png]] | [[File:Numeration20220514.png]] | ||
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. | 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. | ||
== Explain the code? == | == 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 | 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) 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. | 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. | ||
Line 230: | Line 209: | ||
The second one is for English, French, German, Japanese in Kana, etc. | The second one is for English, French, German, Japanese in Kana, etc. | ||
== If I want to add a language, what should I know? == | == If I want to add a language, what should I know? == | ||
Line 250: | Line 220: | ||
Just pick a language that is similar to the language you want to add, copy and paste, do some modifications. This will suffice. | Just pick a language that is similar to the language you want to add, copy and paste, do some modifications. This will suffice. | ||
== What's the future plan? == | == What's the future plan? == | ||
Line 262: | Line 226: | ||
* add support for more numeral systems | * 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]. | * 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]. | ||
The old feature of “date and time” is moved to an upcoming new project “DateTime converter”. | |||
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. | 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: | Planned next languages to be supported: Russian, Italian, Standard Arabic. | ||
*'''Reviews''': https://polyglotclub.com/language/multiple-languages/tool/14 | *'''Reviews''': https://polyglotclub.com/language/multiple-languages/tool/14 | ||
Line 291: | Line 238: | ||
[https://polyglotclub.com/member/GrimPixel GrimPixel] | [https://polyglotclub.com/member/GrimPixel GrimPixel] | ||
== | ==Other Lessons== | ||
* [[Language/Multiple-languages/Culture/Most-Popular-Sports|Most Popular Sports]] | * [[Language/Multiple-languages/Culture/Most-Popular-Sports|Most Popular Sports]] | ||
* [[Language/Multiple-languages/Culture/Similar-Sayings|Similar Sayings]] | * [[Language/Multiple-languages/Culture/Similar-Sayings|Similar Sayings]] | ||
Line 301: | Line 248: | ||
* [[Language/Multiple-languages/Culture/What-are-the-differences-between-Ukrainian-and-Russian|What are the differences between Ukrainian and Russian]] | * [[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]] | * [[Language/Multiple-languages/Culture/Language-comparisons|Language comparisons]] | ||
<span links></span> |
Latest revision as of 21:43, 1 August 2024
(update in progress; information here may be outdated)
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.
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
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? 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 serialisation 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]
- Download the latest Python and install it, so you can run Python programs. For Linux users, the latest version can be installed following this article.
- 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.
- Install required packages in `requirements.txt`:
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.
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.
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) 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.
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.
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.
The old feature of “date and time” is moved to an upcoming new project “DateTime converter”.
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]
Other Lessons[edit | edit source]
- Most Popular Sports
- Similar Sayings
- Productivity tools for polyglots
- Philosophical and Religious Texts
- Astrology in different Cultures and Languages
- IRFP in brief
- How to locate the origin of a video or a photo
- What are the differences between Ukrainian and Russian
- Language comparisons