Doctranslate.io

API ການແປຮູບພາບ: ແປພາສາແອັດສະປາຍເປັນຝຣັ່ງໄດ້ຢ່າງງ່າຍດາຍ

Đăng bởi

vào

ເປັນຫຍັງການແປຮູບພາບຜ່ານ API ຈຶ່ງເປັນສິ່ງທ້າທາຍ

ການເຊື່ອມໂຍງ API ເພື່ອແປຮູບພາບ, ໂດຍສະເພາະຈາກພາສາແອັດສະປາຍເປັນຝຣັ່ງ, ເປັນສິ່ງທ້າທາຍທາງດ້ານເຕັກນິກທີ່ຊັບຊ້ອນຫຼາຍຢ່າງສໍາລັບນັກພັດທະນາ.
ຂະບວນການແມ່ນສັບສົນກວ່າການແປຂໍ້ຄວາມທໍາມະດາຫຼາຍ, ກ່ຽວຂ້ອງກັບທໍ່ສົ່ງຫຼາຍຂັ້ນຕອນທີ່ຫຼາຍສິ່ງສາມາດຜິດພາດໄດ້.
ການເຂົ້າໃຈສິ່ງທ້າທາຍເຫຼົ່ານີ້ເນັ້ນໃຫ້ເຫັນເຖິງຄວາມຕ້ອງການສໍາລັບການແກ້ໄຂບັນຫາທີ່ເຂັ້ມແຂງ ແລະສະເພາະເຊັ່ນ: API ການແປຮູບພາບສະເພາະ.

ອຸປະສັກສໍາຄັນທໍາອິດແມ່ນການເຂົ້າລະຫັດຕົວອັກສອນ ແລະການສະກັດຂໍ້ຄວາມທີ່ຖືກຕ້ອງຜ່ານ Optical Character Recognition (OCR).
ທັງພາສາແອັດສະປາຍ ແລະຝຣັ່ງໃຊ້ຕົວອັກສອນລາຕິນ ແຕ່ມີເຄື່ອງໝາຍ diacritics ທີ່ເປັນເອກະລັກ ແລະຕົວອັກສອນພິເສດເຊັ່ນ: ‘ñ’, ‘á’, ‘é’, ‘ç’, ແລະ ‘à’.
ຖ້າຫາກວ່າເຄື່ອງຈັກ OCR ຫຼືຂັ້ນຕອນການປະມວນຜົນຂໍ້ຄວາມຕໍ່ມາບໍ່ຈັດການກັບການເຂົ້າລະຫັດ UTF-8 ຢ່າງສົມບູນ, ຕົວອັກສອນເຫຼົ່ານີ້ສາມາດເສຍຫາຍໄດ້, ເຊິ່ງນໍາໄປສູ່ການແປທີ່ບໍ່ມີເຫດຜົນ ແລະປະສົບການຜູ້ໃຊ້ທີ່ບໍ່ດີ.

ຄວາມຫຍຸ້ງຍາກທີ່ສໍາຄັນອີກອັນໜຶ່ງແມ່ນຢູ່ໃນການຮັກສາຮູບແບບຕົ້ນສະບັບ ແລະການອອກແບບຂອງຮູບພາບຫຼັງຈາກການແປ.
ຂໍ້ຄວາມທີ່ສະກັດມາຈາກຮູບພາບສູນເສຍສະພາບການຕໍາແໜ່ງ ແລະຮູບແບບຂອງມັນ, ເຊັ່ນ: ຂະໜາດຕົວອັກສອນ, ສີ, ແລະການຈັດວາງ.
API ທີ່ຊັບຊ້ອນຕ້ອງບໍ່ພຽງແຕ່ແປຂໍ້ຄວາມເທົ່ານັ້ນ ແຕ່ຍັງຕ້ອງສ້າງຮູບພາບຄືນໃໝ່ຢ່າງສະຫຼາດ, ໂດຍການວາງຂໍ້ຄວາມພາສາຝຣັ່ງທີ່ຖືກແປກັບຄືນສູ່ຕຳແໜ່ງເດີມດ້ວຍການຈັດຮູບແບບທີ່ເໝາະສົມ, ເຊິ່ງເປັນວຽກງານວິໄສທັດຄອມພິວເຕີທີ່ບໍ່ທຳມະດາ.

