Si tengo un archivo llamado en_GB.ts
import { first_name } from '../lib/locales/en'; export const en_GB = { first_name, }; Y luego tengo index.ts que tiene algo como
import { en_GB } from './locale/en_GB'; Sé que esto hará que el archivo esté disponible para su consumo, pero si dejo que el usuario establezca su configuración regional y se establece en en_GB en una variable de this.self.locale .
¿Hay alguna manera de usar this.self.locale para usar los datos de la importación en_GB ?
este es mi código completo para index.ts
import { Name } from './lib/name'; import { en_GB } from './locale/en_GB'; interface SelfTypes { locale?: any; locales?: any; localeFallback?: any; name?: any; } export class Deets { greeting: string; public self: SelfTypes = {}; name: any; constructor(options: any, name: string) { this.greeting = name; this.self = { locale: options.locale || {}, locales: options.locales || 'en', localeFallback: options.localeFallback || 'en', }; console.log('this.self'); console.log([this.self.locale]); console.log('this.self'); this.name = new Name(this.self); } greet() { return `Hello, ${this.greeting}`; } }las importaciones de nivel superior solo se procesan una vez cuando se carga el archivo. Entonces, ¿qué pasa si alguien cambia su configuración regional de alguna manera?
Podría usar una importación dinámica , pero esto funciona de manera diferente.
const localData = await import(`./locale/${localeName}`)Tenga en cuenta que devuelve una promesa porque la carga de ese archivo es asíncrona. Entonces esto no irá en las importaciones en la parte superior del archivo.
Sin embargo, dependiendo de cómo esté empaquetando este código, ese enfoque puede causarle problemas. Debido a que no se pueden conocer todas las rutas posibles en el momento de la compilación, el empaquetador puede tener dificultades para saber qué archivos incluir en el paquete.
Por lo tanto, probablemente sea mejor tener una importación que contenga todas las configuraciones regionales, y simplemente puede seleccionar como clave de un objeto:
import locales from './locale'; const enGBorWhatever = locales[myLocaleName]