diff --git a/dictionaries/main.txt b/dictionaries/main.txt index 409094c3..9736f70b 100644 --- a/dictionaries/main.txt +++ b/dictionaries/main.txt @@ -45,6 +45,7 @@ Comment Compaq Compiled Comprehensions +Content Control Cookbook Cookie @@ -72,6 +73,8 @@ Docutils Dog Drake Emacs +Embed +Embedded English Eric Error @@ -86,6 +89,7 @@ Folding Fortran Foundation Fraction +Frameworks Fred Fredrik Garcia @@ -132,6 +136,8 @@ Krah L Laboratories Letter +Libraries +Library License Licensee Lin @@ -190,8 +196,10 @@ Pascal Path Perl Permission +Phases Pillow Platform +Platforms Precision Print Private @@ -213,6 +221,7 @@ Redistributions Reference Reilly Research +Resources Reston Richard Rights @@ -231,6 +240,7 @@ Separator Sequence Set Sets +Settings Setup Shebang Shop @@ -242,6 +252,7 @@ Smalltalk Software Solaris Sox +Specific Sphinx Stacks Stallman @@ -254,6 +265,7 @@ Store String Subject Sun +Swift Sx Sy Syntax @@ -282,6 +294,7 @@ Van W Weather Windows +Xcode Yes Zen Zope @@ -310,6 +323,7 @@ alone ame amp an +analysis anchor and annotate @@ -318,6 +332,7 @@ annotation annotations any api +app append apple archives @@ -362,6 +377,7 @@ bereft big bignum bin +binaries binary binding bindings @@ -389,6 +405,7 @@ build built builtin builtins +bundle but by byte @@ -566,6 +583,7 @@ elements elif else email +embedded encoding end endian @@ -614,6 +632,7 @@ filter finder finders first +flag flags flatten float @@ -697,6 +716,8 @@ host hot however i +iPad +iPhone id idiom if @@ -1174,6 +1195,7 @@ station status stderr stdin +stdio stdout stop str @@ -1185,6 +1207,8 @@ strip stripped strtod struct +stub +stubs student style sub @@ -1216,6 +1240,7 @@ symmary syntactic syntax sys +sysconfig system systems t @@ -1235,6 +1260,7 @@ terminator terminators terms test +testbed testing testmod tests @@ -1418,6 +1444,7 @@ zlib αντ αντί ανταλλάσετε +αντιγραμμένοι αντικαθιστούμενη αντικατεστημένες αντικειμενοστρεφής @@ -1530,6 +1557,7 @@ zlib κεφαλίδας κεφαλίδες κεφαλίδων +κλωνοποιημένο κρυπτικό κωδικοποίηση κωδικοποιητή @@ -1544,6 +1572,7 @@ zlib μετα μεταβλητή μεταβλητών +μεταδεδομένα μεταδεδομένων μετακλάσεων μετακλάση @@ -1646,6 +1675,7 @@ zlib συσχετιστικοί σφαλμάτων τέλος +ταυτοποιεί τελεστέο τελεστέος τελεστέους @@ -1687,6 +1717,8 @@ zlib υποσυμβολοσειρά υποτετραγωνική υποτμημάτων +υποφάκελο +υποφάκελος χειριζόμενες χρήσιμες χρήσιμοι diff --git a/using/ios.po b/using/ios.po index 2e677cdd..5a9bf813 100644 --- a/using/ios.po +++ b/using/ios.po @@ -9,25 +9,25 @@ msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-06-19 17:36+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2025-06-24 23:36+0300\n" +"Last-Translator: Panagiotis Skias \n" +"Language-Team: PyGreece \n" +"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: using/ios.rst:5 msgid "Using Python on iOS" -msgstr "" +msgstr "Χρήση Python σε iOS" #: using/ios.rst:0 msgid "Authors" -msgstr "" +msgstr "Συγγραφείς" #: using/ios.rst:8 msgid "Russell Keith-Magee (2024-03)" -msgstr "" +msgstr "Russell Keith-Magee (2024-03)" #: using/ios.rst:10 msgid "" @@ -37,6 +37,13 @@ msgid "" "`python` executable and entering commands at an interactive prompt, or by " "running a Python script." msgstr "" +"Η Python σε iOS διαφέρει από την Python σε πλατφόρμες επιτραπέζιων " +"υπολογιστών. Σε μια πλατφόρμα επιτραπέζιων υπολογιστών, η Python " +"εγκαθίσταται γενικά ως πόρος συστήματος που μπορεί να χρησιμοποιηθεί από " +"οποιονδήποτε χρήστη αυτού του υπολογιστή. Στη συνέχεια, οι χρήστες " +"αλληλεπιδρούν με την Python εκτελώντας ένα εκτελέσιμο αρχείο :program:" +"`python` και εισάγοντας εντολές σε μια διαδραστική γραμμή εντολών ή " +"εκτελώντας ένα Python script." #: using/ios.rst:16 msgid "" @@ -44,6 +51,10 @@ msgid "" "unit of software distribution is an \"app\". There is also no console where " "you could run a :program:`python` executable, or interact with a Python REPL." msgstr "" +"Στο iOS, δεν υπάρχει η έννοια της εγκατάστασης ως πόρου συστήματος. Η μόνη " +"μονάδα διανομής λογισμικού είναι μια \"εφαρμογή\". Επίσης, δεν υπάρχει " +"κονσόλα που θα μπορούσατε να εκτελέσετε ένα εκτελέσιμο αρχείο :program:" +"`python` ή να αλληλεπιδράσετε με ένα Python REPL." #: using/ios.rst:20 msgid "" @@ -54,6 +65,13 @@ msgid "" "standard library, and all your Python code is then packaged as a standalone " "bundle that can be distributed via the iOS App Store." msgstr "" +"Ως αποτέλεσμα, ο μόνος τρόπος για να χρησιμοποιήσετε την Python σε iOS είναι " +"σε ενσωματωμένη λειτουργία - δηλαδή, γράφοντας μια εγγενή εφαρμογή iOS και " +"ενσωματώνοντας έναν διερμηνέα Python χρησιμοποιώντας το ``libPython``, και " +"καλώντας κώδικα Python χρησιμοποιώντας το :ref:`Python embedding API " +"`. Ο πλήρης διερμηνέα Python, η τυπική βιβλιοθήκη και όλος ο " +"κώδικας Python σας συσκευάζονται στην συνέχεια ως αυτόνομο πακέτο που μπορεί " +"να διανεμηθεί μέσω του iOS App Store." #: using/ios.rst:27 msgid "" @@ -63,14 +81,20 @@ msgid "" "These projects manage the complexities associated with getting an iOS " "project running, so you only need to deal with the Python code itself." msgstr "" +"Αν θέλετε να πειραματιστείτε για πρώτη φορά με τη σύνταξη μιας εφαρμογής iOS " +"σε Python, έργα όπως `BeeWare `__ και `Kivy `__ θα σας προσφέρουν μια πολύ πιο προσιτή εμπειρία χρήστη. Αυτά τα " +"έργα διαχειρίζονται τις πολυπλοκότητες που σχετίζονται με την εκτέλεση ενός " +"έργου iOS, επομένως χρειάζεται να ασχοληθείτε μόνο με τον ίδιο τον κώδικα " +"Python." #: using/ios.rst:34 msgid "Python at runtime on iOS" -msgstr "" +msgstr "Python κατά τον χρόνο εκτέλεσης σε iOS" #: using/ios.rst:37 msgid "iOS version compatibility" -msgstr "" +msgstr "Συμβατότητα έκδοσης iOS" #: using/ios.rst:39 msgid "" @@ -82,10 +106,18 @@ msgid "" "simulator`` would compile an ARM64 simulator build with a deployment target " "of 15.4." msgstr "" +"Η ελάχιστη υποστηριζόμενη έκδοση iOS καθορίζεται κατά τη στιγμή της " +"μεταγλώττισης, χρησιμοποιώντας την επιλογή :option:`--host` για τη " +"``ρύθμιση`` παραμέτρων. Από προεπιλογή, όταν μεταγλωττίζεται για iOS, η " +"Python θα μεταγλωττίζεται με μια ελάχιστη υποστηριζόμενη έκδοση iOS 13.0. " +"Για να χρησιμοποιήστε μια διαφορετική ελάχιστη έκδοση iOS, δώστε τον αριθμό " +"έκδοσης ως μέρος του ορίσματος :option:`!--host` - για παράδειγμα, το ``--" +"host=arm64-apple-ios15.4-simulator`` θα μεταγλωττίσει μια έκδοση προσομοιωτή " +"ARM64 με στόχο ανάπτυξης 15.4." #: using/ios.rst:48 msgid "Platform identification" -msgstr "" +msgstr "Αναγνώριση πλατφόρμας" #: using/ios.rst:50 msgid "" @@ -93,6 +125,9 @@ msgid "" "will be returned on an iPhone or iPad, regardless of whether the app is " "running on the simulator or a physical device." msgstr "" +"Κατά την εκτέλεση σε iOS, το ``sys.platform`` θα αναφέρεται ως ``ios``. Αυτή " +"η τιμή θα θα επιστραφεί σε ένα iPhone ή iPad, ανεξάρτητα από το αν η " +"εφαρμογή εκτελείται στον προσομοιωτή ή σε μια φυσική συσκευή." #: using/ios.rst:54 msgid "" @@ -101,16 +136,23 @@ msgid "" "obtained using :func:`platform.ios_ver`. :func:`platform.system` will report " "``iOS`` or ``iPadOS``, depending on the device." msgstr "" +"Πληροφορίες σχετικά με το συγκεκριμένο περιβάλλον εκτέλεσης, " +"συμπεριλαμβανομένης της έκδοσης iOS, του μοντέλου συσκευής και του εάν η " +"συσκευή είναι προσομοιωτής, μπορούν αν ληφθούν χρησιμοποιώντας τη :func:" +"`platform.ios_ver`. Η :func:`platform.system` θα αναφέρει ``iOS`` ή " +"``iPadOS``, ανάλογα με τη συσκευή." #: using/ios.rst:59 msgid "" ":func:`os.uname` reports kernel-level details; it will report a name of " "``Darwin``." msgstr "" +"Η :func:`os.uname` αναφέρει λεπτομέρειες σε επίπεδο πυρήνα∙ θα αναφέρει ένα " +"όνομα ``Darwin``." #: using/ios.rst:63 msgid "Standard library availability" -msgstr "" +msgstr "Διαθεσιμότητα τυπικής βιβλιοθήκης" #: using/ios.rst:65 msgid "" @@ -118,10 +160,13 @@ msgid "" "iOS. See the :ref:`API availability guide for iOS ` for " "details." msgstr "" +"Η τυπική βιβλιοθήκη Python έχει κάποιες αξιοσημείωτες παραλείψεις και " +"περιορισμούς στο iOS. Δείτε στον οδηγό διαθεσιμότητας :ref:`API availability " +"guide for iOS ` για λεπτομέρειες." #: using/ios.rst:70 msgid "Binary extension modules" -msgstr "" +msgstr "Δυαδικά modules επέκτασης" #: using/ios.rst:72 msgid "" @@ -130,6 +175,10 @@ msgid "" "One of these requirements governs how binary extension modules are " "distributed." msgstr "" +"Μια αξιοσημείωτη διαφορά σχετικά με το iOS ως πλατφόρμα είναι ότι η διανομή " +"του App Store επιβάλλει αυστηρές απαιτήσεις σχετικά με τη συσκευασία μιας " +"εφαρμογής. Μία από αυτές τις απαιτήσεις διέπει τον τρόπο διανομής των " +"δυαδικών modules επέκτασης." #: using/ios.rst:76 msgid "" @@ -139,6 +188,11 @@ msgid "" "single binary per framework, and there can be no executable binary material " "outside the ``Frameworks`` folder." msgstr "" +"Το iOS App Store απαιτεί από *όλα* τα δυαδικά modules σε μια εφαρμογή iOS να " +"είναι δυναμικές βιβλιοθήκες, που να περιέχονται σε ένα πλαίσιο με κατάλληλα " +"μεταδεδομένα, αποθηκευμένα στον φάκελο ``Frameworks`` της συσκευασμένης " +"εφαρμογής. Μπορεί να υπάρχει μόνο ένα δυαδικό αρχείο ανά πλαίσιο, και δεν " +"μπορεί να υπάρχει εκτελέσιμο υλικό εκτός του φακέλου ``Frameworks``." #: using/ios.rst:82 msgid "" @@ -150,6 +204,15 @@ msgid "" "For details on how to perform this post-processing, see the guide for :ref:" "`adding Python to your project `." msgstr "" +"Αυτό έρχεται σε αντίθεση με τη συνήθη προσέγγιση Python για τη διανομή " +"δυαδικών αρχείων, η οποία επιτρέπει τη φόρτωση μιας δυαδικής επέκτασης " +"module από οποιαδήποτε τοποθεσία στο ``sys.path``. Για να διασφαλιστεί η " +"συμμόρφωση με τις πολιτικές του App Store, ένα ενεργό iOS πρέπει να " +"επεξεργαστεί εκ των υστέρων τυχόν πακέτα Python, μετατρέποντας τις δυαδικές " +"μονάδες ``.so`` σε μεμονωμένα αυτόνομα πλαίσια με κατάλληλα μεταδεδομένα και " +"υπογραφή. Για λεπτομέρειες σχετικά με τον τρόπο εκτέλεσης αυτή της μετα-" +"επεξεργασίας, ανατρέξτε στον οδηγό για την :ref:`adding Python to your " +"project `." #: using/ios.rst:90 msgid "" @@ -160,6 +223,13 @@ msgid "" "framework must contain a ``.origin`` file that contains the location of the " "``.fwork`` file, relative to the app bundle." msgstr "" +"Για να βοηθηθεί η Python να ανακαλύψει δυαδικά αρχεία στη νέα τους θέση, το " +"αρχικό αρχείο ``.so`` στο ``sys.path`` αντικαθίσταται με ένα αρχείο ``." +"fwork``. Αυτό το αρχείο είναι ένα αρχείο κειμένου που περιέχει τη θέση του " +"δυαδικού αρχείου του framework, σε σχέση με το app bundle. Για να επιτραπεί " +"στο framework να επιστρέψει στην αρχική του θέση, το framework πρέπει να " +"περιέχει ένα αρχείο ``.origin`` που περιέχει τη θέση του αρχείου ``.fwork``, " +"σε σχέση με το app bundle." #: using/ios.rst:97 msgid "" @@ -176,6 +246,19 @@ msgid "" "framework would also contain ``Frameworks/foo.bar._whiz.framework/foo.bar." "_whiz.origin``, containing the path to the ``.fwork`` file." msgstr "" +"Για παράδειγμα, εξετάστε την περίπτωση μιας εντολής εισαγωγής ``from foo.bar " +"import _whiz``, όπου το ``_whiz`` υλοποιείται με το δυαδικό module ``sources/" +"foo/bar/_whiz.abi3.so``, με το ``sources`` να είναι η τοποθεσία που έχει " +"καταχωρηθεί στο ``sys.path``, σε σχέση με το bundle της εφαρμογής. Αυτό το " +"module *πρέπει* να διανεμηθεί ως ``Frameworks/foo.bar._whiz.framework/foo." +"bar._whiz`` (δημιουργώντας το όνομα του framework από την πλήρη διαδρομή " +"εισαγωγής του module), με ένα αρχείο ``Info.plist`` στον φάκελο ``." +"framework`` που να ταυτοποιεί το δυαδικό ως framework. Το module ``foo.bar." +"_whiz`` θα εκπροσωπείται στην αρχική του τοποθεσία με ένα αρχείο δείκτη " +"``sources/foo/bar/_whiz.abi3.fwork``, το οποίο περιέχει τη διαδρομή " +"``Frameworks/foo.bar._whiz/foo.bar._whiz``. Το framework θα περιέχει επίσης " +"το ``Frameworks/foo.bar._whiz.framework/foo.bar._whiz.origin``, το οποίο " +"περιέχει τη διαδρομή προς το αρχείο ``.fwork``." #: using/ios.rst:110 msgid "" @@ -186,10 +269,17 @@ msgid "" "class:`~importlib.machinery.ModuleSpec` for the loaded module will report " "the ``origin`` as the location of the binary in the framework folder." msgstr "" +"Κατά την εκτέλεση σε iOS, ο διερμηνέας της Python θα εγκαταστήσει μια :class:" +"`~importlib.machinery.AppleFrameworkLoader`, η οποία μπορεί να διαβάζει και " +"να εισάγει αρχεία ``.fwork``. Μόλις εισαχθεί, το χαρακτηριστικό ``__file__`` " +"του δυαδικού module θα αναφέρει ως τοποθεσία το αρχείο ``.fwork``. Ωστόσο, " +"η :class:`~importlib.machinery.ModuleSpec` για το φορτωμένο module θα " +"αναφέρει ως ``origin`` την τοποθεσία του δυαδικού αρχείου στον φάκελο του " +"framework." #: using/ios.rst:118 msgid "Compiler stub binaries" -msgstr "" +msgstr "Δυαδικά αρχεία προσομοίωσης μεταγλωττιστή" #: using/ios.rst:120 msgid "" @@ -198,12 +288,20 @@ msgid "" "iphoneos clang`` to get the ``clang`` for an iPhone device). However, using " "this script poses two problems:" msgstr "" +"Το Xcode δεν παρέχει άμεσα ξεχωριστούς μεταγλωττιστές για iOS· αντ’ αυτού, " +"χρησιμοποιεί ένα script ``xcrun`` που επιλύει την πλήρη διαδρομή του " +"μεταγλωττιστή (π.χ. ``xcrun --sdk iphoneos clang`` για να πάρεις τον " +"``clang`` για μια συσκευή iPhone). Ωστόσο, η χρήση αυτού του script " +"δημιουργεί δύο προβλήματα:" #: using/ios.rst:125 msgid "" "The output of ``xcrun`` includes paths that are machine specific, resulting " "in a sysconfig module that cannot be shared between users; and" msgstr "" +"Η έξοδος του ``xcrun`` περιλαμβάνει διαδρομές που εξαρτώνται από τη " +"συγκεκριμένη μηχανή, με αποτέλεσμα ένα module sysconfig να μην μπορεί να " +"κοινοποιηθεί μεταξύ διαφορετικών χρηστών· και" #: using/ios.rst:128 msgid "" @@ -212,6 +310,11 @@ msgid "" "command line at the first space to get the path to the compiler executable; " "this isn't the case when using ``xcrun``." msgstr "" +"Αυτό έχει ως αποτέλεσμα οι ορισμοί των ``CC``/``CPP``/``LD``/``AR`` να " +"περιλαμβάνουν κενά. Υπάρχουν πολλά εργαλεία στο οικοσύστημα της C που " +"υποθέτουν ότι η εντολή μπορεί να χωριστεί στον πρώτο κενό χαρακτήρα ώστε να " +"βρεθεί η διαδρομή προς το εκτελέσιμο του μεταγλωττιστή∙ κάτι που δεν ισχύει " +"όταν χρησιμοποιείται το ``xcrun``." #: using/ios.rst:133 msgid "" @@ -224,14 +327,25 @@ msgid "" "users to compile their own modules. When compiling third-party Python " "modules for iOS, you should ensure these stub binaries are on your path." msgstr "" +"Για να αποφευχθούν αυτά τα προβλήματα, η Python παρέχει stubs για αυτά τα " +"εργαλεία. Αυτά τα stubs είναι wrapper scripts κελύφους που τυλίγουν τα " +"υποκείμενα εργαλεία του ``xcrun``, και διανέμονται σε έναν φάκελο ``bin`` " +"μαζί με το μεταγλωττισμένο iOS framework. Αυτά τα scripts μπορούν να " +"προσαρμοστούν σε διαφορετικές τοποθεσίες, και πάντα θα δείχνουν στις σωστές " +"τοπικές διαδρομές του συστήματος. Συμπεριλαμβάνοντας αυτά τα scripts στο " +"φάκελο bin που συνοδεύει ένα framework, το περιεχόμενο του module " +"``sysconfig`` γίνεται χρήσιμο για τους τελικούς χρήστες, ώστε να μπορούν να " +"μεταγλωττίζουν τα δικά τους modules. Όταν μεταγλωττίζετε τρίτα modules " +"Python για iOS, πρέπει να βεβαιωθείτε ότι αυτά τα stub binaries είναι στο " +"PATH σας." #: using/ios.rst:143 msgid "Installing Python on iOS" -msgstr "" +msgstr "Εγκατάσταση της Python σε iOS" #: using/ios.rst:146 msgid "Tools for building iOS apps" -msgstr "" +msgstr "Εργαλεία για την κατασκευή εφαρμογών iOS" #: using/ios.rst:148 msgid "" @@ -242,6 +356,12 @@ msgid "" "Xcode Command Line Tools are not sufficient for iOS development; you need a " "*full* Xcode install." msgstr "" +"Η κατασκευή εφαρμογών για iOS απαιτεί τη χρήση των εργαλείων Xcode της Apple." +"Συνιστάται έντονα να χρησιμοποιείτε την πιο πρόσφατη σταθερή έκδοση του " +"Xcode. Αυτό θα απαιτήσει να έχετε την πιο πρόσφατη (ή τη δεύτερη πιο " +"πρόσφατη) έκδοση του macOS, καθώς η Apple δεν υποστηρίζει παλαιότερες " +"εκδόσεις macOS με νέες εκδόσεις Xcode. Τα εργαλεία γραμμής εντολών Xcode δεν " +"επαρκούν για ανάπτυξη iOS∙ χρειάζεται μια *πλήρης* εγκατάσταση του Xcode." #: using/ios.rst:155 msgid "" @@ -251,10 +371,15 @@ msgid "" "iOS Simulator Platform by selecting from the Platforms tab of the Xcode " "Settings panel." msgstr "" +"Αν θέλετε να τρέξετε τον κώδικά σας στον προσομοιωτή iOS, θα χρειαστεί " +"επίσης να εγκαταστήσετε μια Πλατφόρμα Προσομοίωσης iOS. Κατά την πρώτη " +"εκκίνηση του Xcode, θα σας ζητηθεί να επιλέξετε μια Πλατφόρμα Προσομοίωσης " +"iOS. Εναλλακτικά, μπορείτε να προσθέσετε μια Πλατφόρμα προσομοίωσηςiOS " +"επιλέγοντας την από την καρτέλα Platforms στο πάνελ ρυθμίσεων του Xcode." #: using/ios.rst:163 msgid "Adding Python to an iOS project" -msgstr "" +msgstr "Προσθήκη Python σε ένα έργο iOS" #: using/ios.rst:165 msgid "" @@ -263,10 +388,14 @@ msgid "" "find a library like `PythonKit `__ to " "be helpful." msgstr "" +"Η Python μπορεί να προστεθεί σε οποιοδήποτε έργο iOS, χρησιμοποιώντας είτε " +"Swift είτε Objective C. Τα ακόλουθα παραδείγματα θα χρησιμοποιήσουν " +"Objective C∙ εάν χρησιμοποιείτε Swift, μπορεί να σας φανεί χρήσιμη μια " +"βιβλιοθήκη όπως το `PythonKit `__ ." #: using/ios.rst:170 msgid "To add Python to an iOS Xcode project:" -msgstr "" +msgstr "Για να προσθέσετε Python σε ένα έργο iOS Xcode:" #: using/ios.rst:172 msgid "" @@ -276,6 +405,12 @@ msgid "" "supports ``arm64-apple-ios``, plus one of either ``arm64-apple-ios-" "simulator`` or ``x86_64-apple-ios-simulator``." msgstr "" +"Δημιουργήστε ή αποκτήστε ένα Python ``XCFramework``. Δείτε τις οδηγίες στο :" +"source:`iOS/README.rst` (στη διανομή πηγαίου κώδικα CPython) για " +"λεπτομέρειες σχετικά με τον τρόπο δημιουργίας ενός Python ``XCFramework``. " +"Κατ' ελάχιστον, θα χρειαστείτε μια έκδοση που υποστηρίζει το ``arm64-apple-" +"ios``, καθώς και ένα από τα ``arm64-apple-ios-simulator`` ή ``x86_64-apple-" +"ios-simulator``." #: using/ios.rst:178 msgid "" @@ -284,12 +419,19 @@ msgid "" "of your project; however, you can use any other location that you want by " "adjusting paths as needed." msgstr "" +"Μεταφέρετε το ``XCframework`` στο έργο σας iOS. Στις ακόλουθες οδηγίες, θα " +"υποθέσουμε ότι έχετε αποθέσει το ``XCframework`` στη ρίζα του έργου σας " +"ωστόσο, μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη τοποθεσία θέλετε " +"προσαρμόζοντας τις διαδρομές όπως απαιτείται." #: using/ios.rst:183 msgid "" "Drag the ``iOS/Resources/dylib-Info-template.plist`` file into your project, " "and ensure it is associated with the app target." msgstr "" +"Μεταφέρετε το αρχείο ``iOS/Resources/dylib-Info-template.plist`` στο έργο " +"σας, και βεβαιωθείτε ότι έχει συσχετιστεί με τον στόχο (target) της " +"εφαρμογής." #: using/ios.rst:186 msgid "" @@ -299,55 +441,68 @@ msgid "" "adjusting paths as needed. Ensure that this folder is associated with your " "app target." msgstr "" +"Προσθέστε τον κώδικα της εφαρμογής σας ως φάκελο στο έργο σας στο Xcode. " +"Στις παρακάτω οδηγίες, θα υποθέσουμε ότι ο κώδικας του χρήστη βρίσκεται σε " +"έναν φάκελο με όνομα ``app`` στη ριζική τοποθεσία του έργου σας· μπορείτε να " +"χρησιμοποιήσετε οποιαδήποτε άλλη τοποθεσία, προσαρμόζοντας αναλόγως τις " +"διαδρομές. Βεβαιωθείτε ότι αυτός ο φάκελος έχει συσχετιστεί με τον στόχο " +"(target) της εφαρμογής σας." #: using/ios.rst:192 msgid "" "Select the app target by selecting the root node of your Xcode project, then " "the target name in the sidebar that appears." msgstr "" +"Επιλέξτε τον στόχο της εφαρμογής επιλέγοντας τον ριζικό κόμβο του έργου σας " +"στο Xcode και στη συνέχεια το όνομα του στόχου στην πλαϊνή στήλη που " +"εμφανίζεται." #: using/ios.rst:195 msgid "" "In the \"General\" settings, under \"Frameworks, Libraries and Embedded " "Content\", add ``Python.xcframework``, with \"Embed & Sign\" selected." msgstr "" +"Στις ρυθμίσεις \"General\" , κάτω από \"Frameworks, Libraries and Embedded " +"Content\", προσθέστε το ``Python.xcframework``, με επιλεγμένη την επιλογή " +"\"Embed & Sign\"" #: using/ios.rst:198 msgid "In the \"Build Settings\" tab, modify the following:" -msgstr "" +msgstr "Στην καρτέλα \"Build Settings\" , τροποποιήστε τα εξής" #: using/ios.rst:200 msgid "Build Options" -msgstr "" +msgstr "Build Options" #: using/ios.rst:202 msgid "User Script Sandboxing: No" -msgstr "" +msgstr "User Script Sandboxing: No" #: using/ios.rst:203 msgid "Enable Testability: Yes" -msgstr "" +msgstr "Enable Testability: Yes" #: using/ios.rst:205 msgid "Search Paths" -msgstr "" +msgstr "Search Paths" #: using/ios.rst:207 msgid "Framework Search Paths: ``$(PROJECT_DIR)``" -msgstr "" +msgstr "Framework Search Paths: ``$(PROJECT_DIR)``" #: using/ios.rst:208 msgid "" "Header Search Paths: ``\"$(BUILT_PRODUCTS_DIR)/Python.framework/Headers\"``" msgstr "" +"Header Search Paths: ``\"$(BUILT_PRODUCTS_DIR)/Python.framework/Headers\"``" #: using/ios.rst:210 msgid "Apple Clang - Warnings - All languages" -msgstr "" +msgstr "Apple Clang - Warnings - All languages" #: using/ios.rst:212 msgid "Quoted Include In Framework Header: No" -msgstr "" +msgstr "Quoted Include In Framework Header: No" #: using/ios.rst:214 msgid "" @@ -357,6 +512,13 @@ msgid "" "Name the step \"Install Target Specific Python Standard Library\", disable " "the \"Based on dependency analysis\" checkbox, and set the script content to:" msgstr "" +"Προσθέστε ένα βήμα κατασκευής που αντιγράφει τη βασική βιβλιοθήκη Python " +"στην εφαρμογή σας. Στην καρτέλα \"Build Phases\", προσθέστε ένα νέο βήμα " +"κατασκευής \"Run Script\" *πριν* από το βήμα \"Embed Frameworks\", αλλά " +"*μετά* το βήμα \"Copy Bundle Resources\". Ονομάστε το βήμα \"Install Target " +"Specific Python Standard Library\", απενεργοποιήστε το πλαίσιο επιλογής " +"\"Based on dependency analysis\" και ορίστε το περιεχόμενο του script ως " +"εξής:" #: using/ios.rst:220 msgid "" @@ -373,12 +535,27 @@ msgid "" "\"$CODESIGNING_FOLDER_PATH/python/lib/\"\n" "fi" msgstr "" +"set -e\n" +"\n" +"mkdir -p \"$CODESIGNING_FOLDER_PATH/python/lib\"\n" +"if [ \"$EFFECTIVE_PLATFORM_NAME\" = \"-iphonesimulator\" ]; then\n" +" echo \"Installing Python modules for iOS Simulator\"\n" +" rsync -au --delete \"$PROJECT_DIR/Python.xcframework/ios-arm64_x86_64-" +"simulator/lib/\" \"$CODESIGNING_FOLDER_PATH/python/lib/\"\n" +"else\n" +" echo \"Installing Python modules for iOS Device\"\n" +" rsync -au --delete \"$PROJECT_DIR/Python.xcframework/ios-arm64/lib/\" " +"\"$CODESIGNING_FOLDER_PATH/python/lib/\"\n" +"fi" #: using/ios.rst:233 msgid "" "Note that the name of the simulator \"slice\" in the XCframework may be " "different, depending the CPU architectures your ``XCFramework`` supports." msgstr "" +"Σημειώστε ότι το όνομα του προσομοιωτή \"slice\" στο XCframework μπορεί να " +"διαφέρει, ανάλογα με τις αρχιτεκτονικές CPU που υποστηρίζει το " +"``XCFramework`` σας." #: using/ios.rst:236 msgid "" @@ -388,6 +565,12 @@ msgid "" "Modules\". It should also have \"Based on dependency analysis\" unchecked, " "with the following script content:" msgstr "" +"Προσθέστε ένα δεύτερο βήμα δημιουργίας που επεξεργάζεται τις δυαδικές " +"μονάδες επέκτασης στην τυπική βιβλιοθήκη σε μορφή \"Framework\". Προσθέστε " +"ένα βήμα δημιουργίας \"Run Script\" *αμέσως μετά* αυτό που προσθέσατε στο " +"βήμα 8, με το όνομα \"Prepare Python Binary Modules\". Θα πρέπει επίσης να " +"έχει μη επιλεγμένο το \"Based on dependency analysis\", με το ακόλουθο " +"περιεχόμενο σεναρίου." #: using/ios.rst:242 msgid "" @@ -453,64 +636,145 @@ msgid "" "${OTHER_CODE_SIGN_FLAGS:-} -o runtime --timestamp=none --preserve-" "metadata=identifier,entitlements,flags --generate-entitlement-der \"{}\" \\;" msgstr "" +"set -e\n" +"\n" +"install_dylib () {\n" +" INSTALL_BASE=$1\n" +" FULL_EXT=$2\n" +"\n" +" # The name of the extension file\n" +" EXT=$(basename \"$FULL_EXT\")\n" +" # The location of the extension file, relative to the bundle\n" +" RELATIVE_EXT=${FULL_EXT#$CODESIGNING_FOLDER_PATH/}\n" +" # The path to the extension file, relative to the install base\n" +" PYTHON_EXT=${RELATIVE_EXT/$INSTALL_BASE/}\n" +" # The full dotted name of the extension module, constructed from the " +"file path.\n" +" FULL_MODULE_NAME=$(echo $PYTHON_EXT | cut -d \".\" -f 1 | tr \"/\" \"." +"\");\n" +" # A bundle identifier; not actually used, but required by Xcode " +"framework packaging\n" +" FRAMEWORK_BUNDLE_ID=$(echo $PRODUCT_BUNDLE_IDENTIFIER.$FULL_MODULE_NAME " +"| tr \"_\" \"-\")\n" +" # The name of the framework folder.\n" +" FRAMEWORK_FOLDER=\"Frameworks/$FULL_MODULE_NAME.framework\"\n" +"\n" +" # If the framework folder doesn't exist, create it.\n" +" if [ ! -d \"$CODESIGNING_FOLDER_PATH/$FRAMEWORK_FOLDER\" ]; then\n" +" echo \"Creating framework for $RELATIVE_EXT\"\n" +" mkdir -p \"$CODESIGNING_FOLDER_PATH/$FRAMEWORK_FOLDER\"\n" +" cp \"$CODESIGNING_FOLDER_PATH/dylib-Info-template.plist\" " +"\"$CODESIGNING_FOLDER_PATH/$FRAMEWORK_FOLDER/Info.plist\"\n" +" plutil -replace CFBundleExecutable -string \"$FULL_MODULE_NAME\" " +"\"$CODESIGNING_FOLDER_PATH/$FRAMEWORK_FOLDER/Info.plist\"\n" +" plutil -replace CFBundleIdentifier -string \"$FRAMEWORK_BUNDLE_ID\" " +"\"$CODESIGNING_FOLDER_PATH/$FRAMEWORK_FOLDER/Info.plist\"\n" +" fi\n" +"\n" +" echo \"Installing binary for $FRAMEWORK_FOLDER/$FULL_MODULE_NAME\"\n" +" mv \"$FULL_EXT\" \"$CODESIGNING_FOLDER_PATH/$FRAMEWORK_FOLDER/" +"$FULL_MODULE_NAME\"\n" +" # Create a placeholder .fwork file where the .so was\n" +" echo \"$FRAMEWORK_FOLDER/$FULL_MODULE_NAME\" > ${FULL_EXT%.so}.fwork\n" +" # Create a back reference to the .so file location in the framework\n" +" echo \"${RELATIVE_EXT%.so}.fwork\" > \"$CODESIGNING_FOLDER_PATH/" +"$FRAMEWORK_FOLDER/$FULL_MODULE_NAME.origin\"\n" +" }\n" +"\n" +" PYTHON_VER=$(ls -1 \"$CODESIGNING_FOLDER_PATH/python/lib\")\n" +" echo \"Install Python $PYTHON_VER standard library extension modules...\"\n" +" find \"$CODESIGNING_FOLDER_PATH/python/lib/$PYTHON_VER/lib-dynload\" -name " +"\"*.so\" | while read FULL_EXT; do\n" +" install_dylib python/lib/$PYTHON_VER/lib-dynload/ \"$FULL_EXT\"\n" +" done\n" +"\n" +" # Clean up dylib template\n" +" rm -f \"$CODESIGNING_FOLDER_PATH/dylib-Info-template.plist\"\n" +"\n" +" echo \"Signing frameworks as $EXPANDED_CODE_SIGN_IDENTITY_NAME " +"($EXPANDED_CODE_SIGN_IDENTITY)...\"\n" +" find \"$CODESIGNING_FOLDER_PATH/Frameworks\" -name \"*.framework\" -exec /" +"usr/bin/codesign --force --sign \"$EXPANDED_CODE_SIGN_IDENTITY\" " +"${OTHER_CODE_SIGN_FLAGS:-} -o runtime --timestamp=none --preserve-" +"metadata=identifier,entitlements,flags --generate-entitlement-der \"{}\" \\;" #: using/ios.rst:292 msgid "" "Add Objective C code to initialize and use a Python interpreter in embedded " "mode. You should ensure that:" msgstr "" +"Προσθέστε κώδικα Objective C για να αρχικοποιήσετε και να χρησιμοποιήσετε " +"έναν διερμηνέα Python σε ενσωματωμένη λειτουργία. Θα πρέπει να βεβαιωθείτε " +"ότι:" #: using/ios.rst:295 msgid "UTF-8 mode (:c:member:`PyPreConfig.utf8_mode`) is *enabled*;" msgstr "" +"Η λειτουργία UTF-8 (:c:member:`PyPreConfig.utf8_mode`) είναι " +"*ενεργοποιημένη* ∙" #: using/ios.rst:296 msgid "Buffered stdio (:c:member:`PyConfig.buffered_stdio`) is *disabled*;" msgstr "" +"Το Buffered stdio (:c:member:`PyConfig.buffered_stdio`) είναι " +"*απενεργοποιημένο* ∙" #: using/ios.rst:297 msgid "Writing bytecode (:c:member:`PyConfig.write_bytecode`) is *disabled*;" msgstr "" +"Η εγγραφή bytecode (:c:member:`PyConfig.write_bytecode`) είναι " +"*απενεργοποιημένη* ∙" #: using/ios.rst:298 msgid "" "Signal handlers (:c:member:`PyConfig.install_signal_handlers`) are *enabled*;" msgstr "" +"Οι χειριστές σημάτων (:c:member:`PyConfig.install_signal_handlers`) είναι " +"*ενεργοποιημένοι* ∙" #: using/ios.rst:299 msgid "" "System logging (:c:member:`PyConfig.use_system_logger`) is *enabled* " "(optional, but strongly recommended; this is enabled by default);" msgstr "" +"Η καταγραφή συστήματος (:c:member:`PyConfig.use_system_logger`) είναι " +"*ενεργοποιημένη* (προαιρετική, αλλά συνίσταται ανεπιφύλακτα∙ είναι " +"ενεργοποιημένη από προεπιλογή)∙" #: using/ios.rst:301 msgid "" "``PYTHONHOME`` for the interpreter is configured to point at the ``python`` " "subfolder of your app's bundle; and" msgstr "" +"Το ``PYTHONHOME`` για τον διερμηνέα έχει ρυθμιστεί ώστε να δείχνει στον " +"υποφάκελο ``python`` της δέσμης της εφαρμογής σας∙ και" #: using/ios.rst:303 msgid "The ``PYTHONPATH`` for the interpreter includes:" -msgstr "" +msgstr "Το ``PYTHONPATH`` για τον διερμηνέα περιλαμβάνει:" #: using/ios.rst:305 msgid "the ``python/lib/python3.X`` subfolder of your app's bundle," -msgstr "" +msgstr "τον υποφάκελο ``python/lib/python3.X`` της δέσμης της εφαρμογής σας," #: using/ios.rst:306 msgid "" "the ``python/lib/python3.X/lib-dynload`` subfolder of your app's bundle, and" msgstr "" +"ο υποφάκελος ``python/lib/python3.X/lib-dynload`` της δέσμης της εφαρμογής " +"σας, και" #: using/ios.rst:307 msgid "the ``app`` subfolder of your app's bundle" -msgstr "" +msgstr "ο υποφάκελος ``app`` της δέσμης της εφαρμογής σας" #: using/ios.rst:309 msgid "" "Your app's bundle location can be determined using ``[[NSBundle mainBundle] " "resourcePath]``." msgstr "" +"Η τοποθεσία της εφαρμογής σας στο πακέτο μπορεί να προσδιοριστεί " +"χρησιμοποιώντας την εντολή ``[[NSBundle mainBundle] resourcePath]``." #: using/ios.rst:312 msgid "" @@ -518,6 +782,10 @@ msgid "" "of pure Python application code, named ``app``. If you have third-party " "binary modules in your app, some additional steps will be required:" msgstr "" +"Τα βήματα 8, 9 και 10 αυτών των οδηγιών προϋποθέτουν ότι έχετε έναν μόνο " +"φάκελο με καθαρό κώδικα εφαρμογής Python, με το όνομα ``app``. Εάν έχετε " +"δυαδικά modules τρίτων κατασκευαστών στην εφαρμογής σας, θα απαιτηθούν " +"ορισμένα επιπλέον βήματα:" #: using/ios.rst:316 msgid "" @@ -527,6 +795,12 @@ msgid "" "specific build is targeting (i.e., delete any device binaries if you're " "building an app targeting the simulator)." msgstr "" +"Πρέπει να βεβαιωθείτε ότι τυχόν φάκελοι που περιέχουν δυαδικά αρχεία τρίτων " +"είναι είτε συσχετισμένοι με τον στόχο της εφαρμογής είτε αντιγραμμένοι ως " +"μέρος του βήματος 8. Το βήμα 8 θα πρέπει επίσης να καθαρίσει τυχόν δυαδικά " +"αρχεία που δεν είναι κατάλληλα για την πλατφόρμα στην οποία στοχεύει μια " +"συγκεκριμένη έκδοση (δηλαδή, να διαγράψει τυχόν δυαδικά αρχεία συσκευής εάν " +"δημιουργείτε μια εφαρμογή που στοχεύει τον προσομοιωτή)." #: using/ios.rst:322 msgid "" @@ -534,16 +808,22 @@ msgid "" "framework form by step 9. The invocation of ``install_dylib`` that processes " "the ``lib-dynload`` folder can be copied and adapted for this purpose." msgstr "" +"Οποιοιδήποτε φάκελοι περιέχουν δυαδικά αρχεία τρίτων πρέπει να υποβληθούν σε " +"επεξεργασία σε μορφή framework στο βήμα 9. Η κλήση του ``install_dylib`` που " +"επεξεργάζεται τον φάκελο ``lib-dynload`` μπορεί να αντιγραφεί και να " +"προσαρμοστεί για αυτόν τον σκοπό." #: using/ios.rst:326 msgid "" "If you're using a separate folder for third-party packages, ensure that " "folder is included as part of the ``PYTHONPATH`` configuration in step 10." msgstr "" +"Εάν χρησιμοποιείτε ξεχωριστό φάκελο για πακέτα τρίτων, βεβαιωθείτε ότι ο " +"φάκελος περιλαμβάνεται ως μέρος της διαμόρφωσης ``PYTHONPATH`` στο βήμα 10." #: using/ios.rst:330 msgid "Testing a Python package" -msgstr "" +msgstr "Δοκιμή ενός πακέτου Python" #: using/ios.rst:332 msgid "" @@ -552,18 +832,28 @@ msgid "" "testbed can also be used as a testbed project for running your Python " "library's test suite on iOS." msgstr "" +"Το δένδρο πηγαίου κώδικα της CPython περιέχει το :source:`a testbed project " +"` που χρησιμοποιείται για την εκτέλεση της σουίτας δοκιμών " +"CPython στον προσομοιωτή iOS. Αυτό το δοκιμαστικό πλαίσιο μπορεί επίσης να " +"χρησιμοποιηθεί ως έργο δοκιμαστικής πλατφόρμας για την εκτέλεση της σουίτας " +"δοκιμών της βιβλιοθήκης Python σε iOS." #: using/ios.rst:336 msgid "" "After building or obtaining an iOS XCFramework (See :source:`iOS/README.rst` " "for details), create a clone of the Python iOS testbed project by running:" msgstr "" +"Αφού δημιουργήσετε ή αποκτήσετε ένα iOS XCFramework (Δείτε :source:`iOS/" +"README.rst` για λεπτομέρειες), δημιουργήστε ένα κλώνο του έργου Python iOS " +"testbed εκτελώντας:" #: using/ios.rst:339 msgid "" "$ python iOS/testbed clone --framework --app " " --app app-testbed" msgstr "" +"$ python iOS/testbed clone --framework --app " +" --app app-testbed" #: using/ios.rst:343 msgid "" @@ -576,6 +866,15 @@ msgid "" "testbed/iOSTestbed/app_packages`` folder (using ``pip install --target app-" "testbed/iOSTestbed/app_packages`` or similar)." msgstr "" +"Θα χρειαστεί να τροποποιήσετε την αναφορά ``iOS/testbed`` ώστε να δείχνει σε " +"εκείνον τον φάκελο στο δέντρο πηγαίου κώδικα τη CPython∙ οποιοιδήποτε " +"φάκελοι καθοριστούν με το flag ``--app`` θα αντιγραφούν στο κλωνοποιημένο " +"έργο testbed. Το τελικό testbed θα δημιουργηθεί στο φάκελο ``app-testbed``. " +"Σε αυτό το παράδειγμα, τα ``module1`` και ``module2`` θα είναι module που " +"μπορούν να εισαχθούν κατά τον χρόνο εκτέλεσης. Αν το έργο σας έχει επιπλέον " +"εξαρτήσεις μπορείτε να τις εγκαταστήσετε στον φάκελο ``app-testbed/" +"iOSTestbed/app_packages`` (χρησιμοποιώντας το ``pip install --target app-" +"testbed/iOSTestbed/app_packages`` ή παρόμοια εντολή)." #: using/ios.rst:352 msgid "" @@ -583,10 +882,14 @@ msgid "" "app, For example, if ``module1.tests`` was the entry point to your test " "suite, you could run:" msgstr "" +"Στη συνέχεια, μπορείτε να χρησιμοποιήσετε τον φάκελο ``app-testbed`` για να " +"εκτελέσετε τη σουίτα δοκιμών για την εφαρμογή σας. Για παράδειγμα, εάν το " +"``module1.tests`` ήταν το σημείο εισόδου στη σουίτα δοκιμών σας, θα " +"μπορούσατε να εκτελέσετε." #: using/ios.rst:356 msgid "$ python app-testbed run -- module1.tests" -msgstr "" +msgstr "$ python app-testbed run -- module1.tests" #: using/ios.rst:360 msgid "" @@ -594,22 +897,30 @@ msgid "" "Python build. Any arguments after the ``--`` will be passed to the testbed " "as if they were arguments to ``python -m`` on a desktop machine." msgstr "" +"Αυτό ισοδυναμεί με την εκτέλεση της εντολής ``python -m module1.tests`` σε " +"μια έκδοση Python για επιτραπέζιους υπολογιστές. Οποιαδήποτε ορίσματα μετά " +"το ``--`` θα περαστούν στο testbed σαν να ήταν ορίσματα στην εντολή ``python " +"-m`` σε έναν επιτραπέζιο υπολογιστή." #: using/ios.rst:364 msgid "You can also open the testbed project in Xcode by running:" msgstr "" +"Μπορείτε επίσης να ανοίξετε το έργο δοκιμαστικής πλατφόρμας στο Xcode " +"εκτελώντας:" #: using/ios.rst:366 msgid "$ open app-testbed/iOSTestbed.xcodeproj" -msgstr "" +msgstr "$ open app-testbed/iOSTestbed.xcodeproj" #: using/ios.rst:370 msgid "This will allow you to use the full Xcode suite of tools for debugging." msgstr "" +"Αυτό θα σας επιτρέψει να χρησιμοποιήσετε την πλήρη σουίτα εργαλείων Xcode " +"για τον εντοπισμό σφαλμάτων." #: using/ios.rst:373 msgid "App Store Compliance" -msgstr "" +msgstr "Συμμόρφωση με το App Store" #: using/ios.rst:375 msgid "" @@ -619,6 +930,9 @@ msgid "" "validation rules that inspect the submitted application bundle for " "problematic code." msgstr "" +"Ο μόνος μηχανισμός για τη διανομή εφαρμογών σε συσκευές iOS τρίτων είναι η " +"υποβολή της εφαρμογής στο iOS App Store∙ οι εφαρμογές που υποβάλλονται για " +"διανομή πρέπει να περάσουν τη διαδικασία αξιολόγησης εφαρμογών της Apple." #: using/ios.rst:380 msgid "" @@ -627,6 +941,11 @@ msgid "" "Apple's review rules cannot be challenged; so, it is necessary to modify the " "Python standard library for an app to pass App Store review." msgstr "" +"Η τυπική βιβλιοθήκη Python περιέχει κώδικα που είναι γνωστό ότι παραβιάζει " +"αυτούς τους αυτοματοποιημένου κανόνες. Ενώ αυτές οι παραβιάσεις φαίνεται να " +"είναι ψευδώς θετικές, οι κανόνες αξιολόγησης της Apple δεν μπορούν να " +"αμφισβητηθούν∙ επομένως, είναι απαραίτητο να τροποποιήσετε τη τυπική " +"βιβλιοθήκη Python για να περάσει μια εφαρμογή την αξιολόγηση του App Store." #: using/ios.rst:385 msgid "" @@ -635,3 +954,8 @@ msgid "" "issues with the App Store review process. This patch is applied " "automatically when building for iOS." msgstr "" +"Το δέντρο πηγαίου κώδικα της Python περιέχει :source:`a patch file ` που θα αφαιρέσει όλο τον κώδικα που " +"είναι γνωστό ότι προκαλεί προβλήματα με τη διαδικασία αξιολόγησης του App " +"Store. Αυτή η ενημέρωση κώδικα εφαρμόζεται αυτόματα κατά τη δημιουργία για " +"iOS." pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy