language_cards 0.3.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +20 -0
  3. data/CHANGELOG.md +31 -0
  4. data/README.md +80 -22
  5. data/bin/language_cards +7 -1
  6. data/cards/en/arabic.yml +370 -0
  7. data/cards/en/armenian.yml +406 -0
  8. data/cards/en/bengali.yml +395 -0
  9. data/cards/en/chinese-hsk1.yml +157 -0
  10. data/cards/en/chinese-hsk2.yml +154 -0
  11. data/cards/en/chinese-hsk3.yml +305 -0
  12. data/cards/en/chinese-hsk4.yml +605 -0
  13. data/cards/en/georgian.yml +362 -0
  14. data/cards/en/greek.yml +379 -0
  15. data/cards/en/hebrew.yml +355 -0
  16. data/cards/en/hindi.yml +412 -0
  17. data/cards/en/japanese-01-hiragana.yml +227 -0
  18. data/cards/en/japanese-02-katakana.yml +296 -0
  19. data/cards/en/japanese-03-keyboard-mappings.yml +357 -0
  20. data/cards/en/japanese-10-kanji-jlpt-n5.yml +86 -0
  21. data/cards/en/japanese-11-kanji-jlpt-n4.yml +173 -0
  22. data/cards/en/japanese-12-kanji-jlpt-n3.yml +374 -0
  23. data/cards/en/japanese-13-kanji-jlpt-n2.yml +374 -0
  24. data/cards/en/japanese-14-kanji-jlpt-n1.yml +1239 -0
  25. data/cards/en/japanese-20-vocabulary-jlpt-n5.yml +708 -0
  26. data/cards/en/japanese-21-vocabulary-jlpt-n4.yml +668 -0
  27. data/cards/en/japanese-22-vocabulary-jlpt-n3.yml +2108 -0
  28. data/cards/en/japanese-23-vocabulary-jlpt-n2.yml +1738 -0
  29. data/cards/en/japanese-24-vocabulary-jlpt-n1.yml +2689 -0
  30. data/cards/en/korean.yml +534 -0
  31. data/cards/en/persian.yml +370 -0
  32. data/cards/en/punjabi.yml +393 -0
  33. data/cards/en/russian.yml +398 -0
  34. data/cards/en/tamil.yml +405 -0
  35. data/cards/en/thai.yml +408 -0
  36. data/cards/en/ukrainian.yml +398 -0
  37. data/cards/en/urdu.yml +374 -0
  38. data/language_cards.gemspec +7 -6
  39. data/lib/language_cards/card_set_builder.rb +11 -0
  40. data/lib/language_cards/controllers/application_controller.rb +2 -0
  41. data/lib/language_cards/controllers/game.rb +10 -6
  42. data/lib/language_cards/controllers/main_menu.rb +20 -3
  43. data/lib/language_cards/defaults.rb +33 -0
  44. data/lib/language_cards/helpers/view_helper.rb +3 -2
  45. data/lib/language_cards/menu_builder.rb +11 -0
  46. data/lib/language_cards/menu_node.rb +9 -4
  47. data/lib/language_cards/models/card.rb +18 -0
  48. data/lib/language_cards/models/card_set.rb +15 -16
  49. data/lib/language_cards/modes/game.rb +15 -4
  50. data/lib/language_cards/modes/translate.rb +12 -1
  51. data/lib/language_cards/modes/typing_practice.rb +5 -1
  52. data/lib/language_cards/paginator.rb +59 -0
  53. data/lib/language_cards/user_interface.rb +84 -52
  54. data/lib/language_cards/version.rb +1 -1
  55. data/lib/language_cards/view/main_menu.erb +3 -1
  56. data/lib/language_cards/yaml_loader.rb +5 -3
  57. data/lib/language_cards.rb +7 -24
  58. data/locales/en.yml +11 -0
  59. metadata +69 -43
  60. data/.travis.yml +0 -5
  61. data/cards/en/japanese-hiragana.yml +0 -113
  62. data/cards/en/japanese-kanji-jlpt-n5.yml +0 -107
  63. data/cards/en/japanese-katakana-keyboard-mappings.yml +0 -180
  64. data/cards/en/japanese-katakana.yml +0 -109
  65. data/lib/language_cards/grapheme_builder.rb +0 -12
  66. data/lib/language_cards/language_cards.rb +0 -25
  67. data/lib/language_cards/models/grapheme.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f0a048e1f4a4ab3df7aecbdde13214195113d2cc6b393919a1171d7afdd654b
4
- data.tar.gz: 16ccdc80dbdce1dc4c96b30e3f7d264136ec5232da54c62683d15179ead038f6
3
+ metadata.gz: 4d8aba7c872a8252b484266a52226593689ac898ff759546fccdb51e077806a9
4
+ data.tar.gz: c8011eaa91c6c0b4e15ae4778b0733c5572ce5ae0f8475a3863e577ab02cb7e3
5
5
  SHA512:
