الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Arab_Renamer v1 - مغير أسماء الملفات العربية

مغلق
بدأه walidaly في 11 أبريل 2004 · 3 رد · 1,292 مشاهدة · في مشاريع ومسابقات القسم
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أحب أن أهدى هذا البرنامج لتجربوه تقولوا آرائكم

وهو برنامج يعمل على الدوس مصنوع بلغة السى

البرنامج يحول أسماء الملفات العربية إلى نفس أسمائها ولكن بحروف إنجليزية وذلك ليسهل العمل بهذه الملفات على أنظمة اللينكس أو السىدىبلير

مثال

أسم الملف

-تتحول إلى

asm almlf

ويستخدم البرنامج حروف مثل 3 ,6 وغيرها من الحروف التى أصبحت معروفه بين العرب.

وله أيضا أستخدامات أخرى.

ويمكنه أيضا تغيير كلمات معينه مثل أسماء سور القرآن وغيرها من الكلمات التى لها صيغه خاصه, وأرجو أن تساعدونى فى إجاد بعض هذه الكلمات

//**************************************
//     
// Name: Arab_Renamer_v1
// Description:Arab Renamer renames Arabic files to the same names but
//using English characters like the word 'Quran', so that files
//could be used on non-Arabic systems like Linux or on mp3players,
//also the program gives you the opportunity of limiting the
//files names during renaming.
//The program uses characters like 3, ', 6 and 7 which are popular
//characters used to replace specific Arabic letters.
//
//Copy the exe file inside the directory you want the files inside
//to be renamed and press 'a', you can get the old Arabic names
//back by pressing 'u' on your keyboard which undo all last changes.
//
//Another important possibility Arab Renamer presents is renaming files
//by reading the new names from a file called 'nnames.txt' in the same dir.
//This way you can edit names using regular expressions with a program like
//Jedit, editplus or Textpad.
//1st press 'd' to make 'onames.txt' which have the old names, or create it
//manually then press 'r' to start renaming. You can also undo this action
//as mentioned b4.
// By: Kurtubba@gawab.com
// Assumes:doesn't rename dirs & can work inside one dir only 
//
// Redistribution and use in source and binary forms, with or without
//modification, is permitted provided that you contact kurtubba@gawab.com   
//
//**************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <io.h>
#include <errno.h>



void entro(char*);
void ara_renamer(char*, int);
void renamer(char*);
char* convrtit(char ara_name[]);
char *Specialwords(char* ara_name);
char *_replace (char *source_str, char *search_str, char *replace_str);
void mkundo(char*,char*);
void undo();

int main(int argc, char* argv[])
{
	char pth[260]="";
	_splitpath(argv[0], NULL, NULL, pth, NULL);
	strcat(pth,".exe");
	entro(pth);
}

