public function tf(string $key, array $args = null, N2nLocale ...$n2nLocales): string {
		$n2nLocales = array_merge($n2nLocales, $this->n2nLocales);
		$n2nLocales[] = N2nLocale::getFallback();

		if (!$this->has($key)) {
			$this->groupData->add($key, $args);
		}
		
		$text = $this->groupData->find($key, ...$n2nLocales);
		if ($text === null) {
			return StringUtils::pretty(TextCollection::implode($key, $args));
		}

		$text = @sprintf($text, ...$args);

		if (!!$text) {
			return $text;
		}

		return $key;
	}
public function tf(string $key, array $args = null, N2nLocale ...$n2nLocales): string {
		$n2nLocales = array_merge($n2nLocales, $this->n2nLocales);
		$n2nLocales[] = N2nLocale::getFallback();

		if (!$this->has($key)) {
			$this->groupData->add($key, $args);
		}
		
		$text = $this->groupData->find($key, ...$n2nLocales);
		if ($text === null) {
			return StringUtils::pretty(TextCollection::implode($key, $args));
		}

		$text = @sprintf($text, ...$args);

		if (!!$text) {
			return $text;
		}

		return $key;
	}
{@inheritDoc}