الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيفية عمل نظام متعدد اللغات

Featured Replies

بتاريخ:
  • مشاركة ذات تفاعل كبير

اخواني واخواتي الاعضاء
تحية طيبة وبعد
اقدم لكم اليوم شرح لكيفية عمل نظام متعدد اللغات بمعنى انك تستطيع ان تجعل نظامك يعمل باللغة العربية والانجليزية والفرنسية واي لغة اخرى انت تحبها
وذلك بتحويل كل ما هو مكتوب في الشاشة الى اللغة المختارة ، وللامانة العلمية اني انقل لكم هذا الموضوع من احدى المشاركات القديمة جدا في المنتدى والهدف هو ان ابرز الموضوع للاخوة والاخوات كي يكون لهم فيه هذا الموضوع الحل النهائي لمشاكل التحويل بين اللغات ومن اليمين اللى اليسار ... الخ

اول خطوة : انشاء الجداول في قاعدة البيانات

 
CREATE TABLE MODULES_FM_MSTR
(
 FM_FORM   		VARCHAR2(100 BYTE),
 FM_DESC_A 		VARCHAR2(100 BYTE),
 FM_DESC_E 		VARCHAR2(100 BYTE),
 FM_DESC_F 		VARCHAR2(100 BYTE),
 FM_ACTIVE 		NUMBER(1),
 ENTRY_ID		  NUMBER,
 ENTRY_DATE		DATE,
 LAST_UPDATE_ID	NUMBER,
 LAST_UPDATE_DATE  DATE
)



المحددات على الجدول

اضافة حقل اساسي يعني Primary key

