/home/bdqbpbxa/api-uniferx.goodface.com.ua/vendor/laravel/nova/src/Support/PendingTranslation.php
<?php
namespace Laravel\Nova\Support;
use Illuminate\Support\Str;
use Illuminate\Support\Traits\ForwardsCalls;
use JsonSerializable;
/**
* @mixin \Illuminate\Support\Stringable
*/
class PendingTranslation implements JsonSerializable
{
use ForwardsCalls;
/**
* The translation string.
*
* @var string|null
*/
public $key;
/**
* The translation replacement.
*
* @var array<string, string>
*/
public $replace = [];
/**
* The translation locale.
*
* @var string|null
*/
public $locale = null;
/**
* The translation transformation callback.
*
* @var (callable(\Illuminate\Support\Stringable):(\Stringable|string))|null
*/
public $transformCallback;
/**
* Create a new pending translation.
*
* @param string|null $key
* @param array<string, string> $replace
* @param string|null $locale
*/
public function __construct($key = null, $replace = [], $locale = null)
{
$this->key = $key;
$this->replace = $replace;
$this->locale = $locale;
}
/**
* Transform the translation.
*
* @param (callable(\Illuminate\Support\Stringable):(\Stringable|string)) $transformCallback
* @return $this
*/
public function transform(callable $transformCallback)
{
$this->transformCallback = $transformCallback;
return $this;
}
/**
* Get the resolved value.
*
* @param string|null $locale
* @return string
*/
public function value($locale = null)
{
$locale = $locale ?? $this->locale;
return (string) with(Str::of(
transform(__($this->key, $this->replace, $locale), function ($translation) {
return is_string($translation) ? $translation : $this->key;
}) ?? ''
), $this->transformCallback);
}
/**
* Dynamically proxy method calls to Stringable.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
return $this->forwardCallTo(Str::of($this->value()), $method, $parameters);
}
/**
* Get the translation as string.
*
* @return string
*/
public function __toString()
{
return $this->value();
}
/**
* Get the translation as json.
*
* @return string
*/
public function jsonSerialize(): string
{
return $this->value();
}
}