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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
20 פוסטים 4 כותבים 394 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • רפאלר מנותק
    רפאלר מנותק
    רפאל
    השיב ל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
                                • דף הבית
                                • קטגוריות
                                • פוסטים אחרונים
                                • משתמשים
                                • חיפוש
                                • חוקי הפורום