summaryrefslogtreecommitdiff
path: root/lulua/report.py
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2021-10-30 13:29:09 +0200
committerLars-Dominik Braun <lars@6xq.net>2021-10-30 13:29:09 +0200
commitad9148bdcbfd73cad8f9b9f1380eaa29da1a1649 (patch)
tree162b146b1cd4f98a60a283f4e59a6a2c9f597c0f /lulua/report.py
parent2fef61e315a2d5e15a945f57328fe389468d7821 (diff)
downloadlulua-ad9148bdcbfd73cad8f9b9f1380eaa29da1a1649.tar.gz
lulua-ad9148bdcbfd73cad8f9b9f1380eaa29da1a1649.tar.bz2
lulua-ad9148bdcbfd73cad8f9b9f1380eaa29da1a1649.zip
report: Romanize Arabic letter names.
Although I’m not a fan of romanization/transcription I feel it improves accessibility of the English version when combined with Arabic script in brackets.
Diffstat (limited to 'lulua/report.py')
-rw-r--r--lulua/report.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/lulua/report.py b/lulua/report.py
index 7d0294a..0e5ec00 100644
--- a/lulua/report.py
+++ b/lulua/report.py
@@ -18,7 +18,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-import sys, argparse, logging, pickle, math
+import sys, argparse, logging, pickle, math, unicodedata
from gettext import GNUTranslations, NullTranslations
from decimal import Decimal
from fractions import Fraction
@@ -75,6 +75,39 @@ def render ():
env.filters['arabnum'] = arabnum
env.filters['fraction'] = fraction
+ # Map global variables to Arabic letter romanizations, so we can use
+ # them easily in text.
+ # Taken from Abu-Chacra’s Arabic – An Essential Grammar. It’s
+ # too difficult for now to write a general-purpose romanization
+ # function, because it would need a dictionary.
+ letterNames = {
+ 'Hamzah': ('Hamzah', 'ء'),
+ 'Alif': ('ᵓAlif', 'ا'),
+ 'Alifhamzah': ('ᵓAlif-hamzah', 'أ'),
+ 'Wawhamzah': ('Wa\u0304w-hamzah', 'ؤ'),
+ 'Yahamzah': ('Ya\u0304ᵓ-hamzah', 'ئ'),
+ 'Ba': ('Baᵓ', 'ب'),
+ 'Ta': ('Taᵓ', 'ت'),
+ 'Tha': ('T\u0331aᵓ', 'ث'),
+ 'Ra': ('Raᵓ', 'ر'),
+ 'Dal': ('Da\u0304l', 'د'),
+ 'Dhal': ('D\u0331a\u0304l', 'ذ'),
+ 'Qaf': ('Qa\u0304f', 'ق'),
+ 'Lam': ('La\u0304m', 'ل'),
+ 'Lamalif': ('La\u0304m-ᵓalif', 'لا'),
+ 'Mim': ('Mi\u0304m', 'م'),
+ 'Nun': ('Nu\u0304n', 'ن'),
+ 'Waw': ('Wa\u0304w', 'و'),
+ 'Ya': ('Ya\u0304ᵓ', 'ي'),
+ 'Tamarbutah': ('Ta\u0304ᵓ marbu\u0304t\u0323ah', 'ة'),
+ 'Alifmaqsurah': ('ᵓAlif maqs\u0323u\u0304rah', 'ى'),
+ }
+ for k, (romanized, arabic) in letterNames.items ():
+ env.globals[k] = f'{romanized} <bdo lang="ar">({arabic})</bdo>'
+ env.globals[k.lower ()] = env.globals[k].lower ()
+ env.globals[k + '_'] = romanized
+ env.globals[k.lower () + '_'] = romanized.lower ()
+
corpus = []
for x in args.corpus:
with open (x) as fd: