הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 23-07-10, 16:07   # 1
Gal Shafrir
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,626

Gal Shafrir לא מחובר  

Wink PHP וSQL - מערכת רב-לשונית

אהלן, חבר'ה.

בימים אלו אני שוקד על פיתוח מערכת CMS מודולרית,
שמכילה חלק מהמודולים הבאים:
  • עמודים
  • חדשות/כתבות/מאמרים
  • גלריות
  • טפסים
  • בלוקים
  • וכו'.

הבעיה שלי היא כזו:
אני צריך לפתח מודול נוסף: מודול שפות.
באמצעות המודול ניתן יהיה לתרגם את האתר למספר שפות בלתי מוגבל,
בעוד שהשפות נשלפות מתוך טבלה במסד, לצורך העניין.

הבעיה שלי היא בתכנון המסד. אני רוצה לתכנן את המסד כך שאוכל
להחליף שפת ברירת מחדל ללא שום בעיות, ואוכל לתרגם את התוכן שלי,
לא משנה באיזה מודול, בקלות וביעילות.

הציעו לי לעשות טבלה מקשרת בין תרגום לבין פריט במודול:
parentID - הפריט שרוצים לתרגם
itemID - הפריט המתורגם (להלן: התרגום עצמו)
module - כמובן, לאיזה מודול שייך התרגום (עמודים/מאמרים/...)
lang - קוד השפה (he/en וכו')

הבעיה היא מה קורה כאשר משנים את שפת ברירת המחדל?
צריך לעבור על כל הטבלאות של כל המודולים (לטפסים למשל יש יותר מטבלה אחת),
כדי לשנות את הparentID...
לכן הפתרון הזה נראה לי לא בדיוק יעיל.


פתרון נוסף: בסגנון וורדפרס, היא רשומה אחת ריקה,
שלא מכילה תוכן, ושאר התרגומים לאותו הפריט נכנסים כרשומות נוספות
כאשר הגדרות הפריט עצמו לא מופיעות ונלקחות מפריט האב.

דוגמה לשליפת כל העמודים בשפה מסוימת:
PHP קוד:
    public function get_all($lang '')
    {
        
$sql "SELECT `translations`.`itemID`, `pages`.*
        FROM `pages`, `translations`
        WHERE `translations`.`parentID` = `pages`.`ID` AND `translations`.`lang`='{$lang}'
        AND `translations`.`module` = 'pages'"
;
        
        
$query $this->db->query($sql);
        
        
$pages $query->result_array();
        
        if (
count($pages) > 0)
        {
            foreach (
$pages as $key => $page)
            {
                
$sql "SELECT * FROM `pages` WHERE `ID` = '{$page['itemID']}'";
                
$q $this->db->query($sql);
                
                
$r $q->result_array();

                
$pages[$key]['name'] = $r[0]['name'];
                
$pages[$key]['content'] = $r[0]['content'];
                
$pages[$key]['title'] = $r[0]['title'];
            }
        }

        
/*$this->db->order_by('homepage', 'desc');
        $this->db->order_by('order', 'asc');    
        $query = $this->db->get('pages');*/
        
        
return $pages;
    } 
הקוד לדעתי לא יעיל, ועליי למצוא פתרון יותר יעיל מזה.

פתרון נוסף:
לשייך לכל מודול 2 טבלאות: אחת לתכנים ואחת לכל שאר הדברים
שצריך לשמור לגבי אותו הפריט (סטטוס, כתובת וכו').

אשמח לעזרה בנושא, זו פעם ראשונה שאני עושה דבר כזה.

תודה לעוזרים,
גל.
__________________
בברכה,
גל שפריר - מעצב ומפתח אתרים.

עופר שפריר - במאי, תסריטאי ומפיק.
  Reply With Quote
 

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 00:36.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