Add offline reading, bookmarks, three UI languages and downloads

Reading
- Naskh is now the default face, and both Arabic-script fonts are registered
  at four weights so the text can be thickened for a lit screen.
- Category listings show each poem's opening line, fetched best-effort from
  api.ganjoor.net since the data set doesn't carry excerpts.
- Tap a couplet to save that passage or copy it; a saved passage keeps a
  tappable link back to its poem. Poem text is selectable for plain copying.

Languages
- Persian, Urdu and English, Persian by default whatever the phone's locale,
  applied in attachBaseContext and switchable from the top bar or the sheet.
- English chrome uses Libron (OFL); poems stay naskh or nastaliq throughout.
- Each language gets its own values-* folder: with Farsi only in values/,
  Android was resolving it to the Urdu strings, since a same-script locale
  outranks the default.

Offline
- Downloaded poets mirror the data set's layout under filesDir, so offline
  mode is one lookup rather than a parallel path. Downloads run one poet at
  a time, skip what's on disk, and resume by restarting.
- Downloads screen lists every poet with their portrait and tick boxes for
  picking several, plus storage used, delete, and download-everything behind
  a size warning.
- Offline mode refuses the network and says what's missing rather than
  blaming the connection.

Also: poet sort (Ganjoor's order or alphabetical, via a Persian collator),
RTL nav transitions, an original shamsa launcher icon with a monochrome layer
for themed icons, and preferences written with commit so they survive the
process being killed.

F-Droid: dependenciesInfo off, optional signing so the build works with no
keystore, fastlane metadata in three languages, cleartext traffic disabled.

Verified on an API 36 emulator: downloaded a poet, pulled the emulator's
network, read them offline, and confirmed an undownloaded poet reports being
missing rather than erroring.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Anas RashidandClaude Opus 5 committed 2026-10-03 23:20:42 +02:00
1 parent d9915eac6c
commit abcffbc43b
66 files changed
+1581 -328

No files matched your search

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M5,20h14v-2H5v2zM19,9h-4V3H9v6H5l7,7 7,-7z" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z" />
</vector>
@@ -1,170 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:fillColor="#00696E"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
@@ -1,30 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
android:fillColor="#F1E5CE"
android:fillType="evenOdd"
android:pathData="M54.00,20.00 L63.96,29.96 L78.04,29.96 L78.04,44.04 L88.00,54.00 L78.04,63.96 L78.04,78.04 L63.96,78.04 L54.00,88.00 L44.04,78.04 L29.96,78.04 L29.96,63.96 L20.00,54.00 L29.96,44.04 L29.96,29.96 L44.04,29.96 Z M54.00,39.00 L58.39,43.39 L64.61,43.39 L64.61,49.61 L69.00,54.00 L64.61,58.39 L64.61,64.61 L58.39,64.61 L54.00,69.00 L49.61,64.61 L43.39,64.61 L43.39,58.39 L39.00,54.00 L43.39,49.61 L43.39,43.39 L49.61,43.39 Z" />
</vector>
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#FF000000"
android:fillType="evenOdd"
android:pathData="M54.00,20.00 L63.96,29.96 L78.04,29.96 L78.04,44.04 L88.00,54.00 L78.04,63.96 L78.04,78.04 L63.96,78.04 L54.00,88.00 L44.04,78.04 L29.96,78.04 L29.96,63.96 L20.00,54.00 L29.96,44.04 L29.96,29.96 L44.04,29.96 Z M54.00,39.00 L58.39,43.39 L64.61,43.39 L64.61,49.61 L69.00,54.00 L64.61,58.39 L64.61,64.61 L58.39,64.61 L54.00,69.00 L49.61,64.61 L43.39,64.61 L43.39,58.39 L39.00,54.00 L43.39,49.61 L43.39,43.39 L49.61,43.39 Z" />
</vector>
Binary file not shown.
Binary file not shown.
@@ -2,5 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>
@@ -2,5 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

+51
View File
@@ -0,0 +1,51 @@
<resources>
<string name="search_poets">جست‌وجوی شاعران</string>
<string name="back">بازگشت</string>
<string name="retry">تلاش دوباره</string>
<string name="load_failed">بارگذاری نشد. اتصال اینترنت را بررسی کنید.</string>
<string name="load_failed_offline">این بخش ذخیره نشده است. حالت برون‌خط را خاموش کنید یا آن را دریافت کنید.</string>
<string name="reading_settings">تنظیمات خواندن</string>
<string name="theme">پوسته</string>
<string name="theme_system">سیستم</string>
<string name="theme_light">روشن</string>
<string name="theme_dark">تاریک</string>
<string name="theme_sepia">کاغذی</string>
<string name="theme_sepia_dark">کاغذی شب</string>
<string name="font">قلم</string>
<string name="font_naskh">نسخ</string>
<string name="font_nastaliq">نستعلیق</string>
<string name="text_size">اندازهٔ متن</string>
<string name="language">زبان</string>
<string name="show_summaries">نمایش خلاصه‌ها</string>
<string name="summary_ai_note">تولیدشده با هوش مصنوعی گنجور، نه سرودهٔ شاعر</string>
<string name="source">منبع: %s</string>
<string name="menu">منو</string>
<string name="bookmarks">نشان‌شده‌ها</string>
<string name="bookmark_add">افزودن به نشان‌ها</string>
<string name="bookmark_remove">حذف از نشان‌ها</string>
<string name="no_bookmarks">هنوز شعری را نشان نکرده‌اید.</string>
<string name="downloads">دریافت‌ها</string>
<string name="offline_mode">حالت برون‌خط</string>
<string name="offline_mode_note">فقط از شعرهای ذخیره‌شده بخوان</string>
<string name="download">دریافت</string>
<string name="downloading">در حال دریافت… %1$d از %2$d</string>
<string name="downloaded">ذخیره شد (%d شعر)</string>
<string name="delete_download">حذف از حافظه</string>
<string name="download_all">دریافت همهٔ شاعران</string>
<string name="download_all_warning">دریافت همهٔ ۱۳۵٬۰۰۰ شعر ساعت‌ها طول می‌کشد و صدها مگابایت جا می‌گیرد.</string>
<string name="cancel">انصراف</string>
<string name="storage_used">فضای مصرف‌شده: %s</string>
<string name="weight">ضخامت قلم</string>
<string name="weight_regular">معمولی</string>
<string name="weight_medium">متوسط</string>
<string name="weight_semibold">نیمه‌ضخیم</string>
<string name="weight_bold">ضخیم</string>
<string name="sort">ترتیب</string>
<string name="sort_default">ترتیب گنجور</string>
<string name="sort_name">الفبایی</string>
<string name="save_passage">ذخیرهٔ این بیت</string>
<string name="saved_passage">ذخیره شد</string>
<string name="copy">رونوشت</string>
<string name="copied">رونوشت شد</string>
<string name="download_selected">دریافت %d شاعر</string>
</resources>
+51
View File
@@ -0,0 +1,51 @@
<resources>
<string name="search_poets">شاعروں کی تلاش</string>
<string name="back">واپس</string>
<string name="retry">دوبارہ کوشش</string>
<string name="load_failed">لوڈ نہیں ہو سکا۔ اپنا انٹرنیٹ کنکشن دیکھیں۔</string>
<string name="load_failed_offline">یہ محفوظ نہیں ہے۔ آف لائن موڈ بند کریں یا پہلے ڈاؤن لوڈ کریں۔</string>
<string name="reading_settings">مطالعے کی ترتیبات</string>
<string name="theme">تھیم</string>
<string name="theme_system">سسٹم</string>
<string name="theme_light">روشن</string>
<string name="theme_dark">تاریک</string>
<string name="theme_sepia">کاغذی</string>
<string name="theme_sepia_dark">کاغذی رات</string>
<string name="font">فونٹ</string>
<string name="font_naskh">نسخ</string>
<string name="font_nastaliq">نستعلیق</string>
<string name="text_size">متن کا سائز</string>
<string name="language">زبان</string>
<string name="show_summaries">خلاصے دکھائیں</string>
<string name="summary_ai_note">گنجور کے مصنوعی ذہانت سے تیار کردہ، شاعر کا کلام نہیں</string>
<string name="source">ماخذ: %s</string>
<string name="menu">مینیو</string>
<string name="bookmarks">محفوظ کلام</string>
<string name="bookmark_add">محفوظ کریں</string>
<string name="bookmark_remove">محفوظ شدہ سے ہٹائیں</string>
<string name="no_bookmarks">ابھی کوئی کلام محفوظ نہیں کیا گیا۔</string>
<string name="downloads">ڈاؤن لوڈز</string>
<string name="offline_mode">آف لائن موڈ</string>
<string name="offline_mode_note">صرف محفوظ شدہ کلام پڑھیں</string>
<string name="download">ڈاؤن لوڈ</string>
<string name="downloading">ڈاؤن لوڈ جاری… %2$d میں سے %1$d</string>
<string name="downloaded">محفوظ ہو گیا (%d کلام)</string>
<string name="delete_download">آلے سے حذف کریں</string>
<string name="download_all">تمام شعرا ڈاؤن لوڈ کریں</string>
<string name="download_all_warning">تمام ۱۳۵٬۰۰۰ کلام ڈاؤن لوڈ کرنے میں کئی گھنٹے اور سینکڑوں میگابائٹ لگیں گے۔</string>
<string name="cancel">منسوخ</string>
<string name="storage_used">استعمال شدہ جگہ: %s</string>
<string name="weight">فونٹ کی موٹائی</string>
<string name="weight_regular">عام</string>
<string name="weight_medium">درمیانہ</string>
<string name="weight_semibold">نیم موٹا</string>
<string name="weight_bold">موٹا</string>
<string name="sort">ترتیب</string>
<string name="sort_default">گنجور کی ترتیب</string>
<string name="sort_name">حروفِ تہجی</string>
<string name="save_passage">یہ شعر محفوظ کریں</string>
<string name="saved_passage">محفوظ ہو گیا</string>
<string name="copy">نقل کریں</string>
<string name="copied">نقل ہو گیا</string>
<string name="download_selected">%d شعرا ڈاؤن لوڈ کریں</string>
</resources>
+36 -4
View File
@@ -1,9 +1,11 @@
<resources>
<string name="app_name">Ganjoor</string>
<!-- The app is called گنجور in every language. -->
<string name="app_name">گنجور</string>
<string name="search_poets">Search poets</string>
<string name="back">Back</string>
<string name="retry">Retry</string>
<string name="load_failed">Could not load this page. Check your connection and try again.</string>
<string name="load_failed_offline">This isn\'t downloaded. Turn off offline mode, or download it first.</string>
<string name="reading_settings">Reading settings</string>
<string name="theme">Theme</string>
<string name="theme_system">System</string>
@@ -14,11 +16,41 @@
<string name="font">Font</string>
<string name="font_naskh">Naskh</string>
<string name="font_nastaliq">Nastaliq</string>
<string name="font_preview">الا یا ایها الساقی ادر کأسا و ناولها</string>
<string name="text_size">Text size</string>
<string name="language">Language</string>
<string name="show_summaries">Show summaries</string>
<string name="summary_ai_note">AI-generated by Ganjoor, not by the poet</string>
<string name="previous_poem">‹ %s</string>
<string name="next_poem">%s ›</string>
<string name="source">Source: %s</string>
<string name="menu">Menu</string>
<string name="bookmarks">Bookmarks</string>
<string name="bookmark_add">Bookmark</string>
<string name="bookmark_remove">Remove bookmark</string>
<string name="no_bookmarks">Nothing bookmarked yet.</string>
<string name="downloads">Downloads</string>
<string name="offline_mode">Offline mode</string>
<string name="offline_mode_note">Read only what\'s been downloaded</string>
<string name="download">Download</string>
<string name="downloading">Downloading… %1$d of %2$d</string>
<string name="downloaded">Saved (%d poems)</string>
<string name="delete_download">Delete from device</string>
<string name="download_all">Download every poet</string>
<string name="download_all_warning">Downloading all 135,000 poems takes hours and hundreds of megabytes.</string>
<string name="cancel">Cancel</string>
<string name="storage_used">Storage used: %s</string>
<string name="weight">Font weight</string>
<string name="weight_regular">Regular</string>
<string name="weight_medium">Medium</string>
<string name="weight_semibold">Semibold</string>
<string name="weight_bold">Bold</string>
<string name="sort">Sort</string>
<string name="sort_default">Ganjoor\'s order</string>
<string name="sort_name">By name</string>
<string name="save_passage">Save this passage</string>
<string name="saved_passage">Saved</string>
<string name="copy">Copy</string>
<string name="copied">Copied</string>
<string name="font_preview">الا یا ایها الساقی ادر کأسا و ناولها</string>
<string name="next_poem">%s ›</string>
<string name="previous_poem">‹ %s</string>
<string name="download_selected">Download %d poets</string>
</resources>