ALTER TABLE MODULES_FM_MSTR ADD (
CONSTRAINT FM_MSTR_PK
PRIMARY KEY
(FM_FORM)

شرح الجدول

FM_FORM هو حقل اسم الفورم مثال / employees
FM_DESC_A اسم الفورم بالعربية مثال / الموظفون
FM_DESC_F هذا الاسم بالفرنسية واذا اردت لغات اخرى تضيف حقول اخرى للغات التي تريدها
FM_ACTIVE المقصود بهذا الحقل هو هل الفورم فعال ام غير فعال
ملاحظة : اذا كان فعال ياخذ القيمة 1

الان ناتي لحقول المراقبة على الجدول

ENTRY_ID رقم المستخدم الذي ادخل العملية
ENTRY_DATE تاريخ الادخال
LAST_UPDATE_ID رقم المستخدم الذي عدل اخر تعديل
LAST_UPDATE_DATE تاريخ اخر تعديل


اخواني الى هنا اليوم ونكمل في وقت اخر ان شاء الله تعالى

  • الردود 38
  • المشاهدات 22.5k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

Most Popular Posts

  • الأخ / mmsalman87 الفاضل لإن موضوعك رائع جداً وممتاز وكذلك تسلسل الافكار في طريقة الشرح جميلة لانها بسيطة وسهلة يمكن ان توصل الفكرة مباشرة دون تعقيد وانا معجب بتواضعك للعلم الذي استهليت به الموضوع وا

  • شرح فيديو للموضوع تجدونه في الرابط : http://www.youtube.com/watch?v=Yn0-n6hpd-Y

  • عزيز القادري
    عزيز القادري

    عيد مبارك وكل عام والامه الاسلاميه في عزه وخير وجزاك الله خير على هذا الموضوع ووفقك الله الى كل خير

بتاريخ:

الاخ الكريم
كل عام وانت بخير
الحمد لله ربنا وفقنى فى انشاء نظام بلغات متعددة وبفضل الله وحده ثم بمجهودى الشخصى
ويمكن تقديم العون لمن اراد ذلك
وفى انتظار باقى شرحك للنظام لافادة باقى الزملاء
وجزاك الله خيرا
ومعكم ولكم نتواصل

بتاريخ:
  • كاتب الموضوع

اخي الحبيب اذا كانت عندك طريقة اخرى او افكار اخرى ارجو منك تزويدنا بها وبارك الله فيك

بتاريخ:
  • كاتب الموضوع

نستكمل ما بدأناه من قبل وكنا قد تحدثنا عن انشاء الجدول الماستر ووضحنا كيفية العمل به
الان سنتحدث عن الجدول الثاني الديتيل Detail

CREATE TABLE MODULES_FMD_DET
(
 FMD_FORM		  VARCHAR2(100 BYTE),
 FMD_BLOCK 		VARCHAR2(30 BYTE),
 FMD_ITEM		  VARCHAR2(30 BYTE),
 FMD_ITEM_TYPE 	VARCHAR2(20 BYTE),
 FMD_DESC_A		VARCHAR2(100 BYTE),
 FMD_DESC_E		VARCHAR2(100 BYTE),
 FMD_TOOLTIP_A 	VARCHAR2(100 BYTE),
 FMD_TOOLTIP_E 	VARCHAR2(100 BYTE),
 FMD_HINT_A		VARCHAR2(100 BYTE),
 FMD_HINT_E		VARCHAR2(100 BYTE),
 FMD_GROUP 		NUMBER(3)		   		DEFAULT 1,
 FMD_ACTIVE   	number				DEFAULT NULL,
 ENTRY_ID		  NUMBER,
 ENTRY_DATE		DATE,
 LAST_UPDATE_ID	NUMBER,
 LAST_UPDATE_DATE  DATE
)




المحددات على الجدول

اضافة foreign key لتصبح العلاقة بين الجدول الاول والثاني وهي علاقة One to Many


ALTER TABLE MODULES_FMD_DET ADD (
 CONSTRAINT FMD_DET_R01
FOREIGN KEY (FMD_FORM)
REFERENCES MODULES_FM_MSTR (FM_FORM));



شرح الجدول

FMD_FORM : اسم الفورم وهو ياخذ من الجدول الاول
FMD_BLOCK : اسم البلوك ( القطعة )
FMD_ITEM : اسم الحقل في الفورم
FMD_ITEM_TYPE : نوع الحقل في الفورم هل هو text or button or list ... etc
FMD_DESC_A : الوصف باللغة العربية
FMD_DESC_E : الوصف بالانجليزية
FMD_DESC_F : الوصف بالفرنسية
FMD_TOOLTIP_A : اداة التلميح بالعربية
FMD_TOOLTIP_E : اداة التلميح بالانجليزية
FMD_HINT_A : اداة التلميح بالعربية
FMD_HINT_E : اداة التلميح بالانجليزية
FMD_ACTIVE : هل الحقل فعال وياخذ الرقم 1 اذا كان فعال

الان ناتي لحقول المراقبة على الجدول

ENTRY_ID : رقم المستخدم
ENTRY_DATE : تاريخ الادخال
LAST_UPDATE_ID : رقم اخر مستخدم قام بالتعديل
LAST_UPDATE_DATE : تاريخ اخر تعديل

الى هنا ينتهي درسنا اليوم وفي الشرح القادم سنستعرض كيفية تطبيق الفكرة في الفورم ان شالله تعالى

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:

اخواني واخواتي الاعضاء
تحية طيبة وبعد
اقدم لكم اليوم شرح لكيفية عمل نظام متعدد اللغات بمعنى انك تستطيع ان تجعل نظامك يعمل باللغة العربية والانجليزية والفرنسية واي لغة اخرى انت تحبها
وذلك بتحويل كل ما هو مكتوب في الشاشة الى اللغة المختارة ، وللامانة العلمية اني انقل لكم هذا الموضوع من احدى المشاركات القديمة جدا في المنتدى والهدف هو ان ابرز الموضوع للاخوة والاخوات كي يكون لهم فيه هذا الموضوع الحل النهائي لمشاكل التحويل بين اللغات ومن اليمين اللى اليسار ... الخ

اول خطوة : انشاء الجداول في قاعدة البيانات

CREATE TABLE MODULES_FM_MSTR
(
FM_FORM VARCHAR2(100 BYTE),
FM_DESC_A VARCHAR2(100 BYTE),
FM_DESC_E VARCHAR2(100 BYTE),
FM_DESC_F VARCHAR2(100 BYTE),
FM_ACTIVE NUMBER(1),
ENTRY_ID NUMBER,
ENTRY_DATE DATE,
LAST_UPDATE_ID NUMBER,
LAST_UPDATE_DATE DATE
)

المحددات على الجدول

اضافة حقل اساسي يعني Primary key

ALTER TABLE MODULES_FM_MSTR ADD (
CONSTRAINT FM_MSTR_PK
PRIMARY KEY
(FM_FORM)

شرح الجدول

FM_FORM هو حقل اسم الفورم مثال / employees
FM_DESC_A اسم الفورم بالعربية مثال / الموظفون
FM_DESC_F هذا الاسم بالفرنسية واذا اردت لغات اخرى تضيف حقول اخرى للغات التي تريدها
FM_ACTIVE المقصود بهذا الحقل هو هل الفورم فعال ام غير فعال
ملاحظة : اذا كان فعال ياخذ القيمة 1

الان ناتي لحقول المراقبة على الجدول

ENTRY_ID رقم المستخدم الذي ادخل العملية
ENTRY_DATE تاريخ الادخال
LAST_UPDATE_ID رقم المستخدم الذي عدل اخر تعديل
LAST_UPDATE_DATE تاريخ اخر تعديل


اخواني الى هنا اليوم ونكمل في وقت اخر ان شاء الله تعالى



الاختلاف في الراي لايفسد للود قضيه هذه الطريقه غير عمليه ابدا هناك طرق اسهل بكثير مع الاحترام
بتاريخ:

السلام وعليكم ورحمة الله وبركاته اخي العزيز من قبل ان تكمل الموضوع هذه الطريقة ليست عمليه لاداعي لحفظ الحقول والعناصر والبلوووك في الجدول انها طريقه غير عملية
مع الاحترام لدي طريقه افضل وهي تم بناءها من قبل مع كل الاحترام وسوف اقوم بشرحها لاحقا بأذن الله تعالى

بتاريخ:

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

وكل عام وأنتم بخير.. وتقبل الله من الجميع الصيام والقيام وصالح الأعمال....

أكمل يا مهندس ونتظر تكملة الشرح.. موضوع مهم جدا
وكنت احتاجة كثير....



موووفق...

بتاريخ:

عيد مبارك وكل عام والامه الاسلاميه في عزه وخير وجزاك الله خير على هذا الموضوع ووفقك الله الى كل خير

بتاريخ:

نرجو توضيح الطريقة العملية ونحن في الانتظار وشكرا جزيلا

بتاريخ:
  • كاتب الموضوع

اخوي
ocp_em


هل لك ان ترشدنا الى طريقتك العملية ؟ ولن اكمل الشرح وبانتظار شرحك انت وبارك الله فيك

بتاريخ:

اخوي
ocp_em


هل لك ان ترشدنا الى طريقتك العملية ؟ ولن اكمل الشرح وبانتظار شرحك انت وبارك الله فيك

هههههههههههههه لماذا لم تكمل شرحك زعلت اين الروح المعنوية كلنا نعمل لنرضي وجه الله تعالى لا لان نزعل من مجرد وجهة نظر
بتاريخ:

الأخ / mmsalman87 الفاضل لإن موضوعك رائع جداً وممتاز وكذلك تسلسل الافكار في طريقة الشرح جميلة لانها بسيطة وسهلة يمكن ان توصل الفكرة مباشرة دون تعقيد وانا معجب بتواضعك للعلم الذي استهليت به الموضوع والذي يدل على رفعت خلقك وروعة انسانيتك في نشر العلم
وارجوا منك رجاء خاص إكمال الموضوع لأخوانك الباقين المنتظرين لانه سيفيدهم واشكرك من قلبي على ايجاد مساحة للوقت لتفيد الاخرين

اما بالنسبة للأخ ocp em الذي علق على الموضوع ان طريقة تخزين الحقول والعناصر والبلوك باأنها غير مجدية
في بداية تعليقك ان الخلاف لايوسد للود قضية كنت موفق اما انك تقول ان طريقة تخزين الحقول والعناصر والبلوك باأنها غير مجدية فهنا انت مخطئ جداً لان الاخ لم يكمل فكرة الموضوع كاملة وانت قد حكمت عليها وثانياً ان تقول للاخ بان لا تكمل الموضوع وانت عندك فكرة اخرى أخطئت مرة اخرى بعمق لان قد يكون الاخ صاحب الموضوع عنده افكار برمجية في كود البرمجة يمكن ان يستفد منها الكل بما فيهم انت لأنك كما تعلم كل المبرمجين يمكن يصلوا الى نفس الهذف في البرنامج لكن الافكار والاساليب البرمجية تخلتف و قد يكون في مضمون الكود البرمجي مقطع برمجي او دالة يمكن ان يستفد منها المتابعون للموضوع في برنامج اخر لا يمت لصلة لهذا الموضوع بتاتاً اللهم انها تسهل وظيفة في البرنامج الاخر كان الاحرى عليك تتبع الموضوع وإذا كان عدنك اضافة أضفها لاننا هنا لنكمل افكار بعض وليسى لتقييم افكار بعض والله من وراء القصد

بتاريخ:

السلام عليكم

مهندس ماهر أكمل ولا تقطع الشرح لأنه موضوع مهم ومفيد جدا جدا جدا.....

أكمل على بركة الله....

بتاريخ:
  • كاتب الموضوع

اشكر الاخ
scince واعتبره رد عني

بتاريخ:

منتظرين تكملة الموضوع
شكرا

بتاريخ:

الاخ ماهر سلمان لماذا لم تكمل الموضوع

بتاريخ:
  • كاتب الموضوع

اخي الكريم ان شالله ساكمل الموضوع قريبا وشكرا لمتابعتك

  • بعد 2 أسابيع...
بتاريخ:

اخي العزيز / mmsalman87 المحترم

صحيح انني جديد في هذا المنتدى لكنني متابع لمواضيع هذا المنتدى الرائع منذ فترة .. وفعلاً وجدت ضالتي في مواضيعك و بالاخص في هذا الموضوع (كيفية عمل نظام متعدد اللغات) فأرجو ان تكمله حتى نستفيد منه

وجزاك الله خيرا وجعله الله في ميزان حسناتك

  • بعد 4 أسابيع...
بتاريخ:
  • كاتب الموضوع

اخواني الكرام استكمالا لموضوع اللغات المتعددة اقدم لكم اليوم الكود الذي يجب وضعه في النظام كي يعمل بناءا على الجداول التي ذكرتها لكم سابقا

في الفورم المراد تطبيق الفكرة عليه نقوم بانشاء program unit
ونسميه TRANSLATE_FORM

ونضع فيه التالي :


 
PROCEDURE TRANSLATE_FORM( IN_FORM_PRM VARCHAR2 ,IN_LANG_PRM VARCHAR2) IS
I NUMBER(4);
lItemName VARCHAR2(100);

BEGIN  

FOR ITEM_REC
IN (SELECT DECODE(IN_LANG_PRM,'A',FM_DESC_A,'E',FM_DESC_E)FM_DESC,
DECODE(IN_LANG_PRM,'A',RIGHT_TO_LEFT,LEFT_TO_RIGHT)FM_DIRECTION,
FMD_BLOCK,FMD_ITEM,
DECODE(IN_LANG_PRM,'A',FMD_DESC_A ,'E',FMD_DESC_E)FMD_PROMPT,
DECODE(IN_LANG_PRM,'A',FMD_TOOLTIP_A ,'E',FMD_TOOLTIP_E)FMD_TOOLTIP,
DECODE(IN_LANG_PRM,'A',FMD_HINT_A ,'E',FMD_HINT_E)FMD_HINT,
FMD_ITEM_TYPE,
ROWNUM
FROM MODULES_FM_MSTR
,MODULES_FMD_DET
WHERE FM_FORM=FMD_FORM AND FM_FORM=IN_FORM_PRM AND FM_ACTIVE ='Y' AND FMD_ACTIVE='Y'
)

LOOP
--SET FORM DIRECTION
IF ITEM_REC.ROWNUM=1 THEN
SET_FORM_PROPERTY(IN_FORM_PRM,DIRECTION,ITEM_REC.FM_DIRECTION);

END IF;
/*IF_STRT_002*/
IF ITEM_REC.FMD_ITEM_TYPE IN ('TEXT_ITEM','LIST','DISPLAY_ITEM','BUTTON','ICONIC_BUTTON','CHECK_BOX','INIT_TEXT') AND GET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,ITEM_CANVAS)IS NOT NULL THEN
IF(ITEM_REC.FMD_ITEM_TYPE IN ('TEXT_ITEM'))THEN
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,PROMPT_TEXT,ITEM_REC.FMD_PROMPT);
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,TOOLTIP_TEXT,ITEM_REC.FMD_TOOLTIP);
--SET_ITEM_VALUE(IN_FORM_PRM,ITEM_REC.FMD_BLOCK,ITEM_REC.FMD_ITEM,IN_LANG_PRM);