ສຸດທ້າຍ, ນັກພັດທະນາຕ້ອງຮັບມືກັບຮູບແບບໄຟລ໌ຮູບພາບທີ່ຫຼາກຫຼາຍ, ເຊິ່ງແຕ່ລະອັນມີການບີບອັດ ແລະໂຄງສ້າງຂໍ້ມູນຂອງຕົນເອງ.
API ທີ່ມີປະສິດທິພາບຈໍາເປັນຕ້ອງຈັດການກັບຮູບແບບຕ່າງໆເຊັ່ນ: JPEG, PNG, BMP, ແລະ TIFF ຢ່າງຕໍ່ເນື່ອງ, ເຊິ່ງຮຽກຮ້ອງໃຫ້ມີ backend ທີ່ມີຄວາມຍືດຫຍຸ່ນທີ່ສາມາດປະມວນຜົນປະເພດໄຟລ໌ທີ່ຫຼາກຫຼາຍໄດ້ກ່ອນ.
ການສ້າງ ແລະຮັກສາໂຄງສ້າງພື້ນຖານນີ້ຕັ້ງແຕ່ເລີ່ມຕົ້ນແມ່ນຕ້ອງໃຊ້ຊັບພະຍາກອນຫຼາຍ, ຮຽກຮ້ອງຄວາມຊ່ຽວຊານໃນການປະມວນຜົນຮູບພາບ, ການຮຽນຮູ້ຂອງເຄື່ອງຈັກ, ແລະລະບົບທີ່ສາມາດຂະຫຍາຍໄດ້.

ແນະນຳ Doctranslate Image Translation API

The Doctranslate API ຖືກອອກແບບມາເພື່ອເອົາຊະນະສິ່ງທ້າທາຍເຫຼົ່ານີ້ຢ່າງແນ່ນອນ, ໂດຍສະເໜີການແກ້ໄຂບັນຫາທີ່ມີປະສິດທິພາບ ແລະລຽບງ່າຍສຳລັບນັກພັດທະນາ.
REST API ຂອງພວກເຮົາສະໜອງການໂຕ້ຕອບທີ່ງ່າຍດາຍແຕ່ແຂງແຮງສຳລັບການແປຂໍ້ຄວາມທີ່ຝັງຢູ່ໃນຮູບພາບຈາກພາສາແອັດສະປາຍເປັນຝຣັ່ງດ້ວຍຄວາມຖືກຕ້ອງເປັນພິເສດ.
ໂດຍການສະຫຼຸບຄວາມສັບສົນຂອງ OCR, ການສ້າງຮູບແບບຄືນໃໝ່, ແລະການຈັດການໄຟລ໌, ບໍລິການຂອງພວກເຮົາຊ່ວຍໃຫ້ທ່ານສຸມໃສ່ການສ້າງຄຸນສົມບັດຫຼັກຂອງແອັບພລິເຄຊັນຂອງທ່ານ.

ສ້າງຂຶ້ນໃນສະຖາປັດຕະຍະກໍາ RESTful ທີ່ທັນສະໄໝ, ການເຊື່ອມໂຍງແມ່ນງ່າຍດາຍໂດຍໃຊ້ຄໍາຮ້ອງຂໍ HTTP ມາດຕະຖານ, ແລະ API ສົ່ງຄືນການຕອບສະຫນອງໃນຮູບແບບ JSON ທີ່ສະອາດ, ງ່າຍຕໍ່ການວິເຄາະ.
ວິທີການທີ່ເນັ້ນໃສ່ນັກພັດທະນານີ້ຮັບປະກັນອຸປະສັກຕ່ໍາຕໍ່ການເຂົ້າເຖິງ ແລະການນໍາໃຊ້ໄວ, ໂດຍບໍ່ຄໍານຶງເຖິງພາສາການຂຽນໂປຣແກຣມ ຫຼື stack ຂອງທ່ານ.
ທ່ານສາມາດເລີ່ມຕົ້ນໄດ້ພາຍໃນນາທີດ້ວຍກະແຈ API ທີ່ປອດໄພ, ສົ່ງຄໍາຮ້ອງຂໍ multipart/form-data ທີ່ປະກອບມີໄຟລ໌ຮູບພາບ ແລະຕົວກໍານົດການແປຂອງທ່ານ. ສໍາລັບການແກ້ໄຂບັນຫາທີ່ປະສົມປະສານ, ທ່ານສາມາດນໍາໃຊ້ແພລດຟອມຂອງພວກເຮົາເພື່ອ ຮັບຮູ້ & ແປຂໍ້ຄວາມໃນຮູບພາບ ໂດຍກົງ.

