Urdu public pages, batch 2 (#2): auth, errors, map, FAQ, similar poems, people pages, page titles

- translate remaining public views and page-model strings (titles, messages, relation names)
- Urdu stopword list for word-frequency stats (replaces Persian list)
- error pages: drop list of alternative Ganjoor services

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Anas Rashid 2026-10-05 00:22:09 +02:00
parent eb0a353cf2
commit 020b010483
40 changed files with 306 additions and 318 deletions

View File

@ -2,7 +2,7 @@
@model DiwanRazor.Pages.LoginModel
@{
Layout = null;
ViewData["Title"] = "ورود کاربر";
ViewData["Title"] = "داخلہ";
}
<!DOCTYPE html>
@ -33,11 +33,11 @@
</td>
</tr>
<tr>
<td><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="خروج از حساب کاربری" /></td>
<td><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="اکاؤنٹ سے خروج" /></td>
</tr>
<tr>
<td>
<a role="button" class="pagebutton" href="/">برگشت به دیوان</a>
<a role="button" class="pagebutton" href="/">دیوان پر واپس جائیں</a>
</td>
</tr>
</table>
@ -51,30 +51,30 @@
<table>
<tr>
<td>
<span class="inputlabel">پست الکترونیکی: </span>
<span class="inputlabel">ای میل: </span>
</td>
<td>
<input type="email" asp-for="LoginViewModel.Username" placeholder="پست الکترونیکی" />
<input type="email" asp-for="LoginViewModel.Username" placeholder="ای میل" />
</td>
</tr>
<tr>
<td>
<span class="inputlabel">گذرواژه: </span>
<span class="inputlabel">پاس ورڈ: </span>
</td>
<td>
<input type="password" asp-for="LoginViewModel.Password" id="password" placeholder="گذرواژه" />
<input type="password" asp-for="LoginViewModel.Password" id="password" placeholder="پاس ورڈ" />
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" id="submit" style="direction:rtl;text-align:center" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="ورود" /></td>
<td colspan="2"><input type="submit" name="submit" id="submit" style="direction:rtl;text-align:center" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="داخل ہوں" /></td>
</tr>
<tr>
<td><a role="button" class="pagebutton" href="/signup">نام‌نویسی</a></td>
<td><a role="button" class="pagebutton" href="/resetpassword">فراموشی گذرواژه</a></td>
<td><a role="button" class="pagebutton" href="/signup">رکنیت</a></td>
<td><a role="button" class="pagebutton" href="/resetpassword">پاس ورڈ بھول گئے</a></td>
</tr>
<tr>
<td colspan="2">
<a role="button" class="pagebutton" href="/">برگشت به دیوان</a>
<a role="button" class="pagebutton" href="/">دیوان پر واپس جائیں</a>
</td>
</tr>

View File

@ -23,7 +23,7 @@
@if (Model.LoggedIn)
{
<div class="background-red color-white">
<p>شما پیشتر وارد شده‌اید! برای طی فرایند فراموشی گذرواژه خارج شوید.</p>
<p>آپ پہلے سے داخل ہیں! پاس ورڈ کی بازیابی کے لیے پہلے خروج کریں.</p>
</div>
}
else
@ -38,7 +38,7 @@
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>
لطفاً پست الکترونیکی را که با آن نام‌نویسی کرده‌اید وارد کنید:
براہِ کرم وہ ای میل لکھیں جس سے آپ نے رکنیت لی تھی:
</p>
</div>
@ -47,19 +47,19 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">پست الکترونیکی: </span>
<span class="inputlabel">ای میل: </span>
</td>
<td class="noborder">
<input type="email" asp-for="ForgotPasswordViewModel.Email" class="signupemail" placeholder="پست الکترونیکی" />
<input type="email" asp-for="ForgotPasswordViewModel.Email" class="signupemail" placeholder="ای میل" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">تصویر امنیتی:</span>
<span class="inputlabel">حفاظتی تصویر:</span>
</td>
<td class="noborder">
<img src="@Model.CaptchaImageUrl" alt="تصویر امنیتی" width="100" />
<img src="@Model.CaptchaImageUrl" alt="حفاظتی تصویر" width="100" />
<input type="hidden" asp-for="ForgotPasswordViewModel.ClientAppName" />
<input type="hidden" asp-for="ForgotPasswordViewModel.Language" />
<input type="hidden" asp-for="ForgotPasswordViewModel.CallbackUrl" />
@ -71,7 +71,7 @@
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>
تصویر امنیتی بالا کمک می‌کند بین کاربران واقعی و رباتها و برنامه‌های کامپیوتری تمایز قائل شویم. لطفاً عددی را که در تصویر امنیتی بالا می‌بینید در کادر زیر وارد کنید:
اوپر کی حفاظتی تصویر حقیقی صارفین اور خودکار پروگراموں میں فرق کرنے میں مدد دیتی ہے۔ براہِ کرم تصویر میں نظر آنے والا عدد نیچے کے خانے میں لکھیں:
</p>
</div>
</td>
@ -79,15 +79,15 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">عدد تصویر امنیتی: </span>
<span class="inputlabel">حفاظتی تصویر کا عدد: </span>
</td>
<td class="noborder">
<input asp-for="ForgotPasswordViewModel.CaptchaValue" class="signupemail" placeholder="عدد تصویر امنیتی" />
<input asp-for="ForgotPasswordViewModel.CaptchaValue" class="signupemail" placeholder="حفاظتی تصویر کا عدد" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="ادامه" /></td>
<td class="noborder" colspan="2"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="جاری رکھیں" /></td>
</tr>
</table>
@ -105,27 +105,27 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">رمز دریافتی:</span>
<span class="inputlabel">موصولہ کوڈ:</span>
</td>
<td class="noborder">
<input asp-for="Secret" class="signupemail" placeholder="رمز دریافتی" />
<input asp-for="Secret" class="signupemail" placeholder="موصولہ کوڈ" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>لطفاً پست الکترونیکی خود را بررسی کنید. در صورتی که نشانی پست الکترونیکی خود را درست وارد کرده باشید نامه‌ای از دیوان دریافت کرده‌اید که حاوی یک رمز است. </p>
<p>رمز دریافتی را در کادر بالا وارد کرده، روی «ادامه» بزنید.</p>
<p><span class="red-color">تذکر:</span> ممکن است نامه به پوشهٔ اسپم منتقل شده باشد.</p>
<p>براہِ کرم اپنی ای میل دیکھیں۔ اگر پتا درست لکھا تھا تو دیوان کی طرف سے ایک کوڈ والی ای میل آئی ہوگی. </p>
<p>موصولہ کوڈ اوپر کے خانے میں لکھ کر «جاری رکھیں» دبائیں.</p>
<p><span class="red-color">یاد دہانی:</span> ممکن ہے ای میل اسپام فولڈر میں چلی گئی ہو.</p>
</div>
</td>
</tr>
<tr class="nobackground">
<td class="noborder"><a role="button" class="pagebutton" href="/resetpassword">مرحلهٔ قبل</a></td>
<td class="noborder"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="ادامه" /></td>
<td class="noborder"><a role="button" class="pagebutton" href="/resetpassword">پچھلا مرحلہ</a></td>
<td class="noborder"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="جاری رکھیں" /></td>
</tr>
</table>
@ -144,26 +144,26 @@
<tr class="nobackground">
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>گذرواژهٔ جدیدی برای خود تعیین کنید:</p>
<p>نیا پاس ورڈ مقرر کریں:</p>
</div>
</td>
</tr>
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">گذرواژه: </span>
<span class="inputlabel">پاس ورڈ: </span>
</td>
<td class="noborder">
<input asp-for="ResetPasswordViewModel.Password" id="password" class="signupemail" autocomplete="new-password" placeholder="گذرواژه" />
<input asp-for="ResetPasswordViewModel.Password" id="password" class="signupemail" autocomplete="new-password" placeholder="پاس ورڈ" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">تکرار گذرواژه: </span>
<span class="inputlabel">پاس ورڈ دوبارہ: </span>
</td>
<td class="noborder">
<input asp-for="ResetPasswordViewModel.PasswordConfirmation" class="signupemail" autocomplete="new-password" placeholder="تکرار گذرواژه" />
<input asp-for="ResetPasswordViewModel.PasswordConfirmation" class="signupemail" autocomplete="new-password" placeholder="پاس ورڈ دوبارہ" />
</td>
</tr>
@ -172,14 +172,14 @@
<input type="hidden" asp-for="ResetPasswordViewModel.Email" />
<input type="hidden" asp-for="ResetPasswordViewModel.Secret" />
<div class="notice width-100per">
<p>گذرواژه باید دست کم شامل <span class="red-color"><strong>۶</strong></span> حرف باشد و از ترکیبی از <span class="red-color"><strong>اعداد و حروف انگلیسی</strong></span> تشکیل شده باشد.</p>
<p>حروف و اعداد نباید تکراری باشند و وجود <span class="red-color"><strong>حداقل یک عدد</strong></span> و <span class="red-color"><strong>یک حرف کوچک انگلیسی</strong></span> در گذرواژه الزامی است.</p>
<p>پاس ورڈ میں کم از کم <span class="red-color"><strong>۶</strong></span> حروف ہوں اور یہ <span class="red-color"><strong>اعداد اور انگریزی حروف</strong></span> کے امتزاج سے بنا ہو.</p>
<p>حروف اور اعداد مکرر نہ ہوں اور <span class="red-color"><strong>کم از کم ایک عدد</strong></span> و <span class="red-color"><strong>ایک چھوٹا انگریزی حرف</strong></span> پاس ورڈ میں لازمی ہے.</p>
</div>
</td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2"><input type="submit" name="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" id="submit" value="ادامه" /></td>
<td class="noborder" colspan="2"><input type="submit" name="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" id="submit" value="جاری رکھیں" /></td>
</tr>
</table>

View File

@ -61,16 +61,16 @@ namespace DiwanRazor.Pages
ViewData["TrackingScript"] = Configuration["TrackingScript"] != null && string.IsNullOrEmpty(Request.Cookies["Token"]) ? Configuration["TrackingScript"].Replace("loggedon", "") : Configuration["TrackingScript"];
if (PhaseSendEmail)
{
ViewData["Title"] = "دیوان » فراموشی گذرواژه » ورود ایمیل";
ViewData["Title"] = "دیوان » پاس ورڈ بھول گئے » ای میل";
}
else
if (PhaseSendEmail)
{
ViewData["Title"] = "دیوان » فراموشی گذرواژه » ورود رمز دریافتی در ایمیل";
ViewData["Title"] = "دیوان » پاس ورڈ بھول گئے » موصولہ کوڈ";
}
else
{
ViewData["Title"] = "دیوان » فراموشی گذرواژه » مرحلهٔ نهایی";
ViewData["Title"] = "دیوان » پاس ورڈ بھول گئے » آخری مرحلہ";
}
}
@ -90,7 +90,7 @@ namespace DiwanRazor.Pages
ForgotPasswordViewModel = new UnverifiedSignUpViewModel()
{
ClientAppName = "وبگاه دیوان",
ClientAppName = "دیوان ویب سائٹ",
Language = "ur-PK",
CallbackUrl = $"{Configuration["SiteUrl"]}/resetpassword"
};
@ -192,7 +192,7 @@ namespace DiwanRazor.Pages
if (ResetPasswordViewModel.Password != ResetPasswordViewModel.PasswordConfirmation)
{
LastError = "گذرواژه و تکرار آن یکی نیستند.";
LastError = "پاس ورڈ اور اس کی تکرار ایک جیسے نہیں.";
_FillViewData();
return Page();
}
@ -215,7 +215,7 @@ namespace DiwanRazor.Pages
LoginViewModel loginViewModel = new LoginViewModel()
{
ClientAppName = "وبگاه دیوان",
ClientAppName = "دیوان ویب سائٹ",
Language = "ur-PK",
Username = postViewModel.Email,
Password = postViewModel.Password

View File

@ -24,7 +24,7 @@
@if (Model.LoggedIn)
{
<div class="background-red color-white">
<p>شما پیشتر نام‌نویسی کرده‌اید!</p>
<p>آپ پہلے سے رکن ہیں!</p>
</div>
}
else
@ -36,10 +36,10 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">پست الکترونیکی: </span>
<span class="inputlabel">ای میل: </span>
</td>
<td class="noborder">
<input type="email" asp-for="SignUpViewModel.Email" class="signupemail" placeholder="پست الکترونیکی" />
<input type="email" asp-for="SignUpViewModel.Email" class="signupemail" placeholder="ای میل" />
</td>
</tr>
@ -47,7 +47,7 @@
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>
برای نام‌نویسی در دیوان نیاز به یک ایمیل دارید. فرایند نام‌نویسی با ارسال یک رمز به ایمیل (پست الکترونیکی) شما ادامه پیدا می‌کند و اگر ایمیلتان درست نباشد یا به آن دسترسی نداشته باشید نمی‌توانید در دیوان نام‌نویسی کنید.
دیوان کی رکنیت کے لیے ای میل درکار ہے۔ رکنیت کا عمل آپ کی ای میل پر ایک کوڈ بھیج کر آگے بڑھتا ہے؛ اگر ای میل درست نہ ہو یا آپ کو اس تک رسائی نہ ہو تو رکنیت ممکن نہیں.
</p>
</div>
</td>
@ -55,10 +55,10 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">تصویر امنیتی:</span>
<span class="inputlabel">حفاظتی تصویر:</span>
</td>
<td class="noborder">
<img src="@Model.CaptchaImageUrl" alt="تصویر امنیتی" width="100" />
<img src="@Model.CaptchaImageUrl" alt="حفاظتی تصویر" width="100" />
<input type="hidden" asp-for="SignUpViewModel.ClientAppName" />
<input type="hidden" asp-for="SignUpViewModel.Language" />
<input type="hidden" asp-for="SignUpViewModel.CallbackUrl" />
@ -70,7 +70,7 @@
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>
تصویر امنیتی بالا کمک می‌کند بین کاربران واقعی و رباتها و برنامه‌های کامپیوتری تمایز قائل شویم. لطفاً عددی را که در تصویر امنیتی بالا می‌بینید در کادر زیر وارد کنید:
اوپر کی حفاظتی تصویر حقیقی صارفین اور خودکار پروگراموں میں فرق کرنے میں مدد دیتی ہے۔ براہِ کرم تصویر میں نظر آنے والا عدد نیچے کے خانے میں لکھیں:
</p>
</div>
@ -79,26 +79,26 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">عدد تصویر امنیتی: </span>
<span class="inputlabel">حفاظتی تصویر کا عدد: </span>
</td>
<td class="noborder">
<input asp-for="SignUpViewModel.CaptchaValue" class="signupemail" placeholder="عدد تصویر امنیتی" />
<input asp-for="SignUpViewModel.CaptchaValue" class="signupemail" placeholder="حفاظتی تصویر کا عدد" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="ادامه" /></td>
<td class="noborder" colspan="2"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="جاری رکھیں" /></td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2">
<div class="background-red color-white"><p>@Model.LastError</p></div>
<div class="notice width-100per">
<p>لطفاً به نکات زیر توجه کنید:</p>
<p>۱. اگر پیشتر در گنجینهٔ دیوان یا پیشخان خوانشگران دیوان نام‌نویسی کرده‌اید می‌توانید با همان اطلاعات کاربری در دیوان وارد شوید و نیاز به و امکان نام‌نویسی مجدد با همان ایمیل را ندارید. </p>
<p>۲. برای مطالعهٔ اشعار نیازی به نام‌نویسی ندارید. نام‌نویسی برای درج حاشیه و مشارکت در سایت مورد نیاز است.</p>
<p>۳. دیوان اطلاعاتی راجع به این که شما با نام کاربری خود چه صفحاتی را مطالعه می‌کنید جمع آوری نمی‌کند. برای اطمینان مفاد صفحهٔ <a href="/privacy">حریم خصوصی</a> را مطالعه بفرمایید.</p>
<p>۴. بعد از نام‌نویسی امکان حذف حساب کاربری خود را دارید. با این کار اطلاعات خاص شما مثل حاشیه‌ها و خوانش‌ها حذف می‌شود و مشارکت‌های شما مثل ویرایش‌ها و ... به نام کاربر سیستم دیوان ثبت می‌شود.</p>
<p>براہِ کرم ان نکات پر دھیان دیں:</p>
<p>۱. اگر آپ پہلے سے دیوان کے رکن ہیں تو انہی معلومات سے داخل ہوں؛ اسی ای میل سے دوبارہ رکنیت ممکن نہیں. </p>
<p>۲. اشعار پڑھنے کے لیے رکنیت ضروری نہیں؛ حاشیہ لکھنے اور سائٹ میں حصہ لینے کے لیے رکنیت درکار ہے.</p>
<p>۳. دیوان یہ معلومات جمع نہیں کرتا کہ آپ اپنے اکاؤنٹ سے کون سے صفحات پڑھتے ہیں۔ اطمینان کے لیے <a href="/privacy">رازداری</a> کا صفحہ پڑھ لیں.</p>
<p>۴. رکنیت کے بعد آپ اپنا اکاؤنٹ حذف کر سکتے ہیں؛ اس سے آپ کے حاشیے اور قرأتیں حذف ہو جائیں گی اور ترامیم جیسی شراکتیں دیوان کے نظامی صارف کے نام منتقل ہو جائیں گی.</p>
</div>
</td>
</tr>
@ -117,26 +117,26 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">رمز دریافتی:</span>
<span class="inputlabel">موصولہ کوڈ:</span>
</td>
<td class="noborder">
<input asp-for="Secret" class="signupemail" placeholder="رمز دریافتی" />
<input asp-for="Secret" class="signupemail" placeholder="موصولہ کوڈ" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2">
<div class="notice width-100per">
<p>لطفاً پست الکترونیکی خود را بررسی کنید. در صورتی که نشانی پست الکترونیکی خود را درست وارد کرده باشید نامه‌ای از دیوان دریافت کرده‌اید که حاوی یک رمز است. </p>
<p>رمز دریافتی را در کادر بالا وارد کرده، روی «ادامه» بزنید.</p>
<p><span class="red-color">تذکر:</span> ممکن است نامه به پوشهٔ اسپم منتقل شده باشد.</p>
<p>براہِ کرم اپنی ای میل دیکھیں۔ اگر پتا درست لکھا تھا تو دیوان کی طرف سے ایک کوڈ والی ای میل آئی ہوگی. </p>
<p>موصولہ کوڈ اوپر کے خانے میں لکھ کر «جاری رکھیں» دبائیں.</p>
<p><span class="red-color">یاد دہانی:</span> ممکن ہے ای میل اسپام فولڈر میں چلی گئی ہو.</p>
</div>
</td>
</tr>
<tr class="nobackground">
<td class="noborder"><a role="button" class="pagebutton" href="/signup">مرحلهٔ قبل</a></td>
<td class="noborder"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="ادامه" /></td>
<td class="noborder"><a role="button" class="pagebutton" href="/signup">پچھلا مرحلہ</a></td>
<td class="noborder"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="جاری رکھیں" /></td>
</tr>
</table>
@ -161,28 +161,28 @@
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">نام خانوادگی: </span>
<span class="inputlabel">خاندانی نام: </span>
</td>
<td class="noborder">
<input asp-for="FinalViewModel.SurName" class="rtl-right width-100per" placeholder="نام خانوادگی" />
<input asp-for="FinalViewModel.SurName" class="rtl-right width-100per" placeholder="خاندانی نام" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">گذرواژه: </span>
<span class="inputlabel">پاس ورڈ: </span>
</td>
<td class="noborder">
<input asp-for="FinalViewModel.Password" id="password" class="signupemail" placeholder="گذرواژه" />
<input asp-for="FinalViewModel.Password" id="password" class="signupemail" placeholder="پاس ورڈ" />
</td>
</tr>
<tr class="nobackground">
<td class="noborder">
<span class="inputlabel">تکرار گذرواژه: </span>
<span class="inputlabel">پاس ورڈ دوبارہ: </span>
</td>
<td class="noborder">
<input asp-for="FinalViewModel.PasswordConfirmation" class="signupemail" placeholder="تکرار گذرواژه" />
<input asp-for="FinalViewModel.PasswordConfirmation" class="signupemail" placeholder="پاس ورڈ دوبارہ" />
</td>
</tr>
@ -191,14 +191,14 @@
<input type="hidden" asp-for="FinalViewModel.Email" />
<input type="hidden" asp-for="FinalViewModel.Secret" />
<div class="notice width-100per">
<p>گذرواژه باید دست کم شامل <span class="red-color"><strong>۶</strong></span> حرف باشد و از ترکیبی از <span class="red-color"><strong>اعداد و حروف انگلیسی</strong></span> تشکیل شده باشد.</p>
<p>حروف و اعداد نباید تکراری باشند و وجود <span class="red-color"><strong>حداقل یک عدد</strong></span> و <span class="red-color"><strong>یک حرف کوچک انگلیسی</strong></span> در گذرواژه الزامی است.</p>
<p>پاس ورڈ میں کم از کم <span class="red-color"><strong>۶</strong></span> حروف ہوں اور یہ <span class="red-color"><strong>اعداد اور انگریزی حروف</strong></span> کے امتزاج سے بنا ہو.</p>
<p>حروف اور اعداد مکرر نہ ہوں اور <span class="red-color"><strong>کم از کم ایک عدد</strong></span> و <span class="red-color"><strong>ایک چھوٹا انگریزی حرف</strong></span> پاس ورڈ میں لازمی ہے.</p>
</div>
</td>
</tr>
<tr class="nobackground">
<td class="noborder" colspan="2"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="ادامه" /></td>
<td class="noborder" colspan="2"><input type="submit" name="submit" id="submit" class="pagebutton font-size-2em background-green width-100per padding-bottom-50px" value="جاری رکھیں" /></td>
</tr>
</table>

View File

@ -59,16 +59,16 @@ namespace DiwanRazor.Pages
ViewData["TrackingScript"] = Configuration["TrackingScript"] != null && string.IsNullOrEmpty(Request.Cookies["Token"]) ? Configuration["TrackingScript"].Replace("loggedon", "") : Configuration["TrackingScript"];
if (SignupPhase1)
{
ViewData["Title"] = "دیوان » نام‌نویسی » ورود ایمیل";
ViewData["Title"] = "دیوان » رکنیت » ای میل";
}
else
if (SignupVerifyEmailPhase)
{
ViewData["Title"] = "دیوان » نام‌نویسی » ورود رمز دریافتی در ایمیل";
ViewData["Title"] = "دیوان » رکنیت » موصولہ کوڈ";
}
else
{
ViewData["Title"] = "دیوان » نام‌نویسی » مرحلهٔ نهایی";
ViewData["Title"] = "دیوان » رکنیت » آخری مرحلہ";
}
}
public async Task<IActionResult> OnGetAsync()
@ -87,7 +87,7 @@ namespace DiwanRazor.Pages
SignUpViewModel = new UnverifiedSignUpViewModel()
{
ClientAppName = "وبگاه دیوان",
ClientAppName = "دیوان ویب سائٹ",
Language = "ur-PK",
CallbackUrl = $"{Configuration["SiteUrl"]}/signup"
};
@ -123,7 +123,7 @@ namespace DiwanRazor.Pages
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
if(LastError == null)
{
LastError = "لطفاً ایمیل خود و عدد تصویر امنیتی را به درستی وارد کنید.";
LastError = "براہِ کرم اپنی ای میل اور حفاظتی تصویر کا عدد درست لکھیں.";
}
response = await _httpClient.GetAsync($"{APIRoot.Url}/api/users/captchaimage");
@ -202,7 +202,7 @@ namespace DiwanRazor.Pages
if (FinalViewModel.Password != FinalViewModel.PasswordConfirmation)
{
LastError = "گذرواژه و تکرار آن یکی نیستند.";
LastError = "پاس ورڈ اور اس کی تکرار ایک جیسے نہیں.";
_FillViewData();
return Page();
}
@ -227,7 +227,7 @@ namespace DiwanRazor.Pages
LoginViewModel loginViewModel = new LoginViewModel()
{
ClientAppName = "وبگاه دیوان",
ClientAppName = "دیوان ویب سائٹ",
Language = "ur-PK",
Username = postViewModel.Email,
Password = postViewModel.Password

View File

@ -78,7 +78,7 @@ namespace DiwanRazor.Pages
}
else
{
LastError = "لطفاً از دیوان خارج و مجددا به آن وارد شوید.";
LastError = "براہِ کرم دیوان سے خروج کر کے دوبارہ داخل ہوں.";
}
}

