'en/custom/gln', CallLanguageResolver::LANGUAGE_ENGLISH => 'en/custom/gln-en', ]; /** * Arabic (default) Survey prompts. These paths and filenames are unchanged. */ private const SURVEY_PROMPTS = [ 1 => 'en/custom/survey', 2 => 'en/custom/survey-q2', 3 => 'en/custom/survey-q3', 4 => 'en/custom/survey-q4', 5 => 'en/custom/survey-q5', ]; public static function glnPromptForLanguage(string $language): string { return self::GLN_PROMPTS[$language] ?? self::GLN_PROMPTS[CallLanguageResolver::LANGUAGE_ARABIC]; } /** * @return array */ public static function surveyPromptsForLanguage(string $language): array { return array_map( static fn (string $prompt) => self::localizedPrompt($prompt, $language), self::SURVEY_PROMPTS ); } public static function surveyThanksPromptForLanguage(string $language): string { return self::localizedPrompt(self::SURVEY_THANKS_PROMPT, $language); } /** * Arabic keeps the existing path untouched; English appends "-en" before * the file extension. */ public static function localizedPrompt(string $prompt, string $language): string { return $language === CallLanguageResolver::LANGUAGE_ENGLISH ? self::englishPromptPath($prompt) : $prompt; } public static function englishPromptPath(string $prompt): string { $lastSlash = strrpos($prompt, '/'); $lastDot = strrpos($prompt, '.'); if ($lastDot !== false && ($lastSlash === false || $lastDot > $lastSlash)) { return substr($prompt, 0, $lastDot) . self::ENGLISH_PROMPT_SUFFIX . substr($prompt, $lastDot); } return $prompt . self::ENGLISH_PROMPT_SUFFIX; } }