ELSIF(ITEM_REC.FMD_ITEM_TYPE IN ('LIST'))THEN
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,PROMPT_TEXT,ITEM_REC.FMD_PROMPT);
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,TOOLTIP_TEXT,ITEM_REC.FMD_TOOLTIP);
--BUILD_LIST(ITEM_REC.FMD_ITEM,IN_LANG_PRM);
ELSIF(ITEM_REC.FMD_ITEM_TYPE IN ('DISPLAY_ITEM'))THEN
--SET_ITEM_VALUE(IN_FORM_PRM,ITEM_REC.FMD_BLOCK,ITEM_REC.FMD_ITEM,IN_LANG_PRM);
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,PROMPT_TEXT,ITEM_REC.FMD_PROMPT);
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,TOOLTIP_TEXT,ITEM_REC.FMD_TOOLTIP);
-- SET_ITEM_VALUE(IN_FORM_PRM,ITEM_REC.FMD_BLOCK,ITEM_REC.FMD_ITEM,IN_LANG_PRM);
ELSIF(ITEM_REC.FMD_ITEM_TYPE IN ('INIT_TEXT'))THEN
COPY(ITEM_REC.FMD_PROMPT,ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM);
ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('BUTTON') THEN
IF(GET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,ICONIC_BUTTON)='TRUE')THEN
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,PROMPT_TEXT,ITEM_REC.FMD_PROMPT);
ELSE
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,LABEL,ITEM_REC.FMD_PROMPT);
END IF;
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,TOOLTIP_TEXT,ITEM_REC.FMD_TOOLTIP);
ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('ICONIC_BUTTON') THEN
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,TOOLTIP_TEXT,ITEM_REC.FMD_TOOLTIP);
ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('CHECK_BOX') THEN
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,LABEL,ITEM_REC.FMD_PROMPT);
SET_ITEM_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||ITEM_REC.FMD_ITEM,TOOLTIP_TEXT,ITEM_REC.FMD_TOOLTIP);
END IF;
END IF;
IF ITEM_REC.FMD_ITEM_TYPE IN ('MAIN_WINDOW') THEN
SET_WINDOW_PROPERTY(ITEM_REC.FMD_ITEM,TITLE,ITEM_REC.FMD_PROMPT);
SET_WINDOW_PROPERTY(ITEM_REC.FMD_ITEM,DIRECTION,ITEM_REC.FM_DIRECTION);
SET_WINDOW_PROPERTY(ITEM_REC.FMD_ITEM,WINDOW_STATE,MAXIMIZE);
ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('WINDOW') THEN
SET_WINDOW_PROPERTY(ITEM_REC.FMD_ITEM,TITLE,ITEM_REC.FMD_PROMPT);
SET_WINDOW_PROPERTY(ITEM_REC.FMD_ITEM,DIRECTION,ITEM_REC.FM_DIRECTION);
/*IF_END_003*/
ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('SYSTEM') THEN
SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,TITLE,ITEM_REC.FMD_PROMPT);
SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WINDOW_STATE,MAXIMIZE);
SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,DIRECTION,ITEM_REC.FM_DIRECTION);
ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('TAB_PAGE') THEN
SET_TAB_PAGE_PROPERTY(ITEM_REC.FMD_ITEM,LABEL,ITEM_REC.FMD_PROMPT);