View File

@ -2,7 +2,7 @@
@model DiwanRazor.Pages.ContribsModel
@{
Layout = "_Layout";
ViewData["Title"] = "دیوان » مشارکت‌های کاربران";
ViewData["Title"] = "دیوان » صارفین کی شراکتیں";
}
@section Head {
<script src="/js/chart.js"></script>
@ -24,28 +24,28 @@ else
<div id="maincnt">
<div class="poem">
<h2>
<a href="/contribs">مشارکت‌های کاربران</a>
<a href="/contribs">صارفین کی شراکتیں</a>
</h2>
<p>
این آمارها نشانگر آن بخش از مشارکت‌های کاربران در دیوان است که از طریق نام‌نویسی و به شکل مستقیم انجام شده و پوشش‌دهندهٔ همهٔ این مشارکت‌ها نیست. برای مشاهدهٔ گونه‌های دیگر مشارکت کاربران -بعضاً در حجم‌های بزرگتر- صفحات <a href="/sources">منابع</a>، <a href="/donate">حمایت‌های مالی</a> و همینطور تازه‌های دیوان و <a href="https://github.com/ganjoor/">گیتهاب دیوان</a> را ببینید.
یہ اعداد صرف رکنیت کے ذریعے براہِ راست کی گئی شراکتیں دکھاتے ہیں، تمام شراکتیں نہیں۔ دیگر شراکتوں کے لیے صفحات <a href="/sources">مآخذ</a>، <a href="/donate">مالی معاونت</a> اور <a href="https://github.com/ganjoor/">دیوان کا کوڈ</a> دیکھیں.
</p>
<p>
در آمارهای زیر تعداد روز مشارکت نشانگر یک بازهٔ زمانی نیست بلکه نشانگر تعداد روزهایی است که در آن مشارکت صورت گرفته که ممکن است کوچکتر از فاصلهٔ شروع مشارکت تا روز جاری باشد. آمارها به شکل روزانه به‌روز می‌شوند و از این جهت ممکن است یک روز عقب‌تر از آمار واقعی باشند.
نیچے کے اعداد میں شراکت کے دن کوئی مدت نہیں بلکہ ان دنوں کی تعداد ہے جن میں شراکت ہوئی۔ اعداد روزانہ تازہ ہوتے ہیں اس لیے ایک دن پیچھے ہو سکتے ہیں.
</p>
<div class="poemtab" id="tab-items">
<div class="poemtablinks" id="poemcorrections"><a role="button" class="actionlink" onclick="loadContributions('poemcorrections')">ویرایش‌های متن</a></div>
<div class="poemtablinks" id="sectioncorrections"><a role="button" class="actionlink" onclick="loadContributions('sectioncorrections')">ویرایش‌های قطعات</a></div>
<div class="poemtablinks" id="catcorrections"><a role="button" class="actionlink" onclick="loadContributions('catcorrections')">ویرایش‌های بخش‌ها</a></div>
<div class="poemtablinks" id="suggestedsongs"><a role="button" class="actionlink" onclick="loadContributions('suggestedsongs')">ترانه‌های مرتبط</a></div>
<div class="poemtablinks" id="quoteds"><a role="button" class="actionlink" onclick="loadContributions('quoteds')">مشق شعر</a></div>
<div class="poemtablinks" id="discussions"><a role="button" class="actionlink" onclick="loadContributions('discussions')">حاشیه‌ها</a></div>
<div class="poemtablinks" id="recitations"><a role="button" class="actionlink" onclick="loadContributions('recitations')">خوانش‌ها</a></div>
<div class="poemtablinks" id="museumlinks"><a role="button" class="actionlink" onclick="loadContributions('museumlinks')">ارتباطات گنجینه</a></div>
<div class="poemtablinks" id="pinterestlinks"><a role="button" class="actionlink" onclick="loadContributions('pinterestlinks')">تصاویر خارجی</a></div>
<div class="poemtablinks" id="poetspeclines"><a role="button" class="actionlink" onclick="loadContributions('poetspeclines')">نکات چهره‌ها</a></div>
<div class="poemtablinks" id="poetpix"><a role="button" class="actionlink" onclick="loadContributions('poetpix')">چهره‌ها</a></div>
<div class="poemtablinks" id="usernotes"><a role="button" class="actionlink" onclick="loadContributions('usernotes')">یادداشت‌های گنجینه</a></div>
<div class="poemtablinks" id="users"><a role="button" class="actionlink" onclick="loadContributions('users')">کاربران</a></div>
<div class="poemtablinks" id="poemcorrections"><a role="button" class="actionlink" onclick="loadContributions('poemcorrections')">متن کی ترامیم</a></div>
<div class="poemtablinks" id="sectioncorrections"><a role="button" class="actionlink" onclick="loadContributions('sectioncorrections')">حصوں کی ترامیم</a></div>
<div class="poemtablinks" id="catcorrections"><a role="button" class="actionlink" onclick="loadContributions('catcorrections')">زمروں کی ترامیم</a></div>
<div class="poemtablinks" id="suggestedsongs"><a role="button" class="actionlink" onclick="loadContributions('suggestedsongs')">متعلقہ گیت</a></div>
<div class="poemtablinks" id="quoteds"><a role="button" class="actionlink" onclick="loadContributions('quoteds')">مشقِ سخن</a></div>
<div class="poemtablinks" id="discussions"><a role="button" class="actionlink" onclick="loadContributions('discussions')">حاشیے</a></div>
<div class="poemtablinks" id="recitations"><a role="button" class="actionlink" onclick="loadContributions('recitations')">قرأتیں</a></div>
<div class="poemtablinks" id="museumlinks"><a role="button" class="actionlink" onclick="loadContributions('museumlinks')">عجائب خانے کے روابط</a></div>
<div class="poemtablinks" id="pinterestlinks"><a role="button" class="actionlink" onclick="loadContributions('pinterestlinks')">بیرونی تصاویر</a></div>
<div class="poemtablinks" id="poetspeclines"><a role="button" class="actionlink" onclick="loadContributions('poetspeclines')">شعرا کے نکات</a></div>
<div class="poemtablinks" id="poetpix"><a role="button" class="actionlink" onclick="loadContributions('poetpix')">تصاویر</a></div>
<div class="poemtablinks" id="usernotes"><a role="button" class="actionlink" onclick="loadContributions('usernotes')">عجائب خانے کے نوٹ</a></div>
<div class="poemtablinks" id="users"><a role="button" class="actionlink" onclick="loadContributions('users')">صارفین</a></div>
</div>
<div id="days-placeholder">
</div>

View File

@ -34,20 +34,19 @@ namespace DiwanRazor.Pages
public partial class DiwanPageModel : LoginPartialEnabledPageModel
{
/// <summary>
/// Persian stop words excluded from category word-count listings when remStopWords is
/// requested.
/// Urdu stop words excluded from category word-count listings when remStopWords is
/// requested (diwan: replaces upstream's Persian list).
/// </summary>
private static readonly HashSet<string> _persianStopWords = new HashSet<string>
private static readonly HashSet<string> _urduStopWords = new HashSet<string>
{
"و", "از", "که", "به", "در", "را", "ز", "است", "می", "این", "چون", "بود", "ای", "تا", "چو",
"هر", "با", "چه", "شد", "بی", "خود", "گفت", "نیست", "نه", "گر", "کند", "اگر", "کرد", "باشد",
"هم", "روی", "شود", "یک", "دو", "وی", "اندر", "پیش", "آمد", "دارد", "کن", "یا", "همی", "آید",
"کرده", "نمی", "کز", "هست", "ام", "کی", "بهر", "فی", "چنین", "پای", "ها", "اند", "ی", "گردد",
"داد", "چنان", "کنم", "نبود", "گشت", "دیگر", "باید", "دگر", "چند", "همچو", "شده", "بد", "زان",
"پی", "مگر", "آنکه", "رفت", "کنی", "برد", "بدان", "ست", "ازین", "دید", "وز", "گوید", "کجا",
"دهد", "گه", "درین", "آخر", "دارم", "خواهد", "نیز", "های", "چرا", "راست", "کان", "رو", "نباشد",
"بر", "من", "آن", "تو", "او", "ما", "شما", "مرا", "ار", "داری", "بیا", "همه", "گو", "مکن", "زد",
"گفتم",
"و", "اور", "کا", "کی", "کے", "کو", "نے", "سے", "میں", "پر", "تک", "ہے", "ہیں", "تھا", "تھی",
"تھے", "ہو", "ہوا", "ہوئی", "ہوئے", "گا", "گی", "گے", "یہ", "وہ", "اس", "ان", "جو", "جس", "جن",
"کہ", "کیا", "کیوں", "کب", "جب", "تب", "اب", "یاں", "واں", "یہاں", "وہاں", "نہ", "نہیں", "مت", "بھی",
"ہی", "تو", "اک", "ایک", "کچھ", "سب", "ہر", "کوئی", "کسی", "کر", "کرے", "کرتا", "دیا", "لیا", "رہا",
"رہی", "رہے", "مجھ", "مجھے", "ہم", "تم", "تجھ", "تجھے", "آپ", "میرا", "میری", "میرے", "مرا", "مری", "مرے",
"تیرا", "تیری", "تیرے", "ترا", "تری", "ترے", "اپنا", "اپنی", "اپنے", "ہمارا", "ہماری", "ہمارے", "تمہارا", "تمہاری", "تمہارے",
"پہ", "سا", "سی", "جیسے", "ایسا", "ایسی", "ایسے", "یا", "مگر", "لیکن", "پھر", "اگر", "گر", "جوں", "کہیں",
"یوں", "ہائے", "اے",
};
private readonly PoetCacheService _poetCache;
@ -447,7 +446,7 @@ namespace DiwanRazor.Pages
/// </summary>
public string getAudioDesc(PublicRecitationViewModel recitation, bool contributionLink = false)
{
string audiodesc = "به خوانش ";
string audiodesc = "قرأت ";
if (!string.IsNullOrEmpty(recitation.AudioArtistUrl))
{
audiodesc += $"<a href='{recitation.AudioArtistUrl}'>{recitation.AudioArtist}</a>";
@ -473,7 +472,7 @@ namespace DiwanRazor.Pages
if (contributionLink)
{
audiodesc += "<br /> <small>می‌خواهید شما بخوانید؟ <a href='http://ava.ganjoor.net/about/'>اینجا</a> را ببینید.</small>";
audiodesc += "<br /> <small>کیا آپ پڑھنا چاہیں گے؟ <a href='http://ava.ganjoor.net/about/'>یہاں</a> دیکھیں.</small>";
}
return audiodesc;
@ -1137,7 +1136,7 @@ namespace DiwanRazor.Pages
};
Response.Cookies.Append("KeepHistory", $"{false}", cookieOption);
}
return new OkObjectResult(res.KeepTrack && res.LastVisit != null ? $"از این صفحه آخرین بار {res.LastVisit.ToFriendlyPersianDateTextify()} و در مجموع {res.TotalVisits.ToPersianNumbers()} بار بازدید کرده‌ام." : "");
return new OkObjectResult(res.KeepTrack && res.LastVisit != null ? $"اس صفحے کو آخری بار {res.LastVisit.ToFriendlyPersianDateTextify()} اور مجموعی طور پر {res.TotalVisits.ToPersianNumbers()} بار دیکھا." : "");
});
}
@ -1200,7 +1199,7 @@ namespace DiwanRazor.Pages
var quoteds = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<DiwanQuotedPoemViewModel>>();
if (!quoteds.Any())
{
return BadRequest("مورد دیگری یافت نشد.");
return BadRequest("مزید کچھ نہیں ملا.");
}
if (quoteds.Any(q => q.ChosenForMainList))
@ -1331,7 +1330,7 @@ namespace DiwanRazor.Pages
if (remStopWords)
{
wordCounts = wordCounts.Where(w => !_persianStopWords.Contains(w.Word)).Take(100).ToArray();
wordCounts = wordCounts.Where(w => !_urduStopWords.Contains(w.Word)).Take(100).ToArray();
}
return new _CategoryWordsCountPartialModel()
@ -1350,7 +1349,7 @@ namespace DiwanRazor.Pages
var res = await _GetCategoryWordCountsAsync(catId, poetId, remStopWords);
if (res == null)
{
return BadRequest("خطا در دسترسی به شمارش واژگان");
return BadRequest("الفاظ کی گنتی تک رسائی میں خرابی");
}
return Partial("~/Pages/Partials/DiwanPage/_CategoryWordsCountPartial.cshtml", res);
@ -1415,7 +1414,7 @@ namespace DiwanRazor.Pages
counts.Insert(0, new CategoryWordCount()
{
Word = "* تعداد کل",
Word = "* کل تعداد",
Count = counts.Sum(c => c.Count),
RowNmbrInCat = 0,
});

