J'ai remarqué qu'il existe un nombre disproportionné de langages informatiques basés sur l'anglais. Je propose de résoudre ce problème en traduisant les langages informatiques existants en langues étrangères!
- Choisissez un langage informatique qui utilise des mots-clés / fonctions en anglais
- Choisissez n'importe quelle langue naturelle autre que l'anglais
- Écrivez un programme qui traduit son propre code source ou tout autre programme écrit en utilisant le même sous-ensemble de mots-clés / fonctions dans l'autre langue
- Publier le code source et la sortie (le code traduit)
Commencez votre post avec quelque chose comme:
BASIC, français
ou
BASIC, Français - FONDAMENTAL
Vous n'avez pas à traduire le nom de la langue si vous ne le souhaitez pas, c'est juste pour le plaisir!
Vous n'avez pas à traduire tous les mots-clés / fonctions dans la langue de votre choix, mais uniquement ceux que vous utilisez réellement dans votre code source. Par exemple, PHP en a des milliers, vous n'avez donc certainement pas besoin de les traduire tous! En outre, si vous utilisez des commentaires, faites de votre mieux pour les traduire également! Une fois votre programme terminé, il ne devrait y avoir aucun mot anglais reconnaissable, à moins qu’il ne soit approprié pour la langue étrangère. Les mots dans les chaînes doivent également être traduits (ce qui signifie que votre programme traduit ne fonctionnera plus avec le code source anglais, même s'il peut être exécuté!). J'espère que votre programme aura un sens pour un programmeur qui parle l'autre langue!
Par exemple, if () {} elseif () {} else {}
pourrait devenir si () {} sinonsi () {} sinon {}
en français! Si vous traduisez Perl elsif
en français, peut - être vous laissez tomber la deuxième n
la façon dont le second e
est tombé en anglais: sinosi
. En français d' autre seraient plus susceptibles Autre mais l'alternative sinon ( ou bien , autrement ) se sent plus agréable pour moi!
Sois créatif! Essayez de capturer la sensation de l'ordinateur et des langues naturelles! Les langues comme Brainfuck, CJam, etc. qui ne possèdent pas de jetons anglais ne peuvent pas être utilisées. Des langues comme BASIC ou COBOL conviennent beaucoup mieux. Utilisez des noms de variables significatifs et traduisez-les également, à moins que votre langue ne prenne en charge les noms de variables pouvant être des mots anglais.
Vous pouvez poster plusieurs réponses, une pour chaque combinaison d'ordinateur / langage naturel. Vous ne pouvez pas utiliser une bibliothèque ou un outil externe pour faire la traduction! Votre code devrait faire la traduction elle-même, pas appeler quelque chose d'autre qui fait la traduction! Ce n'est pas Code Golf! Si votre programme prend une entrée, il ne doit s'agir que de son propre code source. S'il lit le disque, il ne peut s'agir que du fichier source, etc.
* Pour les besoins de ce défi, je considérerai l'espéranto, le lojban, le volapuk, le interlingua, etc. comme des langues naturelles. Vous ne pouvez pas inventer votre propre langue pour ce défi!
J'ai ajouté une règle pour empêcher les quines explicites. Vous pouvez choisir n'importe quel sous-ensemble de mots-clés / fonctions - voire de tous - à traduire. Votre programme doit pouvoir se traduire lui-même au minimum, c'est-à-dire que si votre source d'origine inclut le mot, l' print
ajout de print(42)
n'importe où au code d'entrée (et non votre programme lui-même) devrait néanmoins produire les résultats corrects.
Par exemple:
function translate() {
...
}
print(translate());
pourrait devenir
fonction traduire() {
...
}
imprimer(traduire());
Si l' entrée est modifiée à
print(42);
function translate() {
...
}
print(translate());
print(42);
la sortie devrait alors devenir
imprimer(42);
fonction traduire() {
...
}
imprimer(traduire());
imprimer(42);
Réponses:
Python, Koine Grec - θων
Mon langage de programmation préféré, dans ma langue étrangère préférée - parfait! Et ça ne fait pas de mal que le nom soit déjà grec .
Le programme de traduction dans Python 3 (Dieu merci pour le support Unicode natif):
Résultats de l'exécution du code sur lui-même (avec la grande liste de traduction rédigée):
Koine Greek a 2000 ans, donc c'était amusant de traduire les termes de programmation. Voici quelques-uns de mes favoris:
file
)print
)input
)import
)encoding
)code
/replacements
)for ... in
)if ... elif ... else
)re
est λLa plupart des mots peuvent également être trouvés en cherchant sur Wiktionary .
Quelques autres caractéristiques saillantes:
print
,read
,replace
). Je soupçonne que les anciens Grecs se sentiraient un peu stupides de parler à l'ordinateur de la sorte, alors je leur ai posé tous les impératifs à la troisième personne : "il doit imprimer", "il doit lire", "il doit remplacer".·
).utf
transforme enουτφ
- qui ressemble à "ootf" si vous essayez de le prononcer.Cela laisse encore beaucoup à désirer sur le plan grammatical. Le grec est une langue beaucoup plus hautement infléchie que l'anglais et mon code n'est pas assez sophistiqué pour résoudre correctement les cas et les chiffres. Par exemple, καστον παλαιόν, νέον ἐκ νεόλογοι devrait lire κ νεολόγ ων , avec l'objet de la préposition dans le cas génitif. Cependant, je ne suis pas sur le point de mettre que beaucoup de temps dans ce! Le look est suffisamment grec (au moins pour les yeux non avertis) et les hautes périodes ajoutent une touche agréable. Dans l'ensemble, je suis assez satisfait des résultats.
la source
νεόλογοι = [...]
. Pouvez-vous mettre quelques lignes ici? Pas besoin de toute la liste!Words in strings should be translated too
.Poulet Chinois -
Le poulet est beaucoup plus difficile à utiliser que je le pensais.
Il n'y a pas de nouvelle ligne de fuite. Mais la finale
chicken
est juste pour marquer la fin de ce programme, qui peut être remplacé par une ligne vide.J'utilise cet interpréteur , qui imprime une nouvelle ligne et ne peut pas être supprimé. Donc, la sortie a une ligne de plus que l'original, ce qui peut casser un programme Chicken. J'espère que cela ne le rendra pas invalide.
Il utilisait des astuces comme obtenir une chaîne vide à partir de l'index -1 de l'entrée et détecter EOF en comparant avec des chaînes vides. J'ai également utilisé la
compare
commande pour supprimer les éléments inutilisés de la pile, sans me soucier du type. Ils ne peuvent pas travailler avec d'autres interprètes. Et il imprime la chaîne sous forme d'octets UTF-8, où d'autres interprètes peuvent prendre en charge l'impression directe de caractères Unicode.Utilisez cette commande pour exécuter ce code:
où, assez étrangement, le premier
file
sert à la saisie et le second au code.La sortie (les chinois n'utilisent pas d'espaces entre les mots):
Ce programme remplace
h
par鸡
, ne modifie pas les nouvelles lignes et ignore tout le reste.Et comme vous le voyez, il peut traduire tous les programmes de poulet valides.
la source
C ++, Latin - C Plus Plus
Oui, c'est une traduction du nom de la langue. Ils n'avaient pas le signe plus, mais ils nous ont donné le mot plus.
Remarques:
const
,enum
,int
etoperator
ne changent pas. Ils représentent maintenant constante , enumeratum , integrum et operator ._
un diviseur de mots, alors j'ai utilisé des interpunctes .Sortie:
la source
JavaScript (NodeJS) - Hébreu
Ma méthode d'encodage est assez similaire au programme Python de DLosc : elle lit le code source, contient une liste de jetons et exécute la recherche et le remplacement.
Cela donne la sortie suivante:
Malheureusement, SE ne semble pas aimer le texte RTL. J'ai essayé d'envelopper manuellement le bloc de code ci-dessus
<pre dir="rtl">
, mais il vient d'être dépouillé. :( Le code est censé ressembler à ceci: (capture d'écran de gedit)Quelques points à noter sur le texte en hébreu:
var
, ce que j’ai traduit parמש'
, abréviation de "משתנה" (variable).fs
, un acronyme de "système de fichiers", a été traduit par "מ"ק
les premières lettres de" רכת קבצים ", vu ci-dessus.toString
. En hébreu, les prépositions sont des lettres simples qui sont ajoutées au mot. Donc, si "chaîne" est "רוזת", "to string" est "למחרוזת". C'est aussi pourquoi dans lefor..in
bloc, lein
jeton inclut l'espace, de sorte qu'il soit attaché au mot suivant (word in words
devientמילה במילים
).regex
, il m'a rendu יטוי סדיר, ce qui signifie littéralement "expression ordonnée". Hou la la! Je l'ai abrégé en ביטס"ד, comme JS'sRegExp
.g
drapeau regex est traduit par ', qui signifie ????, global.new
. C'est parce qu'en hébreu, les adjectifs (tels que "nouveau" - "") viennent après le nom (tel que regex). Ainsi, au lieu denew RegExp()
, ce serait "RegExp [c'est] new ()`.Ce code ne traduit certainement pas tous les programmes JS valides. En fait, cela ne traduit probablement que celui-ci. Mais c'est assez bon pour ce défi. ;)
À propos, si vous êtes intéressé par l'hébreu, suivez la proposition Hebrew.SE (et votez sur des questions de moins de 10)! (source: stackexchange.com )
la source
T_PAAMAYIM_NEKUDOTAYIM
couverts !Perl, PigLatin - erlPay
Premièrement, le programme actuel est très court. Pour démontrer son comportement lors de longues sections de texte, j’ai inclus quelques poèmes en Perl comme exemple supplémentaire d’entrée / sortie. Comme la poésie est incluse après la ligne FIN , elle n'est pas exécutée.
L'algorithme actuel est assez simple:
Résultat de l'exécution du programme sur lui-même:
la source
__DENAY__
. Ne devrait pasopenay
etacceptay
êtreenopay
etceptacay
?Visual Basic .Net, persan
J'ai choisi une langue verbeuse pour que ce soit plus difficile. Il s'avère que je n'ai pas eu à changer de grammaire. La forme persane du code est tout aussi prolixe.
Le résultat nécessite un éditeur de texte de droite à gauche.
Je ne pouvais pas le faire afficher correctement ici. Mais si je dois l' afficher, le voici.Voici une photo:Remarque: Il lit à partir d'un fichier nommé Persian.txt et est transmis à code.txt. Je ne pouvais pas écrire ou lire le persan sur la fenêtre de la console sans que cela ne devienne un point d'interrogation. (par exemple, un mot de quatre lettres deviendrait ????)
Remarque:
si vous associez des mots en persan, ce sera presque illisible, car les lettres sont reliées les unes aux autres et prennent une forme différente. Je devais donc les séparer avec des espaces, ce qui donnait des mots aux espaces. Un mot comme Imports s'est transformé en وارد کردن, qui est deux mots.la source
Java, allemand - Java
Ce programme est vraiment simple.
Il lit simplement le fichier indiqué comme premier argument et remplace toutes les occurrences d'un mot anglais par la traduction allemande correspondante.
J'utilise une expression régulière avec deux groupes (
([^a-zA-Z\\d:])*
) pour faire correspondre des éléments individuels ajoutés au début / au suivi d'un caractère non alphanumérique. Cela a résolu le problème avec les traductions qui se chevauchent (eng.List
-> ger.Liste
MaisListe
deviendraitListee
). Utiliser$1
/$2
ajoute ces caractères et nous laisse un code source traduit.Mise à jour 1:
Utilisez des abréviations telles que
ea
,nbea
etc. pour suivre les conventions de nommage de Java en allemand.Mise à jour 2:
Utilise maintenant un troisième composant de la matrice à rompre après son premier remplacement. Ceci est nécessaire pour mon approche de déclinaison / conjugaison.
class
/Klasse
est une femme en allemand etvoid
/nichts
est neutre, j'ai donc sauté le remplacement de ce dernier et remplacé plus tard. Une autre édition estnew
la traduction de tournéeneue
parce que je ne l'utilise que surString
, qui est une femme.Mise à jour 3:
Traitez correctement la capitalisation en ajoutant des expressions régulières sensibles à la casse.
Cela renvoie les éléments suivants à
System.out
:Si vous avez des améliorations à apporter au code ou à la traduction, faites-le moi savoir et je vois si je peux les implémenter.
la source
/
,
et ne-
sont probablement pas bons dans les identifiants.Eingabe/Ausgabe
quand même - peut-êtreEinaus
?Einaus
serait possible aussi, mais je ne me sens pas bien.Rein/Raus
semblerait possible, mais encore une fois, je ne me sens pas comme une bonne traduction.E/A
ou un problème similaire pourrait causer des problèmes, mais ils ne sont pas interprétés comme une expression régulière, ils sont uniquement mis en correspondance et ne laissent donc pas l'expression régulière affectée. (Je peux me tromper, mais c'est ce que j'ai expérimenté avec les expressions régulières)Julia, Tatar - Julia
Cette lettre utilise l’alphabet latin non officiel Zamanälif pour İdel-Ural Tatar, établi en 2001. Toutefois, en 2002, la Fédération de Russie a invalidé la requête du Tatarstan visant à faire de Zamanälif l’alphabet officiel de la langue tatar, incriminant ainsi l’usage officiel de toute langue. alphabet autre que cyrillique.
Au cours du siècle dernier, il y a eu 5 alphabets pour la langue tatare:
J'ai opté pour Zamanälif parce que je pense que mon grand-père serait déçu si j'utilisais du cyrillique. Sa langue maternelle est le tatar et, étant né dans les années 1920, il a appris à lire et à écrire dans l'alphabet iske imlâ.
Anglais:
Tatar:
J'ai pris quelques libertés pour rendre la traduction un peu plus propre. Par exemple,
for
est devenusaen
, ce qui se traduit plus littéralement par "chacun". Je n'ai pas non plus abrégéSüzlek
, ce qui signifie "dictionnaire".ukırgaböten
, ma traduction dereadall
, estukırga
(lisez) +böten
(tous / tous).başägär
, ma traduction deelseif
, estbaş
(une abréviation debaşkaça
, qui signifie "sinon / sinon") +ägär
(si).Si quelqu'un sur PPCG connaît Tatar, vous en savez probablement plus que moi. Toute suggestion serait la bienvenue.
la source
Rouille , Biélorusse (Ржа)
Programme:
Sortie:
la source
DogeScript , Espagnol - El Código del Perro
DogeScript est interprété en JavaScript, donc tout JS valide est un DogeScript valide. La traduction que j'ai donnée ici englobe en fait la spécification complète du mot clé (plus quelques mots pour couvrir les mots utilisés dans le programme).
"Anglais":
Espagnol:
Vous remarquerez peut-être que j'ai pris quelques libertés dans la traduction. C'est en partie parce que mon espagnol est plutôt médiocre et en partie parce que ma connaissance de la langue espagnole est insuffisante.
la source
C #, Latin - C Acutus
Lit le fichier à partir d'arguments de ligne de commande, écrit dans le fichier output.txt.
Exemple:
Darn, je viens de voir la version C ++ Latin ..
la source
s/ToLatin/AdLatinam/
... aussi, ne devrait pasargs
êtreargumenta
(neutre pluriel)?System
Ratio
en latin? Alors quel est le ratio en latin?ratio
->ratione/proportio
Ruby, Japonais - AkaDama
Ruby en japonais est rubii (ビ), ce qui est ennuyeux, alors je l'ai appelé littéralement gemme rouge .
En ruby, les variables et les méthodes ne sont pas limitées à ASCII, donc quelque chose comme
est un rubis valide. J'utilise ceci autant que possible
pour dissimulertoutes vos bases.J'espère que c'est bien d'utiliser les gemmes pour analyser le rubis, cela nécessitait quand même un vilain patch-singe.
Vous pouvez développer
TRANS_TABLE
pour ajouter une traduction pour plus de méthodes. Tout ce qui ne se trouve pas dans le tableau est "traduit" en japonais en gros sur la base de sa prononciation (ou ressemble plus à l'orthographe), ainsi manger devient え あ と ("a-ah-toe").Convertit les entiers en une notation "très" pratique .
Exécuter sur lui-même, en omettant certaines tables de traduction, etc.:
ou
devient
la source
HTML5 / Javascript vers français (HTML5 avec le script au Caoua)
Sortie:
la source
JavaScript, français - CauoaScript
Je sais qu'il existe déjà une réponse JavaScript + français, mais la mienne utilise différentes méthodes de traduction et de codage.
Le code est assez simple: il parcourt tous les mots du code d’entrée et les remplace par le mot français correspondant de l’
translations
objet. Si le mot n'est pas répertorié, il n'est pas modifié.Le français utilise « Guillemets » au lieu de guillemets, il commence donc par utiliser des chaînes. (Oui, il utilise regu͘͜l̴͝a͘͜͠r͏͏ ̶̸͢e̵͜xpr̵͞͞e͘͘s̵ś̸̷io̴ns̴͜ pour analyser les chaînes, de sorte qu'il ne fonctionne pas toujours parfaitement.) Voici le résultat lorsqu'il est exécuté sur lui-même:
Vous pouvez utiliser l'extrait de pile ci-dessous pour exécuter facilement le code.
Afficher l'extrait de code
la source
Commodore 64 BASIC - Bosniaque / Croate / Serbe
Cela remplace en réalité les mots clés BASIC par ceux traduits.
pouvezdevez les utiliser lorsque vous écrivez un nouveau code.Comment ça fonctionne?
FOR I=40960 TO 49151:POKE I,PEEK(I):NEXT
Bien qu'il semble que cette ligne ne fasse pas grand chose, elle copie en fait des octets de la ROM BASIC vers la RAM. Les données écrites dans un emplacement ROM sont stockées dans la RAM à la même adresse.
La dernière ligne du programme passe à la copie RAM de BASIC:
POKE 1,PEEK(1) AND 254
Les adresses mémoire 41118-41373 contiennent une liste complète des mots-clés BASIC réservés. Les caractères ASCII de ces mots sont stockés dans l'ordre des numéros de jetons. Le bit n ° 7 de la dernière lettre de chaque mot est défini pour indiquer la fin du mot (valeur ASCII + 128).
Les lignes 20 à 100 contiennent les mots-clés traduits. Les lignes 110 à 200 lisent les mots-clés en mémoire comme décrit ci-dessus.
la source
PHP - Portugais (pt-PT / semi-pt-BR)
Cela s'est avéré assez complexe et géant!
Rappelez-vous que ce code a été conçu pour correspondre à lui-même! Cela peut fonctionner partiellement avec d'autres codes.
Sortie traduite:
J'ai essayé de respecter la grammaire autant que possible.
Un exemple est juste dans la première ligne:
Écho est une action et les actions sont des verbes. Tous les verbes en portugais se terminent par
r
.Traduire
echo
sans contexte seraiteco
, alors que dans le contexte cela doit êtreecoar
("faire un écho").En outre, la fonction
preg_replace_callback
a une chose unique.L'action doit être le premier mot.
Traduit littéralement, ce
expressão_regular_substitui_executável
qui est terriblement traduit (cela signifiereplace the callback using a regular expression
), il faut donc faire très attention et échanger les premier et deuxième mots, comme il est
substituir_expressão_regular_executável
, qui est un peu meilleur.D'autres fonctions, telles que
count
, sont laissées sansr
pour faire exploser un ordre (comme si vous étiez autoritaire).Certains mots se sont avérés bizarres ...
string
moyenscorda
, mais si je traduisais correctement, ce le seraitcadeia contínua/ininterrupta de caracteres
.Pour ajouter tout cela, je l' ai aussi traduit des symboles et des opérateurs (
$
,=
,=>
).Merci @DLosc pour l’idée de traduire
$
en€
.la source
$
, similaire à ce que cette langue a fait.Fondamentale Visuale .RETE - Visual Basic .NET, traduit en italien
Le programme est très simple (destiné à se traduire lui-même).
Des points:
I / O: c'est un module avec une fonction évidente à appeler
la grammaire est la plupart du temps correcte
La position des mots en anglais et en italien est différente, je ne pouvais donc pas (facilement) écrire une fonction pour résoudre ce problème et préférer les paires de traduction statiques.
J'ai conjugué des verbes à la deuxième personne, comme dans une traduction littérale italienne, ils sonneraient et se sentiraient mal (aussi faux que Windows 8+ parlant dans une seule personne)
les paires de traduction sont obscurcies afin que les anglais ne soient pas également traduits. ainsi, s’il y avait un interprète, le programme traduit ne fonctionneraitque"+"
j’en ai laissé quelques-uns pour éviter une traduction excessive (de nombreux mots anglais sont en italien, de sorte que la traduction en italien se termine par une duplication des suffixes)Italien, c'est parti!
Le résultat sur lui-même:
la source
"Mod" + "ule"
. Essayez de viser plus l'esprit du défi que la lettre.C, espagnol - C
Entrée / Sortie via STDIN / STDOUT (utilisation
./c-spanish < c-spanish.c
).Si
extra = 0
est remplacé parextra = 1
, alors le résultat de ce programme est essentiellement un quine mutuel. Sinon, la sortie est un programme C compilable qui fonctionne commecat
.Des espaces supplémentaires dans la source sont nécessaires (car ils sont remplacés par des caractères dans la version espagnole).
Mots traduits:
Sortie
Avec
extra = 0
:Avec
extra = 1
:la source
define
un mot espagnol? N'oubliez pas que votre code ne doit pas nécessairement fonctionner dans sa langue d'origine après avoir été traduit, mais uniquement dans une version traduite hypothétique de l'interpréteur / complicateur.define
est en effet un mot en espagnol (commande à la deuxième personne pourdefinir
)Rubis, Catalan - Rubí
C'est un code assez court en ruby, ce n'est donc pas représentatif, mais les noms de fonctions sont un peu plus explicites pour en montrer un peu plus. Cet exercice me rappelait trop des cours universitaires où nous utilisions un pseudocode similaire pour "programmer".
Appliqué à lui-même devient:
la source
Eliminat per simplificar codi
signifie!Python 3, Lojban
Là où j’avais besoin de réorganiser des places de sumti, j’ai mis les mots entre parenthèses, par exemple (te tcidu fe)
Code:
Et sa sortie:
la source
read
devient juste(te tcidu fe)
. Est-ce censé faire autre chose?Javascript ES6, l'espéranto, avoskripto
J'ai pris quelques libertés avec le camelcasing et le libellé (j'ai traduit 'convert to string' au lieu de 'to string'). Je compliquerai les choses plus tard quand j'aurai plus de temps.
la source