ບໍລິການຂອງພວກເຮົາຖືກອອກແບບມາສໍາລັບທັງ ຄວາມສາມາດໃນການຂະຫຍາຍຕົວ ແລະຄວາມໜ້າເຊື່ອຖື, ໂດຍນໍາໃຊ້ຮູບແບບການປະມວນຜົນແບບ asynchronous ສໍາລັບໄຟລ໌ຂະຫນາດໃຫຍ່.
ເມື່ອທ່ານສົ່ງເອກະສານ, ທ່ານຈະໄດ້ຮັບ job ID ທັນທີ, ຊ່ວຍໃຫ້ແອັບພລິເຄຊັນຂອງທ່ານຍັງຄົງຕອບສະໜອງໄດ້.
ທ່ານສາມາດສຳຫຼວດຈຸດສິ້ນສຸດສະຖານະເພື່ອເພື່ອກວດເບິ່ງຄວາມຄືບໜ້າ ແລະດຶງໄຟລ໌ທີ່ຖືກແປເມື່ອມັນພ້ອມແລ້ວ, ຮັບປະກັນຂັ້ນຕອນການເຮັດວຽກທີ່ບໍ່ມີການຂັດຂວາງເຊິ່ງເໝາະສົມກັບແອັບພລິເຄຊັນລະດັບວິສາຫະກິດ.

ຄູ່ມືການເຊື່ອມໂຍງ API ເປັນຂັ້ນຕອນ

ຄູ່ມືນີ້ໃຫ້ຕົວຢ່າງລະຫັດທີ່ເປັນປະໂຫຍດເພື່ອຊ່ວຍໃຫ້ທ່ານເຊື່ອມໂຍງ Doctranslate API ສໍາລັບການແປຮູບພາບຈາກພາສາແອັດສະປາຍເປັນຝຣັ່ງ.
ກ່ອນທີ່ທ່ານຈະເລີ່ມຕົ້ນ, ໃຫ້ແນ່ໃຈວ່າທ່ານມີກະແຈ Doctranslate API ທີ່ຖືກຕ້ອງ, ເຊິ່ງຈໍາເປັນສໍາລັບການຢືນຢັນຄໍາຮ້ອງຂໍຂອງທ່ານ.
ນອກຈາກນີ້, ທ່ານຍັງຈະຕ້ອງມີສະພາບແວດລ້ອມການພັດທະນາທີ່ມີ Python ແລະ the `requests` library ຫຼື Node.js ທີ່ມີ the `axios` and `form-data` packages ຕິດຕັ້ງໄວ້.

ຕົວຢ່າງການເຊື່ອມໂຍງ Python

ການໃຊ້ Python ສໍາລັບການເຊື່ອມໂຍງ API ແມ່ນທາງເລືອກທົ່ວໄປຍ້ອນຄວາມງ່າຍດາຍຂອງມັນ ແລະ the powerful `requests` library.
script ຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນຂັ້ນຕອນການເຮັດວຽກທີ່ສົມບູນ: ການອັບໂຫຼດຮູບພາບ, ການລິເລີ່ມການແປ, ແລະການດາວໂຫຼດຜົນໄດ້ຮັບ.
ຢ່າລືມປ່ຽນ `’YOUR_API_KEY’` ດ້ວຍກະແຈຕົວຈິງຂອງທ່ານ ແລະລະບຸເສັ້ນທາງທີ່ຖືກຕ້ອງໄປຫາໄຟລ໌ຮູບພາບຕົ້ນສະບັບຂອງທ່ານ.


import requests
import time
import os

# Your API Key and file path
API_KEY = 'YOUR_API_KEY'
FILE_PATH = 'path/to/your/spanish_image.png'

