Cześć,
Założenie pierwotne:
Aplikacja ma możliwość przełączania się pomiędzy językami, np. ang / de / pl. Jest pisana w react. Używam Redux do zarządzania stanami globalnymi aplikacji.
Moje rozwiązanie:
Póki co budowałem aplikację, tak że przygotowałem sobie zmienną `localeIso` trzymaną w store od Redux i przygotowałem obiekty słowników podzielone na moduły (podstrony) aplikacji. W komponentach podłączałem teksty, jako referencje do tych słowników, a język pobierałem z wspomnianego localeIso. Więc sobie przerenderowuję komponenty, gdy była taka potrzeba - zmiana języka. Przykładowo:
export const DevicesModuleDictionary: IDictionary<IDevicesModuleLanguage> = {
pl: { module: 'Urządzenia' },
en: { module: 'Devices' },
}
import { DevicesModuleDictionary as Dictionary } from '../../../../constants/dictionary/modules/devicesModule'
const Component = (): JSX.Element => {
const localeIso: ILocaleIso = useAppSelector(getLocaleIso) //ILocaleIso to: 'pl' | 'en'
return <>{Dictionary[localeIso].module}</>
}
export default Component
Nowe założenie:
No i takie moje rozwiązanie działa w porządku, jedynie problem jest taki, że pojawił się wymóg, że edytować i rozszerzać o nowe języki ma osoba, która nie potrafi i nie ma się uczyć programować. Więc kształt nawet JSON odpada :(.
Podsumowanie - pytanie:
I tu pojawia się moje pytanie, w jaki sposób Wy przygotowujecie pliki ze słownikami, z których aplikacja czyta teksty i wyświetla na podstawie wybranego języka? Macie jakieś godne polecenia rozwiązania, tak żeby potem nietechniczne osoby mogły modyfikować treści? A może są w ogóle standardy na to i poniosła mnie zbytnio kreatywna wyobraźnia przy moim rozwiązaniu?
W tym momencie myślę, czy nie wyrzucić obiektów moich słowników do JSON i czytać z nich zamiast obiektów JS (chyba nie będzie problemu, bo stringi będą bundlowane jako osobny plik, zamiast w index.js?). Wówczas osoba odpowiadająca za zawartość słowników mogłaby sobie pisać w Excel i potem użyć jakiegoś gotowego rozwiązania do konwersji na JSON. Tylko musiałby tworzyć strikte o kształcie moich obiektów. Wiem, że są takie konwertery, ale nigdy nie używałem i nie wiem co mogę się spodziewać - czy nie skończy się na pisaniu customowego, żeby dopasować obiekty.
Waszym zdaniem warto iść w takie rozwiązanie, czy może znacie lepsze? Macie jakie rady lub sugestie? :)
Z góry dziękuję.