PHP 8.2.30
Preview: TranslateRepository.php Size: 3.51 KB
/home/byroehnu/easetack.com/app/Repositories/Admin/TranslateRepository.php

<?php

namespace App\Repositories\Admin;

use App\Repositories\Traits\ModelRepositoryTraits;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;

class TranslateRepository
{
    use ModelRepositoryTraits;

    /**
     * Update language data.
     *
     * @param  \Illuminate\Http\Request  $request  The request containing language data.
     * @param  string  $language  The language language.
     */
    public function updateLangData(Request $request, $language)
    {
        $data = $request->values;
        if ($data) {
            $file = json_encode($data, JSON_PRETTY_PRINT);
            File::put(base_path('lang/'.$language.'.json'), $file);
        }

        if (isset($request->values) && is_array($request->values)) {
            $file = json_encode($request->values, JSON_PRETTY_PRINT);
            File::put(base_path('lang/'.$language.'.json'), $file);
        }

        $file = base_path('lang/'.$language.'.json');
        $posts = file_get_contents($file);

        if ($posts === false) {
            return back()->with('error', 'Failed to read language file!');
        }

        $data = json_decode($posts, true);

        if ($data === null) {
            return back()->with('error', 'Failed to decode JSON content');
        }

        foreach ($request->values as $key => $value) {
            $data[$key] = $value;
        }

        $updateContent = json_encode($data, JSON_PRETTY_PRINT);

        try {
            file_put_contents($file, $updateContent);
        } catch (\Exception $e) {
            return back()->with('error', 'Failed to update language file!');
        }
    }

    public function autoTranslateFromFile($sourceLang, $targetLang, $key)
    {
        $sourceFile = base_path("lang/{$sourceLang}.json");
        $targetFile = base_path("lang/{$targetLang}.json");

        if (! File::exists($sourceFile)) {
            return back()->with('error', "Source language file '{$sourceLang}.json' not found.");
        }

        $sourceContent = File::get($sourceFile);
        $sourceData = json_decode($sourceContent, true);

        if (! is_array($sourceData) || ! isset($sourceData[$key])) {
            return back()->with('error', "Key '{$key}' not found in source file.");
        }

        $valueToTranslate = $sourceData[$key];

        $translatedText = $this->translateText($valueToTranslate, $sourceLang, $targetLang);

        // Load existing translations (or create a new array)
        $targetData = [];
        if (File::exists($targetFile)) {
            $targetContent = File::get($targetFile);
            $targetData = json_decode($targetContent, true) ?? [];
        }

        // Add or update translation
        $targetData[$key] = $translatedText;

        try {
            File::put($targetFile, json_encode($targetData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        } catch (\Exception $e) {
            throw new \Exception('Failed to write translated file: '.$e->getMessage());
        }

        return $translatedText;
    }

    private function translateText($text, $sourceLang, $targetLang)
    {
        $url = 'https://translate.googleapis.com/translate_a/single?client=gtx'
            .'&sl='.urlencode($sourceLang)
            .'&tl='.urlencode($targetLang)
            .'&dt=t&q='.urlencode($text);

        try {
            $response = file_get_contents($url);
            $responseData = json_decode($response, true);

            return $responseData[0][0][0] ?? $text;
        } catch (\Exception $e) {
            return $text; // fallback to original
        }
    }
}

Directory Contents

Dirs: 0 × Files: 37

Name Size Perms Modified Actions
713 B lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
4.90 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
8.52 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
4.28 KB lrw-rw-rw- 2025-05-15 11:40:33
Edit Download
1.27 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
3.81 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
2.42 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
1.11 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
1.58 KB lrw-rw-rw- 2025-04-22 07:44:34
Edit Download
1.18 KB lrw-rw-rw- 2025-05-05 10:37:43
Edit Download
11.35 KB lrw-rw-rw- 2025-04-19 04:42:55
Edit Download
5.59 KB lrw-rw-rw- 2025-05-15 11:24:11
Edit Download
982 B lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
5.26 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
7.94 KB lrw-rw-rw- 2025-05-08 11:48:26
Edit Download
1.40 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
4.73 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
8.77 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
7.70 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
5.04 KB lrw-rw-rw- 2025-05-15 11:24:11
Edit Download
3.88 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
7.79 KB lrw-rw-rw- 2025-04-22 07:42:55
Edit Download
1.32 KB lrw-rw-rw- 2025-04-22 07:42:55
Edit Download
653 B lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
3.79 KB lrw-rw-rw- 2025-05-04 10:44:46
Edit Download
2.27 KB lrw-rw-rw- 2025-04-26 10:16:33
Edit Download
4.97 KB lrw-rw-rw- 2025-05-15 11:24:11
Edit Download
8.42 KB lrw-rw-rw- 2025-04-19 04:22:17
Edit Download
723 B lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
2.42 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
1.19 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
7.19 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
4.42 KB lrw-rw-rw- 2025-05-01 06:16:57
Edit Download
1017 B lrw-rw-rw- 2025-04-08 04:12:56
Edit Download
2.63 KB lrw-rw-rw- 2025-04-13 07:02:31
Edit Download
3.51 KB lrw-rw-rw- 2025-04-19 04:22:16
Edit Download
2.51 KB lrw-rw-rw- 2025-04-08 04:12:56
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).