# Step 1: Upload the document for translation
def upload_document(api_key, file_path):
    url = 'https://developer.doctranslate.io/v2/translate/document'
    headers = {
        'Authorization': f'Bearer {api_key}'
    }
    files = {
        'file': (os.path.basename(file_path), open(file_path, 'rb')),
        'source_lang': (None, 'es'),
        'target_lang': (None, 'fr')
    }
    response = requests.post(url, headers=headers, files=files)
    response.raise_for_status() # Raise an exception for bad status codes
    return response.json()['data']['id']

# Step 2: Check translation status
def check_status(api_key, job_id):
    url = f'https://developer.doctranslate.io/v2/translate/document/{job_id}'
    headers = {
        'Authorization': f'Bearer {api_key}'
    }
    while True:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        data = response.json()['data']
        status = data['status']
        print(f'Current job status: {status}')
        if status == 'completed':
            return data['url']
        elif status == 'failed':
            raise Exception('Translation failed!')
        time.sleep(5) # Poll every 5 seconds

# Step 3: Download the translated document
def download_document(download_url, output_path):
    response = requests.get(download_url)
    response.raise_for_status()
    with open(output_path, 'wb') as f:
        f.write(response.content)
    print(f'Translated file saved to {output_path}')

# Main execution block
if __name__ == '__main__':
    try:
        job_id = upload_document(API_KEY, FILE_PATH)
        print(f'Document uploaded successfully. Job ID: {job_id}')
        translated_url = check_status(API_KEY, job_id)
        download_document(translated_url, 'translated_image_fr.png')
    except requests.exceptions.RequestException as e:
        print(f'An API error occurred: {e}')
    except Exception as e:
        print(f'An error occurred: {e}')

ຕົວຢ່າງການເຊື່ອມໂຍງ Node.js

ສໍາລັບນັກພັດທະນາໃນລະບົບນິເວດ JavaScript, Node.js ກັບ `axios` ສະເໜີວິທີທີ່ດີເລີດໃນການພົວພັນກັບ API.
ຕົວຢ່າງນີ້ກວມເອົາຂັ້ນຕອນການເຮັດວຽກ asynchronous ດຽວກັນ, ສະແດງໃຫ້ເຫັນວິທີຈັດການການອັບໂຫລດໄຟລ໌ໂດຍໃຊ້ `form-data`.
ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ຕິດຕັ້ງ `axios` ແລະ `form-data` ຢູ່ໃນໂຄງການຂອງທ່ານໂດຍການດໍາເນີນການ `npm install axios form-data`.


const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const path = require('path');

// Configuration
const API_KEY = 'YOUR_API_KEY';
const FILE_PATH = 'path/to/your/spanish_image.png';
const OUTPUT_PATH = 'translated_image_fr.png';

const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));

// Step 1: Upload the image file
async function uploadDocument() {
    const url = 'https://developer.doctranslate.io/v2/translate/document';
    const form = new FormData();
    form.append('file', fs.createReadStream(FILE_PATH));
    form.append('source_lang', 'es');
    form.append('target_lang', 'fr');

    const config = {
        headers: {
            'Authorization': `Bearer ${API_KEY}`,
            ...form.getHeaders()
        }
    };

    const response = await axios.post(url, form, config);
    return response.data.data.id;
}

// Step 2: Poll for translation status
async function checkStatus(jobId) {
    const url = `https://developer.doctranslate.io/v2/translate/document/${jobId}`;
    const config = {
        headers: { 'Authorization': `Bearer ${API_KEY}` }
    };

    while (true) {
        const response = await axios.get(url, config);
        const status = response.data.data.status;
        console.log(`Current job status: ${status}`);
        if (status === 'completed') {
            return response.data.data.url;
        } else if (status === 'failed') {
            throw new Error('Translation process failed.');
        }
        await sleep(5000); // Wait 5 seconds before polling again
    }
}

// Step 3: Download the translated file
async function downloadDocument(downloadUrl, outputPath) {
    const response = await axios.get(downloadUrl, { responseType: 'stream' });
    const writer = fs.createWriteStream(outputPath);
    response.data.pipe(writer);

    return new Promise((resolve, reject) => {
        writer.on('finish', resolve);
        writer.on('error', reject);
    });
}

