* @author Yaman Hokan * @author Usama Akkad * @author uahello@gmail.com * @author Ahmad Abd-Elghany * @author alhajr * @author Mohamed Belhsine */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'rtl'; $lang['doublequoteopening'] = '“'; $lang['doublequoteclosing'] = '”'; $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; $lang['apostrophe'] = '؛'; $lang['btn_edit'] = 'حرر هذه الصفحة'; $lang['btn_source'] = 'اعرض مصدر الصفحة'; $lang['btn_show'] = 'اعرض الصفحة'; $lang['btn_create'] = 'أنشئ هذه الصفحة'; $lang['btn_search'] = 'ابحث'; $lang['btn_save'] = 'احفظ'; $lang['btn_preview'] = 'عاين'; $lang['btn_top'] = 'ارجع للأعلى'; $lang['btn_newer'] = '<< أحدث'; $lang['btn_older'] = 'أقدم >>'; $lang['btn_revs'] = 'نسخ قديمة'; $lang['btn_recent'] = 'أحدث التغييرات'; $lang['btn_upload'] = 'ارفع'; $lang['btn_cancel'] = 'ألغ'; $lang['btn_index'] = 'خريطة موقع'; $lang['btn_secedit'] = 'حرر'; $lang['btn_login'] = 'تسجيل الدخول'; $lang['btn_logout'] = 'خروج'; $lang['btn_admin'] = 'المدير'; $lang['btn_update'] = 'حدّث'; $lang['btn_delete'] = 'احذف'; $lang['btn_back'] = 'ارجع'; $lang['btn_backlink'] = 'ارتباطات'; $lang['btn_subscribe'] = 'ادر الاشتراكات'; $lang['btn_profile'] = 'حدث الملف الشخصي'; $lang['btn_reset'] = 'صفّر'; $lang['btn_resendpwd'] = 'اضبط كلمة سر جديدة'; $lang['btn_draft'] = 'حرر المسودة'; $lang['btn_recover'] = 'استرجع المسودة'; $lang['btn_draftdel'] = 'احذف المسوّدة'; $lang['btn_revert'] = 'استعد'; $lang['btn_register'] = 'سجّل'; $lang['btn_apply'] = 'طبق'; $lang['btn_media'] = 'مدير الوسائط'; $lang['btn_deleteuser'] = 'احذف حسابي الخاص'; $lang['btn_img_backto'] = 'عودة إلى %s'; $lang['btn_mediaManager'] = 'اعرض في مدير الوسائط'; $lang['loggedinas'] = 'داخل باسم:'; $lang['user'] = 'اسم المستخدم'; $lang['pass'] = 'كلمة السر'; $lang['newpass'] = 'كلمة سر جديدة'; $lang['oldpass'] = 'أكد كلمة السر الحالية'; $lang['passchk'] = 'مرة أخرى'; $lang['remember'] = 'تذكرني'; $lang['fullname'] = 'الاسم الحقيقي'; $lang['email'] = 'البريد الإلكتروني'; $lang['profile'] = 'الملف الشخصي'; $lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة السر غير صحيحة'; $lang['badpassconfirm'] = 'عذراً,كلمة السر غير صحيحة'; $lang['minoredit'] = 'تعديلات طفيفة'; $lang['draftdate'] = 'حفظ المسودات آليا مفعّل'; $lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الجزء اصبحت قديمة. حُمُلت كل الصفحة بدلا.'; $lang['regmissing'] = 'عذرا، عليك ملء جميع الحقول.'; $lang['reguexists'] = 'عذرا، يوجد مشترك بنفس الاسم.'; $lang['regsuccess'] = 'أنشئ المستخدم و ارسلت كلمة السر بالبريد.'; $lang['regsuccess2'] = 'أنشئ المستخدم.'; $lang['regmailfail'] = 'حدث خطأ فى إرسال رسالة كلمة السر. يرجى مراسلة المدير!'; $lang['regbadmail'] = 'يبدو البريد الإلكتروني المعطى غيرَ صحيح، إن كنت تظن أن هذا خطأ، راسل المدير'; $lang['regbadpass'] = 'كلمتا المرور غير متطابقتين، حاول مرة أخرى.'; $lang['regpwmail'] = 'كلمة مرورك إلى دوكو ويكي'; $lang['reghere'] = 'ليس لديك حساب بعد؟ احصل على واحد'; $lang['profna'] = 'هذه الويكي لا تدعم تعديل الملف الشخصي'; $lang['profnochange'] = 'لا تغييرات، لا شيء ليُعمل.'; $lang['profnoempty'] = 'غير مسموح باسم مستخدم أو بريد فارغ.'; $lang['profchanged'] = 'حُدث الملف الشخصي للمستخدم بنجاح.'; $lang['profnodelete'] = 'هذه الموسوعه لا ندعم حذف الأشخاص'; $lang['profdeleteuser'] = 'احذف حساب'; $lang['profdeleted'] = 'حسابك الخاص تم حذفه من هذه الموسوعة'; $lang['profconfdelete'] = 'أنا أرغب في حذف حسابي من هذه الموسوعة.
هذا الحدث غير ممكن.'; $lang['profconfdeletemissing'] = 'لم تقم بوضع علامة في مربع التأكيد'; $lang['pwdforget'] = 'أنسيت كلمة السر؟ احصل على واحدة جديدة'; $lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.'; $lang['resendpwd'] = 'اضبط كلمة سر جديدة لـ'; $lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ كل الحقول.'; $lang['resendpwdnouser'] = 'عذراً، لم نجد المستخدم هذا في قاعدة بياناتنا.'; $lang['resendpwdbadauth'] = 'عذراً، رمز التفعيل هذا غير صحيح. نأكد من استخدامك كامل وصلة التأكيد.'; $lang['resendpwdconfirm'] = 'اُرسل رابط التأكيد بواسطة البريد.'; $lang['resendpwdsuccess'] = 'كلمة السرالجديدة اُرسلت عبر البريد.'; $lang['license'] = 'مالم يشر لخلاف ذلك، فإن المحتوى في هذه الويكي مرخص وفق الرخصة التالية:'; $lang['licenseok'] = 'لاحظ: بتحرير هذه الصفحة أنت توافق على ترخيص محتواها تحت الرخصة التالية:'; $lang['searchmedia'] = 'ابحث في أسماء الملفات:'; $lang['searchmedia_in'] = 'ابحث في %s'; $lang['txt_upload'] = 'اختر ملفاً للرفع:'; $lang['txt_filename'] = 'رفع كـ (اختياري):'; $lang['txt_overwrt'] = 'اكتب على ملف موجود'; $lang['maxuploadsize'] = 'الحجم الاقصى %s للملف'; $lang['lockedby'] = 'مقفلة حاليا لـ:'; $lang['lockexpire'] = 'ينتهي القفل في:'; $lang['js']['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.'; $lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد.'; $lang['js']['searchmedia'] = 'ابحث عن ملفات'; $lang['js']['keepopen'] = 'أبقي النافذة مفتوحة أثناء الاختيار'; $lang['js']['hidedetails'] = 'أخف التفاصيل'; $lang['js']['mediatitle'] = 'إعدادات الرابط'; $lang['js']['mediadisplay'] = 'نوع الرابط'; $lang['js']['mediaalign'] = 'المحاذاة'; $lang['js']['mediasize'] = 'حجم الصورة'; $lang['js']['mediatarget'] = 'هدف الرابط'; $lang['js']['mediaclose'] = 'أغلق'; $lang['js']['mediainsert'] = 'أدرج'; $lang['js']['mediadisplayimg'] = 'أظهر الصورة.'; $lang['js']['mediadisplaylnk'] = 'اظهر الرابط فقط.'; $lang['js']['mediasmall'] = 'نسخة مصغرة'; $lang['js']['mediamedium'] = 'نسخة متوسطة'; $lang['js']['medialarge'] = 'نسخة كبيرة'; $lang['js']['mediaoriginal'] = 'النسخة الأصلية'; $lang['js']['medialnk'] = 'الرابط لصفحة التفاصيل'; $lang['js']['mediadirect'] = 'رابط مباشر للأصل'; $lang['js']['medianolnk'] = 'لا رابط'; $lang['js']['medianolink'] = 'لا تربط الصورة'; $l
#
#
#            Nim's Runtime Library
#        (c) Copyright 2010 Andreas Rumpf
#
#    See the file "copying.txt", included in this
#    distribution, for details about the copyright.
#