ELSIF ITEM_REC.FMD_ITEM_TYPE IN ('RADIO_BUTTON') THEN
I:=INSTR(ITEM_REC.FMD_ITEM,'.');
IF GET_RADIO_BUTTON_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||SUBSTR(ITEM_REC.FMD_ITEM,1,I-1),
SUBSTR(ITEM_REC.FMD_ITEM,I+1),PROMPT_TEXT)<>'' THEN
SET_RADIO_BUTTON_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||SUBSTR(ITEM_REC.FMD_ITEM,1,I-1),
SUBSTR(ITEM_REC.FMD_ITEM,I+1),PROMPT_TEXT,ITEM_REC.FMD_PROMPT);
ELSE
SET_RADIO_BUTTON_PROPERTY(ITEM_REC.FMD_BLOCK||'.'||SUBSTR(ITEM_REC.FMD_ITEM,1,I-1),
SUBSTR(ITEM_REC.FMD_ITEM,I+1),LABEL,ITEM_REC.FMD_PROMPT);
END IF;
END IF;

END LOOP;

END;




مع ملاحظة انه يجب ان تكون انوع العناصر
SYSTEM
RADIO_BUTTON
MAIN_WINDOW
LIST
TEXT_ITEM
ICONIC_BUTTON
BUTTON
TAB_PAGE
WINDOW
CHECK_BOX