// Main execution logic
async function main() {
    try {
        console.log('Starting image translation...');
        const jobId = await uploadDocument();
        console.log(`Document uploaded successfully. Job ID: ${jobId}`);
        const translatedUrl = await checkStatus(jobId);
        console.log('Translation complete. Downloading file...');
        await downloadDocument(translatedUrl, OUTPUT_PATH);
        console.log(`Translated file saved to ${OUTPUT_PATH}`);
    } catch (error) {
        console.error('An error occurred:', error.response ? error.response.data : error.message);
    }
}

main();

ຂໍ້ຄວນພິຈາລະນາທີ່ສຳຄັນສຳລັບລັກສະນະສະເພາະຂອງພາສາຝຣັ່ງ

ເມື່ອແປຈາກພາສາແອັດສະປາຍເປັນຝຣັ່ງ, ຄວາມແຕກຕ່າງທາງດ້ານພາສາບາງຢ່າງຮຽກຮ້ອງຄວາມເອົາໃຈໃສ່ເປັນພິເສດເພື່ອໃຫ້ໄດ້ຜົນທີ່ມີຄຸນນະພາບສູງ.
The Doctranslate API ຖືກສ້າງຂຶ້ນດ້ວຍຕົວແບບຂັ້ນສູງທີ່ຖືກຝຶກອົບຮົມເພື່ອກໍາຈັດຄວາມສັບສົນເຫຼົ່ານີ້ໂດຍອັດຕະໂນມັດ.
ຢ່າງໃດກໍຕາມ, ໃນຖານະນັກພັດທະນາ, ການຮັບຮູ້ເຖິງພວກມັນຈະຊ່ວຍໃຫ້ເຂົ້າໃຈເຖິງຄຸນຄ່າຂອງບໍລິການແປພາສາສະເພາະ.

ໜຶ່ງໃນລັກສະນະທີ່ສຳຄັນທີ່ສຸດແມ່ນການຈັດການສຳນຽງ ແລະ diacritics ຢ່າງຖືກຕ້ອງ, ເຊິ່ງພົບເລື້ອຍໃນພາສາຝຣັ່ງ.
ຕົວອັກສອນເຊັ່ນ: ‘é’, ‘à’, ‘ç’, ແລະ ‘û’ ຕ້ອງຖືກສະແດງຢ່າງສົມບູນເພື່ອຮັບປະກັນການອ່ານງ່າຍ ແລະຄວາມເປັນມືອາຊີບ.
API ຂອງພວກເຮົາຮັບປະກັນການເຂົ້າລະຫັດ UTF-8 ທີ່ເໝາະສົມຕະຫຼອດຂະບວນການທັງໝົດ, ຈາກການສະກັດຂໍ້ຄວາມໄປສູ່ການສ້າງຮູບພາບສຸດທ້າຍ, ປ້ອງກັນການເສຍຫາຍຂອງຕົວອັກສອນ.

ເພດໄວຍາກອນ ແລະຄວາມສອດຄ່ອງກັນຍັງເປັນພື້ນຖານໃນພາສາຝຣັ່ງ, ບ່ອນທີ່ຄໍານາມມີເພດທີ່ມີຜົນກະທົບຕໍ່ຄໍາຕື່ມ ແລະຄໍາຄຸນນາມທີ່ກ່ຽວຂ້ອງ.
ການແປຄຳຕໍ່ຄຳໂດຍກົງຈາກພາສາແອັດສະປາຍມັກຈະບໍ່ປະຕິບັດຕາມກົດລະບຽບໄວຍາກອນເຫຼົ່ານີ້, ເຊິ່ງສົ່ງຜົນໃຫ້ເກີດການສ້າງປະໂຫຍກທີ່ງຸ່ມງ່າມ ຫຼືບໍ່ຖືກຕ້ອງ.
ເຄື່ອງຈັກແປພາສາຂອງພວກເຮົາໃຊ້ການວິເຄາະສະພາບການເພື່ອຮັບປະກັນວ່າຄວາມສອດຄ່ອງເຫຼົ່ານີ້ຖືກນຳໃຊ້ຢ່າງຖືກຕ້ອງ, ຜະລິດ ຂໍ້ຄວາມພາສາຝຣັ່ງທີ່ຟັງແລ້ວເປັນທໍາມະຊາດ.