## This module implements a base64 encoder and decoder.
##
## Encoding data
## -------------
##
## In order to encode some text simply call the ``encode`` procedure:
##
##   .. code-block::nim
##      import base64
##      let encoded = encode("Hello World")
##      echo(encoded) # SGVsbG8gV29ybGQ=
##
## Apart from strings you can also encode lists of integers or characters:
##
##   .. code-block::nim
##      import base64
##      let encodedInts = encode([1,2,3])
##      echo(encodedInts) # AQID
##      let encodedChars = encode(['h','e','y'])
##      echo(encodedChars) # aGV5
##
## The ``encode`` procedure takes an ``openarray`` so both arrays and sequences
## can be passed as parameters.
##
## Decoding data
## -------------
##
## To decode a base64 encoded data string simply call the ``decode``
## procedure:
##
##   .. code-block::nim
##      import base64
##      echo(decode("SGVsbG8gV29ybGQ=")) # Hello World

const
  cb64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

template encodeInternal(s: typed, lineLen: int, newLine: string): untyped =
  ## encodes `s` into base64 representation. After `lineLen` characters, a
  ## `newline` is added.
  var total = ((len(s) + 2) div 3) * 4
  let numLines = (total + lineLen - 1) div lineLen
  if numLines > 0: inc(total, (numLines - 1) * newLine.len)

  result = newString(total)
  var 
    i = 0
    r = 0
    currLine = 0
  while i < s.len - 2:
    let
      a = ord(s[i])
      b = ord(s[i+1])
      c = ord(s[i+2])
    result[r] = cb64[a shr 2]
    result[r+1] = cb64[((a and 3) shl 4) or ((b and 0xF0) shr 4)]
    result[r+2] = cb64[((b and 0x0F) shl 2) or ((c and 0xC0) shr 6)]
    result[r+3] = cb64[c and 0x3F]
    inc(r, 4)
    inc(i, 3)
    inc(currLine, 4)
    # avoid index out of bounds when lineLen == encoded length
    if