void entro(char* pth)
{
	char in=' ';
	int prnt=0, mkfile=0;
	char ttl[]=" ###########################################################################\n"
  "## AAAAAA                       RRRRR                                       ##\n"
  "## A    A AAAAA  AAAAA AAAAA    R   R  RRRR RRRRR RRRRR RRRRRRR RRRR RRRRR  ##\n"
  "## AAAAAA A   A  A   A A   A    RRRRRR R    R   R R   R R  R  R R    R   R  ##\n"
  "## AA   A AAAAAA AAAAA AAAAAA   RR   R RRRR RR  R RRRRR RR R  R RRRR RRRRRR ##\n"
  "## AA   A AA   A AA  A AA   A   RR   R RR   RR  R RR  R RR R  R RR   RR   R ##\n"
  "## AA   A AA   A AA  A AAAAAA   RR   R RRRR RR  R RR  R RR R  R RRRR RR   R ##\n"
  "##              -----------By Kurtubba@gawab.com------------                ##\n";
	HANDLE hnd;

	hnd = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTitle("Arab Renamer V 1 - By Kurtubba Software");
	SetConsoleTextAttribute(hnd, FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
	printf(ttl);
	printf("##   To Rename files from nnames.txt press.... r                            ##\n");
	printf("##   To Make directory listing press.... d                                  ##\n");   
	printf("##   To Rename arabic files press.... a                                     ##\n");
	printf("##   To undo last changes press.... u                                       ##\n");
	printf("##   for help press ....h                                                   ##\n");
	printf("##   To exit press ...x                                                     ##\n");
	printf(" ###########################################################################\n");
	SetConsoleTextAttribute(hnd, COMMON_LVB_REVERSE_VIDEO | FOREGROUND_RED | FOREGROUND_GREEN |FOREGROUND_BLUE);

	while(in)
	{
  if(prnt){
 	 SetConsoleTextAttribute(hnd, FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
 	 printf(" ###########################################################################\n");
 	 printf("##   To Rename files from nnames.txt press.... r                            ##\n");
 	 printf("##   To Make directory listing press.... d                                  ##\n");   
 	 printf("##   To Rename arabic files press.... a                                     ##\n");
 	 printf("##   To undo last changes press.... u                                       ##\n");
 	 printf("##   for help press ....h                                                   ##\n");
 	 printf("##   To exit press ...x                                                     ##\n");
 	 printf(" ###########################################################################\n");
 	 SetConsoleTextAttribute(hnd, COMMON_LVB_REVERSE_VIDEO | FOREGROUND_RED | FOREGROUND_GREEN |FOREGROUND_BLUE);
  }
  in=getch();
  fflush(stdin);
  switch (in)
  {
  case 'd':
  case 'D':
 	 mkfile=1;
 	 ara_renamer(pth,mkfile);
 	 prnt=1;
 	 break;
  case 'r':
  case 'R':
 	 printf("Renaming...\n\n");
 	 renamer(pth);
 	 prnt=1;
 	 break;
  case 'a':
  case 'A':
 	 mkfile=0;
 	 printf("Renaming...\n\n");
 	 ara_renamer(pth,mkfile);
 	 prnt=1;
 	 break;
  case 'u':
  case 'U':
 	 printf("Undoing last changes\n\n");
 	 undo();
 	 prnt=1;
 	 break;
  case 'h':
  case 'H':
 	 printf("Diplaying help\n");
 	 system("cls");
 	 printf("\n");
 	 SetConsoleTextAttribute(hnd, FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
 	 printf(ttl);
 	 printf(" ###########################################################################\n\n");
 	 SetConsoleTextAttribute(hnd, COMMON_LVB_REVERSE_VIDEO | FOREGROUND_RED | FOREGROUND_GREEN |FOREGROUND_BLUE);
 	 printf("Arab Renamer renames Arabic files to the same names but\n");
 	 printf("using English characters like the word 'Quran', so that files\n");
 	 printf("could be used on non-Arabic systems like Linux or on mp3players,\n");
 	 printf("also the program gives you the opportunity of limiting the\n");
 	 printf("files names during renaming.\n");
 	 printf("The program uses characters like 3, ', 6 and 7 which are popular\n");
 	 printf("characters used to replace specific Arabic letters.\n\n");
 	 printf("Copy the exe file inside the directory you want the files inside\n");
 	 printf("to be renamed and press 'a', you can get the old Arabic names \n");
 	 printf("back by pressing 'u' on your keyboard which undo all last changes.\n\n");
 	 printf("Another important possibility Arab Renamer presents is renaming files\n");
 	 printf("by reading the new names from a file called 'nnames.txt' in the same dir.\n");
 	 printf("This way you can edit names using regular expressions with a program like\n");
 	 printf("Jedit, editplus or Textpad.\n");
 	 printf("1st press 'd' to make 'onames.txt' which have the old names, or create it\n");
 	 printf("manually then press 'r' to start renaming. You can also undo this action \n");
 	 printf("as mentioned b4.\n");
 	 printf("\n");
 	 printf("ENJOY!!\n");
 	 printf("\n");
 	 printf("Email me for help or to request s.code <kurtubba@gawab.com>\n");
 	 printf("\n");
 	 printf("\n");
 	 system("pause");
 	 prnt=1;
 	 break;
  case 'x':
  case 'X':
 	 printf("Ending...\n\n");
 	 exit(0);
  default:
 	 prnt=0;
  }
	}
}

void undo()
{
	FILE* list;
	char buf[260]="",buf2[260]="", *nname,*oname;

	if(!(list=fopen("undo","r")))
	{
  printf("Can't find undo record file\n\n");
  return;
	}
	while(!feof(list))
	{
  oname=strtok(fgets(buf,260,list), "\n");
  nname=strtok(fgets(buf2,260,list), "\n");
  if(oname && nname)
  {
 	 if(rename(oname, nname)){
    if (errno==EEXIST)
   	 printf ("Permission denied: file %s already exists.\n", nname);
    if (errno==ENOENT)
   	 printf("%s doesn't exist\n", oname);
    if (errno==EACCES)
   	 printf("Access Denied: file %s in use\n", oname);
 	 }else
    printf("%s renamed to %s\n", oname, nname);
  }
	}
	//remove("undo");
	fclose(list);
	return;
}

void renamer(char* pth)
{
	FILE* fp, *fp2, *list;
	char buf[128]="",buf2[128]="";
	char *nname, *oname, in;

	fp2 = fopen("onames.txt", "r");
	if(!fp2){
  printf("onames.txt not found create one by pressing 'd'\n\n");
  return;
	}
	fp = fopen("nnames.txt", "r");
	if(!fp){
  fclose(fp2);
  printf("nnames.txt not found\n\n");
  return;

	}
	if((list=fopen("undo","r"))){
  fclose(list);
  printf("This will remove the last undo...Continue?\n");
  in=getch();
  if(in!='y' && in!=' ' && in!='\r'){
 	 printf("NO\n\n");
 	 return;
  }else if(remove("undo")){
 	 if (errno==EACCES)
    printf("Access Denied: file undo in use\n\n");
 	 return;
  }else
 	 printf("YES\n\n");
	}


	while(!feof(fp2)){
  nname=strtok(fgets(buf, 127, fp), "\n");
  oname=strtok(fgets(buf2, 127, fp2), "\n");
  if (oname != NULL && nname != NULL && strcmp(nname,oname) ){
 	 if(rename(oname, nname)){
    if (errno==EEXIST)
   	 printf ("Permission denied: file %s already exists.\n", nname);
    if (errno==ENOENT)
   	 printf("%s doesn't exist\n", oname);
    if (errno==EACCES)
   	 printf("Access Denied: file %s in use\n", oname);

 	 }else{
    mkundo(oname,nname);
    printf ("%s renamed to %s\n", oname, nname);
 	 }
  }else if(oname != NULL){
 	 if (nname == NULL || !strcmp(nname,oname))
    printf("file %s No Change\n", oname);
  }
	}
	fclose(fp);
	fclose(fp2);
}

void ara_renamer(char* pth, int mkfile)
{
	struct _finddata_t x;
	char* oldname=x.name, ext[10]="", tmpname[260]="", newname[260]="", in=0;
	int done=0, lens=0;
	intptr_t handle;
	FILE* list;
	int s=0;

	handle = _findfirst( "*.*", & x);
	if(!mkfile)
	{
  if((list=fopen("undo","r"))){
 	 fclose(list);
 	 printf("This will remove the last undo...Continue?\n");
 	 in=getch();
 	 if(in!='y' && in!=' ' && in!='\r'){
    printf("NO\n\n");
    return;
 	 }else if(remove("undo")){
    if (errno==EACCES)
   	 printf("Access Denied: file undo in use\n\n");
    return;
 	 }else
    printf("YES\n\n");
  }
  printf("do you want to limit the number of characters in the new names?\n");
  in=getch();
  if(in=='y' || in==' ' || in=='\r'){
 	 printf("YES\n");
 	 while(!s){
    printf("Enter a number between 5 and 200\n");
    scanf("%d",&s);
    fflush( stdin );
    if(s<5 || s>200)
    {
   	 s=0;
   	 printf("Wrong Value. try again!..\n\n");
    }
 	 }
  }else
 	 printf("NO\n\n");
	}else if(mkfile){
  if((list=fopen("onames.txt","r"))){
 	 fclose(list);
 	 printf("File onames.txt aready exists...are you sure you want to overwrite?\n");
 	 in=getch();
 	 if(in!='y' && in!=' ' && in!='\r'){
    printf("File not changed\n\n");
    return;
 	 }
  }
  list=fopen("onames.txt", "w+");
  if (!list){
 	 printf("Can't create file\n");
 	 return;
  }
  printf("Writing file...\n");
	}

	while ( !done )
	{
  if (strcmp(oldname,".") && strcmp(oldname,"..") && strcmp(oldname,pth) && !(x.attrib & _A_SUBDIR) && strcmp(x.name,"onames.txt") && strcmp(x.name,"nnames.txt") && strcmp(x.name,"undo"))
  {
 	 if(!mkfile)
 	 {
    ext[0]='\0';
    if(strrchr(oldname,'.'))
    {
   	 if((strlen(strrchr(oldname,'.')))<6)
      strcpy(ext, strrchr(oldname,'.'));
    }
    strncpy(tmpname,oldname,strlen(oldname)-strlen(ext));
    tmpname[strlen(oldname)-strlen(ext)]='\0';
    strcpy(newname, convrtit(tmpname));
    if (stricmp(tmpname, newname)){
   	 if (s){
      newname='\0';
      tmpname='\0';
   	 }
   	 if(ext)
      strcat(newname, ext);
   	 if(rename (oldname, newname)){
      if (errno==EEXIST)
     	 printf ("Permission denied: file %s already exists.\n", newname);
      if (errno==ENOENT)
     	 printf("%s doesn't exist\n", oldname);
      if (errno==EACCES)
     	 printf("Access Denied: file %s in use\n", oldname);
   	 }else{
      mkundo(oldname,newname);
      printf("%s renamed to %s\n", oldname, newname);
   	 }
    }else
   	 printf("File %s No Changes\n", oldname);
 	 }else if(mkfile){
    fprintf(list,"%s\n",oldname);
    printf("%s\n",oldname);

 	 }
  }
  done = _findnext( handle, & x );
	}
	_findclose(handle);
	if(mkfile)
	{
  fclose(list);
  CopyFileA("onames.txt","nnames.txt", 1);
  printf("\nfile onames.txt created successfully.\nEdit file nnames.txt to create new names\n\n");
	}
	return;
}

void mkundo(char* oldname,char *newname)
{
	FILE* list;

	if(list=fopen("undo","a"))
	{
  fprintf(list, "%s\n%s\n", newname, oldname); 	 
  fclose(list);
	}else
  printf("Can't create undo file\n");

}

char* convrtit(char ara_name[260])
{
	int n=0, v;
	char cnvr[3]="", eng_name[260]="";

	ara_name = Specialwords(ara_name);
	while (ara_name[n]){
  v=1;
  switch (ara_name[n])
  {
  case 'أ':
  case 'ا':
  case 'آ':
 	 cnvr[0]='a';
 	 break;
  case 'إ':
 	 cnvr[0]='e';
 	 break;
  case 'ب':
 	 cnvr[0]='b';
 	 break;
  case 'ت':
 	 cnvr[0]='t';
 	 break;
  case 'ث':
 	 strcpy(cnvr, "th");
 	 v=2;
 	 break;
  case 'ج':
 	 cnvr[0]='g';
 	 break;
  case 'ح':
 	 cnvr[0]='7';
 	 break;
  case 'خ':
 	 strcpy(cnvr, "kh");
 	 v=2;
 	 break;
  case 'د':
  case 'ض':
 	 cnvr[0]='d';
 	 break;
  case 'ذ':
  case 'ز':
  case 'ظ':
 	 cnvr[0]='z';
 	 break;
  case 'ر':
 	 cnvr[0]='r';
 	 break;
  case 'س':
  case 'ص':
 	 cnvr[0]='s';
 	 break;
  case 'ش':
 	 strcpy(cnvr, "sh");
 	 v=2;
 	 break;
  case 'ط':
 	 cnvr[0]='6';
 	 break;
  case 'ع':
 	 cnvr[0]='3';
 	 break;
  case 'غ':
 	 strcpy(cnvr, "gh");
 	 v=2;
 	 break;
  case 'ف':
 	 cnvr[0]='f';
 	 break;
  case 'ق':
 	 cnvr[0]='q';
 	 break;
  case 'ك':
 	 cnvr[0]='k';
 	 break;
  case 'ل':
 	 cnvr[0]='l';
 	 break;
  case 'م':
 	 cnvr[0]='m';
 	 break;
  case 'ن':
 	 cnvr[0]='n';
 	 break;
  case 'ه':
  case 'ة':
 	 cnvr[0]='h';
 	 break;
  case 'ؤ':
 	 strcpy(cnvr, "u'");
 	 v=2;
 	 break;
  case 'و':
 	 cnvr[0]='w';
 	 break;
  case 'ي':
  case 'ى':
 	 cnvr[0]='y';
 	 break;
  case 'ء':
  case 'ئ':
 	 cnvr[0]='\'';
 	 break;
  case 'ٍ':
  case 'ـ':
 	 cnvr[0]='\0';
 	 break;
  default:
 	 cnvr[0]=ara_name[n];
 	 break;
  }

  if (v==1)
 	 cnvr[1]='\0';
  else
 	 cnvr[2]='\0';
  strcat(eng_name, cnvr);
  n++;
	}
	return eng_name;
}

char *Specialwords(char* ara_name)
{
	ara_name = _replace( ara_name, "الناس", "An-Nas");
	ara_name = _replace( ara_name, "الفلق", "Al-Falaq");
	ara_name = _replace( ara_name, "الإخلاص", "Al-Ikhlas");
	ara_name = _replace( ara_name, "المسد", "Al-Masadd");
	ara_name = _replace( ara_name, "النصر", "An-Nasr");
	ara_name = _replace( ara_name, "الكافرون", "Al-Kafiroon");
	ara_name = _replace( ara_name, "الكوثر", "Al-Kauther");
	ara_name = _replace( ara_name, "الماعون", "Al-Ma3un");
	ara_name = _replace( ara_name, "قريش", "Quraish");
	ara_name = _replace( ara_name, "الفيل", "Al-Fil");
	ara_name = _replace( ara_name, "الهمزة", "Al-Humaza");
	ara_name = _replace( ara_name, "العصر", "Al-3asr");
	ara_name = _replace( ara_name, "التكاثر", "At-Takathur");
	ara_name = _replace( ara_name, "القارعة", "Al-Qari3a");
	ara_name = _replace( ara_name, "العاديات", "Al-3adiyat");
	ara_name = _replace( ara_name, "الزلزلة", "Az-Zalzala");
	ara_name = _replace( ara_name, "البينة", "Al-Bayyina");
	ara_name = _replace( ara_name, "القدر", "Al-Qadr");
	ara_name = _replace( ara_name, "العلق", "Al-3alaq");
	ara_name = _replace( ara_name, "التين", "At-Tin");
	ara_name = _replace( ara_name, "الشرح", "As-Sharh");
	ara_name = _replace( ara_name, "الضحى", "Ad-Dhu7a");
	ara_name = _replace( ara_name, "الليل", "Al-Layl");
	ara_name = _replace( ara_name, "الشمس", "Ash-Shams");
	ara_name = _replace( ara_name, "البلد", "Al-Balad");
	ara_name = _replace( ara_name, "الفجر", "Al-Fajr");
	ara_name = _replace( ara_name, "الغاشية", "Al-Ghashiya");
	ara_name = _replace( ara_name, "الأعلى", "Al-A3la");
	ara_name = _replace( ara_name, "الطارق", "At-6ariq");
	ara_name = _replace( ara_name, "البروج", "Al-Burooj");
	ara_name = _replace( ara_name, "الانشقاق", "Al-Inshiqaq");
	ara_name = _replace( ara_name, "المطففين", "Al-Mutaffifin");
	ara_name = _replace( ara_name, "الانفطار", "Al-Infi6ar");
	ara_name = _replace( ara_name, "التكوير", "At-Takwir");
	ara_name = _replace( ara_name, "عبس", "3basa");
	ara_name = _replace( ara_name, "النازعات", "An-Nazi3at");
	ara_name = _replace( ara_name, "النبأ", "An-Nab'");
	ara_name = _replace( ara_name, "المرسلات.rm", "Al-Mursalat");
	ara_name = _replace( ara_name, "الإنسان.rm", "Al-Insan");
	ara_name = _replace( ara_name, "القيامة.rm", "Al-Qiyama");
	ara_name = _replace( ara_name, "المدثر", "Al-Muddather");
	ara_name = _replace( ara_name, "المزمل", "Al-Muzzammil");
	ara_name = _replace( ara_name, "الجن", "Al-Jinn");
	ara_name = _replace( ara_name, "نوح", "Noo7");
	ara_name = _replace( ara_name, "المعارج", "Al-Ma3arij");
	ara_name = _replace( ara_name, "الحاقة", "Al-7aaqqa");
	ara_name = _replace( ara_name, "القلم", "Al-Qalam");
	ara_name = _replace( ara_name, "الملك", "Al-Mulk");
	ara_name = _replace( ara_name, "التحريم", "At-Ta7rim");
	ara_name = _replace( ara_name, "الطلاق", "At-Talaq");
	ara_name = _replace( ara_name, "التغابن", "At-Taghabun");
	ara_name = _replace( ara_name, "المنافقون", "Al-Munafiqoon");
	ara_name = _replace( ara_name, "الجمعة", "Al-Jumu3a");
	ara_name = _replace( ara_name, "الصف", "As-Saff");
	ara_name = _replace( ara_name, "الممتحنة", "Al-Mumta7ana");
	ara_name = _replace( ara_name, "الحشر", "Al-7ashr");
	ara_name = _replace( ara_name, "المجادلة", "Al-Mujadala");
	ara_name = _replace( ara_name, "الحديد", "Al-7adid");
	ara_name = _replace( ara_name, "الواقعة", "Al-Waqi3a");
	ara_name = _replace( ara_name, "الرحمن", "Ar-Ra7man");
	ara_name = _replace( ara_name, "القمر", "Al-Qamar");
	ara_name = _replace( ara_name, "النجم", "An-Najm");
	ara_name = _replace( ara_name, "الطور", "At-6ur");
	ara_name = _replace( ara_name, "الذاريات", "Az-Zariyat");
	ara_name = _replace( ara_name, "الحجرات", "Al-7ujraat");
	ara_name = _replace( ara_name, "الفتح", "Al-Fat7");
	ara_name = _replace( ara_name, "محمد", "Muhammad");
	ara_name = _replace( ara_name, "الأحقاف", "Al-A7qaf");
	ara_name = _replace( ara_name, "الجاثية", "Al-Jathiya");
	ara_name = _replace( ara_name, "الدخان", "Ad-Dukhan");
	ara_name = _replace( ara_name, "الزخرف", "Az-Zukhruf");
	ara_name = _replace( ara_name, "الشورى", "Ash-Shura");
	ara_name = _replace( ara_name, "فصلت", "Fussilat");
	ara_name = _replace( ara_name, "غافر", "Ghafir");
	ara_name = _replace( ara_name, "الزمر", "Az-Zumar");
	ara_name = _replace( ara_name, "الصافات", "As-Saaffat");
	ara_name = _replace( ara_name, "فاطر", "Fa6er");
	ara_name = _replace( ara_name, "سبأ", "Saba'");
	ara_name = _replace( ara_name, "الأحزاب", "Al-A7zab");
	ara_name = _replace( ara_name, "السجدة", "As-Sajda");
	ara_name = _replace( ara_name, "لقمان", "Luqman");
	ara_name = _replace( ara_name, "الروم", "Ar-Room");
	ara_name = _replace( ara_name, "العنكبوت", "Al-3ankaboot");
	ara_name = _replace( ara_name, "القصص", "Al-Qasas");
	ara_name = _replace( ara_name, "النمل", "An-Naml");
	ara_name = _replace( ara_name, "الشعراء", "Ash-Shu3ara'");
	ara_name = _replace( ara_name, "الفرقان", "Al-Furqan");
	ara_name = _replace( ara_name, "النور", "An-Noor");
	ara_name = _replace( ara_name, "المؤمنون", "Al-Mu'menoon");
	ara_name = _replace( ara_name, "الحج", "Al-7ajj");
	ara_name = _replace( ara_name, "الأنبياء", "Al-Anbiya'");
	ara_name = _replace( ara_name, "مريم", "Maryam");
	ara_name = _replace( ara_name, "الكهف", "Al-Kahf");
	ara_name = _replace( ara_name, "الإسراء", "Al-Isra'");
	ara_name = _replace( ara_name, "النحل", "An-Na7l");
	ara_name = _replace( ara_name, "الحجر", "Al-7ijr");
	ara_name = _replace( ara_name, "إبراهيم", "Ibrahim");
	ara_name = _replace( ara_name, "الرعد", "Ar-Ra3d");
	ara_name = _replace( ara_name, "يوسف", "Yusuf");
	ara_name = _replace( ara_name, "هود", "Hud");
	ara_name = _replace( ara_name, "يونس", "Yunus");
	ara_name = _replace( ara_name, "التوبة", "At-Tawba");
	ara_name = _replace( ara_name, "الأنفال", "Al-Anfal");
	ara_name = _replace( ara_name, "الأعراف", "Al-A3raf");
	ara_name = _replace( ara_name, "الأنعام", "Al-An3aam");
	ara_name = _replace( ara_name, "المائدة", "Al-Ma'eda");
	ara_name = _replace( ara_name, "النساء", "An-Nisa");
	ara_name = _replace( ara_name, "آل عمران", "Aal-e-3imran");
	ara_name = _replace( ara_name, "البقرة", "Al-Baqara");
	ara_name = _replace( ara_name, "الفاتحة", "Al-Fatiha");
	ara_name = _replace( ara_name, "الله", "Allah");
	ara_name = _replace( ara_name, "لله", "lelah");
	ara_name = _replace( ara_name, "القرآن", "Al-Quran");
	ara_name = _replace( ara_name, "قرآن", "Quran");
	ara_name = _replace( ara_name, " ال", " al-");

	/*buggy piece*/
	if(!strcmp(ara_name, "ق"))
	ara_name = _replace( ara_name, "ق", "Qaf");
	if(strstr(ara_name, " ق"))
	if(!strcmp(strstr(ara_name, " ق")+2, "") || !strcmp(strstr(ara_name, " ق")+2, " "))
	ara_name = _replace( ara_name, " ق", " Qaf");

	if(!strcmp(ara_name, "ص"))
	ara_name = _replace( ara_name, "ص", "Sad");
	if(strstr(ara_name, " ص"))
	if(!strcmp(strstr(ara_name, " ص")+2, "") || !strcmp(strstr(ara_name, " ص")+2, " ") )
	ara_name = _replace( ara_name, " ص", " Sad");

	if(!strcmp(ara_name, "يس") )
	ara_name = _replace( ara_name, "يس", "Ya-seen");
	if(strstr(ara_name, " يس"))
	if(!strcmp(strstr(ara_name, " يس")+3, "") || !strcmp(strstr(ara_name, " يس")+3, " ") )
	ara_name = _replace( ara_name, " يس", " Ya-seen");

	if(!strcmp(ara_name, "طه") )
	ara_name = _replace( ara_name, "طه", " 6aha");
	if(strstr(ara_name, " طه"))
	if(!strcmp(strstr(ara_name, " طه")+3, "") || !strcmp(strstr(ara_name, " طه")+3, " ") )
	ara_name = _replace( ara_name, " طه", " 6aha");
	/*buggy end*/


	return ara_name;
}

char *_replace (char *source_str, char *search_str, char *replace_str)
{
	char *p, *q, *s, *t, *newbuf = NULL;
	int count,newlen;
	int search_strlen = strlen (search_str);
	int replace_strlen = strlen (replace_str);
	int remainlen = 0;

	if(!source_str || !search_str || !replace_str)  
  return "Not enough arguments";
	if(!strstr(  source_str,  search_str ))  
  return source_str;
	for (count = 0, p = source_str; (q = strstr (p, search_str)) != NULL; p = q + search_strlen, count++) 
	;

	remainlen = strlen (p);
	if (count > 0) {
  newlen = strlen (source_str) + (count * strlen (replace_str) - count * search_strlen)+1;
  if ((newbuf = malloc (newlen)) != NULL)
  {
 	 memset (newbuf, '\0', newlen);
 	 for (s = p = source_str, t = newbuf; (q = strstr (p, search_str)) != NULL; ) 
 	 {
    memcpy (t, s, q - s);
    t += (q - s);
    memcpy (t, replace_str, replace_strlen);
    t += replace_strlen;
    s = p = q + search_strlen;
 	 }
 	 memcpy (t, s, remainlen);
 	 return newbuf;
  }
	}
	else
  return source_str;
}

Arab_Renamer_v1.zip

تم تعديل هذه المشاركة بواسطة أحمد الشنقيطي في 24 يونيو 2012 في 21:16 — السبب: تعديل العنوان

#2

السلام عليكم ,,

يا أخي انت راائع !

البرنامج ممتاز للغاية والفكرة جميلة جدا ,,

حتى أنها مفيدة ليس فقط في أنظمة التشغيل التي لاتدعم العربية بل في البرامج التي لاتدعم العربية أيضا ,,

ويوجد برنامج خاص بالأخ بشير النعيمي في الرابط التالي لتغيير الأسماء والجيد أن له واجهة رومية ,, فاذا تمت اضافة ميزة الأخ walidaly فسيصبح برنامج تجاري :) .

/index.php?showtopic=38498

أتمنى أن تتم اضافة ميزة كهذه لبرنامج أخي بشير ,, "طبعا بعد الاستئذان من أخي walidaly " لحماية الملكية الفكرية :)

وفقكم الله جميعا ,,

تم تعديل هذه المشاركة بواسطة HGB في 12 أبريل 2004 في 21:40

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

شكرا جزيلا أخى HGB على هذا التشجيع

الحقيقة أن هذا البرنامج هو التجربة الثالثة على طريق تعلمى لغة السى وفعلا أرحب بأى إضافة أو تعديل فى الكود طالما سيكون البرنامج مجانى وopen source

سوف ألقى نظرة على البرنامج الآخر وأرجو أن يتسع الوقت لتعديله

شكرا مرة أخرى لكلماتك

هذا الموضوع مغلق.

مواضيع مشابهة