From 1fda01206601776839ee692d294be6810ad8d295 Mon Sep 17 00:00:00 2001 From: Sangrak Choi Date: Mon, 8 Jul 2024 13:01:53 +0900 Subject: [PATCH] Add chunk_size config and use in translation --- config/ai-translator.php | 3 +++ src/Console/TranslateStrings.php | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config/ai-translator.php b/config/ai-translator.php index 1b59a07..11bf2e0 100644 --- a/config/ai-translator.php +++ b/config/ai-translator.php @@ -21,6 +21,9 @@ 'model' => 'gpt-3.5-turbo', // Recommend to use for testing purpose. It sometimes doesn't translate. 'api_key' => env('OPENAI_API_KEY'), 'retries' => 5, + + // Translate strings in a batch. The higher, the cheaper. + 'chunk_size' => 10, ], 'locale_names' => [ diff --git a/src/Console/TranslateStrings.php b/src/Console/TranslateStrings.php index 3318192..9f469bd 100644 --- a/src/Console/TranslateStrings.php +++ b/src/Console/TranslateStrings.php @@ -13,6 +13,7 @@ class TranslateStrings extends Command protected $sourceLocale; protected $sourceDirectory; + protected $chunkSize; public function __construct() { parent::__construct(); @@ -25,6 +26,7 @@ public function __construct() { public function handle() { $this->sourceLocale = config('ai-translator.source_locale'); $this->sourceDirectory = config('ai-translator.source_directory'); + $this->chunkSize = config('ai-translator.chunk_size', 10); $this->translate(); } @@ -86,8 +88,8 @@ public function translate() { }) ->toArray(); - if (sizeof($sourceStringList) > 50) { - if (!$this->confirm("{$outputFile}, Strings: " . sizeof($sourceStringList) . " -> Too many strings to translate. Could be expensive. Continue?")) { + if (sizeof($sourceStringList) > 100) { + if (!$this->confirm("{$outputFile}, Strings: " . sizeof($sourceStringList) . " -> Many strings to translate. Could be expensive. Continue?")) { $this->warn("Stopped translating!"); exit; } @@ -96,7 +98,7 @@ public function translate() { // Chunk the strings because of the pricing // But also this will increase the speed of the translation, and quality of continuous translation collect($sourceStringList) - ->chunk(10) + ->chunk($this->chunkSize) ->each(function ($chunk) use ($locale, $file, $targetStringTransformer) { $translator = new AIProvider( filename: $file,