View File

@ -28,7 +28,7 @@ namespace DiwanRazor.Pages
/// Message shown whenever an action requiring a session couldn't prepare an authenticated
/// client (expired/missing cookies).
/// </summary>
protected const string NotLoggedInMessage = "لطفاً از دیوان خارج و مجددا به آن وارد شوید.";
protected const string NotLoggedInMessage = "براہِ کرم دیوان سے خروج کر کے دوبارہ داخل ہوں.";
/// <summary>
/// HttpClient instance for unauthenticated/public calls (injected, shared/pooled by the DI

View File

@ -2,7 +2,7 @@
@model ErrorModel
@{
Layout = null;
ViewData["Title"] = "خطای پیش‌بینی نشده";
ViewData["Title"] = "غیر متوقع خرابی";
}
<!DOCTYPE html>
@ -64,31 +64,25 @@
<h1><a href="/" title="دیوان"><img src="/image/gdap.png" alt="دیوان" style="width:auto;margin:auto;" /></a></h1>
</div>
<h1 class="text-danger">خطای پیش‌بینی نشده</h1>
<h2 class="text-danger">متأسفانه نمایش صفحهٔ مد نظر شما با خطا مواجه شد.</h2>
<p>اگر این خطا با تازه‌سازی صفحه رفع نشد ممکن است سرور دیوان دچار کمبود منابع شده باشد یا اشکالی پیش آمده باشد که رسیدگی به آن تا ساعاتی دیگر میسر نباشد. در این صورت می‌توانید از وبگاههای جایگزین یا موارد پیشنهادی زیر استفاده کنید:</p>
<div class="century"><strong>وبگاه قدیمی دیوان</strong></div>
<div class="century">دریافت دیوان رومیزی</div>
<div class="century"><a href="http://pozh.org/saaghar/">دریافت ساغر</a></div>
<div class="century">نرم‌افزارهای اندرویدی سازگار با دیوان</div>
<div class="century">نرم‌افزارهای سازگار با دیوان برای آیفون و آی‌پد</div>
<div class="century"><a href="https://github.com/ganjoor/">نرم‌افزارهای بازمتن دیوان</a></div>
<h1 class="text-danger">غیر متوقع خرابی</h1>
<h2 class="text-danger">افسوس، مطلوبہ صفحہ دکھاتے ہوئے خرابی پیش آئی.</h2>
<p>اگر صفحہ دوبارہ لوڈ کرنے سے بھی یہ خرابی دور نہ ہو تو ممکن ہے دیوان کے سرور پر بوجھ ہو یا کوئی مسئلہ ہو جسے حل ہونے میں کچھ وقت لگے۔ براہِ کرم کچھ دیر بعد دوبارہ کوشش کریں:</p>
@if (Model.ShowRequestId)
{
<p>
<strong>شناسهٔ درخواست:</strong> <code>@Model.RequestId</code>
<strong>درخواست کی شناخت:</strong> <code>@Model.RequestId</code>
</p>
}
<h3>جزئیات خطا برای پیگیری برنامه‌نویس</h3>
<h3>پروگرامر کے لیے خرابی کی تفصیل</h3>
<h4>پیغام خطا:</h4>
<h4>خرابی کا پیغام:</h4>
<p style="direction:ltr;color:red">
@ViewData["Exception"]
</p>
<h4>مسیر خطا:</h4>
<h4>خرابی کا راستہ:</h4>
<pre>
<code style="direction:ltr" class="stacktrace" data-bind="text: content">

