Kilka wersji językowych programu

0

W jaki sposób można zaimplementować wielojęzyczność interfejsu użytkownika danego programu ? Chodzi o program działający (przynajmniej na razie) w wierszu poleceń. Myślałem nad takim rozwiązaniem:

#Wszystkie napisy w interfejsie użytkownika (IU), w samym kodzie, są trzymane w stringach.
#Wg określonego wzorca robię sobie pliki *.txt, które przechowują same napisy IU.
#Mam funkcję, która przy uruchamianiu programu wczytuje sobie te napisy z pliku do stringów.
#Jest plik config, w którym są przechowywane m. in. informacje o wybranej wersji językowej.
#Jeśli w pliku config nie została określona wersja, to przy uruchomieniu proszeni o jej wybór.
#W każdej chwili możemy zmienić wersję w trakcie działania programu (ta informacja zostanie też zapisana w config).

Idę dobrym tropem czy to złe rozwiązanie ?

0

$1 = 3 zł

0

1PLN = 1zł

1

gettext

1

Być może się nie znam, ale:

cichociemny napisał(a)

W jaki sposób można zaimplementować wielojęzyczność interfejsu użytkownika danego programu ? Chodzi o program działający (przynajmniej na razie) w wierszu poleceń.

To zależy jak Ty to chcesz wykonać; Jest wiele sposobów, począwszy od własnych implementacji aż do gotowych rozwiązań; Jeśli jest to mały programik, który nie chcesz odpicować i sprzedawać na cały świat (nie śmieje się) to śmiało możesz samemu opracować własny sposób, co oczywiście nie jest wadą, wręcz przeciwnie - pozwoli Ci się wykazać i przećwiczyć umiejętności;

  1. Wszystkie napisy w interfejsie użytkownika (IU), w samym kodzie, są trzymane w stringach.
  2. Wg określonego wzorca robię sobie pliki *.txt, które przechowują same napisy IU.

Tylko nie pliki *.txt... Jeśli nie chcesz by użytkownik mógł w prosty sposób modyfikować treści komunikatów to wpakuj je choćby do plików typowanych uprzednio szyfrując łańcuchy; Zawsze znajdzie się ktoś, kto zamiast Close będzie wolał Exit i popieprzy coś w pliku, co przełoży się później na błędy w programie; Już lepsze zdałyby się pliki *.ini, ale możliwość ich łatwej modyfikacji dalej istnieje;

  1. Mam funkcję, która przy uruchamianiu programu wczytuje sobie te napisy z pliku do stringów.

Chodzi Ci o wczytanie całego pliku do np. macierzy łańcuchów i wykorzystywanie ich? Nie wiem czy to dobry pomysł - trzeba by zrobić taką macierz widoczną dla całego programu (globalną), co raczej nie jest dobrym pomysłem;

  1. Jest plik config, w którym są przechowywane m. in. informacje o wybranej wersji językowej.
  2. Jeśli w pliku config nie została określona wersja, to przy uruchomieniu proszeni o jej wybór.

No nieźle, raczej zdałoby to egzamin; Nie wiem czy nie lepiej byłoby w pliku config podać nazwę pliku z zasobami języka; Wczytujesz ją do zmiennej i łączysz się z odpowiednim plikiem; Dużo aplikacji wykorzystuje ten sposób - każdy język w osobnym pliku; Można łatwo dodać później możliwość obsługi nowego języka - wystarczy podczas aktualizacji skopiować plik nowego języka do danego katalogu i gotowe, resztą zajmie się już program;

  1. W każdej chwili możemy zmienić wersję w trakcie działania programu (ta informacja zostanie też zapisana w config).

Czyli zmieniana by była nazwa pliku, z którego pobierane będą łańcuchy (jeśli chodzi o przykład, który podałem wyżej (z nazwą pliku));

Idę dobrym tropem czy to złe rozwiązanie ?

Jeśli jesteś pewny, że wiesz jak to zrobić oraz działać to będzie przez dłuższą chwilę to myślę, że warto będzie przysiąść nad tym, napisać i sprawdzić; Każdy sposób jest dobry pod warunkiem, że rozwiąże ten problem i będzie na tyle uniwersalny, że dodawanie nowych języków i obsługa istniejących nie sprawi większego kłopotu;

Zrób jak uważasz - napisz swój system i przetestuj go; Wyjdzie słabo - zmodyfikuj go lub skorzystaj z gotowych rozwiązań (posłuchaj @WinerFresh - GetText);

0

Zapraszam na odwiedzenie artykułu http://programistakuty.pl/kuty-language-changer/. Tam prezentuje mój darmowy program (bardzo łatwo konfigurowalny) do tworzenia wersji językowych programu. Opis podpowiada jak wykorzystać go w delphi oraz dołączony jest przykładowy projekt.

0

Na pewno Twój program będzie cieszył się zainteresowaniem, jednak według mnie zamiast odkopywać stary wątek mogłeś założyć nowy w odpowiednim do tego dziale forum: Off Topic - Oceny i recenzje;

Na pewno zdobyłbyś większe zainteresowanie i możnaby w przystępny sposób dyskutować na temat tego projektu, a także forumowicze odwiedzający tamten dział wiedzieliby, że będzie można coś ocenić, a nie tylko pomóc w rozwiązaniu problemu;

1

Qt ma odpowiednie narzędza do wielojęzykowości :)

http://qt-project.org/wiki/How_to_create_a_multi_language_application

1 użytkowników online, w tym zalogowanych: 0, gości: 1