UNPKG

posthog-js

Version:

Posthog-js allows you to automatically capture usage and send events to PostHog.

52 lines • 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detectUserLanguage = detectUserLanguage; exports.applySurveyTranslationForUser = applySurveyTranslationForUser; var constants_1 = require("../constants"); var logger_1 = require("@posthog/browser-common/utils/logger"); var event_utils_1 = require("@posthog/browser-common/utils/event-utils"); var core_1 = require("@posthog/core"); var surveys_1 = require("@posthog/core/surveys"); var logger = (0, logger_1.createLogger)('[SurveyTranslations]'); /** * Detects the user's language using priority order: * 1. config.override_display_language (explicit override) * 2. person properties 'language' (allows programmatic control via posthog.identify()) * 3. navigator.language (browser language) * * TODO: Consider adding dynamic language change detection in the future: * - Listen to 'languagechange' event on window (https://developer.mozilla.org/en-US/docs/Web/API/Window/languagechange_event) * - Listen to config changes (once we add config change events to PostHog core) * - Re-render survey when language changes mid-session * * @param instance - PostHog instance to retrieve config and person properties * @returns The detected language code (e.g., 'fr', 'es', 'en-US') or null if not found */ function detectUserLanguage(instance) { return (0, surveys_1.detectSurveyLanguage)({ overrideLanguage: instance.config.override_display_language, storedPersonProperties: (0, core_1.isFunction)(instance.get_property) ? instance.get_property(constants_1.STORED_PERSON_PROPERTIES_KEY) : undefined, locale: (0, event_utils_1.getBrowserLanguage)(), }, logger); } /** * Applies translations to a survey based on the user's language from person properties * @param survey - The original survey object * @param instance - PostHog instance to retrieve person properties * @returns An object containing the translated survey and the language used (or null if no translation applied) */ function applySurveyTranslationForUser(survey, instance) { var userLanguage = detectUserLanguage(instance); if (!userLanguage) { logger.info('No user language detected'); return { survey: survey, language: null }; } var result = (0, surveys_1.applySurveyTranslation)(survey, userLanguage, logger); return { survey: result.survey, language: result.matchedKey, }; } //# sourceMappingURL=survey-translations.js.map