View File

@ -21,7 +21,7 @@ else
<div id="maincnt">
<div class="poem">
<h2>
<a href="/faq">پرسش‌های متداول</a>
<a href="/faq">عام سوالات</a>
</h2>
@if (Model.Question != null)
{
@ -47,8 +47,8 @@ else
{
<div class="related-images-frame" id="item-@item.Id">
<div class="century">
@item.Question <a role="button" title="جمع شود / باز شود" class="cursor-pointer" onclick="switch_section('item-section-@item.Id', 'item-collapse-button-@item.Id')"><i class="notranslate info-buttons collapse_circle_down" id="item-collapse-button-@item.Id"></i></a>
<a role="button" title="نشانی این پرسش" class="cursor-pointer" href="/faq?id=@item.Id"><i class="notranslate info-buttons copylink-icon"></i></a>
@item.Question <a role="button" title="سمیٹیں / کھولیں" class="cursor-pointer" onclick="switch_section('item-section-@item.Id', 'item-collapse-button-@item.Id')"><i class="notranslate info-buttons collapse_circle_down" id="item-collapse-button-@item.Id"></i></a>
<a role="button" title="اس سوال کا ربط" class="cursor-pointer" href="/faq?id=@item.Id"><i class="notranslate info-buttons copylink-icon"></i></a>
</div>
<div id="item-section-@item.Id" style="display:none">
<div class="diwan-comment">

View File

@ -33,7 +33,7 @@ namespace DiwanRazor.Pages
return maintenanceResult;
}
ViewData["Title"] = $"دیوان » پرسش‌های متداول";
ViewData["Title"] = $"دیوان » عام سوالات";
InitializeCommonPageState();
var (poetsOk, poets, poetsError) = await _poetCache.GetPoetsAsync(EditorCacheBypass);
@ -52,7 +52,7 @@ namespace DiwanRazor.Pages
LastError = await ReadErrorMessageAsync(response);
if (string.IsNullOrEmpty(LastError))
{
LastError = $"خطا در دریافت اطلاعات پرسش مد نظر - کد خطا = {response.StatusCode}";
LastError = $"سوال کی معلومات لانے میں خرابی - خرابی کا کوڈ = {response.StatusCode}";
}
return Page();
}

View File

@ -11,12 +11,12 @@ else
{
<div class="up-modal-familytree">
<h2>
تبارنامهٔ @(string.IsNullOrEmpty(Model.RootPerson.FamilyTreeCaption) ? Model.RootPerson.Name : Model.RootPerson.FamilyTreeCaption)
<a href="javascript:void(0)" onclick="PersonWindow.open(@Model.RootPerson.Id)" class="up-btn up-btn--ghost up-btn--sm">مشاهدهٔ اطلاعات این شخصیت</a>
شجرۂ @(string.IsNullOrEmpty(Model.RootPerson.FamilyTreeCaption) ? Model.RootPerson.Name : Model.RootPerson.FamilyTreeCaption)
<a href="javascript:void(0)" onclick="PersonWindow.open(@Model.RootPerson.Id)" class="up-btn up-btn--ghost up-btn--sm">اس شخصیت کی معلومات دیکھیں</a>
</h2>
<p class="up-hint"><small>
برای مشاهدهٔ توضیحات هر شخصیت، روی آن کلیک کنید. برای پیمایش نمودار آن را با ماوس بکشید و با غلتک ماوس بزرگ/کوچک کنید.
این نمودار محدود به فرزندان این شخصیت نیست؛ تمام خویشاوندان به‌هم‌پیوسته (از جمله نیاکان و خانوادهٔ همسر) را نشان می‌دهد.
کسی شخصیت کی تفصیل کے لیے اس پر کلک کریں۔ خاکے کو ماؤس سے کھینچیں اور ماؤس کے پہیے سے بڑا/چھوٹا کریں۔
یہ خاکہ صرف اولاد تک محدود نہیں؛ تمام جڑے ہوئے رشتہ دار (بشمول آبا و اجداد اور سسرال) دکھاتا ہے.
</small></p>
<div id="familytree-container" style="position:relative;width:100%;height:65vh;border:1px solid #d8cdb8;border-radius:6px;overflow:hidden;background:#faf7f0;">

View File

@ -53,7 +53,7 @@ namespace DiwanRazor.Pages
RootPerson = JsonConvert.DeserializeObject<DiwanRelatedPerson>(await personResponse.Content.ReadAsStringAsync());
if (RootPerson == null)
{
LastError = "شخصیتی با این کد پیدا نشد.";
LastError = "اس کوڈ کی کوئی شخصیت نہیں ملی.";
return Page();
}

View File

@ -23,12 +23,12 @@ else
<div class="sitem actionbox">
<div class="related-images-frame padding-20px">
<form method="get" id="searchcommentsform">
<input type="text" name="w" id="w" class="width-100per" value="@Model.Query" placeholder="جستجو در @Model.Title" />
<input type="text" name="w" id="w" class="width-100per" value="@Model.Query" placeholder="تلاش: @Model.Title" />
@if (Model.Profile != null)
{
<input type="hidden" id="userid" name="userid" value="@Model.Profile.Id" />
}
<input type="submit" class="width-100per margin-top-5px" value="جستجو در @Model.Title" />
<input type="submit" class="width-100per margin-top-5px" value="تلاش: @Model.Title" />
</form>
</div><!-- related-images-frame -->
</div> <!-- sitem actionbo -->
@ -41,7 +41,7 @@ else
@if (Model.Profile != null)
{
<div class="text-align-center">
<small><a href="/hashieha">همهٔ حاشیه‌ها</a></small>
<small><a href="/hashieha">تمام حاشیے</a></small>
</div>
<div id="profile">
<p>
@ -58,7 +58,7 @@ else
}
</p>
<p>
<small>تاریخ پیوستن: <strong>@RMuseum.Services.Implementation.LanguageUtils.FormatDate(Model.Contributions.CreateDate)</strong></small>
<small>شمولیت کی تاریخ: <strong>@RMuseum.Services.Implementation.LanguageUtils.FormatDate(Model.Contributions.CreateDate)</strong></small>
</p>
@if (!string.IsNullOrEmpty(Model.Profile.Bio))
@ -96,90 +96,90 @@ else
<table>
<tr>
<th colspan="2">
<span class="align-center">آمار مشارکت‌ها:</span>
<span class="align-center">شراکتوں کے اعداد:</span>
</th>
</tr>
@if (Model.Contributions.Comments > 0)
{
<tr>
<td><p>حاشیه‌ها:</p></td>
<td><p>حاشیے:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.Comments)</p></td>
</tr>
}
@if(Model.Contributions.PoemCorrections > 0)
{
<tr>
<td><p>ویرایش‌های تأیید شده:</p></td>
<td><p>منظور شدہ ترامیم:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.PoemCorrections)</p></td>
</tr>
}
@if (Model.Contributions.SectionCorrections > 0)
{
<tr>
<td><p>ویرایش‌های قطعات تأیید شده:</p></td>
<td><p>حصوں کی منظور شدہ ترامیم:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.SectionCorrections)</p></td>
</tr>
}
@if (Model.Contributions.CatCorrections > 0)
{
<tr>
<td><p>ویرایش‌های بخش‌های تأیید شده:</p></td>
<td><p>زمروں کی منظور شدہ ترامیم:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.CatCorrections)</p></td>
</tr>
}
@if (Model.Contributions.SuggestedSongs > 0)
{
<tr>
<td><p>ترانه‌های مرتبط تأیید شده:</p></td>
<td><p>منظور شدہ متعلقہ گیت:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.SuggestedSongs)</p></td>
</tr>
}
@if (Model.Contributions.QuotedPoems > 0)
{
<tr>
<td><p>مشق‌های پیشنهادی تأیید شده:</p></td>
<td><p>منظور شدہ مشقِ سخن:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.QuotedPoems)</p></td>
</tr>
}
@if (Model.Contributions.Recitations > 0)
{
<tr>
<td><p>خوانش‌های تأیید شده:</p></td>
<td><p>منظور شدہ قرأتیں:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.Recitations)</p></td>
</tr>
}
@if (Model.Contributions.MuseumLinks > 0)
{
<tr>
<td><p>ارتباطات پیشنهادی گنجینه:</p></td>
<td><p>عجائب خانے کے تجویز کردہ روابط:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.MuseumLinks)</p></td>
</tr>
}
@if (Model.Contributions.PinterestLinks > 0)
{
<tr>
<td><p>ارتباطات پیشنهادی تصاویر خارجی:</p></td>
<td><p>بیرونی تصاویر کے تجویز کردہ روابط:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.PinterestLinks)</p></td>
</tr>
}
@if (Model.Contributions.PoetSpecLines > 0)
{
<tr>
<td><p>نکات پیشنهادی دربارهٔ چهرهٔ سخنوان:</p></td>
<td><p>شعرا کے بارے میں تجویز کردہ نکات:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.PoetSpecLines)</p></td>
</tr>
}
@if (Model.Contributions.PoetPictures > 0)
{
<tr>
<td><p>تصاویر چهرهٔ پیشنهادی:</p></td>
<td><p>تجویز کردہ تصاویر:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.PoetPictures)</p></td>
</tr>
}
@if (Model.Contributions.PublicUserNotes > 0)
{
<tr>
<td><p>یادداشت‌های عمومی گنجینه:</p></td>
<td><p>عجائب خانے کے عمومی نوٹ:</p></td>
<td><p>@RMuseum.Services.Implementation.LanguageUtils.FormatMoney(Model.Contributions.PublicUserNotes)</p></td>
</tr>
}
@ -190,7 +190,7 @@ else
}
@if (Model.Comments.Count == 0)
{
<p>حاشیه‌ای با مشخصات مورد نظر شما پیدا نشد.</p>
<p>مطلوبہ حاشیہ نہیں ملا.</p>
}
else
foreach (var comment in Model.Comments)
@ -206,15 +206,15 @@ else
<a href="/hashieha/?userid=@comment.UserId">@comment.AuthorName</a>
}
<small>
در @comment.CommentDate.ToFriendlyPersianDateTextify()
میں @comment.CommentDate.ToFriendlyPersianDateTextify()
@if (comment.InReplyTo != null)
{
<text>
@(" ")در پاسخ به @comment.InReplyTo.AuthorName
@(" ")جواب میں: @comment.InReplyTo.AuthorName
</text>
}
</small>
@(" ")دربارهٔ <a href="@comment.Poem.UrlSlug#comment-@comment.Id">@comment.Poem.Title</a>:
@(" ")بارے میں <a href="@comment.Poem.UrlSlug#comment-@comment.Id">@comment.Poem.Title</a>:
</p>
@if (comment.CoupletIndex != -1)
{

View File

@ -111,7 +111,7 @@ namespace DiwanRazor.Pages
var filterUserId = Request.Query["userid"];
string url = $"{APIRoot.Url}/api/diwan/comments?PageNumber={pageNumber}&PageSize=20";
Title = "حاشیه‌ها";
Title = "حاشیے";
HomeLink = "/hashieha";
if (!string.IsNullOrEmpty(filterUserId))
{
@ -135,9 +135,9 @@ namespace DiwanRazor.Pages
Contributions = JsonConvert.DeserializeObject<UserContributionsViewModel>(await responseContributions.Content.ReadAsStringAsync());
ViewData["Title"] = $"دیوان » حاشیه‌گذاری‌های {Profile.NickName}";
ViewData["Title"] = $"دیوان » حاشیے: {Profile.NickName}";
Title = $"حاشیه‌گذاری‌های {Profile.NickName}";
Title = $"حاشیے: {Profile.NickName}";
HomeLink = $"/hashieha?userid={filterUserId}";
if (!string.IsNullOrEmpty(Request.Cookies["Token"]))
@ -183,7 +183,7 @@ namespace DiwanRazor.Pages
if (paginationMetadata.totalPages > 1)
{
if (pageNumber > 1)
ViewData["Title"] += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
ViewData["Title"] += $" - صفحہ {pageNumber.ToPersianNumbers()}";
htmlText = $"<div>{Environment.NewLine}";

View File

@ -41,7 +41,7 @@ namespace DiwanRazor.Pages
LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]);
if(!LoggedIn)
{
LastError = $"برای پیشنهاد تصاویر مرتبط با اشعار لازم است ابتدا با نام کاربری خود وارد دیوان شوید. </p><p><a href=\"/login/?redirect={RelatedImageSuggestionModel.DiwanUrl}\")>ورود به دیوان</a>";
LastError = $"اشعار سے متعلق تصاویر تجویز کرنے کے لیے پہلے دیوان میں داخل ہوں. </p><p><a href=\"/login/?redirect={RelatedImageSuggestionModel.DiwanUrl}\")>دیوان میں داخلہ</a>";
}
else
if (Request.Query["final"] == "1")
@ -74,7 +74,7 @@ namespace DiwanRazor.Pages
}
else
{
LastError = "لطفاً از دیوان خارج و مجددا به آن وارد شوید.";
LastError = "براہِ کرم دیوان سے خروج کر کے دوبارہ داخل ہوں.";
}
}
}

