diff --git a/src/Contracts/Translator.php b/src/Contracts/Translator.php index dce9fc0..a84f0bb 100644 --- a/src/Contracts/Translator.php +++ b/src/Contracts/Translator.php @@ -11,8 +11,8 @@ interface Translator public function can(Locale|string $to): bool; public function translate( - iterable|string|int|float|bool|null $text, + bool|float|int|iterable|string|null $text, Locale|string|null $to, Locale|string|null $from = null - ): array|string|int|float|bool|null; + ): array|bool|float|int|string|null; } diff --git a/src/Integrations/Integration.php b/src/Integrations/Integration.php index 3031eb8..091512c 100644 --- a/src/Integrations/Integration.php +++ b/src/Integrations/Integration.php @@ -13,10 +13,10 @@ abstract class Integration implements Translator { use Extractable; - public static string $integration; - protected array $map = []; + public static string $integration; + abstract protected function request( array|string $text, Locale|string $to, @@ -29,10 +29,10 @@ public function can(Locale|string $to): bool } public function translate( - iterable|string|int|float|bool|null $text, + bool|float|int|iterable|string|null $text, Locale|string|null $to, Locale|string|null $from = null - ): array|string|int|float|bool|null { + ): array|bool|float|int|string|null { if (! is_iterable($text) && ! is_string($text)) { return $text; } diff --git a/src/Services/Translate.php b/src/Services/Translate.php index f771130..f1bfa4b 100644 --- a/src/Services/Translate.php +++ b/src/Services/Translate.php @@ -19,10 +19,10 @@ class Translate { public function text( - iterable|string|int|float|bool|null $text, + bool|float|int|iterable|string|null $text, Locale|string $to, Locale|string|null $from = null - ): array|string|int|float|bool|null { + ): array|bool|float|int|string|null { foreach ($this->translators() as $service) { if ($translated = $this->translate($service->translator, $text, $to, $from)) { return $translated; @@ -32,7 +32,7 @@ public function text( return $text; } - public function __call(string $name, array $arguments): array|string|int|float|bool|null + public function __call(string $name, array $arguments): array|bool|float|int|string|null { if (Str::startsWith($name, 'via')) { $provider = Str::of($name)->substr(3)->lower()->toString(); @@ -45,19 +45,19 @@ public function __call(string $name, array $arguments): array|string|int|float|b protected function via( string $translator, - iterable|string|int|float|bool|null $text, + bool|float|int|iterable|string|null $text, Locale|string $to, Locale|string|null $from = null - ): array|string|int|float|bool|null { + ): array|bool|float|int|string|null { return $this->translate($translator, $text, $to, $from) ?: $text; } protected function translate( string $translator, - iterable|string|int|float|bool|null $text, + bool|float|int|iterable|string|null $text, Locale|string $to, Locale|string|null $from = null - ): array|string|int|float|bool|null { + ): array|bool|float|int|string|null { $translator = $this->initialize($translator); if ($translator->can($to)) { diff --git a/tests/Helpers/Mocks.php b/tests/Helpers/Mocks.php index 35310ea..0c63f04 100644 --- a/tests/Helpers/Mocks.php +++ b/tests/Helpers/Mocks.php @@ -10,29 +10,29 @@ use LaravelLang\Translator\Integrations\Yandex; use Tests\Constants\Value; -function mockTranslators(array|string|int|float|null $text = null): void +function mockTranslators(array|float|int|string|null $text = null): void { mockDeeplTranslator($text); mockGoogleTranslator($text); mockYandexTranslator($text); } -function mockDeeplTranslator(array|string|int|float|null $text = null): void +function mockDeeplTranslator(array|float|int|string|null $text = null): void { $mock = mock(Deepl::$integration); $text ??= Value::Text1French; - $result = fn (string|int|float|null $text) => new TextResult((string) $text, 'fr'); + $result = fn (float|int|string|null $text) => new TextResult((string) $text, 'fr'); - $values = is_array($text) ? array_map(fn (string|int|float|null $value) => $result($value), $text) : $result($text); + $values = is_array($text) ? array_map(fn (float|int|string|null $value) => $result($value), $text) : $result($text); $mock->shouldReceive('translateText')->andReturn($values); mockTranslator(Deepl::class, $mock); } -function mockGoogleTranslator(array|string|int|float|null $text = null): void +function mockGoogleTranslator(array|float|int|string|null $text = null): void { $mock = mock(Google::$integration); @@ -45,7 +45,7 @@ function mockGoogleTranslator(array|string|int|float|null $text = null): void mockTranslator(Google::class, $mock); } -function mockYandexTranslator(array|string|int|float|null $text = null): void +function mockYandexTranslator(array|float|int|string|null $text = null): void { $mock = mock(Yandex::$integration);