/*
 *  Notepad (Arabic resources)
 *
 *  Copyright 2010 Khaled Hosny <khaledhosny@eglug.org>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "notepad_res.h"

#pragma code_page(65001)

LANGUAGE LANG_ARABIC, SUBLANG_NEUTRAL

MAIN_MENU MENU
{
 POPUP "&مساعدة" {
  MENUITEM "&جديد\tCtrl+N",      CMD_NEW
  MENUITEM "ا&فتح...\tCtrl+O",  CMD_OPEN
  MENUITEM "ا&حفظ\tCtrl+S",     CMD_SAVE
  MENUITEM "احفظ &ك‍...",       CMD_SAVE_AS
  MENUITEM SEPARATOR
  MENUITEM "ا&طبع...\tCtrl+P",            CMD_PRINT
  MENUITEM "إ&عداد الصفحة...",    CMD_PAGE_SETUP
  MENUITEM "إعداد الطاب&عة...", CMD_PRINTER_SETUP
  MENUITEM SEPARATOR
  MENUITEM "ا&خرج",             CMD_EXIT
 }
POPUP "&مساعدة" {
  MENUITEM "&تراجع\tCtrl+Z",     CMD_UNDO
  MENUITEM SEPARATOR
  MENUITEM "&قص\tCtrl+X",      CMD_CUT
  MENUITEM "ا&نسخ\tCtrl+C",     CMD_COPY
  MENUITEM "ا&لصق\tCtrl+V",    CMD_PASTE
  MENUITEM "اح&ذف\tDel",      CMD_DELETE
  MENUITEM SEPARATOR
  MENUITEM "اختر ال&كل\tCtrl+A",       CMD_SELECT_ALL
  MENUITEM "ال&وقت\\التاريخ\tF5",    CMD_TIME_DATE
  MENUITEM SEPARATOR
  MENUITEM "ا&كسر السطور الطويلة",  CMD_WRAP
  MENUITEM "ال&خط...",          CMD_FONT
 }
POPUP "&مساعدة" {
  MENUITEM "اب&بحث...\tCtrl+F",   CMD_SEARCH
  MENUITEM "اب&حث عن التالي\tF3",  CMD_SEARCH_NEXT
  MENUITEM "ا&ستبدل...\tCtrl+H", CMD_REPLACE
 }
POPUP "&مساعدة" {
  MENUITEM "الم&حتويات",         CMD_HELP_CONTENTS
  MENUITEM "ا&بحث...",        CMD_HELP_SEARCH
  MENUITEM "&مساعدة المساعدة",     CMD_HELP_ON_HELP
  MENUITEM SEPARATOR
  MENUITEM "&عن لوح الملاحظات", CMD_HELP_ABOUT_NOTEPAD
 }
}

/* Dialog `Page setup' */

DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
FONT 8, "MS Shell Dlg"
CAPTION "إعداد الصفحة"
{
LTEXT    "&Header:",  0x140,  10, 07, 40, 15
EDITTEXT IDC_PAGESETUP_HEADERVALUE,   60, 05,110, 12, WS_BORDER | WS_TABSTOP
LTEXT    "ال&تذييل:",  0x142,   10, 24, 40, 15
EDITTEXT IDC_PAGESETUP_FOOTERVALUE,   60, 22,110, 12, WS_BORDER | WS_TABSTOP

GROUPBOX "ال&حواف (مليمتر):",      0x144,     10, 43,160, 45
LTEXT    "ال&يسار:",        0x145,   20, 55, 30, 10, WS_CHILD
EDITTEXT IDC_PAGESETUP_LEFTVALUE,     50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
LTEXT    "الأ&على:",         0x148,    20, 73, 30, 10, WS_CHILD
EDITTEXT IDC_PAGESETUP_TOPVALUE,      50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
LTEXT    "الي&مين:",       0x14B, 100, 55, 30, 10, WS_CHILD
EDITTEXT IDC_PAGESETUP_RIGHTVALUE,   130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
LTEXT    "الأس&فل:",      0x14E,100, 73, 30, 10, WS_CHILD
EDITTEXT IDC_PAGESETUP_BOTTOMVALUE,  130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP

DEFPUSHBUTTON "حسنا",         IDOK,                   180,  3, 40, 15, WS_TABSTOP
PUSHBUTTON    "ألغِ",     IDCANCEL,               180, 21, 40, 15, WS_TABSTOP
PUSHBUTTON    "&مساعدة",       IDHELP,                180, 39, 40, 15, WS_TABSTOP
}

IDD_OFN_TEMPLATE  DIALOG  DISCARDABLE 50,50,300,15
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER
EXSTYLE WS_EX_LAYOUTRTL
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "الترميز:", -1, 5,0, 50,12
  COMBOBOX IDC_OFN_ENCCOMBO, 53,0, 156,48, WS_CHILD | WS_VSCROLL | CBS_DROPDOWNLIST
END

STRINGTABLE DISCARDABLE
{
STRING_PAGESETUP_HEADERVALUE,   "&f"
STRING_PAGESETUP_FOOTERVALUE,   "صفحة &p"

STRING_NOTEPAD,                                 "لوح الملاحظات"
STRING_ERROR,                                   "خطأ"
STRING_WARNING,                                 "تحذير"
STRING_INFO,                                    "معلومات"

STRING_UNTITLED,                                "بلا عنوان"

STRING_ALL_FILES,                               "كل الملفات (*.*)"
STRING_TEXT_FILES_TXT,                  "ملفات النصوص (*.txt)"

STRING_TOOLARGE,                                "الملف '%s' كبير جدا على لوح النصوص.\nمن فضلك استخدم محررا آخر."
STRING_NOTEXT,                                  "لم تكتب أي نص.\nمن فضلك اكتب أي شيء ثم حاول ثانيا"
STRING_DOESNOTEXIST,                            "الملف '%s' غير موجود.\n\nأتريد إنشاء ملف جديد؟"
STRING_NOTSAVED,                                "حدثت تغييرات على الملف '%s'.\n\nأتريد حفظ التغييرات؟"
STRING_NOTFOUND,                                        "تعذّر إيجاد '%s'."
STRING_OUT_OF_MEMORY,                   "لا تكفي الذاكرة المتاحة لإنهاء هذه المهمة.\nأغلق واحدا أو أكثر من التطبيقات لزيادة الذاكرة المتاحة."

STRING_UNICODE_LE,     "يونيكود (UTF-16)"
STRING_UNICODE_BE,     "يونيكود (UTF-16 Big Endian)"

STRING_LOSS_OF_UNICODE_CHARACTERS,         "%s\nيحتوي هذه الملف على محارف يونيكود لكنها ستُفقد إذا حفظت\nالملف بترميز %s.\nللحفاظ على هذه المحارف انقر على ألغِ، ثم اختر واحدا من\nخيارات يونيكود من قائمة الترميز المنسدلة.\nأأتابع؟"
}