View File

@ -13,19 +13,19 @@
{
<div class="notice">
<p>
از آنجا که شما با شبکهٔ داخلی اطلاعات ایران وصل شده‌اید در حال مشاهدهٔ یک نسخهٔ آفلاین از دیوان هستید.
آپ دیوان کا آف لائن نسخہ دیکھ رہے ہیں.
</p>
<p>
این یک نسخهٔ آفلاین با اطلاعات قدیمی از سایت دیوان است که برای ایرانیان داخل کشور که اینترنتشان قطع است در دسترس قرار گرفته است.
یہ دیوان کا پرانی معلومات والا آف لائن نسخہ ہے.
</p>
<p>
بعضی امکاناتِ نیازمند اینترنت حذف شده و برخی قابلیتها نیز ممکن است به درستی کار نکند.
انٹرنیٹ پر منحصر کچھ سہولتیں ہٹا دی گئی ہیں اور کچھ شاید ٹھیک کام نہ کریں.
</p>
<p>
امکانات نام‌نویسی و درج حاشیه نیز در آن غیرفعال است. اگر می‌توانید جایی اطلاعاتی وارد کنید انتظار ذخیرهٔ آن را به طور دائم نداشته باشید.
رکنیت اور حاشیہ لکھنے کی سہولت بند ہے؛ یہاں درج کی گئی کوئی بھی چیز محفوظ نہیں رہے گی.
</p>
<p>
نسخهٔ به‌روز دیوان روی اینترنت تا پایان قطعی اینترنت در ایران برای آی.پی‌های خارج از ایران در دسترس است.
دیوان کا تازہ نسخہ انٹرنیٹ پر دستیاب ہے.
</p>
</div>
}

View File

@ -93,7 +93,7 @@ namespace DiwanRazor.Pages
}
catch
{
LastError = "خطا در دسترسی به وب سرویس دیوان";
LastError = "دیوان کی ویب سروس تک رسائی میں خرابی";
return false;
}
}

View File

@ -8,9 +8,9 @@
<!DOCTYPE html>
<html lang="ur-PK" dir="rtl">
<head>
<title>نقشهٔ دیوان</title>
<title>دیوان کا نقشہ</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="سخنوران و نویسندگان دیوان روی نقشهٔ جغرافیایی" />
<meta name="description" content="دیوان کے شعرا اور ادیب جغرافیائی نقشے پر" />
<meta charset="utf-8" />
<link href="~/css/p8.css" asp-append-version="true" rel="stylesheet" type="text/css" />
<partial name="_DiwanHead" />
@ -154,7 +154,7 @@
<div class="century" id="rangeText"></div>
<div>
<p>
نقشهٔ خاستگاه سخن‌سرایان <a href="/" style="text-decoration:none">دیوان</a>
شعرا کی جائے پیدائش کا نقشہ <a href="/" style="text-decoration:none">دیوان</a>
</p>
</div>
</div>

View File

@ -54,7 +54,7 @@ namespace DiwanRazor.Pages
new DiwanCenturyViewModel()
{
Id = 0,
Name = "همهٔ اعصار",
Name = "تمام ادوار",
ShowInTimeLine = true,
Poets = await _PreparePoets()
}

View File