وفي تريغر WHEN - NEW - FORM - INSTANCE
نكتب الكود التالي :

 
declare
 V_MODULE_NAME varchar2(1000);

 begin


   V_MODULE_NAME :=:system.current_form;
 IF :GLOBAL.P_USER_LANGUAGE = 1 THEN
  TRANSLATE_FORM(V_MODULE_NAME, 'A') ;

 ELSIF :GLOBAL.P_USER_LANGUAGE =2 THEN
TRANSLATE_FORM(V_MODULE_NAME, 'E') ;
 END IF;

 end;


وبهذا سيعمل النظام باللغتين العربية والانجليزية
ما زال هناك الكثير من الافكار لتحسين تعدد الانظمة سيتم التحدث عنها لاحقا

وبالتوفيق للجميع

  • بعد 2 شهور...
بتاريخ:

مشكور أخي ماهر على الموضوع الرائع...
واسمح لي بإضافة بسيطة...
اذا أردت تغيير لغة النظام من داخل النظام، يتم استخدام الكود التالي على ترجر Key-Menu على مستوى الموديول:


Begin
Translate_Form(:System.Current_Form, 1 - To_Number(:Global.language));
 If :Global.language = 'A' Then
  :Global.language := 'B';
 Else
:Global.language := 'A';
 End If;  
End;



وبذلك يتم تغيير لغة البرنامج من خلال الضغط على F5....

تحياتي.

بتاريخ:
  • كاتب الموضوع

بارك الله فيك اخوي احمد ومشاركة مميزة منك مشكور على يا غالي

  • بعد 4 شهور...
بتاريخ:

بارك الله فيك و كثر الله من امثالك

  • بعد 5 شهور...
بتاريخ:

جزاك الله خير اخ ماهر على هذا الشرح الوافي

بتاريخ:

أخي مااهر الحبيب ممكن طلب
إنك تعمل جميع مشاركات على ملف وورد لكي نقدر من عمل ماشرحت لانه بصراحة شرح وفركة جيدة
لنه والله قد تعبت لأني عملت نظام بلغتين وعملت 2 من كل فورمة وحست وتلخبطت كثير الكثير...


ياااليت ..

وشكرا على الشرح موووفق..

اخوك

  • بعد 1 شهر...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.