6
- metadata.gz: 0c52139a08348632f54f25ff57e510a1dd0709c57c470c30acba786fff374c93312c119d279cd16306febd4c60094f26a0e8bda444bbd61c1a03d82593bca9f0
7
- data.tar.gz: a35be47efcf659b5e0512f97294bedd1a9835b2c19cbc8913f8c6820d536112ac957e9b9a3bcc03419bf274dcb9e133198584f28b8b39c0b31cad981dcbf2ece
6
+ metadata.gz: 41f84b0b3727afe99a78c775c9912dc64d5d45a72dca9b6683a357b20fe24d31dad09dd756bc5315c81d9d36667d52f5a46c59538cf0065537d539d7ec1d75a6
7
+ data.tar.gz: 2cc12cf74e0358d46c2bd0cd66a1504b008cd2876b9cbf3f403b6ea954bef74430f98cd2b3da9a6e21305a4edb3e084ee2ea63757f2aff33e0afbf96c50e0ae1
@@ -0,0 +1,20 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.ruby }}
19
+ bundler-cache: true
20
+ - run: bundle exec rake test
data/CHANGELOG.md ADDED
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0
4
+
5
+ ### Card data
6
+ * Japanese, now fully covered:
7
+ * Hiragana and Katakana split into basic, diacritics (dakuten/handakuten), combinations (yōon) and "All"
8
+ sets, plus Extended Katakana for foreign sounds. Romaji answers accept both Hepburn and Kunrei-shiki.
9
+ * Hiragana keyboard mappings added next to the existing Katakana keyboard mappings.
10
+ * Kanji for every JLPT level N5 through N1 (2,211 kanji), with readings in hiragana and English meanings.
11
+ * Vocabulary for every JLPT level N5 through N1 (7,800+ words).
12
+ * Chinese: HSK 1–4 (1,193 words), answered in pinyin with tone marks, tone numbers or in English.
13
+ Fixes several wrong pinyin in the old HSK 1 set, and the language is now named "Chinese".
14
+ * New languages: Arabic, Armenian, Bengali, Georgian, Greek, Hebrew, Hindi, Korean, Persian, Punjabi,
15
+ Russian, Tamil, Thai, Ukrainian and Urdu, each with writing-system sets plus numbers, common words
16
+ and phrases.
17
+
18
+ ### Game
19
+ * Two-level menu: pick a language first, then one of its card sets. Menus are paginated (10 per page,
20
+ `n`/`p` to page, `b` to go back, `q` to quit) and show how many sets/cards each entry has.
21
+ * Translate answers are case-insensitive, ignore extra whitespace and Unicode composition differences, and
22
+ treat a leading "to " as optional.
23
+ * Numeric answers in card files (e.g. `1`) now match what is typed.
24
+ * The score and timer reset for each game, and the same card is never shown twice in a row.
25
+ * CTRL-C in a game returns to the card set menu; end of input exits cleanly.
26
+ * New `--version` and `--help` command line flags.
27
+
28
+ ### Maintenance
29
+ * Runs on modern Ruby: updated to HighLine 2/3 and i18n 1.x.
30
+ * Card files are validated by the test suite (duplicate keys, empty answers, values YAML would misread).
31
+ * GitHub Actions CI replaces Travis CI.
data/README.md CHANGED
@@ -1,45 +1,84 @@
1
1
  # LanguageCards