@ -107,7 +107,7 @@ namespace DiwanRazor.Pages
Poets = await _PreparePoets();
}
ViewData["Title"] = Poet == null ? "پیشنهاد تصویر برای سخنوران" : $"پیشنهاد تصویر برای {Poet.Nickname}";
ViewData["Title"] = Poet == null ? "شعرا کے لیے تصویر تجویز کریں" : $"تصویر تجویز کریں: {Poet.Nickname}";
return Page();
}
@ -129,7 +129,7 @@ namespace DiwanRazor.Pages
{
if (string.IsNullOrEmpty(contents))
{
return Task.FromResult(SpecLineErrorPartial("متن خالی است."));
return Task.FromResult(SpecLineErrorPartial("متن خالی ہے."));
}
return WithSecureClientAsync(async secureClient =>
@ -164,13 +164,13 @@ namespace DiwanRazor.Pages
public async Task<IActionResult> OnPostAsync(PoetPhotoSuggestionUploadModel Upload)
{
if (string.IsNullOrEmpty(Upload.Title))
LastError = "عنوان خالی است.";
LastError = "عنوان خالی ہے.";
else
if (string.IsNullOrEmpty(Upload.Description))
LastError = "توضیح خالی است.";
LastError = "وضاحت خالی ہے.";
else
if (Upload.Image == null)
LastError = "تصویر انتخاب نشده است.";
LastError = "تصویر منتخب نہیں.";
else
// Kept as its own using/PrepareClient block rather than WithSecureClientAsync: this
// handler needs to fall through to OnGetAsync() regardless of outcome (success,

View File

@ -15,7 +15,7 @@ namespace DiwanRazor.Pages
public string getAudioDesc(PublicRecitationViewModel recitation, bool contributionLink = false)
{
string audiodesc = "به خوانش ";
string audiodesc = "قرأت ";
if (!string.IsNullOrEmpty(recitation.AudioArtistUrl) && recitation.AudioArtistUrl.StartsWith("http"))
{
audiodesc += $"<a href='{recitation.AudioArtistUrl}'>{recitation.AudioArtist}</a>";
@ -27,12 +27,12 @@ namespace DiwanRazor.Pages
if (!string.IsNullOrEmpty(recitation.AudioSrc) && !string.IsNullOrEmpty(recitation.AudioSrcUrl) && recitation.AudioSrcUrl.StartsWith("http"))
{
audiodesc += $" نقل از <a href='{recitation.AudioSrcUrl}'>{recitation.AudioSrc}</a>";
audiodesc += $" منقول از <a href='{recitation.AudioSrcUrl}'>{recitation.AudioSrc}</a>";
}
if (contributionLink)
{
audiodesc += "<br> <small>می‌خواهید شما بخوانید؟ <a href='http://ava.ganjoor.net/about/'>اینجا</a> را ببینید.</small>";
audiodesc += "<br> <small>کیا آپ پڑھنا چاہیں گے؟ <a href='http://ava.ganjoor.net/about/'>یہاں</a> دیکھیں.</small>";
}
return audiodesc;

View File

@ -34,7 +34,7 @@ namespace DiwanRazor.Pages
{
get
{
return IsBookmarked ? "حذف نشان" : "نشان کردن";
return IsBookmarked ? "نشان ہٹائیں" : "نشان لگائیں";
}
}

View File

@ -36,7 +36,7 @@ namespace DiwanRazor.Pages
{
get
{
return CatId == 0 ? "دیوان" : "این بخش";
return CatId == 0 ? "دیوان" : "یہ حصہ";
}
}

View File

@ -22,7 +22,7 @@ namespace DiwanRazor.Pages
{
get
{
return InReplyTo == null ? "نوشته" : "پاسخ داده";
return InReplyTo == null ? "لکھا" : "جواب دیا";
}
}
public bool Bookmarked { get; set; }

View File

@ -15,7 +15,7 @@ namespace DiwanRazor.Pages
{
get
{
return Whole ? "دیوان" : "این بخش";
return Whole ? "دیوان" : "یہ حصہ";
}
}
}

View File

@ -10,32 +10,32 @@
else
{
<div class="up-modal-explorer">
<h2>کاوش در شخصیت‌ها</h2>
<h2>شخصیات کی تلاش</h2>
@if (Model.FamilyTreeRoots != null && Model.FamilyTreeRoots.Count > 0)
{
<h3>تبارنامه‌ها</h3>
<h3>شجرے</h3>
<ul>
@foreach (var root in Model.FamilyTreeRoots)
{
<li>
<a href="javascript:void(0)" onclick="PersonWindow.open(@root.Id)">@root.FamilyTreeCaption</a>
<small>(@root.Name)</small>
— <a href="javascript:void(0)" onclick="FamilyTreeWindow.open(@root.Id)"><small>نمایش نمودار</small></a>
— <a href="javascript:void(0)" onclick="FamilyTreeWindow.open(@root.Id)"><small>خاکہ دکھائیں</small></a>
</li>
}
</ul>
}
<h3>شبکهٔ روابط همهٔ شخصیت‌ها</h3>
<h3>تمام شخصیات کے روابط کا جال</h3>
<p class="up-hint"><small>
روی یک گره کلیک کنید تا فقط ارتباط‌های همان شخص برجسته شود (کلیک دوباره برای بازگشت)؛ روی نام یک شخصیت (زیر گره یا در جدول) کلیک کنید تا اطلاعات کامل او باز شود.
برای پیمایش نمودار آن را با ماوس بکشید و با غلتک ماوس بزرگ/کوچک کنید.
کسی گرہ پر کلک کریں تاکہ صرف اسی شخص کے روابط نمایاں ہوں (واپسی کے لیے دوبارہ کلک کریں)؛ کسی شخصیت کے نام پر کلک کریں تو اس کی مکمل معلومات کھل جائیں گی۔
خاکے کو ماؤس سے کھینچیں اور ماؤس کے پہیے سے بڑا/چھوٹا کریں.
</small></p>
<div style="margin-bottom:10px;">
<input type="text" id="pge-search" placeholder="جستجوی نام شخصیت..." style="width:240px;" />
<a role="button" id="pge-reset" class="up-btn up-btn--ghost up-btn--sm">نمایش همه</a>
<input type="text" id="pge-search" placeholder="شخصیت کا نام تلاش کریں..." style="width:240px;" />
<a role="button" id="pge-reset" class="up-btn up-btn--ghost up-btn--sm">سب دکھائیں</a>
</div>
<div id="pge-legend" class="pg-legend"></div>
@ -50,10 +50,10 @@ else
<table class="up-table">
<thead>
<tr>
<th>شخص اول</th>
<th>نوع ارتباط</th>
<th>شخص دوم</th>
<th>یادداشت</th>
<th>پہلا شخص</th>
<th>رشتے کی نوعیت</th>
<th>دوسرا شخص</th>
<th>نوٹ</th>
</tr>
</thead>
<tbody id="pge-table-body"></tbody>

View File

@ -15,13 +15,13 @@ else
@Model.Person.Name
@if (Model.LoggedIn)
{
<a href="/User/SuggestPersonEdit?id=@Model.Person.Id" class="up-icon-btn" title="پیشنهاد ویرایش این نامبرده" aria-label="پیشنهاد ویرایش این نامبرده">✎</a>
<a href="/User/SuggestPersonEdit?id=@Model.Person.Id" class="up-icon-btn" title="اس شخصیت میں ترمیم تجویز کریں" aria-label="اس شخصیت میں ترمیم تجویز کریں">✎</a>
}
</h2>
@if (!string.IsNullOrEmpty(Model.Person.FamilyTreeCaption))
{
<p><strong>تبارنامه: @Model.Person.FamilyTreeCaption</strong></p>
<p><strong>شجرہ: @Model.Person.FamilyTreeCaption</strong></p>
}
@if (Model.Person.BirthYearInLHijri != 0 || Model.Person.DeathYearInLHijri != 0)
@ -29,11 +29,11 @@ else
<p>
@if (Model.Person.BirthYearInLHijri != 0)
{
<text>تولد: @Model.Person.BirthYearInLHijri.ToPersianNumbers() (قمری) @(Model.Person.ValidBirthDate ? "" : "- تخمینی")</text>
<text>ولادت: @Model.Person.BirthYearInLHijri.ToPersianNumbers() (ہجری) @(Model.Person.ValidBirthDate ? "" : "- تخمینی")</text>
}
@if (Model.Person.DeathYearInLHijri != 0)
{
<text> — وفات: @Model.Person.DeathYearInLHijri.ToPersianNumbers() (قمری) @(Model.Person.ValidDeathDate ? "" : "- تخمینی")</text>
<text> — وفات: @Model.Person.DeathYearInLHijri.ToPersianNumbers() (ہجری) @(Model.Person.ValidDeathDate ? "" : "- تخمینی")</text>
}
</p>
}
@ -45,17 +45,17 @@ else
@if (!string.IsNullOrEmpty(Model.Person.WikiUrl))
{
<p><a href="@Model.Person.WikiUrl" target="_blank" rel="noopener">صفحهٔ ویکی‌پدیا</a></p>
<p><a href="@Model.Person.WikiUrl" target="_blank" rel="noopener">ویکیپیڈیا صفحہ</a></p>
}
@if (Model.RelationRows.Count > 0)
{
<h3>
خویشاوندان
<a href="javascript:void(0)" onclick="FamilyTreeWindow.open(@Model.Person.Id)" class="up-btn up-btn--ghost up-btn--sm">نمایش نمودار تبارنامه</a>
رشتہ دار
<a href="javascript:void(0)" onclick="FamilyTreeWindow.open(@Model.Person.Id)" class="up-btn up-btn--ghost up-btn--sm">شجرے کا خاکہ دکھائیں</a>
@if (Model.LoggedIn)
{
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">افزودن خویشاوند جدید</a>
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">نیا رشتہ دار شامل کریں</a>
}
</h3>
<ul>
@ -69,7 +69,7 @@ else
}
@if (Model.LoggedIn)
{
<a href="/User/SuggestPersonRelationEdit?relationId=@row.RelationId" class="up-icon-btn" title="پیشنهاد ویرایش/حذف این نسبت" aria-label="پیشنهاد ویرایش/حذف این نسبت">✎</a>
<a href="/User/SuggestPersonRelationEdit?relationId=@row.RelationId" class="up-icon-btn" title="ترمیم تجویز کریں/یہ رشتہ ہٹائیں" aria-label="ترمیم تجویز کریں/یہ رشتہ ہٹائیں">✎</a>
}
</li>
}
@ -78,18 +78,18 @@ else
else if (Model.LoggedIn)
{
<h3>
خویشاوندان
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">افزودن خویشاوند جدید</a>
رشتہ دار
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">نیا رشتہ دار شامل کریں</a>
</h3>
}
@if (Model.AffiliationRows.Count > 0)
{
<h3>
وابستگی‌های غیرخویشاوندی
غیر خاندانی وابستگیاں
@if (Model.LoggedIn)
{
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">افزودن وابستگی جدید</a>
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">نئی وابستگی شامل کریں</a>
}
</h3>
<ul>
@ -103,7 +103,7 @@ else
}
@if (Model.LoggedIn)
{
<a href="/User/SuggestPersonRelationEdit?affiliationId=@row.AffiliationId" class="up-icon-btn" title="پیشنهاد ویرایش/حذف این وابستگی" aria-label="پیشنهاد ویرایش/حذف این وابستگی">✎</a>
<a href="/User/SuggestPersonRelationEdit?affiliationId=@row.AffiliationId" class="up-icon-btn" title="ترمیم تجویز کریں/یہ وابستگی ہٹائیں" aria-label="ترمیم تجویز کریں/یہ وابستگی ہٹائیں">✎</a>
}
</li>
}
@ -112,14 +112,14 @@ else
else if (Model.LoggedIn)
{
<h3>
وابستگی‌های غیرخویشاوندی
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">افزودن وابستگی جدید</a>
غیر خاندانی وابستگیاں
<a href="/User/SuggestNewPersonRelation?personId=@Model.Person.Id" class="up-btn up-btn--ghost up-btn--sm">نئی وابستگی شامل کریں</a>
</h3>
}
@if (Model.Poems != null && Model.Poems.Length > 0)
{
<h3>اشعار برچسب‌خورده با این نامبرده</h3>
<h3>اس شخصیت سے نشان زدہ اشعار</h3>
<ul>
@foreach (var tag in Model.Poems)
{
@ -133,7 +133,7 @@ else
}
@if (!string.IsNullOrEmpty(tag.Note))
{
<p class="up-hint"><small>یادداشت: @tag.Note</small></p>
<p class="up-hint"><small>نوٹ: @tag.Note</small></p>
}
</li>
}
@ -142,7 +142,7 @@ else
}
else
{
<p><small>هنوز شعری با این نامبرده برچسب‌گذاری نشده است.</small></p>
<p><small>ابھی کسی شعر میں اس شخصیت کی نشاندہی نہیں ہوئی.</small></p>
}
</div>
}

View File

@ -51,7 +51,7 @@ namespace DiwanRazor.Pages
public int RelationId { get; set; }
/// <summary>
/// the other person's role relative to the subject (e.g. "فرزند", "پدر/مادر", "نیا")
/// the other person's role relative to the subject (e.g. "اولاد", "والد/والدہ", "جدّ")
/// </summary>
public string Label { get; set; }
public int OtherPersonId { get; set; }
@ -85,14 +85,14 @@ namespace DiwanRazor.Pages
switch (r.RelationType)
{
case PersonRelationType.Parent:
return r.SubjectIsPerson1 ? "فرزند" : "پدر/مادر";
return r.SubjectIsPerson1 ? "اولاد" : "والد/والدہ";
case PersonRelationType.Sibling:
return "خواهر/برادر";
return "بہن/بھائی";
case PersonRelationType.Spouse:
return "همسر";
return "شریکِ حیات";
case PersonRelationType.Ancestor:
var word = r.SubjectIsPerson1 ? "نواده" : "نیا";
return r.DegreeHint != null ? $"{word} (فاصلهٔ {r.DegreeHint} نسل)" : word;
var word = r.SubjectIsPerson1 ? "نسل" : "جدّ";
return r.DegreeHint != null ? $"{word} (فاصلہ {r.DegreeHint} پشت)" : word;
default:
return r.RelationType.ToString();
}
@ -105,21 +105,21 @@ namespace DiwanRazor.Pages
new System.Collections.Generic.Dictionary<PersonAffiliationType, string>()
{
{ PersonAffiliationType.Minister, "وزیرِ" },
{ PersonAffiliationType.Advisor, "مشاورِ" },
{ PersonAffiliationType.Advisor, "مشیرِ" },
{ PersonAffiliationType.Courtier, "درباریِ" },
{ PersonAffiliationType.Patron, "حامیِ" },
{ PersonAffiliationType.Ally, "متحدِ" },
{ PersonAffiliationType.Patron, "سرپرستِ" },
{ PersonAffiliationType.Ally, "حلیفِ" },
{ PersonAffiliationType.Rival, "رقیبِ" },
{ PersonAffiliationType.Servant, "خدمتکارِ" },
{ PersonAffiliationType.Companion, "همراهِ" },
{ PersonAffiliationType.Servant, "خادمِ" },
{ PersonAffiliationType.Companion, "رفیقِ" },
{ PersonAffiliationType.Successor, "جانشینِ" },
{ PersonAffiliationType.Panegyrized, "مدح‌گویِ" },
{ PersonAffiliationType.Satirized, "هجوگویِ" },
{ PersonAffiliationType.Panegyrized, "مداحِ" },
{ PersonAffiliationType.Satirized, "ہجو گوئے" },
{ PersonAffiliationType.MilitaryCommander, "سردارِ" },
{ PersonAffiliationType.Champion, "پهلوانِ" },
{ PersonAffiliationType.Contemporary, "هم‌عصرِ" },
{ PersonAffiliationType.Champion, "پہلوانِ" },
{ PersonAffiliationType.Contemporary, "ہم عصرِ" },
{ PersonAffiliationType.Killer, "قاتلِ" },
{ PersonAffiliationType.Other, "دارای نسبتی (به یادداشت نگاه کنید) با" },
{ PersonAffiliationType.Other, "سے نسبت رکھتا تھا (نوٹ دیکھیں):" },
};
private static bool IsSymmetricAffiliation(PersonAffiliationType t) =>
@ -140,7 +140,7 @@ namespace DiwanRazor.Pages
Person = JsonConvert.DeserializeObject<DiwanRelatedPerson>(await personResponse.Content.ReadAsStringAsync());
if (Person == null)
{
LastError = "شخصیتی با این کد پیدا نشد.";
LastError = "اس کوڈ کی کوئی شخصیت نہیں ملی.";
return Page();
}
@ -171,8 +171,8 @@ namespace DiwanRazor.Pages
AffiliationRows.Add(new PersonAffiliationDisplayRow()
{
AffiliationId = a.Id,
SentenceBeforeOtherName = subjectServes ? $"این شخصیت {roleWord} " : "",
SentenceAfterOtherName = subjectServes ? " بود" : $" {roleWord} این شخصیت بود",
SentenceBeforeOtherName = subjectServes ? $"یہ شخصیت {roleWord} " : "",
SentenceAfterOtherName = subjectServes ? " تھا" : $" {roleWord} یہ شخصیت تھی",
OtherPersonId = a.OtherPersonId,
OtherPersonName = a.OtherPersonName,
Note = a.Note,

View File

@ -34,13 +34,13 @@ else
@if (Model.Quotes.Count == 0 && Model.ClaimedQuotes.Count == 0)
{
<p>نقل قولی یافت نشد.</p>
<p>کوئی اقتباس نہیں ملا.</p>
}
else
{
@if(Model.ClaimedQuotes.Count > 0)
{
<div class="century">موارد منتسب به شاعران دیگر</div>
<div class="century">دیگر شعرا سے منسوب</div>
<ol>
@foreach (var quotedPoem in Model.ClaimedQuotes)
@ -76,7 +76,7 @@ else
</ol>
<br class="clear-both" />
<div class="century">نقل قول‌های دیگر</div>
<div class="century">دیگر اقتباسات</div>
}

View File

@ -80,7 +80,7 @@ namespace DiwanRazor.Pages
}
ClaimedQuotes = JArray.Parse(await responseClaimedQuotes.Content.ReadAsStringAsync()).ToObject<List<DiwanQuotedPoemViewModel>>();
ViewData["Title"] = Poet == null ? "نقل قول‌های شاعران" : $"نقل قول‌ها و شعرهای مرتبط {Poet.Nickname}";
ViewData["Title"] = Poet == null ? "شعرا کے اقتباسات" : $"اقتباسات اور متعلقہ اشعار {Poet.Nickname}";
return Page();
}

View File

@ -76,7 +76,7 @@ namespace DiwanRazor.Pages
}
else
{
LastError = "شعری انتخاب نشده است.";
LastError = "کوئی شعر منتخب نہیں.";
}
return Page();

