UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

1 lines 7 kB
{"version":3,"file":"doku-dev-doku-fragment-providers.mjs","sources":["../../../../projects/doku-fragment/providers/src/i18n/i18n.service.ts","../../../../projects/doku-fragment/providers/src/i18n/i18n.provider.ts","../../../../projects/doku-fragment/providers/src/doku-dev-doku-fragment-providers.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n private route = inject(ActivatedRoute);\n\n /**\n * @default 'selected-language'\n */\n SELECTED_LANG_KEY = 'selected-language';\n\n /**\n * Get active language from query params or local storage.\n *\n * The value is normalized to uppercase.\n * Defaults to \"ID\" if not exists on local storage or when the language is not supported.\n */\n getActiveLanguage(): string {\n const paramLang = this.route.snapshot.queryParamMap.get('lang');\n if (paramLang && ['EN', 'ID'].includes(paramLang)) {\n return paramLang;\n }\n\n let value = localStorage.getItem(this.SELECTED_LANG_KEY) || 'ID';\n value = value.toUpperCase();\n if (['EN', 'ID'].includes(value)) return value;\n return 'ID';\n }\n\n /**\n * The language value will be normalized to uppercase.\n */\n setActiveLanguage(language: string) {\n const normalizedLanguage = language.toUpperCase();\n localStorage.setItem(this.SELECTED_LANG_KEY, normalizedLanguage);\n }\n}\n","import { DOCUMENT, registerLocaleData } from '@angular/common';\nimport { HttpClient, provideHttpClient } from '@angular/common/http';\nimport * as en from '@angular/common/locales/en';\nimport * as id from '@angular/common/locales/id';\nimport {\n APP_INITIALIZER,\n EnvironmentProviders,\n LOCALE_ID,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { MessageId, TargetMessage, loadTranslations } from '@angular/localize';\nimport { map, tap } from 'rxjs';\nimport { I18nService } from './i18n.service';\n\nregisterLocaleData(en.default, 'en');\nregisterLocaleData(id.default, 'id');\n\ninterface I18nProviderOptions {\n /**\n * The name of the locale or language to be retrieved.\n *\n * @default 'selected-language'\n */\n key?: string;\n\n /**\n * Public directory where locales to be fetched.\n *\n * @default \"assets/locales\"\n */\n localeDirectoryPath?: string;\n}\n\nexport function provideI18n(options?: I18nProviderOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideHttpClient(),\n {\n provide: LOCALE_ID,\n useFactory: (i18nService: I18nService, document: Document) => {\n // Set custom key for the selected language.\n // We set the options on this provider because it first called\n // rather than putting it to the APP_INITIALIZERS.\n if (options?.key) {\n i18nService.SELECTED_LANG_KEY = options.key;\n }\n\n const locale = i18nService.getActiveLanguage();\n\n // Set locale to the html lang attribute/\n document.documentElement.lang = locale.toLowerCase();\n\n return locale;\n },\n deps: [I18nService, DOCUMENT],\n },\n {\n provide: APP_INITIALIZER,\n useFactory: (http: HttpClient, localeId: string) => {\n const localeDir = normalizeDirPath(options?.localeDirectoryPath || 'assets/locales');\n return () =>\n http\n .get<Record<string, Record<string, string>>>(\n `${localeDir}/${localeId.toLowerCase()}.json`\n )\n .pipe(\n map((res) => res['translations'] as Record<MessageId, TargetMessage>),\n tap((translations) => loadTranslations(translations))\n );\n },\n deps: [HttpClient, LOCALE_ID],\n multi: true,\n },\n ]);\n}\n\nfunction normalizeDirPath(path: string) {\n let normalizedPath = path;\n\n if (path.startsWith('/')) {\n normalizedPath = normalizedPath.substring(1);\n }\n\n if (path.endsWith('/')) {\n normalizedPath = normalizedPath.substring(0, normalizedPath.length - 1);\n }\n\n return normalizedPath;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}