public function translate(string $key, array $data = []): string
    {
        if (!array_key_exists($key, $this->texts)) {
            return '{{' . $key . '}}';
        }

        if (empty($data)) {
            return $this->texts[$key];
        }

        return call_user_func_array('sprintf', array_merge([$this->texts[$key]], $data));
    }