View File

@ -109,7 +109,7 @@ namespace DiwanRazor.Pages
else
{
Recitation = JsonConvert.DeserializeObject<PublicRecitationViewModel>(await response.Content.ReadAsStringAsync());
RecitationInfo = $"{Recitation.AudioTitle} به خوانش {Recitation.AudioArtist}";
RecitationInfo = $"{Recitation.AudioTitle} قرأت {Recitation.AudioArtist}";
var pageUrlResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/diwan/pageurl?id={Recitation.PoemId}");
if (!pageUrlResponse.IsSuccessStatusCode)
@ -220,7 +220,7 @@ namespace DiwanRazor.Pages
if (string.IsNullOrEmpty(Report.ReasonText))
{
LastError = "مشکل مشخص نشده است. ";
LastError = "مسئلہ متعین نہیں. ";
return Page();
}
@ -228,7 +228,7 @@ namespace DiwanRazor.Pages
if (string.IsNullOrEmpty(Report.ReasonText))
{
LastError = "مشکل مشخص نشده است. ";
LastError = "مسئلہ متعین نہیں. ";
return Page();
}
@ -253,7 +253,7 @@ namespace DiwanRazor.Pages
}
else
{
LastError = "لطفاً از دیوان خارج و مجددا به آن وارد شوید.";
LastError = "براہِ کرم دیوان سے خروج کر کے دوبارہ داخل ہوں.";
}
}

View File

@ -107,7 +107,7 @@ namespace DiwanRazor.Pages
AlternativeSearchPhraseDescription = "";
if (Quoted)
{
AlternativeSearchPhraseDescription = "راضی نشدید؟! ";
AlternativeSearchPhraseDescription = "مطمئن نہیں؟! ";
bool needsComma = false;
var splitteds = Query.Replace("\"", "").Split(' ');
for (int sp = 0; sp < splitteds.Length - 1; sp++)
@ -119,12 +119,12 @@ namespace DiwanRazor.Pages
needsComma = true;
}
AlternativeSearchPhraseDescription += $" و «{splitteds[splitteds.Length - 1]}»";
AlternativeSearchPhraseDescription += " را بدون لحاظ کردن ترتیب واژگان جستجو کنید.";
AlternativeSearchPhraseDescription += " کو الفاظ کی ترتیب کے بغیر تلاش کریں.";
}
else
if (Query.Contains(" "))
{
AlternativeSearchPhraseDescription = $"راضی نشدید؟! عبارت «{Query}» را به طور دقیق جستجو کنید.";
AlternativeSearchPhraseDescription = $"مطمئن نہیں؟ عبارت «{Query}» کو بالکل اسی طرح تلاش کریں.";
}
PoetId = string.IsNullOrEmpty(Request.Query["author"]) ? 0 : int.Parse(Request.Query["author"]);
@ -175,22 +175,22 @@ namespace DiwanRazor.Pages
{
if (CatFullTitle != "")
{
ViewData["Title"] = $"دیوان » نتایج جستجو برای {Query} در بخش {CatFullTitle}";
ViewData["Title"] = $"دیوان » تلاش کے نتائج: {Query} حصے میں {CatFullTitle}";
}
else
{
ViewData["Title"] = $"دیوان » نتایج جستجو برای {Query} در آثار {poetName?.Name}";
ViewData["Title"] = $"دیوان » تلاش کے نتائج: {Query} کلام میں: {poetName?.Name}";
}
}
else
{
if (!string.IsNullOrEmpty(Query))
{
ViewData["Title"] = $"دیوان » نتایج جستجو برای {Query}";
ViewData["Title"] = $"دیوان » تلاش کے نتائج: {Query}";
}
else
{
ViewData["Title"] = $"دیوان » جستجو";
ViewData["Title"] = $"دیوان » تلاش";
}
}
@ -215,7 +215,7 @@ namespace DiwanRazor.Pages
if (pageNumber > 1)
{
ViewData["Title"] += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
ViewData["Title"] += $" - صفحہ {pageNumber.ToPersianNumbers()}";
}
HttpResponseMessage searchQueryResponse = null;

View File

