atarionline.pl LinguaXE - Google translator dla małego Atari - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthoramarok
    • CommentTime4 Nov 2022 zmieniony
     
    Chciałbym podzielić się z Wami pierwszymi rezultatami mojego nowego projektu jakim jest LinguaXE.



    Jest to program, który wykorzystuje silnik Googla do tłumaczenia tekstów oraz FujiNet do komunikacji sieciowej. Jest to dla mnie zupełnie nieznany temat, co czyni go bardzo interesującym. Ponieważ nie posiadam fizycznego urządzenia muszę posiłkować się emulatorem.

    Na ten moment nie ma się specjalnie czym szczycić, bo program jest jeszcze dość ubogi, ale koncepcyjnie już się sprawdził.

    Na ten moment jest możliwość wprowadzenia tekstu w języku angielskim oraz przetłumaczenia go na wybrany język przez użytkownika.

    Jestem w trakcie opracowywania metody wprowadzania międzynarodowych znaków z klawiatury Atari, co da mi w przyszłości możliwość wybierania także języka źródłowego do tłumaczenia.

    Programu jeszcze nie udostępniam, bo jest niedopracowany i nie mam w nim nawet zaimplementowanej obsługi błędów np. braku połączenia internetowego, braku FujiNeta itp. Sam edytor jest też bardzo prymitywny.

    Ale już teraz chciałem rozpocząć dyskusję na temat projektu. Wszelkie Wasze komentarze, pytania czy sugestie będą dla mnie bardzo cenne.

    W kwestiach technicznych - program jest napisany w MadPascalu i wykorzystałem biblioteki bocianu do obsługi FujiNeta.
    • 2: CommentAuthortebe
    • CommentTime5 Nov 2022
     
    wow, ambitny projekt

    wcześniejszy projekt Unicode też widać jest wykorzystywany

    ->link<-
    • 3:
       
      CommentAuthorKaz
    • CommentTime5 Nov 2022
     
    Ambitnie Krzysiek, gratulacje za pomysł! :)

    Na Retrospekcjach widziałem z kolei carta z Google Maps do C64.
    • 4:
       
      CommentAuthorpirx
    • CommentTime5 Nov 2022
     
    barzo pikne! widze, ze masz mozliwosc tlumaczyc tez na klingon :) a przynajmniej czcioneczki sa do wyciagniecia.
    • 5: CommentAuthorCaesar
    • CommentTime5 Nov 2022
     
    @amarok: Fantastyczne! Pogratulować zacięcia i ochoty.
    @Kaz: To był cart z Google Maps czy karta sieciowa jak FujiNet i soft odpowiedni? Bo to by było coś co robi amarok - wykorzystanie silnika Google do zrobienia roboty i prezentacja na Atari. Zadałem pytanie Grzegorzowi, na którego komputerze to sprawdzaliśmy.
    • 6:
       
      CommentAuthoramarok
    • CommentTime5 Nov 2022
     
    @tebe, tak poprzedni projekt był tylko wprawką do tłumacza. Najpierw chciałem zorientować się jak będzie się prezentować tekst ze znakami 8x16 pikseli. Znaki są dość duże, ale dzięki temu nie ma problemów ze znakami diakrytycznymi. W niektórych językach znaki są rozmiaru 16x16 pikseli. Szczegóły można zobaczyć tutaj: ->link<-

    @pirx, czcionka jest jak najbardziej do wykorzystania. Zakres unicode to od U+F8D0 do U+F8FF. W tej czcionce znaki są 16x16 pikseli. Co do tłumaczenia... to pozostaje nam oczywiście uniwersalny translator ze Star Treka ;)
    • 7:
       
      CommentAuthorpirx
    • CommentTime5 Nov 2022
     
    o co za ciule w gugiełe - schowali klingon w translatorze, pamiętam jak był!!!
    • 8:
       
      CommentAuthoramarok
    • CommentTime20 Nov 2022
     
    Pracuję dalej nad programem do tłumaczeń i natknąłem się na pewien problem. Może ktoś z Was miał okazję spotkać się z podobnym i miałby pomysł jak go rozwiązać.

    Ale może zacznę od wyjaśnienia jak generalnie wygląda proces tłumaczenia. Przypomnę tylko, że program jest napisany w MadPascalu.

    Na początku żądanie tłumaczenia jest kodowane do formatu uri, tego z procentami.

    Następnie żądanie wysyłane jest przez funkcję TCP_Connect(tcp_uri) z modułu fn_tcp.pas. Funkcja ta wywołuje pod spodem FN_Open(tcp_uri) z modułu fn_sio.pas.

    Na końcu odbierany jest wynik żądania używając funkcji FN_ReadBuffer z modułu fn_sio.pas.

    Jak tylko zacząłem wprowadzać do programu znaki międzynarodowe, to szybko okazało się, że długość żądania szybko rośnie. Przykładowo pojedynczy znak w cyrylicy np. Б to 6 znaków po zakodowaniu %D0%91.

    Odkryłem, że FN_Open obcina wysyłane żądanie do 256 bajtów, co w przypadku znaków unicode o wyższych wartościach mocno ogranicza możliwości wysyłania dłuższych tekstów.

    W pierwszej kolejności postanowiłem zmodyfikować funkcję FN_Open, żeby zwiększyć liczbę do rozmiaru rzeczywistego np. większego niż 256. Niestety wysyłanie takiej operacji kończy się błędem 138 czyli timeout.

    W drugiej kolejności stwierdziłem, że może wykorzystać TCP_SendBuffer, która używa FN_WriteBuffer. W tym przypadku otrzymuję błąd 144 czyli błąd zapisu. Podejrzewam, że może dlatego, że przed TCP_SendBuffer powinienem użyć TCP_Connect lub czegoś podobnego do otwarcia połączenia. Jednak wydaje mi się, że w przypadu takich żądań nie powinienem rozbijać operacji na Connect i SendBuffer, bo jak miałbym podzielić żądanie pomiędzy Connect a SendBuffer.

    Jestem pewny, że istnieje jakieś logiczne i eleganckie rozwiązanie. Z góry dziękuję Wam za wszelką pomoc.
    • 9:
       
      CommentAuthorjhusak
    • CommentTime20 Nov 2022 zmieniony
     
    Wydaje mi się, że trzeba się skonsultować z twócrami sofru do fujineta. Ew. zajrzeć w źródła i może tam coś będzie.
    • 10:
       
      CommentAuthorKaz
    • CommentTime20 Nov 2022
     

    Ceasar:

    @Kaz: To był cart z Google Maps czy karta sieciowa jak FujiNet i soft odpowiedni?


    To drugie.
    • 11:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Fajny projekt. Aż zachciało mi się Fujinet, ale na razie niedostępny.
    • 12: CommentAuthorDope
    • CommentTime24 Nov 2022
     
    Jaki niedostępny? Toż przecież na zaxonowym Allegro leży.
    • 13:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Sprawdzałem u oryginalnych autorów.
    Nie wiedziałem, że ktoś to w Polsce robi też,
    masz na myśli tego Allegrowicza:
    ->link<-
    ?
    • 14:
       
      CommentAuthorPeri Noid
    • CommentTime24 Nov 2022 zmieniony
     
    Tak. Chyba że ci czas realizacji nie pasuje.
    • 15:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Rzeczywiście, teraz widzę: 33 dni.
    Pewnie zaczyna robić sprzęcik kiedy wchodzi zlecenie.
    No, jeden egzemplarz mógłby mieć w zapasie, a wykonywać następny też w momencie zlecenia, aby wyrównać zapas.
    • 16:
       
      CommentAuthorPeri Noid
    • CommentTime24 Nov 2022
     
    To jest "zabezpieczenie przed natrętnymi klientami", którzy na drugi dzień po zakupie wystawiają negatywa, ze jeszcze nie jest wysłane.
    • 17:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Tak, już rozmawiam na Allegro z kolegą Zaxonem, jak mniemam.
    • 18:
       
      CommentAuthoramarok
    • CommentTime24 Nov 2022
     
    @George, cieszę się, że zainteresowałeś się moim projektem.

    Mam chwilowo zastój w dalszym rozwoju programu, bo jak pisałem wcześniej muszę rozwiązać problem z dłuższymi żądaniami do serwera.

    > Wydaje mi się, że trzeba się skonsultować z twócrami sofru do fujineta
    @jhusak, dzięki za radę, tak zrobiłem. Thomas Cherryhomes potwierdził mi że operacja Open ma stały rozmiar danych równy 256 bajtów, co jest dla mnie niewystarczające. Dlatego jedynym sensownym rozwiązaniem jest podzielić żądanie na raty.

    Thomas zasugerował mi, żebym zamiast używać metody GET, co robię obecnie, spróbował POST. Dzięki temu nie będę ograniczony rozmiarem.

    Sprawdziłem sobie na szybko w Pythonie, że serwer Google'a przyjmuje żądania metodą POST i zwraca prawidłowy wynik, zatem jest to do zrobienia.

    Przejrzałem dokumentację do FujiNeta i znalazłem wskazówkę jak to mogłoby wyglądać: ->link<-
    Teraz muszę w jakiś sposób spróbować to odtworzyć w MadPascalu z użyciem bibliotek bocianu lub jej adaptacji. Mam za sobą kilka podejść, ale jak na razie bezowocnych. Walczę dalej...
    • 19:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    @amarok - spoko, moje FujiNet dopiero się smaży, ale jest duża szansa, że w święta siądę i będę uczył się tego używać oraz szukał softu, który z tym działa :)
    Także trzymam kciuki!

    Niestety okazało się, że nie mogę FujiNet wsadzić do SIO bezpośrednio, bo mam port SCART nad nim, który używam.
    Wchodzi w grę Splitter, ale śmiesznie, bo wtedy FujiNet blokuje wszystkie inne porty, albo podłączenie go odwrotnie kablem, ale wtedy nie da się już nic innego podłączyć.

    Może jeszcze jakieś inne rozwiązania są?
    • 20:
       
      CommentAuthorjhusak
    • CommentTime24 Nov 2022
     
    Jeszcze Fujinet w wersli light by Zenon, podłączany kabelkiem jak modem.
    • 21:
       
      CommentAuthorjhusak
    • CommentTime24 Nov 2022 zmieniony
     
    Z reguły to jest krócej niż 33 dni, ja od Zaxona dostawałem gadżety w ciągu tygodnia - dwóch.
    • 22:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Tak, ma być szybciej.
    Szukam kabelka przedłużki SIO.
    • 23:
       
      CommentAuthoramarok
    • CommentTime28 Dec 2022
     
    Minęło trochę czasu od ostatniej wiadomości na temat LinguaXE.

    W międzyczasie udało mi się wprowadzić obsługę wpisywania z klawiatury Atari międzynarodowych znaków.
    Przygotowałem 3 klawiatury, które można przełączać klawiszem Option - łacińską, fonetyczną cyrylicę oraz fonetyczną grecką.
    Znaki specjalne wpisuje się poprzez Control + klawisz z odpowiednią literą.
    Przykładowo:
    - dla klawiatury łacińskiej Ctrl+A daje dostęp do znaków à á â ã ä å æ ā ă ą,
    - dla klawiatury cyrylicy Ctrl+G umożliwia wybór pomiędzy ѓ ґ ғ,
    - dla klawiatury greckiej Ctrl+I daje znaki ί ΐ ϊ.



    Póki co nie udało mi się rozwiązać problemu z ograniczeniem długości żądania do 256 znaków.
    Dlatego na ekranie widoczny jest licznik dostępnych bajtów do wprowadzenia tekstu.
    Program pilnuje, żeby nie przekroczyć dozwolonej długości tekstu.

    Teoretycznie mógłbym rozwiązać problem długości zapytania używając metody HTTP POST zamiast GET.
    Niestety serwer Google do tłumaczeń nie akceptuje takiej formy komunikacji.
    Jednym z rozwiązań jest znalezienie innego silnika do tłumaczeń używającego metody POST.

    Z drugiej strony może w przyszłości metoda GET dla FujiNeta nie będzie miała ograniczenia URL do 256 bajtów.
    • 24: CommentAuthorsolo/ng
    • CommentTime28 Dec 2022
     
    Na starcie - awesome shit, krazylo po grupach :)

    DeepL - mozna puszczac POST'em dane, a samo tlumaczenie ma na ta chwile lepsze.

    ->link<-

    do szybkiego testowania:
    ->link<-
  1.  
    Innym rozwiązaniem żeby nadal korzystać z gugla może być stworzenie czegoś w rodzaju proxy, które przyjmie zapytanie post a wykona get do guglowego api.
    • 26:
       
      CommentAuthoramarok
    • CommentTime28 Dec 2022
     
    @solo/ng, dzięki za komentarz i słuszną propozycję dotyczącą DeepL.

    Tak po prawdzie DeepL był moim pierwszym kandydatem na silnik do tłumaczeń zanim jeszcze wybrałem Google. Żeby użyć API od DeepL potrzebny jest klucz autoryzacyjny, który otrzymuje się po zarejestrowaniu na ich stronie. Niestety jest w tym pewien haczyk - należy podać numer swojej karty kredytowej zgodnie z informacją taką jak poniżej:

    "We need your credit card information in order to prevent misuse of our free API, in particular to prevent fraudulent multiple registrations. Your credit card won't be charged unless you manually upgrade to DeepL API Pro."

    Niby żadne koszty nie będę pobierane, ale zawsze jest jakieś ryzyko. Poza tym nie chciałbym nikomu udostępniać swojego klucza autoryzacyjnego a to oznacza, że każdy użytkownik musiałby się samodzielnie rejestrować i podawać numer swojej karty kredytwej. Nie sądzę, żeby znaleźli się chętni.

    Dlatego właśnie postawiłem na Google, gdzie mogę do woli korzystać z tłumaczeń bez autoryzacji. Póki co w ograniczonej formie jeśli chodzi o długość tekstów. Ale będę jeszcze szukał lepszego rozwiązania.
    • 27:
       
      CommentAuthoramarok
    • CommentTime28 Dec 2022
     
    @krzysztofk78, to byłoby bardzo dobre rozwiązanie, ale zupełnie nie mam doświadczenia w tym temacie. Podejrzewam, że postawienie takiego proxy na jakimś ogólnodostępnym serwerze też wiązałoby się z jakimiś kosztami.

    Ale może to jest temat wart zbadania. Jak ktoś z Was miałby jakąś propozycję, albo przykład działającego rozwiązania dla jakiegoś innego zagadnienia, to z chęcią się tym zainteresuję.
  2.  
    @amarok, koszty jeśli już to bardzo symboliczne. Chętnie pomogę jeśli jesteś zainteresowany.
    • 29:
       
      CommentAuthoramarok
    • CommentTime28 Dec 2022
     
    @krzysztofk78, świetnie! Z chęcią skorzystam z Twojej pomocy. Najpierw jednak upewnię się, że potrafię wykonać prawidłowo jakiekolwiek żądanie POST z użyciem FujiNeta.
  3.  
    @amarok - powodzenia i do usłyszenia!
    • 31:
       
      CommentAuthorpirx
    • CommentTime28 Dec 2022
     
    i jak już będziesz miał tego proxiego to możesz podpiąć deepl też z jednym kluczem (twoim), userzy nie będą musieli się rejestrować
    • 32:
       
      CommentAuthorGeorge
    • CommentTime6 Jan 2023
     
    Hej, mam już FujiNet. Właśnie ogarnąłem podstawy używania.
    W razie jak byś @amarok potrzebował testera, to bym się pobawił z uruchamianiem :)

    Zdobyłem kabelek SIO2SIO od Lotharka. Zaskoczony jestem, że włożony od tyłu do FujiNeta doskonale działa z Atari. Myślałem, że raczej służy do podłączania kolejnych urządzeń, a w takim razie to chyba jakiś cross? Chyba mój umysł nie ogarnia jak to może działać.
    • 33: CommentAuthorsolo/ng
    • CommentTime6 Jan 2023
     
    #teamamarok
    • 34:
       
      CommentAuthorsun
    • CommentTime6 Jan 2023
     
    @George: żaden kros, po prostu SIO to magistrala, a Fujinet jest urządzeniem przelotowym, tak jak i stacje np. 1050.
    • 35:
       
      CommentAuthoramarok
    • CommentTime9 Jan 2023 zmieniony
     
    Cieszę się, że jest zainteresowanie programem.

    Jestem w trakcie wprowadzania zmian poprawiających "user experience", bo obecna nie nadaje się do użytku poza mną. Niedługo będę miał nowszą wersję, którą udostępnię do testów.

    @solo/ng, #teamamarok fajnie wygląda, ale obawiam się, że dotyczy niestety czegoś zupełnie innego.
    • 36:
       
      CommentAuthoramarok
    • CommentTime12 Jan 2023 zmieniony
     
    Przygotowałem nowszą wersję LinguaXE, w której wprowadziłem parę usprawnień oraz obsługę błędów.
    Dopracowałem również interfejs użytkownika w tym podpowiedzi kontekstowe dotyczące obsługi klawiatury.
    Dodałem również ekran startowy zawierający słowo "Atari" przedstawione w różnych systemach pisma.



    Jest to zarazem pierwsza wersja, którą udostępniam do testów. Kto chętny, zapraszam.
    Pragnę jednak uprzedzić, że program nigdy nie był testowany na rzeczywistym FujiNet.
    Tak więc spodziewam się, że mogą pojawić się problemy, których nie widać w emulatorze.

    Kilka informacji na temat korzystania z programu.
    Tekst do przetłumaczenia wpisujemy przy pomocy jednej z trzech wbudowanych klawiatur.
    Klawiaturę zmienia się przy pomocy klawisza Option pomiędzy łacińską, fonetyczną cyrylicą oraz fonetyczną grecką.
    W załączonym pliku pdf znajduje się prosta rozpiska mapowania klawiszy na znaki dla każdej z klawiatur.

    Naciśnięcie klawisza Return powoduje przesłania żądania tłumaczenia do serwera Google oraz odbiór wyników.
    Jeśli żądanie zostanie prawidłowo obsłużone, w dolnej części pojawi się przetłumaczony tekst.
    W przeciwnym przypadku pojawia się komunikat o błędzie i jego numer.

    Z kolei po naciśnięciu klawisza Select pojawia się okno z wyborem języków do tłumaczenia.
    Na pierwszym ekranie wybiera się język źródłowy a na drugim docelowy.
    Naciskając klawisz z literą od A do Z wybiera się język, którego nazwa zaczyna się od tej litery.
    Klawisz Return zatwierdza wybór.

    Po wyświetleniu wyniku tłumaczenia, można przejść do ponownej edycji tekstu naciskając dowolny klawisz.
    Można również wyczyścić zawartość edytora poprzez wciśnięcie klawisza Clr.
    Wyjście z programu jest możliwe po naciśnięciu klawisza Esc.

    Życzę miłej zabawy w tłumaczeniu!
    • 37:
       
      CommentAuthorpirx
    • CommentTime12 Jan 2023
     
    o! na enteescu trochę gorzej wygląda, ale działa, że hej
    • 38:
       
      CommentAuthoramarok
    • CommentTime13 Jan 2023
     
    Dzięki za szybkie sprawdzenie programu. Fajnie, że działa.

    Swoją drogą to pozazrościć sprzętu :) Pięknie się prezentuje ta 800-tka z FujiNetem. Zresztą bez FujiNetu również.
    • 39: CommentAuthorgorgh
    • CommentTime13 Jan 2023
     
    super sprawa taki program, akurat pracuję w branży tłumaczeniowej i często korzystamy z google i deepL
    • 40:
       
      CommentAuthorpirx
    • CommentTime13 Jan 2023
     
    to było moje marzenie od tzw. zawsze a z incognito da się a800 używać jak normalne xl/xe