Skip to content

Implement a new component for a better UX of Tags - #105

Merged
Genarito merged 2 commits into
devfrom
language-selector
Aug 27, 2026
Merged

Implement a new component for a better UX of Tags#105
Genarito merged 2 commits into
devfrom
language-selector

Conversation

@GonzzaG

@GonzzaG GonzzaG commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

const [locale, setLocale] = useState<'en' | 'es'>('es')
const [locale, setLocaleState] = useState<Locale>(() => {
const storedLocale = localStorage.getItem(LOCALE_STORAGE_KEY)
return storedLocale === 'en' || storedLocale === 'es' ? storedLocale : 'es'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Está bien la lógica pero es poco escalable. Considerar el siguiente código:

const LOCALES = ['en', 'es'] as const
type Locale = typeof LOCALES[number]
const LANG_SET: Set<Locale> = new Set(LOCALES)

Lo que hace esto es definir Locale como todos los valores posibles de LOCALES si llegáramos a accederlos con índices numéricos (por eso el typeof LOCALES[number]).

Y después crea un Set para poder consultar rápidamente si un valor está dentro o no (es más rápido que un arreglo, ya que hace la búsqueda en un tipo log N y no en N como el arreglo).

Luego, al momento de setearlo, se puede simplificar a:

return LANG_SET.has(storedLocale) ? storedLocale : 'es'

Si el día de mañana agregamos un lenguaje, solo hay que agregarlo al arreglo LOCALES

@Genarito
Genarito merged commit aa77bf8 into dev Aug 27, 2026
1 check passed
@Genarito
Genarito deleted the language-selector branch August 27, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants