J'ai soudainement voulu traduire des phrases en anglais, mais j'ai trouvé gênant d'ajouter du chrome sur mon PC, d'ouvrir la traduction Google et de taper. Cependant, Discord est toujours activé pour une raison quelconque, alors j'ai pensé que j'utiliserais le BOT de traduction de Discord, mais j'ai senti que le télécharger tel quel était quelque chose de différent, alors j'ai décidé de le faire et je suis venu ici. C'est le deuxième BOT de ma vie.
―― Traduit le japonais en anglais
--Translate en japonais avec ! Trans [chaîne de caractères autre que japonais]
! Trans [chaîne de caractères japonais]
--! Trans [Nom de la langue A] - [Nom de la langue B] - [Chaîne de caractères d'un mot]
pour traduire un mot en un mot B! Detect [chaîne arbitraire]
--Environnement dans lequel Python peut être utilisé
C'est facile à comprendre. Comment créer un simple Discord Bot avec Python Tutoriel le plus rapide de Discord Bot [Python & Heroku & GitHub]
C'est une bibliothèque gratuite qui peut traduire et détecter des langues à l'aide de l'API Google Translation. Cependant, il n'est pas très stable et peut être bloqué par Google à tout moment, donc si vous voulez de la stabilité, nous vous recommandons d'utiliser l'API officielle de Google Cloud.
pip install googletrans
Vous pouvez l'installer avec.
Googletrans installé avec succès- (toute version)
Est terminé.
À titre d'exemple, créons un programme qui convertit le japonais en anglais.
trans_test.py
from googletrans import Translator
translator = Translator()
japanese = translator.translate('Bonjour.')
print(japanese.text)
#>> Good morning.
En plus du texte, la valeur renvoyée par translete () inclut la langue de la source de conversion et la langue après la conversion.
trans_test.py
from googletrans import Translator
translator = Translator()
japanese = translator.translate('Bonjour.')
print(japanese)
#>> Translated(src=ja, dest=en, text=Good morning., pronunciation=None, extra_data="{'translat...")
Pour détecter la langue, mettez la phrase ou le mot que vous souhaitez détecter entre parenthèses de detect ().
trans_test.py
from googletrans import Translator
translator = Translator()
detect = translator.detect('Bonjour.')
print(detect)
#>> Detected(lang=ja, confidence=1.0)
Les deux lettres anglaises après lang sont le nom de la langue et la confiance est la précision.
Quelle bibliothèque utile! !! Cette fois, je vais faire un BOT de traduction en utilisant cette bibliothèque.
Tout d'abord, posez le produit fini.
main.py
import discord
from googletrans import Translator
TOKEN = 'Jetons face cachée'
client = discord.Client()
translator = Translator()
@client.event
async def on_ready():
print('--------------')
print('Vous êtes maintenant connecté')
print(client.user.name)
print(client.user.id)
print('--------------')
@client.event
async def on_message(message):
if message.author.bot:
return
if message.content.startswith('!trans'):
say = message.content
say = say[7:]
if say.find('-') == -1:
str = say
detact = translator.detect(str)
befor_lang = detact.lang
if befor_lang == 'ja':
convert_string = translator.translate(str, src=befor_lang, dest='en')
embed = discord.Embed(title='Résultat de la conversion', color=0xff0000)
embed.add_field(name='Befor', value=str)
embed.add_field(name='After', value=convert_string.text, inline=False)
await message.channel.send(embed=embed)
else:
convert_string = translator.translate(str, src=befor_lang, dest='ja')
embed = discord.Embed(title='Résultat de la conversion', color=0xff0000)
embed.add_field(name='Befor', value=str)
embed.add_field(name='After', value=convert_string.text, inline=False)
await message.channel.send(embed=embed)
else:
trans, str = list(say.split('='))
befor_lang, after_lang = list(trans.split('-'))
convert_string = translator.translate(str, src=befor_lang, dest=after_lang)
embed = discord.Embed(title='Résultat de la conversion', color=0xff0000)
embed.add_field(name='Befor', value=str)
embed.add_field(name='After', value=convert_string.text, inline=False)
await message.channel.send(embed=embed)
if message.content.startswith('!detect'):
say = message.content
s = say[8:]
detect = translator.detect(s)
m = 'La langue de cette chaîne est probablement' + detect.lang + 'est.'
await message.channel.send(m)
client.run(TOKEN)
Je ne sais pas si ça a l'air compliqué, mais c'est très simple à faire.
①
!trans ~
Lorsque l'instruction commence par, supprimez l'instruction «! Trans» et un caractère demi-largeur de l'instruction.
↓
Détectez la langue de la phrase avec detect ().
↓
Si la langue est le japonais, traduisez-la en anglais, sinon traduisez-la en japonais.
② (En supposant que! Trans a déjà été supprimé)
!trans [A]-[B]-[C]
Au moment de l'instruction, A est le nom de la langue avant la conversion, B est le nom de la langue après la conversion et C est une chaîne de caractères.
↓
Traduire C du langage A, B, C au langage B.
③
!detect ~
Lorsque la commande commence par, supprimez la commande «! Détecter» et un caractère demi-largeur de la commande.
↓
detect () pour détecter la langue de la phrase et la sortir
C'est tout pour le mouvement global. Il y a des endroits où ʻembed ~ ʻest écrit à divers endroits, mais c'est nécessaire pour l'incorporation lorsque l'on parle sur Discord. L'intégration semble être plus facile à voir.
Je n'ai pas l'intention de traduire. Je le choisis de manière appropriée.
Du japonais à l'anglais
De l'anglais au japonais
De l'allemand au japonais
Du japonais à l'allemand
--Détection de la langue Japonais
français
J'ai pu mettre en œuvre tout ce que j'essayais de faire!
Je pense que la traduction est inférieure à la traduction de Google, mais je suis satisfait parce que j'ai pu faire ce que j'essayais de faire. Je n'en suis qu'au début, donc j'ai beaucoup de choses à faire, comme le chat vocal, la création de membres et la combinaison avec le web scraping.
Faisons-le parce que tout le monde est heureux de faire BOT! !!
Si vous faites une erreur ou avez des améliorations, n'hésitez pas à me le dire sur Twitter.
Recommended Posts