ຍິ່ງໄປກວ່ານັ້ນ, ຄວາມແຕກຕ່າງລະຫວ່າງການກ່າວເຖິງແບບທາງການ (‘vous’) ແລະແບບບໍ່ເປັນທາງການ (‘tu’) ແມ່ນລັກສະນະທາງດ້ານວັດທະນະທໍາ ແລະພາສາທີ່ສໍາຄັນຂອງພາສາຝຣັ່ງ.
ໃນຂະນະທີ່ພາສາແອັດສະປາຍຍັງມີຄວາມແຕກຕ່າງກັນແບບທາງການ ແລະບໍ່ເປັນທາງການ, ຮູບແບບການນໍາໃຊ້ອາດຈະແຕກຕ່າງກັນ.
ຕົວແບບພື້ນຖານຂອງ API ຖືກຝຶກອົບຮົມກ່ຽວກັບຊຸດຂໍ້ມູນຈໍານວນຫຼວງຫຼາຍ, ຊ່ວຍໃຫ້ພວກເຂົາສາມາດຄາດເດົາລະດັບຄວາມເປັນທາງການທີ່ເຫມາະສົມຈາກສະພາບການຂອງຕົ້ນສະບັບ, ນໍາໄປສູ່ການແປທີ່ສອດຄ່ອງກັບວັດທະນະທໍາຫຼາຍຂຶ້ນ.

ບົດສະຫຼຸບ: ເຮັດໃຫ້ຂັ້ນຕອນການເຮັດວຽກການແປຂອງທ່ານລຽບງ່າຍ

ການເຊື່ອມໂຍງ Doctranslate Image Translation API ສະໜອງການແກ້ໄຂບັນຫາທີ່ເຂັ້ມແຂງ, ສາມາດຂະຫຍາຍໄດ້, ແລະມີປະສິດທິພາບສໍາລັບການປ່ຽນເນື້ອຫາພາບຈາກພາສາແອັດສະປາຍເປັນຝຣັ່ງ.
ໂດຍການຈັດການກັບສິ່ງທ້າທາຍທີ່ສັບສົນຂອງ OCR, ການຮັກສາຮູບແບບ, ແລະຄວາມແຕກຕ່າງທາງດ້ານພາສາ, API ຂອງພວກເຮົາຊ່ວຍໃຫ້ນັກພັດທະນາສາມາດສ້າງຄໍາຮ້ອງສະຫມັກຫຼາຍພາສາທີ່ຊັບຊ້ອນໂດຍບໍ່ມີການສ້າງ backend ທີ່ສັບສົນ.
ຄູ່ມືຂັ້ນຕອນສໍາລັບ Python ແລະ Node.js ສະແດງໃຫ້ເຫັນວ່າທ່ານສາມາດປະຕິບັດຄຸນສົມບັດການແປພາສາທີ່ມີປະສິດທິພາບໄດ້ໄວພຽງໃດ.

ພວກເຮົາຊຸກຍູ້ໃຫ້ທ່ານສໍາຫຼວດຄວາມສາມາດເຕັມຮູບແບບຂອງບໍລິການຂອງພວກເຮົາ ແລະເບິ່ງວ່າມັນສາມາດປັບປຸງໂຄງການຂອງທ່ານໄດ້ແນວໃດ.
ເຕັກໂນໂລຢີຂອງພວກເຮົາຖືກອອກແບບມາເພື່ອໃຫ້ການສື່ສານທີ່ບໍ່ພຽງແຕ່ແປພາສາເທົ່ານັ້ນ, ແຕ່ຍັງຖືກຕ້ອງ ແລະເໝາະສົມກັບສະພາບການທີ່ເຄົາລົບລາຍລະອຽດທາງດ້ານພາສາ.
ສໍາລັບຂໍ້ມູນລາຍລະອຽດເພີ່ມເຕີມ, ລາຍລະອຽດຂອງຕົວກໍານົດການ, ແລະທາງເລືອກຂັ້ນສູງ, ກະລຸນາອ້າງອີງເຖິງເອກະສານ API ທາງການຂອງພວກເຮົາເພື່ອເລີ່ມຕົ້ນມື້ນີ້.

Doctranslate.io - ການແປທີ່ຖືກຕ້ອງ ແລະທັນທີທັນໃດໃນທົ່ວຫຼາຍພາສາ

Để lại bình luận

chat