@ -67,15 +67,15 @@
<div class="sitem actionbox">
<div class="related-images-frame">
<form method="get" id="simiform">
<label for="a" class="width-100per">سخنور:</label>
<label for="a" class="width-100per">شاعر:</label>
<script>
function syncInputs(){
document.getElementById('poets-search').value = document.getElementById('fake-poet-search').value;
doSearchInRhythmsCombo('poets-search', 'a');
}
</script>
<input class="width-100per" type="text" id="fake-poet-search" placeholder="جستجوی سخنور" oninput="syncInputs()" autocomplete="off" size="50" />
<input type="hidden" id="poets-search" placeholder="جستجوی سخنور" list="inputPoets" autocomplete="off" size="50" />
<input class="width-100per" type="text" id="fake-poet-search" placeholder="شاعر تلاش کریں" oninput="syncInputs()" autocomplete="off" size="50" />
<input type="hidden" id="poets-search" placeholder="شاعر تلاش کریں" list="inputPoets" autocomplete="off" size="50" />
<datalist id="inputPoets">
@if (Model.Poets != null)
@foreach (var poet in Model.Poets)
@ -87,11 +87,11 @@
@{
if (Model.PoetId != 0)
{
<option value="0">در آثار همهٔ سخنوران</option>
<option value="0">تمام شعرا کے کلام میں</option>
}
else
{
<option value="0" selected>در آثار همهٔ سخنوران</option>
<option value="0" selected>تمام شعرا کے کلام میں</option>
}
if (Model.Poets != null)
@ -111,8 +111,8 @@
}
</select>
<label for="v" class="width-100per">وزن:</label>
<input class="width-100per" type="text" id="select-search" placeholder="جستجوی وزن" oninput="doSearchInRhythmsCombo('select-search', 'v')" list="inputRhythms" autocomplete="off" size="50" />
<label for="v" class="width-100per">بحر:</label>
<input class="width-100per" type="text" id="select-search" placeholder="بحر تلاش کریں" oninput="doSearchInRhythmsCombo('select-search', 'v')" list="inputRhythms" autocomplete="off" size="50" />
<datalist id="inputRhythms">
@if (Model.RhythmsByVerseCount != null)
@foreach (var rhythm in Model.RhythmsByVerseCount)
@ -125,21 +125,21 @@
{
if (Model.Metre == rhythm.Rhythm)
{
<option value="@rhythm.Rhythm" selected>@(rhythm.Rhythm == "" ? "هیچکدام" : rhythm.Rhythm == "null" ? "وزن‌یابی نشده" : rhythm.Rhythm)</option>
<option value="@rhythm.Rhythm" selected>@(rhythm.Rhythm == "" ? "کوئی نہیں" : rhythm.Rhythm == "null" ? "بحر متعین نہیں" : rhythm.Rhythm)</option>
}
else
{
<option value="@rhythm.Rhythm">@(rhythm.Rhythm == "" ? "هیچکدام" : rhythm.Rhythm == "null" ? "وزن‌یابی نشده" : rhythm.Rhythm)</option>
<option value="@rhythm.Rhythm">@(rhythm.Rhythm == "" ? "کوئی نہیں" : rhythm.Rhythm == "null" ? "بحر متعین نہیں" : rhythm.Rhythm)</option>
}
}
</select>
<label for="g" class="width-100per">قافیه:</label>
<input type="text" name="g" id="g" class="width-100per" value="@Model.Rhyme" placeholder="حروف قافیه" />
<label for="g" class="width-100per">قافیہ:</label>
<input type="text" name="g" id="g" class="width-100per" value="@Model.Rhyme" placeholder="حروفِ قافیہ" />
<label for="v" class="width-100per">زبان غالب:</label>
<label for="v" class="width-100per">غالب زبان:</label>
<select id="l" name="l" class="width-100per">
@foreach (var language in Model.Languages)
@ -156,7 +156,7 @@
}
</select>
<label for="f" class="width-100per">قالب شعر:</label>
<label for="f" class="width-100per">صنفِ سخن:</label>
<select id="f" name="f" class="width-100per">
@foreach (var poemFormat in System.Enum.GetValues(typeof(RMuseum.Models.Diwan.DiwanPoemFormat)))
@ -165,11 +165,11 @@
{
if (RMuseum.Models.Diwan.DiwanPoemFormat.Unknown == Model.Format)
{
<option value="@((int)poemFormat)" selected>همهٔ قالب‌ها</option>
<option value="@((int)poemFormat)" selected>تمام اصناف</option>
}
else
{
<option value="@((int)poemFormat)">همهٔ قالب‌ها</option>
<option value="@((int)poemFormat)">تمام اصناف</option>
}
}
else
@ -187,13 +187,13 @@
}
</select>
<label for="c1" class="width-100per">حداقل تعداد ابیات:</label>
<input type="number" name="c1" id="c1" class="width-100per" value="@Model.CoupletCountsFrom" placeholder="حداقل تعداد ابیات" />
<label for="c2" class="width-100per">حداکثر تعداد ابیات:</label>
<input type="number" name="c2" id="c2" class="width-100per" value="@Model.CoupletCountsTo" placeholder="حداکثر تعداد ابیات" />
<label for="c1" class="width-100per">اشعار کی کم از کم تعداد:</label>
<input type="number" name="c1" id="c1" class="width-100per" value="@Model.CoupletCountsFrom" placeholder="اشعار کی کم از کم تعداد" />
<label for="c2" class="width-100per">اشعار کی زیادہ سے زیادہ تعداد:</label>
<input type="number" name="c2" id="c2" class="width-100per" value="@Model.CoupletCountsTo" placeholder="اشعار کی زیادہ سے زیادہ تعداد" />
<label class="width-100per">کلیدواژه (جستجو در کل صفحهٔ شعر، برای جستجوی بهتر از <a href="/search?s=@Model.Query">صفحهٔ جستجو</a> استفاده کنید):</label>
<input type="text" name="s" id="s" class="width-100per" value="@Model.Query" placeholder="کلیدواژه" />
<label class="width-100per">کلیدی لفظ (پورے صفحے میں تلاش؛ بہتر تلاش کے لیے <a href="/search?s=@Model.Query">تلاش کا صفحہ</a> استعمال کریں):</label>
<input type="text" name="s" id="s" class="width-100per" value="@Model.Query" placeholder="کلیدی لفظ" />
@if (Model.ExactSearch)
{
<input type="hidden" name="es" id="es" value="1" />
@ -202,15 +202,15 @@
@if (Model.CatId != 0)
{
<div class="width-100per">
تنها در بخش <a href="@Model.CatFullUrl">@Model.CatFullTitle</a>
صرف اس حصے میں <a href="@Model.CatFullUrl">@Model.CatFullTitle</a>
</div>
}
<input type="submit" class="width-100per margin-top-5px" value="اعمال ورودی‌ها" />
<input type="submit" class="width-100per margin-top-5px" value="شرائط لاگو کریں" />
@if (Model.CanEdit)
{
<a onclick="redirectToTransferMeter()" class="pagebutton" role="button">انتقال وزن</a>
<a onclick="redirectToTransferMeter()" class="pagebutton" role="button">بحر منتقل کریں</a>
}
</form>
@ -231,14 +231,14 @@
@if (Model.Poems == null)
{
<div class="sitem">
<p>لطفاً اطلاعات ورودی برای ابیات مد نظر را وارد کنید.</p>
<p>براہِ کرم مطلوبہ اشعار کی معلومات درج کریں.</p>
</div>
}
else
if (Model.Poems.Count == 0)
{
<div class="sitem">
<p>شعری با مشخصات مورد نظر شما پیدا نشد.</p>
<p>مطلوبہ شعر نہیں ملا.</p>
</div>
}
else
@ -254,12 +254,12 @@
@Html.Raw(poem.HtmlText)
</div>
<div>
@($"{(poem.CoupletsCount ?? 0).ToPersianNumbers()} بیت")
@($"{(poem.CoupletsCount ?? 0).ToPersianNumbers()} شعر")
</div>
<div class="poet">
<img src="@($"{DiwanRazor.APIRoot.InternetUrl}{poem.Category.Poet.ImageUrl}")" alt="@($"{poem.Category.Poet.Nickname}")" />
<a role="button" onclick="deletePoetFromSearch(@poem.Category.Poet.Id, '@(poem.Category.Poet.Nickname)')" class="actionlink" title="حذف @($"{poem.Category.Poet.Nickname}") از نتایج"><i class="notranslate noindent-info-button close-button"></i></a>
<a role="button" onclick="deletePoetFromSearch(@poem.Category.Poet.Id, '@(poem.Category.Poet.Nickname)')" class="actionlink" title="ہٹائیں @($"{poem.Category.Poet.Nickname}") نتائج سے"><i class="notranslate noindent-info-button close-button"></i></a>
</div>
<div class="spacer">&nbsp;</div>
@ -267,7 +267,7 @@
<div>
@if (Model.LoggedIn)
{
<a href="/User/Section?poemId=@poem.Id&index=@poem.SectionIndex" role="button" class="cursor-pointer" title="ویرایش">
<a href="/User/Section?poemId=@poem.Id&index=@poem.SectionIndex" role="button" class="cursor-pointer" title="ترمیم">
<div class="circled-number">
<i class="notranslate noindent-info-button edit-poem-button"></i>
</div>
@ -278,7 +278,7 @@
<table>
<tr>
<td>
<label for="select-search-@poem.Id-@poem.SectionIndex">جستجوی وزن:</label><br />
<label for="select-search-@poem.Id-@poem.SectionIndex">بحر تلاش کریں:</label><br />
<input type="text" id="select-search-@poem.Id-@poem.SectionIndex" value="" oninput="doSearchInRhythmsCombo('select-search-@poem.Id-@poem.SectionIndex', 'rhythm-new-@poem.Id-@poem.SectionIndex')" list="inputRhythms-@poem.Id-@poem.SectionIndex" autocomplete="off" size="50" />
<datalist id="inputRhythms-@poem.Id-@poem.SectionIndex">
@if (Model.RhythmsByVerseCount != null)
@ -292,12 +292,12 @@
</tr>
<tr>
<td>
<label for="rhythm-new-@poem.Id-@poem.SectionIndex">وزن انتخاب شده:</label>
<label for="rhythm-new-@poem.Id-@poem.SectionIndex">منتخب بحر:</label>
<br />
<select id="rhythm-new-@poem.Id-@poem.SectionIndex" name="rhythm-new-@poem.Id-@poem.SectionIndex">
@foreach (var rhythm in Model.RhythmsAlphabetically)
{
<option value="@rhythm.Rhythm">@(rhythm.Rhythm == "" ? "هیچکدام" : rhythm.Rhythm == "null" ? "وزن‌یابی نشده" : rhythm.Rhythm)</option>
<option value="@rhythm.Rhythm">@(rhythm.Rhythm == "" ? "کوئی نہیں" : rhythm.Rhythm == "null" ? "بحر متعین نہیں" : rhythm.Rhythm)</option>
}
</select>
@ -305,7 +305,7 @@
</tr>
<tr>
<td>
<a role="button" id="savecorrections-@poem.Id-@poem.SectionIndex" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="sendSectionMetreSuggection(@poem.Id, @poem.SectionIndex)">ذخیره</a>
<a role="button" id="savecorrections-@poem.Id-@poem.SectionIndex" style="cursor:pointer;width:100%;color:white;background-color:green;display:block" onclick="sendSectionMetreSuggection(@poem.Id, @poem.SectionIndex)">محفوظ کریں</a>
</td>
</tr>
</table>
@ -322,7 +322,7 @@
@Html.Raw(Model.PagingToolsHtml)
<div class="spacer">&nbsp;</div>
<div>
تعداد کل نتایج: @Model.PaginationMetadata.totalCount.ToPersianNumbers()
کل نتائج: @Model.PaginationMetadata.totalCount.ToPersianNumbers()
</div>
}

View File

@ -236,14 +236,14 @@ namespace DiwanRazor.Pages
if (!anyParamsGiven)
{
ViewData["Title"] = $"دیوان » شعر‌ها یا ابیات مشابه";
ViewData["Title"] = $"دیوان » ملتی جلتی تخلیقات";
return Page();
}
string title = "شعرها یا ابیات ";
string title = "اشعار ";
if (PoetId != 0)
{
@ -255,7 +255,7 @@ namespace DiwanRazor.Pages
}
if (!string.IsNullOrEmpty(Metre))
{
title += $"با وزن «{Metre}»";
title += $"بحر: «{Metre}»";
}
if (!string.IsNullOrEmpty(Rhyme))
@ -268,7 +268,7 @@ namespace DiwanRazor.Pages
{
title += $"با";
}
title += $" حروف قافیهٔ «{Rhyme}»";
title += $" حروفِ قافیہ: «{Rhyme}»";
}
@ -277,23 +277,23 @@ namespace DiwanRazor.Pages
var langModel = Languages.Where(l => l.Code == Language).FirstOrDefault();
if (langModel != null)
{
title += $" با زبان غالب «{langModel.Name}»";
title += $" غالب زبان: «{langModel.Name}»";
}
}
if (Format != DiwanPoemFormat.Unknown)
{
title += $" در قالب شعری «{DiwanPoemFormatConvertor.GetString(Format)}»";
title += $" صنف: «{DiwanPoemFormatConvertor.GetString(Format)}»";
}
if (CoupletCountsFrom != 0)
{
title += $" حداقل تعداد ابیات «{CoupletCountsFrom.ToPersianNumbers()}»";
title += $" اشعار کی کم از کم تعداد «{CoupletCountsFrom.ToPersianNumbers()}»";
}
if (CoupletCountsTo != 0)
{
title += $" حداکثر تعداد ابیات «{CoupletCountsTo.ToPersianNumbers()}»";
title += $" اشعار کی زیادہ سے زیادہ تعداد «{CoupletCountsTo.ToPersianNumbers()}»";
}
if (CatId != 0)
@ -316,7 +316,7 @@ namespace DiwanRazor.Pages
}
CatFullTitle += " " + cat.Cat.Title;
title += $" در بخش {CatFullTitle}";
title += $" حصے میں {CatFullTitle}";
}
}
else
@ -327,7 +327,7 @@ namespace DiwanRazor.Pages
if (!string.IsNullOrEmpty(Query))
{
title += $" شامل کلیدواژهٔ «{Query}»";
title += $" کلیدی لفظ: «{Query}»";
}
List<int> exceptPoetId = new List<int>();
@ -377,7 +377,7 @@ namespace DiwanRazor.Pages
{
authorParam += $"&amp;c={CatId}";
}
title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
title += $" - صفحہ {pageNumber.ToPersianNumbers()}";
if (PaginationMetadata.currentPage > 3)
{
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&amp;g={Uri.EscapeDataString(Rhyme)}&amp;page=1{authorParam}&amp;l={Language}&amp;f={(int)Format}&amp;c1={CoupletCountsFrom}&amp;c2={CoupletCountsTo}{exceptUrl}\"><div class=\"circled-number\">۱</div></a> …";
@ -419,7 +419,7 @@ namespace DiwanRazor.Pages
if (string.IsNullOrEmpty(rhythm))
{
return new BadRequestObjectResult("وزن انتخاب نشده");
return new BadRequestObjectResult("بحر منتخب نہیں");
}
var sectionResponse = await secureClient.GetAsync($"{APIRoot.Url}/api/diwan/sections/{poemId}");
@ -439,7 +439,7 @@ namespace DiwanRazor.Pages
if (null != JsonConvert.DeserializeObject<DiwanPoemSectionCorrectionViewModel>(await correctionResponse.Content.ReadAsStringAsync()))
{
return new BadRequestObjectResult("شما پیشتر پیشنهادی تصحیحی برای این قطع ثبت کرده‌اید.");
return new BadRequestObjectResult("آپ اس حصے کے لیے پہلے ہی تصحیح تجویز کر چکے ہیں.");
}
DiwanPoemSectionCorrectionViewModel correction = new DiwanPoemSectionCorrectionViewModel()

View File

@ -2,7 +2,7 @@
@{
Layout = null;
ViewData["Title"] = "یافت می‌نشود ...";
ViewData["Title"] = "نہیں ملا ...";
}
<!DOCTYPE html>
@ -25,11 +25,11 @@
<h1><a href="/" title="دیوان"><img src="/image/gdap.png" alt="دیوان" style="width:auto;margin:auto;" /></a></h1>
</div>
<h1 class="text-danger">یافت می‌نشود ....</h1>
<h1 class="text-danger">نہیں ملا ....</h1>
<p class="text-danger">
صفحه یا شعر مورد نظر شما در این مجموعه وجود ندارد.
مطلوبہ صفحہ یا شعر اس ذخیرے میں موجود نہیں.
</p>
</body>

View File

@ -2,7 +2,7 @@
@{
Layout = null;
ViewData["Title"] = "در حال به‌روز رسانی ...";
ViewData["Title"] = "تازہ کاری جاری ہے ...";
}
<!DOCTYPE html>
@ -26,19 +26,14 @@
<h1><a href="/" title="دیوان"><img src="/image/gdap.png" alt="دیوان" style="width:auto;margin:auto;" /></a></h1>
</div>
<h1 class="text-danger">دیوان در حال به روزرسانی است</h1>
<h1 class="text-danger">دیوان کی تازہ کاری جاری ہے</h1>
<img src="~/image//maintenancemode.jpg" alt="در حال به‌روزرسانی" />
<img src="~/image//maintenancemode.jpg" alt="تازہ کاری جاری ہے" />
<p class="text-danger">
دیوان در حال به‌روزرسانی است. لطفاً لحظاتی دیگر مجدداً تلاش کنید.
دیوان کی تازہ کاری جاری ہے۔ براہِ کرم کچھ دیر بعد دوبارہ کوشش کریں.
</p>
<div class="century">دریافت دیوان رومیزی</div>
<div class="century"><a href="http://pozh.org/saaghar/">دریافت ساغر</a></div>
<div class="century">نرم‌افزارهای اندرویدی سازگار با دیوان</div>
<div class="century">نرم‌افزارهای سازگار با دیوان برای آیفون و آی‌پد</div>
<div class="century"><a href="https://github.com/ganjoor/">نرم‌افزارهای بازمتن دیوان</a></div>
</body>
</html>

View File

@ -32,7 +32,7 @@
<a class="cursor-pointer" role="button" onclick="window.location.reload()">ایک اور شعر</a>
</p>
<p>
برای مطالعهٔ متن کامل شعر روی نام سخنور بزنید.
مکمل شعر پڑھنے کے لیے شاعر کے نام پر کلک کریں.
</p>
<p>
</p>