דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. החלפת הקלדה לעברית.

החלפת הקלדה לעברית.

מתוזמן נעוץ נעול הועבר תכנות
20 פוסטים 4 כותבים 394 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבי 203א מנותק
    אבי 203א מנותק
    אבי 203
    כתב ב נערך לאחרונה על ידי אבי 203
    #1

    בשביל חיפוש במקרה של הקלדה בטעות לעברית, רציתי לעשות קוד שיהפוך לעברית, האם יש דרך פשוטה יותר?

    let einglish = "qwertyuiopasdfghjklzxcvvbnmQWERTYUIOPASDFGHJKLZXCVBNM,.;",
    tw=$w('#input41').value
    let erec= einglish.indexOf(tw.charAt(0))
    if (erec!== -1) {
        console.log(p.replaceAll('e','ם').replaceAll('t', 'א'))
    // וכאן להמשיך כל האותיות גדולות וקטנות    
       }
    

    או כך

    String.prototype.allReplace = function(obj) {
        var retStr = this;
        for (var x in obj) {
            retStr = retStr.replace(new RegExp(x, 'g'), obj[x]);
        }
        return retStr;
    };
    
    console.log(p.allReplace({'a': 'א', 'b': 'ב','c': 'כ', 'd': 'ל'}));
    

    https://www.av-digital.co.il/

    רפאלר תגובה 1 תגובה אחרונה
    1
    • רפאלר מנותק
      רפאלר מנותק
      רפאל
      השיב לאבי 203 ב נערך לאחרונה על ידי רפאל
      #2

      @אבי-203 מסתבר (איך לא) שכמו כל רעיון אדיר בחיים, מישהו כבר חשב עליו 😕, ומימש אותו בדומה לאפשרות השנייה שהצעת.

      שימוש:

      const he = require('convert-layout/he');
      console.log(he.fromEn("nv bnag?"));
      
      
      yossizY תגובה 1 תגובה אחרונה
      2
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לרפאל ב נערך לאחרונה על ידי
        #3

        @רפאל נראה לי שהספרייה הנ"ל לא מעשית בשביל ר' @אבי-203 כי הוא כלוא בארגז החול של WIX (השי"ת יוצאנו מאפילה לאורה במהירה אכי"ר...)

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        רפאלר א 2 תגובות תגובה אחרונה
        10
        • רפאלר מנותק
          רפאלר מנותק
          רפאל
          השיב לyossiz ב נערך לאחרונה על ידי
          #4

          @yossiz הקוד קריא וברור בGithub, מה מונע ממנו לעשות בו שימוש?

          yossizY תגובה 1 תגובה אחרונה
          1
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לרפאל ב נערך לאחרונה על ידי
            #5

            @רפאל אמר בהחלפת הקלדה לעברית.:

            הקוד קריא וברור בGithub

            לא בדיוק. יש שלב בנייה. אי אפשר להשתמש בו as is.

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            רפאלר תגובה 1 תגובה אחרונה
            0
            • רפאלר מנותק
              רפאלר מנותק
              רפאל
              השיב לyossiz ב נערך לאחרונה על ידי
              #6

              @yossiz חידות לי דבריך, מדובר בקוד Javascript פשוט.

              yossizY תגובה 1 תגובה אחרונה
              0
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לרפאל ב נערך לאחרונה על ידי yossiz
                #7

                @רפאל
                https://github.com/ai/convert-layout/blob/main/build.js

                כמובן אפשר לכתוב קוד דומה שלא יתחייב שלב בנייה. אבל בדיוק הקוד הזה אי אפשר להשתמש בו בלי שלב בנייה.

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

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                רפאלר תגובה 1 תגובה אחרונה
                2
                • רפאלר מנותק
                  רפאלר מנותק
                  רפאל
                  השיב לyossiz ב נערך לאחרונה על ידי רפאל
                  #8

                  @yossiz ודאי הבנת מדוע הקובץ הזה נצרך, לכן תמהני על מה שכתבת.

                  תגובה 1 תגובה אחרונה
                  0
                  • רפאלר מנותק
                    רפאלר מנותק
                    רפאל
                    כתב ב נערך לאחרונה על ידי רפאל
                    #9

                    @אבי-203
                    אני חושב שהקוד תקין.

                    class LayoutConvertor {
                      static convert(str) {
                        return str.replace(/./g, x => this.#lookup.get(x.toLowerCase()) ?? x)
                      }
                    
                      static #lookup = new Map([
                        ["q", "/"],
                        ["w", "'"],
                        ["e", "ק"],
                        ["r", "ר"],
                        ["t", "א"],
                        ["y", "ט"],
                        ["u", "ו"],
                        ["i", "ן"],
                        ["o", "ם"],
                        ["p", "פ"],
                        ["[", "]"],
                        ["{", "}"],
                        ["]", "["],
                        ["}", "{"],
                        ["\\", "\\"],
                        ["|", "|"],
                        ["a", "ש"],
                        ["s", "ד"],
                        ["d", "ג"],
                        ["f", "כ"],
                        ["g", "ע"],
                        ["h", "י"],
                        ["j", "ח"],
                        ["k", "ל"],
                        ["l", "ך"],
                        [";", "ף"],
                        [":", ":"],
                        ["'", ","],
                        ["\"", "\""],
                        ["z", "ז"],
                        ["x", "ס"],
                        ["c", "ב"],
                        ["v", "ה"],
                        ["b", "נ"],
                        ["n", "מ"],
                        ["m", "צ"],
                        [",", "ת"],
                        ["<", ">"],
                        [".", "ץ"],
                        [">", "<"],
                        ["/", "."],
                        ["?", "?"]
                      ]);
                    }
                    
                    yossizY אבי 203א 2 תגובות תגובה אחרונה
                    5
                    • yossizY מנותק
                      yossizY מנותק
                      yossiz
                      השיב לרפאל ב נערך לאחרונה על ידי
                      #10

                      @רפאל נתתי הצבעה כבר על הגירסה הראשונה של הקוד. עכשיו אני צריך להצביע שוב על העדכונים...

                      אפשר לשאול למה לא עשית convert ו-lookup סטטיים? (ואז כבר די מיותר להשתמש בקלאס).

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      רפאלר 2 תגובות תגובה אחרונה
                      1
                      • רפאלר מנותק
                        רפאלר מנותק
                        רפאל
                        השיב לyossiz ב נערך לאחרונה על ידי רפאל
                        #11

                        @yossiz

                        אפשר לשאול למה לא עשית convert ו-lookup סטטיים

                        שקלתי את העניין אבל הצעד היה מאריך את הסינטקס וממילא פוגע בקריאות.

                         return str.replace(/./g, x => LayoutConvertor.#lookup.get(x) ?? LayoutConvertor.#lookup.get(x.toLowerCase()) ?? x)
                        

                        (ואז כבר די מיותר להשתמש בקלאס).

                        כמפתח TS למדתי לשנוא הרחבות של הPrototype, ובתור איש #C אני לא מסוגל לראות קוד משוטט מחוץ למחלקה מרחף לו בחלל 🌌 .

                        שורה תחתונה: שיקולים רגשיים בלבד שמזיקים לסביבה.

                        אדרבה אני מזמין אותך לשנות את הקוד כרצונך ובטוחני שהתוצאה תהיה מרשימה ביותר.

                        yossizY תגובה 1 תגובה אחרונה
                        2
                        • yossizY מנותק
                          yossizY מנותק
                          yossiz
                          השיב לרפאל ב נערך לאחרונה על ידי
                          #12

                          @רפאל אמר בהחלפת הקלדה לעברית.:

                          אדרבה אני מזמין אותך לשנות את הקוד כרצונך.

                          אני הייתי כותב ככה (בקובץ נפרד):

                          const map = new Map(...);
                          
                          export default function convert(str) { return .... }
                          

                          שימוש:

                          import convertLayout from './utils/layout-converter';
                          

                          ההבדל? כלום... רק סטייל.
                          (בעצם זה חוסך יצירה מחדש של ה-map בכל יצhרה של ה-class)

                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                          תגובה 1 תגובה אחרונה
                          1
                          • א מנותק
                            א מנותק
                            אהרן
                            השיב לyossiz ב נערך לאחרונה על ידי
                            #13

                            @yossiz אמר בהחלפת הקלדה לעברית.:

                            השי"ת יוצאנו מאפילה לאורה במהירה אכי"ר...

                            אתה מתחיל להישמע כמו מתכנת

                            ממלא את מקומו (החסר מאוד!) של הקומוניסט ההוא, נו איך קוראים לו?

                            תגובה 1 תגובה אחרונה
                            3
                            • רפאלר מנותק
                              רפאלר מנותק
                              רפאל
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @yossiz אמר בהחלפת הקלדה לעברית.:

                              (בעצם זה חוסך יצירה מחדש של ה-map בכל יצhרה של ה-class)

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

                              תגובה 1 תגובה אחרונה
                              1
                              • אבי 203א מנותק
                                אבי 203א מנותק
                                אבי 203
                                השיב לרפאל ב נערך לאחרונה על ידי
                                #15

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

                                https://www.av-digital.co.il/

                                רפאלר תגובה 1 תגובה אחרונה
                                5
                                • רפאלר מנותק
                                  רפאלר מנותק
                                  רפאל
                                  השיב לאבי 203 ב נערך לאחרונה על ידי
                                  #16

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

                                  @אבי-203 חלילה לי מלחלוק על @yossiz אבל אני חושב שאדרבה, זה מעניין מאוד.

                                  אבי 203א תגובה 1 תגובה אחרונה
                                  0
                                  • אבי 203א מנותק
                                    אבי 203א מנותק
                                    אבי 203
                                    השיב לרפאל ב נערך לאחרונה על ידי אבי 203
                                    #17

                                    @רפאל מפני הכרת הטוב ל @רפאל אעלה למרות המלצתו 'המחנכת' של ר' @yossiz שעזר לי לקצר את הקוד שלי, בשבעים שורות..

                                    let evtext;
                                    export function input41_keyPress(event) {
                                        let key = event.key;
                                        if (key === "Enter" || key === "Tab") {
                                            $w('#input41').blur()
                                                $w('#text168').hide()
                                            const hipus = String($w('#input41').value);
                                            filters(hipus)
                                    
                                            let einglish = "qwertyuiopasdfghjklzxcvvbnmQWERTYUIOPASDFGHJKLZXCVBNM,.;",
                                                tw = $w('#input41').value
                                            let cnisa = einglish.indexOf(tw.charAt(0))
                                            if (cnisa !== -1) {
                                                 evtext = converter.convert(tw)
                                                $w('#text167').show()
                                                $w('#text167').text = " האם נתכונת לחפש? " + evtext
                                            }
                                        }
                                    }
                                    function filters(hipus) {
                                        const velur = hipus.split(' ').reverse().join(' ');
                                        console.log(velur);
                                        wixData.query("magar").eq("phon", hipus).find().then((res) => {
                                            if (res.length === 1) {
                                                let id = res.items[0]
                                                wixWindow.openLightbox("רכישת כרטיסים", { id })
                                            }
                                        })
                                    
                                        const types = ['phon', 'hir', 'ctovet', 'sem', 'tz', 'mishpaha', 'semmale'];
                                        let filter2 = wixData.filter();
                                        const type = $w('#input13').value;
                                        if (type in types) {
                                            filter2 = filter2.contains(type, hipus);
                                        }
                                        if (type === 'semmale' || type === 'all') {
                                            filter2 = filter2.or(
                                                wixData.filter().contains("semmale", velur));
                                        }
                                        if (type === 'all') {
                                            for (const type of types) {
                                                filter2 = filter2.or(wixData.filter().contains(type, hipus));
                                            }
                                        }
                                    
                                        $w("#dataset1").setFilter(filter2).then(()=>{
                                            let count = $w("#dataset1").getTotalCount(); // 23\
                                            console.log(count);
                                    if (count===0) {
                                        $w('#text168').show()
                                    }
                                        })
                                                .catch((err) => {
                                                    console.log(err);
                                                });
                                    }
                                    
                                    
                                    
                                    
                                    class LayoutConvertor {
                                        convert(str) {
                                            return str.replace(/./g, x => this.#lookup.get(x) ?? this.#lookup.get(x.toLowerCase()) ?? x)
                                        }
                                    
                                        #lookup = new Map([
                                            ["q", "/"],
                                            ["w", "'"],
                                            ["e", "ק"],
                                            ["r", "ר"],
                                            ["t", "א"],
                                            ["y", "ט"],
                                            ["u", "ו"],
                                            ["i", "ן"],
                                            ["o", "ם"],
                                            ["p", "פ"],
                                            ["[", "]"],
                                            ["{", "}"],
                                            ["]", "["],
                                            ["}", "{"],
                                            ["\\", "\\"],
                                            ["|", "|"],
                                            ["a", "ש"],
                                            ["s", "ד"],
                                            ["d", "ג"],
                                            ["f", "כ"],
                                            ["g", "ע"],
                                            ["h", "י"],
                                            ["j", "ח"],
                                            ["k", "ל"],
                                            ["l", "ך"],
                                            [";", "ף"],
                                            [":", ":"],
                                            ["'", ","],
                                            ["\"", "\""],
                                            ["z", "ז"],
                                            ["x", "ס"],
                                            ["c", "ב"],
                                            ["v", "ה"],
                                            ["b", "נ"],
                                            ["n", "מ"],
                                            ["m", "צ"],
                                            [",", "ת"],
                                            ["<", ">"],
                                            [".", "ץ"],
                                            [">", "<"],
                                            ["/", "."],
                                            ["?", "?"]
                                        ]);
                                    }
                                    const converter = new LayoutConvertor()
                                    
                                    export function text167_click(event) {
                                         $w('#input41').blur()
                                            const hipus = evtext;
                                            $w('#input41').value = evtext
                                        filters(hipus)
                                          $w('#text167').hide()
                                    	// This function was added from the Properties & Events panel. To learn more, visit http://wix.to/UcBnC-4
                                    	// Add your code for this event here: 
                                    }
                                    
                                    

                                    https://www.av-digital.co.il/

                                    תגובה 1 תגובה אחרונה
                                    3
                                    • רפאלר מנותק
                                      רפאלר מנותק
                                      רפאל
                                      השיב לyossiz ב נערך לאחרונה על ידי רפאל
                                      #18

                                      @yossiz אמר בהחלפת הקלדה לעברית.:

                                      אפשר לשאול למה לא עשית convert ו-lookup סטטיים?

                                      טעיתי לחשוב שלthis אין משמעות כלל במתודה סטטית, ומשכך הדרך להתייחס לשאר החברים הסטטיים, היא בשימוש של שמה של המחלקה.

                                      בנוסף אולי יהיה אפשרי להסתפק רק בביטוי השני של הקוד דלהלן:

                                      this.#lookup.get(x) ?? this.#lookup.get(x.toLowerCase())
                                      

                                      עדכנתי את הקוד.

                                      אבי 203א תגובה 1 תגובה אחרונה
                                      3
                                      • אבי 203א מנותק
                                        אבי 203א מנותק
                                        אבי 203
                                        השיב לרפאל ב נערך לאחרונה על ידי
                                        #19

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

                                        
                                        export function input31_keyPress(event) {
                                            let key = event.key;
                                            if (key === "Enter" || key === "Tab") {
                                        let text = "qwertyuiopasdfghjklzxcvvbnmQWERTYUIOPASDFGHJKLZXCVBNM,.;",
                                                tw = $w('#input31').value
                                            let bbb = text.indexOf(tw.charAt(0))
                                            if (bbb === -1) {
                                                $w('#input31').value = converter.convert(tw)
                                            }
                                                $w('#input32').focus()
                                        
                                            } 
                                        }
                                        
                                        class LayoutConvertor {
                                            convert(str) {
                                                return str.replace(/./g, x => this.#lookup.get(x) ?? this.#lookup.get(x.toLowerCase()) ?? x)
                                            }
                                            #lookup = new Map([
                                                ["/", "q"],
                                                ["'", "w"],
                                                ["ק", "e"],
                                                ["ר", "r"],
                                                ["א", "t"],
                                                ["ט", "y"],
                                                ["ו", "u"],
                                                ["ן", "i"],
                                                ["ם", "o"],
                                                ["פ", "p"],
                                                ["]", "[ "],
                                                ["}", "{"],
                                                ["[", "]" ],
                                                ["{", "}"],
                                                ["\\", "\\"],
                                                ["|", "|"],
                                                ["ש", "a"],
                                                ["ד", "s" ],
                                                ["ג", "d"],
                                                ["כ", "f"],
                                                [ "ע", "g"],
                                                ["י", "h"],
                                                ["ח", "j"],
                                                ["ל", "k"],
                                                ["ך", "l"],
                                                ["ף", ";"],
                                                [":", ":"],
                                                [",", "'"],
                                                [ "\"", "\""],
                                                ["ז", "z"],
                                                [ "ס", "x"],
                                                [ "ב", "c"],
                                                [ "ה", "v"],
                                                ["נ", "b"],
                                                [ "מ", "n"],
                                                [ "צ", "m"],
                                                ["ת", ","],
                                                [">", "<"],
                                                [ "ץ", "."],
                                                ["<", ">"],
                                                [".", "/"],
                                                ["?", "?"],
                                                [ "@", "@"]
                                            ]);
                                        }
                                        const converter = new LayoutConvertor()
                                        

                                        https://www.av-digital.co.il/

                                        רפאלר תגובה 1 תגובה אחרונה
                                        5
                                        • רפאלר מנותק
                                          רפאלר מנותק
                                          רפאל
                                          השיב לאבי 203 ב נערך לאחרונה על ידי רפאל
                                          #20

                                          @אבי-203 ניתן להשתמש בביטוי רגולרי התואם לתווים בUnicode שאינם כלולים בASCII, על מנת לקבוע האם מחרוזת טקסט כלשהיא מכילה תווים שאינם לטיניים:

                                          /[^\x00-\x7F]+/.test("א")
                                          true
                                          
                                          /[^\x00-\x7F]+/.test("a")
                                          false 
                                          

                                          לחלופין ביכולתך לציין בצורה מפורשת את התווים הרצויים:

                                          /[א-ת]+/.test("א")
                                          true
                                          
                                          /[א-ת]+/.test("a")
                                          false
                                          

                                          שימוש בביטויים הנ"ל יסתכם בחיפוש התאמה בכל רחבי הטקסט, ביכולתך כמובן לשנות את הביטוי כך שיבדוק את התו הראשון בלבד.

                                          תגובה 1 תגובה אחרונה
                                          3

                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום