Πώς έμαθα 12 γλώσσες - σε μια νύχτα

Χρησιμοποιώντας τα πιο πρόσφατα από μηχανική εκμάθηση και κάποια έξυπνη προσωρινή αποθήκευση

Πολύς δρόμος προς τις γλώσσες

Κάνω μια ιδέα για αρκετό καιρό τώρα που ακούγεται ενδιαφέρουσα και προκλητική: τι θα ήταν απαραίτητο για την επίτευξη πολυγλωσσικής υποστήριξης για την εφαρμογή ιστού μου με όσο το δυνατόν λιγότερη συντήρηση; Επίσης, θεωρώντας το κόστος ως κύριο περιορισμό (αυτός ο ιστότοπος δεν προβάλλει διαφημίσεις και δεν χρησιμοποιεί καθόλου παρακολούθηση, οπότε δεν υπάρχουν εισερχόμενα έσοδα εδώ), πώς θα ήταν μια έγκυρη λύση;

Το σχέδιο

Όλα ξεκινούν και τελειώνουν με τη μηχανή μετάφρασης για χρήση. Χάρη στο να χρησιμοποιώ το Ubuntu ως ένα από τα καθημερινά μου προγράμματα οδήγησης, ανακάλυψα κάποτε μια ωραία μικρή εφαρμογή στο κατάστημα εφαρμογών που ονομάζεται «Argos translate», η οποία είναι μια μηχανή μετάφρασης ανοιχτού κώδικα που βασίζεται στα πιο πρόσφατα μοντέλα ML που είναι παρόμοια με αυτά που τροφοδοτούν το DeepL . Εάν δεν γνωρίζετε το DeepL, αυτός είναι ένας υπέροχος μεταφραστής που μπορείτε να χρησιμοποιήσετε δωρεάν στον ιστότοπό του.

Αλλά πίσω στο Άργος: μετά από μια ματιά στο σχετικό αποθετήριο, είδα ότι υπάρχει επίσης διαθέσιμο OSS python-lib, το οποίο θα ταιριάζει όμορφα σε ένα περιβάλλον που φιλοξενείται. Αφού γύρισα για ένα μικρό χρονικό διάστημα, αποφάσισα να κοιτάξω μερικούς μεταφραστές μέσω των προσφορών SaaS, καθώς η όλη διαδικασία δόσης του αργού μετάφραση δεν λειτούργησε πραγματικά τόσο καλά όπως περίμενα.

Επομένως, έχω ξεκινήσει μια άλλη υπηρεσία, το Cloud Translations από το GCP που προσφέρει 500.000 χαρακτήρες δωρεάν ανά μήνα και στη συνέχεια χρεώνει κάποια χρήματα για κάθε 1.000.000.

Είναι όλα σχετικά με την προσωρινή αποθήκευση

Χάρη στην εγκατάσταση του Next.js με ISG (σταδιακή δημιουργία ιστότοπων) μπορώ να καλέσω τις μεταφράσεις για κάθε σελίδα κατ 'απαίτηση, γεγονός που απλοποιεί τον προγραμματισμό αρκετά, καθώς δεν πρέπει να ολοκληρωθεί καμία μεμονωμένη ανάπτυξη με όλες τις μεταφράσεις.

Ωστόσο, δεν ήμουν σίγουρος για το πώς να χειριστώ την προσωρινή αποθήκευση των μεταφρασμένων χορδών. Σίγουρα, το ακραίο δίκτυο της Vercel (όπου φιλοξενείται αυτό το PWA) μπορεί να αξιοποιήσει απολύτως αυτήν την εργασία. Αλλά ήθελα οι αναπτύξεις να είναι ανεξάρτητες από τις μεταφράσεις. Γι 'αυτό δημιούργησα ένα επιπλέον επίπεδο προσωρινής αποθήκευσης μέσω μιας απλής παρουσίας Firestore, που φιλοξενήθηκε επίσης στο GCP.

Η μεγαλύτερη πρόκληση ήταν η ανάλυση + αντικατάσταση του περιεχομένου αποκλεισμού για κάθε άρθρο. Αν δεν ξέρετε. Το περιεχόμενο μπλοκ περιγράφει το πραγματικό σώμα του άρθρου, το οποίο δημιουργείται από εμένα σε ένα CMS. Κατά τη μετάφραση, αυτά τα μπλοκ δεν είναι σε απλό κείμενο αλλά μάλλον κάθε ενσωματωμένο σε μια ειδική δομή δεδομένων που επιτρέπει την αποθήκευση σημασιολογικών πληροφοριών ή μεταδεδομένων. Η αξιόπιστη ανίχνευση + μετάφραση μόνο των σχετικών συμβολοσειρών ήταν ένα από τα μεγαλύτερα μέρη αυτής της εφαρμογής.

Ένας άντρας, 12+ γλώσσες

Οι γλώσσες (επί του παρόντος) που υποστηρίζονται είναι:

  • "en": Αγγλικά
  • "de": Γερμανικά
  • "fr": Γαλλικά
  • "es": Ισπανικά
  • "eo": Εσπεράντο
  • "el": Ελληνικά
  • "ja": Ιαπωνικά
  • "ru": Ρωσικά
  • "γεια": Χίντι
  • "αυτός": Εβραϊκά
  • "tr": Τουρκικά
  • "af": Αφρικανικά
  • "ar": Αραβικά
  • "ko": Κορεάτικα

Για να δοκιμάσετε τις διάφορες παραλλαγές, απλώς τοποθετήστε τον κωδικό γλώσσας μετά το βασικό url. Για παράδειγμα: "https://flaming.codes/fr". Και αυτό είναι!

Συνοψίζοντας την εφαρμογή μου, η εγκατάσταση μοιάζει με αυτήν:

  • κάθε σελίδα δημιουργείται στατικά τουλάχιστον κάθε 4 ώρες, αλλά μόνο κατά παραγγελία. Αυτό σημαίνει ότι μια νέα εργασία μετάφρασης πραγματοποιείται το πολύ κάθε 4 ώρες για έναν συγκεκριμένο ιστότοπο
  • οι ίδιες οι μεταφράσεις φορτώνονται πρώτα από το Firestore. μόνο αν δεν υπάρχει τίποτα διαθέσιμο, οι χορδές μεταφράζονται + αποθηκεύονται προσωρινά στο Firestore

Αυτή η ρύθμιση λειτουργεί τόσο καλά που δεν θα χρησιμοποιώ μεταφράσεις με κλασικό τρόπο, π.χ. μη αυτόματη δημιουργία αρχείων json που διατηρούν τα ζεύγη κλειδιών-τιμών. Θα χρησιμοποιήσω το Cloud Translation API για ό, τι χρειάζεται να διεθνοποιηθεί, καθιστώντας το πλήρως δυναμικό. Χάρη σε αυτές τις αλλαγές, το PWA έχει περίπου 430 σελίδες ως γραπτώς.

Κάθε σελίδα μεταφράζεται από Αγγλικά σε 13 άλλες γλώσσες, οι οποίες αντιπροσωπεύουν τις πιο ομιλούμενες, καθώς και αυτές που βρίσκονται ανά τον κόσμο μεταξύ τους. Ας δούμε πώς θα εξελιχθεί!

  • Tom

Προτάσεις

Σχετικά

Προσάρτημα

Γλώσσες