<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <title>مترجم سفارشی فارسی به انگلیسی</title>
    <style>
        /* تنظیمات پایه */
        * {
            box-sizing: border-box;
        }

        body, html {
            margin: 0;
            padding: 0;
            height: 100%;
            font-family: Arial, sans-serif;
            background-color: #f4f4f9;
            display: flex;
            justify-content: center;
            align-items: center;
            direction: rtl;
            text-align: right;
        }

        /* کانتینر مترجم */
        .translator-container {
            max-width: 600px;
            width: 90%;
            margin: 0 auto;
            background: #fff;
            padding: 30px 40px;
            border-radius: 12px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.1);
            text-align: center;
        }

        .translator-container h2 {
            margin-bottom: 20px;
            color: #34495e;
        }

        /* استایل textarea */
        textarea {
            width: 100%;
            height: 120px;
            padding: 15px;
            margin-bottom: 20px;
            border-radius: 8px;
            border: 1px solid #ccc;
            resize: vertical;
            font-size: 16px;
            font-family: Arial, sans-serif;
            transition: border-color 0.3s;
        }

        textarea:focus {
            border-color: #76c7c0;
            outline: none;
        }

        /* استایل دکمه ترجمه */
        .translate-button {
            position: relative;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 12px 24px;
            background-color: #76c7c0;
            color: #fff;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
            width: 100%;
        }

        .translate-button:hover {
            background-color: #5aa9a4;
        }

        .translate-button:disabled {
            background-color: #a0dede;
            cursor: not-allowed;
        }

        /* استایل اسپینر */
        .spinner {
            border: 4px solid rgba(255, 255, 255, 0.6);
            border-top: 4px solid #fff;
            border-radius: 50%;
            width: 20px;
            height: 20px;
            animation: spin 1s linear infinite;
            margin-left: 10px;
            display: none;
        }

        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        /* نمایش نتیجه ترجمه */
        .result {
            margin-top: 30px;
            padding: 15px;
            background: #ecf0f1;
            border-radius: 8px;
            min-height: 50px;
            font-size: 16px;
            color: #2c3e50;
            white-space: pre-wrap;
            word-wrap: break-word;
            position: relative;
        }

        /* دکمه کپی */
        .copy-button {
            position: absolute;
            top: 15px;
            left: 15px;
            background-color: #3498db;
            border: none;
            color: #fff;
            padding: 6px 10px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 14px;
            transition: background-color 0.3s;
            display: none;
        }

        .copy-button:hover {
            background-color: #2980b9;
        }

        /* استایل پیام خطا */
        .error {
            color: #d9534f;
            margin-top: 10px;
            display: none;
        }

        /* تنظیمات واکنش‌گرا */
        @media (max-width: 600px) {
            .translator-container {
                padding: 20px;
            }

            textarea {
                height: 100px;
            }

            .translate-button {
                width: 100%;
            }

            .copy-button {
                top: 10px;
                left: 10px;
            }
        }
    </style>
</head>
<body>
    <div class="translator-container">
        <h2>مترجم فارسی به انگلیسی</h2>
        <textarea id="inputText" placeholder="متن خود را به فارسی وارد کنید..."></textarea>
        <button id="translateButton" class="translate-button">
            ترجمه
            <div class="spinner" id="spinner"></div>
        </button>
        <div class="result" id="resultText">
            <!-- متن ترجمه شده اینجا نمایش داده می‌شود -->
            <button id="copyButton" class="copy-button">کپی متن</button>
        </div>
        <div class="error" id="errorMessage">خطا در ترجمه.</div>
    </div>

    <script>
        document.getElementById('translateButton').addEventListener('click', async function() {
            const inputText = document.getElementById('inputText').value.trim();
            const resultText = document.getElementById('resultText');
            const spinner = document.getElementById('spinner');
            const translateButton = document.getElementById('translateButton');
            const copyButton = document.getElementById('copyButton');
            const errorMessage = document.getElementById('errorMessage');

            // پاک کردن نتایج و خطاهای قبلی
            resultText.textContent = '';
            copyButton.style.display = 'none';
            errorMessage.style.display = 'none';

            if (inputText === "") {
                alert("لطفاً متن مورد نظر خود را وارد کنید.");
                return;
            }

            // نمایش اسپینر و غیرفعال کردن دکمه ترجمه
            spinner.style.display = 'block';
            translateButton.disabled = true;

            // آدرس API MyMemory
            const endpoint = 'https://api.mymemory.translated.net/get';

            const params = new URLSearchParams({
                q: inputText,
                langpair: 'fa|en'
            });

            try {
                const response = await fetch(`${endpoint}?${params.toString()}`);
                if (!response.ok) {
                    throw new Error('Network response was not ok');
                }
                const data = await response.json();

                spinner.style.display = 'none';
                translateButton.disabled = false;

                if (data.responseData && data.responseData.translatedText) {
                    resultText.textContent = data.responseData.translatedText;
                    copyButton.style.display = 'block';
                } else {
                    resultText.textContent = 'ترجمه یافت نشد.';
                    errorMessage.style.display = 'block';
                }
            } catch (error) {
                console.error('Error:', error);
                spinner.style.display = 'none';
                translateButton.disabled = false;
                resultText.textContent = 'خطا در ترجمه.';
                errorMessage.style.display = 'block';
                alert('مشکلی در ترجمه به وجود آمده است. لطفاً دوباره تلاش کنید.');
            }
        });

        // مدیریت دکمه کپی
        document.getElementById('copyButton').addEventListener('click', function() {
            const translatedText = document.getElementById('resultText').textContent.trim();
            // اطمینان از اینکه متن ترجمه شده وجود دارد و خطا نیست
            if (translatedText === '' || translatedText === 'ترجمه یافت نشد.' || translatedText === 'خطا در ترجمه.') {
                alert('هیچ متنی برای کپی کردن وجود ندارد.');
                return;
            }

            navigator.clipboard.writeText(translatedText).then(() => {
                // تغییر متن و رنگ دکمه کپی پس از کپی شدن
                const copyBtn = document.getElementById('copyButton');
                copyBtn.textContent = 'کپی شد';
                copyBtn.style.backgroundColor = '#2ecc71';

                // بازگرداندن متن و رنگ اولیه پس از ۲ ثانیه
                setTimeout(() => {
                    copyBtn.textContent = 'کپی متن';
                    copyBtn.style.backgroundColor = '#3498db';
                }, 2000);
            }).catch(err => {
                console.error('Failed to copy: ', err);
                alert('کپی متن موفقیت‌آمیز نبود.');
            });
        });
    </script>
</body>
</html>
این کد چیه