2
2
  [![Gem Version](https://badge.fury.io/rb/language_cards.svg)](https://badge.fury.io/rb/language_cards)
3
- [![Build Status](https://travis-ci.org/danielpclark/language_cards.svg?branch=master)](https://travis-ci.org/danielpclark/language_cards)
3
+ [![CI](https://github.com/danielpclark/language_cards/actions/workflows/ci.yml/badge.svg)](https://github.com/danielpclark/language_cards/actions/workflows/ci.yml)
4
4
  [![Build status](https://ci.appveyor.com/api/projects/status/y6jadvlhk50ncbrh?svg=true)](https://ci.appveyor.com/project/danielpclark/language-cards)
5
5
 
6
6
 
7
- This is a flash card game for guessing translations or keyboard learning. Currently implemented is
8
- English Romaji to Japanese Hirigana/Katakana and typing exercises for each. Game experience will be improved upon!
9
-
10
- Also if your interested in adding other flash cards for language learning, pull requests are welcome. Please
11
- keep some sort of organized collection for sets of cards (for instance the Japanese-Language Proficiency Test
12
- has different levels to complete, N1 through N5, which would each count as a collection).
7
+ A terminal flash card game for learning languages that use foreign scripts. Every language comes with
8
+ card sets for its writing system plus vocabulary, and each card set can be played in two modes:
9
+
10
+ * **Translate**: a card is shown in the foreign script and you type its romanization, reading or English meaning.
11
+ * **Typing**: you type the card itself, which is great practice for a foreign-language keyboard or IME.
12
+
13
+ Japanese is covered from the kana all the way through JLPT N1: every hiragana and katakana (including
14
+ combinations, extended katakana and IME keyboard mappings), all 2,211 JLPT N5–N1 kanji and more than 7,800
15
+ JLPT N5–N1 vocabulary words.
16
+
17
+ Included languages (17 languages, 103 card sets, ~17,900 cards):
18
+
19
+ | Language | Card sets (cards) |
20
+ | --- | --- |
21
+ | Arabic | Alphabet (31), Numbers (23), Numerals (10), Common Words (245), Phrases (48) |
22
+ | Armenian | Alphabet (77), Numbers (23), Common Words (249), Phrases (46) |
23
+ | Bengali | Vowels (11), Consonants (39), Numbers (23), Numerals (10), Common Words (249), Phrases (48) |
24
+ | Chinese | HSK 1 (150), HSK 2 (147), HSK 3 (298), HSK 4 (598) |
25
+ | Georgian | Alphabet (33), Numbers (23), Common Words (250), Phrases (45) |
26
+ | Greek | Alphabet (49), Numbers (23), Common Words (247), Phrases (49) |
27
+ | Hebrew | Alphabet (22), Final Forms (5), Numbers (23), Common Words (243), Phrases (49) |
28
+ | Hindi | Vowels (13), Consonants (44), Vowel Signs (11), Numbers (23), Numerals (10), Common Words (245), Phrases (49) |
29
+ | Japanese | Hiragana (46), Hiragana Diacritics (25), Hiragana Combinations (36), Hiragana (All) (108), Katakana (46), Katakana Diacritics (25), Katakana Combinations (36), Katakana Extended (34), Katakana (All) (141), Hiragana Keyboard Mappings (173), Katakana Keyboard Mappings (176), Kanji (JLPT N5) (79), Kanji (JLPT N4) (166), Kanji (JLPT N3) (367), Kanji (JLPT N2) (367), Kanji (JLPT N1) (1232), Vocabulary (JLPT N5) (702), Vocabulary (JLPT N4) (662), Vocabulary (JLPT N3) (2102), Vocabulary (JLPT N2) (1732), Vocabulary (JLPT N1) (2683) |
30
+ | Korean | Hangul Consonants (19), Hangul Vowels (21), Hangul Syllables (140), Numbers (45), Common Words (244), Phrases (50) |
31
+ | Persian | Alphabet (32), Numbers (23), Numerals (10), Common Words (246), Phrases (46) |
32
+ | Punjabi | Letters (41), Vowels (10), Numbers (23), Numerals (10), Common Words (246), Phrases (48) |
33
+ | Russian | Alphabet (66), Numbers (23), Common Words (250), Phrases (48) |
34
+ | Tamil | Vowels (13), Consonants (23), Syllables (23), Numbers (23), Numerals (10), Common Words (249), Phrases (47) |
35
+ | Thai | Consonants (44), Vowels (30), Numbers (23), Numerals (10), Common Words (243), Phrases (43) |
36
+ | Ukrainian | Alphabet (66), Numbers (23), Common Words (250), Phrases (48) |
37
+ | Urdu | Alphabet (39), Numbers (23), Numerals (10), Common Words (248), Phrases (41) |
13
38
 
14
39
  Internationalization support is built in! Translators are welcome to make this game available in other languages.
15
40
 
16
41
  ## Installation
17
42
 
18
- Add this line to your application's Gemfile:
19
-
20
- ```ruby
21
- gem 'language_cards'
22
- ```
23
-
24
- And then execute:
25
-
26
- $ bundle
27
-
28
- Or install it yourself as:
43
+ Install it yourself as:
29
44
 
30
45
  $ gem install language_cards
46
+
47
+ Or try out the latest master by downloading it: [[master.zip](https://github.com/danielpclark/language_cards/archive/master.zip)]
31
48
 
32
49
  ## Usage
33
50
 
34
51
  After installing the gem you can run the executable `language_cards`. If you clone the repo then use
35
52
  `bundle exec bin/language_cards`.
36
53
 
54
+ $ language_cards --help
55
+ usage: language_cards [options]
56
+ -l, --language language (default: en)
57
+ -v, --version print the version
58
+ -h, --help print this help
59
+
60
+ Pick a language, then a card set, by typing its number. Long menus are split into pages of ten.
61
+
62
+ | Key | Action |
63
+ | --- | --- |
64
+ | `1`, `2`, ... | Select the numbered language or card set (any number works, not just those on the current page) |
65
+ | `n` / `p` | Next / previous page |
66
+ | `b` | Back to the language menu |
67
+ | `m` | Change game mode (Translate / Typing) |
68
+ | `q` | Quit |
69
+ | `CTRL-C` | Leave a game and return to the menu (quits from a menu) |
70
+
71
+ Answers are forgiving: case and extra spaces don't matter, a leading "to " is optional for English verbs
72
+ ("to eat" and "eat" are both fine), and pinyin can be typed with tone marks (`nǐhǎo`) or tone numbers (`ni3hao3`).
73
+
37
74
  # Card Format
38
75
 
39
- The cards are stored in YAML format. You can look in the `cards` directory for existing examples to follow.
40
- The first entry is a language name and it's okay if that already exists in another file. The entries below that
41
- must be unique for that language (eg: you can't have two Hiragana sub entries on Japanese). The next step in
76
+ The cards are stored in YAML format in `cards/<interface language>/` (e.g. `cards/en`). You can look in the
77
+ `cards` directory for existing examples to follow. The first entry is a language name and it's okay if that
78
+ already exists in another file; card sets from every file are merged under it. The entries below that must be
79
+ unique for that language (eg: you can't have two Hiragana sub entries on Japanese). The next step in
42
80
  will have a mapping hash on how the language is being mapped in the form of key to value (eg "Hiragana" => "Romaji").
81
+ Every other entry is a card: the key is what is shown and the value is the answer, or a list of accepted answers.
43
82
  Just follow the below outline for a working example.
44
83
 
45
84
  ```yaml
@@ -52,11 +91,30 @@ Japanese:
52
91
  う: u
53
92
  え: e
54
93
  お: o
94
+ し: [shi, si]
55
95
  ```
56
96
 
97
+ Languages are listed alphabetically and card sets in the order they are loaded, with files read in filename
98
+ order (which is why the bundled files have numeric prefixes like `japanese-10-kanji-jlpt-n5.yml`). Quote
99
+ answers YAML would otherwise turn into something else, such as `'no'`, `'yes'`, `'on'` or numbers like `'1'`.
100
+
101
+ You can add your own cards without touching the gem by putting YAML files in `~/.language_cards/cards/en/`.
102
+
103
+ ## Data sources
104
+
105
+ * JLPT kanji and vocabulary level lists: [Jonathan Waller's JLPT Resources](http://www.tanos.co.uk/jlpt/) (CC BY).
106
+ JLPT levels have been unofficial since 2010, so these lists are a well established approximation.
107
+ * Kanji readings were checked against [KANJIDIC](http://www.edrdg.org/wiki/index.php/KANJIDIC_Project) (EDRDG).
108
+ * Chinese word lists: the HSK 2.0 official vocabulary lists (levels 1–4).
109
+ * Kana: [Wikibooks Japanese kana chart](https://en.wikibooks.org/wiki/Japanese/Kana_chart).
110
+
111
+ Corrections to any card are very welcome!
112
+
57
113
  ## Development
58
114
 
59
- *Tests required moving forward with this project unless it's translation files.*
115
+ *Tests required moving forward with this project unless it's translation files.* `test/cards_test.rb`
116
+ validates every card file (duplicate keys, empty answers, values YAML would misread), so run the tests after
117
+ editing cards too.
60
118
 
61
119
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
62
120
 
data/bin/language_cards CHANGED
@@ -4,5 +4,11 @@ $: << File.expand_path(File.join('..', '..', 'lib'), __FILE__)
4
4
 
5
5
  require 'language_cards'
6
6
 
7
- LanguageCards.start
7
+ if LanguageCards::OPTS[:version]
8
+ puts LanguageCards::VERSION
9
+ elsif LanguageCards::OPTS[:help]
10
+ puts LanguageCards::OPTS
11
+ else
12
+ LanguageCards.start
13
+ end
8
14
 
@@ -0,0 +1,370 @@
1
+ ---
2
+ # Arabic: Alphabet (31), Numbers (23), Numerals (10), Common Words (245), Phrases (48)
3
+ Arabic:
4
+ Alphabet:
5
+ mapping: { Arabic script: [Latin, Letter name] }
6
+ ا: [a, aa, alif]
7
+ ب: [b, baa, ba]
8
+ ت: [t, taa, ta]
9
+ ث: [th, thaa, tha]
10
+ ج: [j, jiim, jim]
11
+ ح: [h, '7', haa, ha]
12
+ خ: [kh, khaa]
13
+ د: [d, daal, dal]
14
+ ذ: [dh, dhaal, dhal]
15
+ ر: [r, raa, ra]
16
+ ز: [z, zaay, zay]
17
+ س: [s, siin, sin]
18
+ ش: [sh, shiin, shin]
19
+ ص: [s, saad, sad]
20
+ ض: [d, daad, dad]
21
+ ط: [t, taa, ta]
22
+ ظ: [z, dh, zaa, dhaa]
23
+ ع: [ayn, ain, '3']
24
+ غ: [gh, ghayn, ghain]
25
+ ف: [f, faa, fa]
26
+ ق: [q, qaaf, qaf]
27
+ ك: [k, kaaf, kaf]
28
+ ل: [l, laam, lam]
29
+ م: [m, miim, mim]
30
+ ن: ['n', nuun, nun]
31
+ ه: [h, haa, ha]
32
+ و: [w, u, waaw, waw]
33
+ ي: ['y', i, yaa, ya]
34
+ ء: [hamza, hamzah, '''']
35
+ ة: [a, at, taa marbuta, ta marbuta]
36
+ ى: [a, alif maqsura, alif maqsurah]
37
+ Numbers:
38
+ mapping: { Arabic: [Latin, English] }
39
+ صفر: [sifr, zero, '0']
40
+ واحد: [wahid, waahid, one, '1']
41
+ اثنان: [ithnan, ithnaan, two, '2']
42
+ ثلاثة: [thalatha, thalaatha, three, '3']
43
+ أربعة: [arbaa, arba'a, four, '4']
44
+ خمسة: [khamsa, five, '5']
45
+ ستة: [sitta, six, '6']
46
+ سبعة: [sabaa, sab'a, seven, '7']
47
+ ثمانية: [thamaniya, thamaaniya, eight, '8']
48
+ تسعة: [tisaa, tis'a, nine, '9']
49
+ عشرة: [ashara, ten, '10']
50
+ أحد عشر: [ahad ashar, eleven, '11']
51
+ اثنا عشر: [ithna ashar, twelve, '12']
52
+ عشرون: [ishrun, ishruun, twenty, '20']
53
+ ثلاثون: [thalathun, thalaathuun, thirty, '30']
54
+ أربعون: [arbaun, arba'uun, forty, '40']
55
+ خمسون: [khamsun, khamsuun, fifty, '50']
56
+ ستون: [sittun, sittuun, sixty, '60']
57
+ سبعون: [sabun, sab'uun, seventy, '70']
58
+ ثمانون: [thamanun, thamaanuun, eighty, '80']
59
+ تسعون: [tisun, tis'uun, ninety, '90']
60
+ مئة: [mia, mi'a, hundred, one hundred, '100']
61
+ ألف: [alf, thousand, one thousand, '1000']
62
+ Numerals:
63
+ mapping: { Arabic-Indic digits: [Digit, English] }
64
+ '٠': ['0', zero]
65
+ '١': ['1', one]
66
+ '٢': ['2', two]
67
+ '٣': ['3', three]
68
+ '٤': ['4', four]
69
+ '٥': ['5', five]
70
+ '٦': ['6', six]
71
+ '٧': ['7', seven]
72
+ '٨': ['8', eight]
73
+ '٩': ['9', nine]
74
+ Common Words:
75
+ mapping: { Arabic: [Latin, English] }
76
+ أنا: [ana, I]
77
+ أنت: [anta, anti, you]
78
+ هو: [huwa, he, it]
79
+ هي: [hiya, she, it]
80
+ نحن: [nahnu, we]
81
+ أنتم: [antum, you all, you]
82
+ هم: [hum, they]
83
+ هذا: [hadha, this]
84
+ هذه: [hadhihi, this]
85
+ ذلك: [dhalik, that]
86
+ أب: [ab, father]
87
+ أم: [umm, mother]
88
+ أخ: [akh, brother]
89
+ أخت: [ukht, sister]
90
+ ابن: [ibn, son]
91
+ بنت: [bint, daughter, girl]
92
+ زوج: [zawj, husband]
93
+ زوجة: [zawja, wife]
94
+ جد: [jadd, grandfather]
95
+ جدة: [jadda, grandmother]
96
+ عائلة: [aila, a'ila, family]
97
+ طفل: [tifl, child, baby]
98
+ ولد: [walad, boy, child]
99
+ رجل: [rajul, man]
100
+ امرأة: [imraa, imra'a, woman]
101
+ صديق: [sadiq, friend]
102
+ ناس: [nas, people]
103
+ معلم: [muallim, mu'allim, teacher]
104
+ طالب: [talib, student]
105
+ طبيب: [tabib, doctor]
106
+ رأس: [ras, ra's, head]
107
+ عين: [ayn, eye]
108
+ أذن: [udhun, ear]
109
+ أنف: [anf, nose]
110
+ فم: [fam, mouth]
111
+ يد: [yad, hand]
112
+ قدم: [qadam, foot]
113
+ شعر: [shaar, sha'r, hair]
114
+ قلب: [qalb, heart]
115
+ وجه: [wajh, face]
116
+ سن: [sinn, tooth]
117
+ ماء: [maa, ma', water]
118
+ طعام: [taam, ta'am, food]
119
+ خبز: [khubz, bread]
120
+ أرز: [aruzz, ruzz, rice]
121
+ لحم: [lahm, meat]
122
+ دجاج: [dajaj, chicken]
123
+ سمك: [samak, fish]
124
+ حليب: [halib, milk]
125
+ قهوة: [qahwa, coffee]
126
+ شاي: [shay, tea]
127
+ بيض: [bayd, eggs, egg]
128
+ فاكهة: [fakiha, fruit]
129
+ موز: [mawz, banana, bananas]
130
+ ملح: [milh, salt]
131
+ سكر: [sukkar, sugar]
132
+ برتقال: [burtuqal, orange, oranges]
133
+ كلب: [kalb, dog]
134
+ قطة: [qitta, cat]
135
+ طائر: [tair, ta'ir, bird]
136
+ حيوان: [hayawan, animal]
137
+ أحمر: [ahmar, red]
138
+ أزرق: [azraq, blue]
139
+ أخضر: [akhdar, green]
140
+ أصفر: [asfar, yellow]
141
+ أبيض: [abyad, white]
142
+ أسود: [aswad, black]
143
+ بني: [bunni, brown]
144
+ لون: [lawn, color, colour]
145
+ يوم: [yawm, day]
146
+ ليل: [layl, night]
147
+ صباح: [sabah, morning]
148
+ مساء: [masaa, masa', evening]
149
+ اليوم: [al-yawm, alyawm, today]
150
+ غدا: [ghadan, tomorrow]
151
+ أمس: [ams, yesterday]
152
+ الآن: [al-an, alan, now]
153
+ ساعة: [saa, sa'a, hour, clock, watch]
154
+ دقيقة: [daqiqa, minute]
155
+ أسبوع: [usbu, usbu', week]
156
+ شهر: [shahr, month]
157
+ سنة: [sana, year]
158
+ وقت: [waqt, time]
159
+ الأحد: [al-ahad, alahad, Sunday]
160
+ الاثنين: [al-ithnayn, alithnayn, Monday]
161
+ الثلاثاء: [ath-thulatha, aththulatha, Tuesday]
162
+ الأربعاء: [al-arbia, al-arbi'a, Wednesday]
163
+ الخميس: [al-khamis, alkhamis, Thursday]
164
+ الجمعة: [al-jumua, al-jum'a, Friday]
165
+ السبت: [as-sabt, assabt, Saturday]
166
+ بيت: [bayt, house, home]
167
+ مدرسة: [madrasa, school]
168
+ مستشفى: [mustashfa, hospital]
169
+ سوق: [suq, souq, market]
170
+ مطعم: [matam, mat'am, restaurant]
171
+ مدينة: [madina, city]
172
+ شارع: [shari, shari', street]
173
+ مسجد: [masjid, mosque]
174
+ مكتب: [maktab, office, desk]
175
+ مطار: [matar, airport]
176
+ فندق: [funduq, hotel]
177
+ جامعة: [jamia, jami'a, university]
178
+ غرفة: [ghurfa, room]
179
+ مطبخ: [matbakh, kitchen]
180
+ حمام: [hammam, bathroom, bath]
181
+ محطة: [mahatta, station]
182
+ بلد: [balad, country]
183
+ باب: [bab, door]
184
+ نافذة: [nafidha, window]
185
+ طاولة: [tawila, table]
186
+ كرسي: [kursi, chair]
187
+ سرير: [sarir, bed]
188
+ كتاب: [kitab, book]
189
+ قلم: [qalam, pen, pencil]
190
+ هاتف: [hatif, phone, telephone]
191
+ سيارة: [sayyara, car]
192
+ مفتاح: [miftah, key]
193
+ كوب: [kub, cup, glass]
194
+ ملابس: [malabis, clothes]
195
+ نقود: [nuqud, money]
196
+ حاسوب: [hasub, computer]
197
+ أكل: [akala, eat]
198
+ شرب: [shariba, drink]
199
+ ذهب: [dhahaba, go]
200
+ جاء: [jaa, ja'a, come]
201
+ كتب: [kataba, write]
202
+ قرأ: [qaraa, qara'a, read]
203
+ تكلم: [takallama, speak, talk]
204
+ قال: [qala, say]
205
+ رأى: [raa, ra'a, see]
206
+ سمع: [samia, sami'a, hear]
207
+ عرف: [arafa, know]
208
+ فهم: [fahima, understand]
209
+ أحب: [ahabba, love, like]
210
+ أراد: [arada, want]
211
+ عمل: [amal, work, job]
212
+ نام: [nama, sleep]
213
+ جلس: [jalasa, sit]
214
+ وقف: [waqafa, stand, stop]
215
+ مشى: [masha, walk]
216
+ ركض: [rakada, run]
217
+ فتح: [fataha, open]
218
+ أغلق: [aghlaqa, close, shut]
219
+ أعطى: [aata, a'ta, give]
220
+ أخذ: [akhadha, take]
221
+ اشترى: [ishtara, buy]
222
+ باع: [baa, ba'a, sell]
223
+ درس: [darasa, study]
224
+ تعلم: [taallama, ta'allama, learn]
225
+ ساعد: [saada, sa'ada, help]
226
+ لعب: [laiba, la'iba, play]
227
+ سأل: [saala, sa'ala, ask]
228
+ أجاب: [ajaba, answer, reply]
229
+ انتظر: [intazara, intadhara, wait]
230
+ بحث: [bahatha, search, look for]
231
+ وجد: [wajada, find]
232
+ دخل: [dakhala, enter, go in]
233
+ خرج: [kharaja, go out, exit, leave]
234
+ رجع: [rajaa, raja'a, return, come back]
235
+ سافر: [safara, travel]
236
+ فكر: [fakkara, think]
237
+ بدأ: [badaa, bada'a, begin, start]
238
+ انتهى: [intaha, end, finish]
239
+ دفع: [dafaa, dafa'a, pay, push]
240
+ كان: [kana, be, was]
241
+ اتصل: [ittasala, call, phone]
242
+ كبير: [kabir, big, large, old]
243
+ صغير: [saghir, small, little, young]
244
+ جديد: [jadid, new]
245
+ قديم: [qadim, old, ancient]
246
+ جيد: [jayyid, good]
247
+ سيء: [sayyi, sayyi', bad]
248
+ جميل: [jamil, beautiful, pretty, nice]
249
+ طويل: [tawil, long, tall]
250
+ قصير: [qasir, short]
251
+ حار: [harr, hot]
252
+ بارد: [barid, cold]
253
+ سهل: [sahl, easy]
254
+ صعب: [saab, sa'b, difficult, hard]
255
+ سريع: [sari, sari', fast, quick]
256
+ كثير: [kathir, many, much, a lot]
257
+ قليل: [qalil, few, little]
258
+ غني: [ghani, rich]
259
+ فقير: [faqir, poor]
260
+ سعيد: [said, sa'id, happy]
261
+ حزين: [hazin, sad]
262
+ جائع: [jai, ja'i', hungry]
263
+ عطشان: [atshan, thirsty]
264
+ متعب: [mutab, mut'ab, tired]
265
+ مريض: [marid, sick, ill]
266
+ نظيف: [nazif, nadhif, clean]
267
+ قريب: [qarib, near, close, relative]
268
+ بعيد: [baid, ba'id, far]
269
+ مفتوح: [maftuh, open]
270
+ مغلق: [mughlaq, closed, shut]
271
+ رخيص: [rakhis, cheap]
272
+ غالي: [ghali, expensive]
273
+ صحيح: [sahih, correct, right, 'true']
274
+ مهم: [muhimm, important]
275
+ كل: [kull, all, every, each]
276
+ ماذا: [madha, what]
277
+ من: [man, min, who, from]
278
+ أين: [ayna, where]
279
+ متى: [mata, when]
280
+ لماذا: [limadha, why]
281
+ كيف: [kayfa, how]
282
+ كم: [kam, how many, how much]
283
+ أي: [ayy, which]
284
+ نعم: [naam, na'am, 'yes']
285
+ لا: [la, 'no', not]
286
+ و: [wa, and]
287
+ أو: [aw, or]
288
+ لكن: [lakin, but]
289
+ في: [fi, in, at]
290
+ على: [ala, 'on']
291
+ مع: [maa, ma'a, with]
292
+ هنا: [huna, here]
293
+ هناك: [hunak, there]
294
+ جدا: [jiddan, very]
295
+ أيضا: [aydan, also, too]
296
+ يمين: [yamin, right]
297
+ يسار: [yasar, left]
298
+ فوق: [fawq, above, over, up]
299
+ تحت: [taht, under, below]
300
+ قبل: [qabla, before]
301
+ بعد: [bada, ba'da, after]
302
+ شمس: [shams, sun]
303
+ أرض: [ard, earth, land, ground]
304
+ مطر: [matar, rain]
305
+ شجرة: [shajara, tree]
306
+ نار: [nar, fire]
307
+ جبل: [jabal, mountain]
308
+ طريق: [tariq, road, way]
309
+ اسم: [ism, name]
310
+ لغة: [lugha, language]
311
+ كلمة: [kalima, word]
312
+ سؤال: [sual, su'al, question]
313
+ جواب: [jawab, answer, reply]
314
+ عربي: [arabi, Arabic, Arab]
315
+ إنجليزي: [injlizi, English]
316
+ شيء: [shay, shay', thing, something]
317
+ حياة: [hayat, life]
318
+ حافلة: [hafila, bus]
319
+ قطار: [qitar, train]
320
+ طائرة: [taira, ta'ira, airplane, plane]
321
+ Phrases:
322
+ mapping: { Arabic: [Latin, English] }
323
+ مرحبا: [marhaban, hello, hi]
324
+ أهلا: [ahlan, hi, hello]
325
+ أهلا وسهلا: [ahlan wa sahlan, welcome]
326
+ السلام عليكم: [as-salamu alaykum, assalamu alaykum, peace be upon you, hello]
327
+ وعليكم السلام: [wa alaykum as-salam, wa alaykum assalam, and peace be upon you, and upon you peace]
328
+ صباح الخير: [sabah al-khayr, sabah alkhayr, good morning]
329
+ صباح النور: [sabah an-nur, sabah annur, good morning]
330
+ مساء الخير: [masa al-khayr, masa alkhayr, good evening]
331
+ مساء النور: [masa an-nur, masa annur, good evening]
332
+ تصبح على خير: [tusbih ala khayr, good night]
333
+ مع السلامة: [maa as-salama, ma'a assalama, goodbye, bye]
334
+ إلى اللقاء: [ila al-liqa, ila alliqa, goodbye, see you]
335
+ أراك لاحقا: [araka lahiqan, see you later]
336
+ شكرا: [shukran, thank you, thanks]
337
+ شكرا جزيلا: [shukran jazilan, thank you very much, thanks a lot]
338
+ عفوا: [afwan, you're welcome, excuse me, pardon]
339
+ من فضلك: [min fadlak, min fadlik, please]
340
+ آسف: [asif, sorry, I'm sorry]
341
+ نعم: [naam, na'am, 'yes']
342
+ لا: [la, 'no']
343
+ كيف حالك: [kayfa haluk, kayfa halak, how are you]
344
+ أنا بخير: [ana bikhayr, I'm fine, I'm well]
345
+ الحمد لله: [al-hamdu lillah, alhamdulillah, praise be to God, thank God]
346
+ ما اسمك: [ma ismuk, ma ismak, what's your name, what is your name]
347
+ اسمي أحمد: [ismi ahmad, my name is Ahmad]
348
+ تشرفنا: [tasharrafna, nice to meet you, pleased to meet you]
349
+ أنا لا أفهم: [ana la afham, I don't understand]
350
+ لا أعرف: [la aarif, la a'rif, I don't know]
351
+ هل تتكلم الإنجليزية: [hal tatakallam al-injliziya, hal tatakallam alinjliziya, do you speak English]
352
+ أتكلم العربية قليلا: [atakallam al-arabiya qalilan, atakallam alarabiya qalilan, I speak a little Arabic]
353
+ تكلم ببطء من فضلك: [takallam bibut min fadlak, speak slowly please, please speak slowly]
354
+ أين الحمام: [ayna al-hammam, ayna alhammam, where is the bathroom, where is the toilet]
355
+ أين المحطة: [ayna al-mahatta, ayna almahatta, where is the station]
356
+ أين الفندق: [ayna al-funduq, ayna alfunduq, where is the hotel]
357
+ كم الثمن: [kam ath-thaman, kam aththaman, how much is it, how much]
358
+ بكم هذا: [bikam hadha, how much is this]
359
+ من أين أنت: [min ayna anta, min ayna anti, where are you from]
360
+ أنا من أمريكا: [ana min amrika, I'm from America, I am from America]
361
+ أريد ماء: [urid maa, urid ma', I want water]
362
+ الحساب من فضلك: [al-hisab min fadlak, alhisab min fadlak, the bill please, check please]
363
+ هل يمكن أن تساعدني: [hal yumkin an tusaidani, hal yumkin an tusa'idani, can you help me]
364
+ كم الساعة: [kam as-saa, kam assa'a, what time is it]
365
+ لا بأس: [la bas, la ba's, it's okay, no problem, never mind]
366
+ لا مشكلة: [la mushkila, no problem]
367
+ تفضل: [tafaddal, please go ahead, here you are, come in]
368
+ إن شاء الله: [in sha allah, inshallah, God willing, hopefully]
369
+ أنا أحبك: [ana uhibbuk, I love you]
370
+ بالتوفيق: [bit-tawfiq, bittawfiq, good luck]