Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[delphi] Wielojęzykowe wersje programu - jak?

prokopcio 22 Paź 2010 19:38 950 12
  • #1 22 Paź 2010 19:38
    prokopcio
    Poziom 29  

    Witam.
    W jaki sposób robi się wielojęzykowe wersje programów ? Tak, żeby była łatwa edycja / dodanie kolejnego języka itp. Chodzi mi o Caption'y kontrolek, wyświetlane komunikaty (ShowMessage) itp....

    Dodano po 38 [sekundy]:

    ps. Dodam, że program już istnieje :)

    0 12
  • #3 23 Paź 2010 08:47
    prokopcio
    Poziom 29  

    TurboDelphiExplorer, nie do końca takiej odpowiedzi się spodziewałem - mam trochę swoich pomysłów i myślę, że sobie poradzę tylko nigdy tego nie robiłem i myślałem że jest jakiś ogólny "standard" którego większość osób się trzyma, chciałem "podpatrzeć" jak to robią inni (nie mylić z INI :P). Mimo wszystko dzięki :).

    0
  • #4 23 Paź 2010 09:16
    Dżyszla
    Poziom 42  

    Nie istnieje żaden standard. Najczęściej korzysta się właśnie z bibliotek zasobów, na które to zasoby "przepinana" jest aplikacja. Mankamentem tego jest fakt, że wszystkie komunikaty, które mają podlegać tłumaczeniu, warto trzymać w resourcestringach. Jeśli jednak chcesz, aby inni mogli rozbudowywać aplikację o własne tłumaczenia, to najlepiej użyć do tego właśnie plików INI lub zbliżonej konstrukcji opartej o pliki tekstowe.

    Tak w uzupełnieniu - mój punkt 2 najczęściej jest tylko warstwą pośredniczącą dla 3 lub 4.

    0
  • #5 23 Paź 2010 14:56
    arnoldziq
    Moderator Programowanie

    Dżyszla ma rację. Jest wiele pakietów, nawet darmowych, które służą do robienia lokalizacji.
    Ja sam, kiedyś, używałem pakietu (mogę coś w nazwie przekręcić) Balm-Soft Poliglot.
    Sam program integruje się z IDE. Po dodaniu go do projektu, wszystkie zasoby są zapisywane do pliku, który wygląda mniej więcej tak:

    Cytat:
    form1.label1.caption=napis nr 1
    form1.label1.hint=jakis tam hint
    itd. itp.

    Ustawiasz w kontrolce jaka jest spodziewana nazwa plików z tłumaczeniem, a komponent, na podstawie rozszerzenia, rozróżnia jaki to język, buduje dynamiczne menu zmiany języka, a nawet dodaje całkiem ładną flagę.
    Proste i szybkie. A także każdy użytkownik może zrobić swoje własne tłumaczenie w dowolnym języku.

    0
  • #6 23 Paź 2010 15:12
    gaskoin
    Poziom 38  

    W takich sprawach warto także zainteresować się XMLem

    Moderowany przez arnoldziq:

    Dałem koledze 3 dni na rozwinięcie swojej wypowiedzi, ale widzę, że kolega się nie kwapi specjalnie do tego.
    Cóż, szkoda, może dowiedzielibyśmy się wszyscy, co ma wspólnego "zainteresowanie się XML-em" z tworzeniem lokalizacji.
    Zgodnie z obietnicą: Ostrzeżenie #1.

    0
  • #7 23 Paź 2010 15:49
    arnoldziq
    Moderator Programowanie

    gaskoin napisał:
    W takich sprawach warto także zainteresować się XMLem

    W takich sprawach warto także zacząć uczyć się języków obcych.
    Drogi kolego gaskoin, proszę rozwinąć swoją wypowiedź, albo uznam ją za kompletnie bezsensowną i nagrodzę kolegę ostrzeżeniem.

    0
  • #9 23 Paź 2010 21:54
    arnoldziq
    Moderator Programowanie

    Dżyszla napisał:
    @arnoldziq - Dżyszla! ;)

    Przepraszam, to wina angielskiego obłożenia klawiatury w moim laptopie :(

    0
  • #10 24 Paź 2010 08:42
    prokopcio
    Poziom 29  

    Ja po prostu myślałem (już wspominałem), że jest jakiś standard i uzyskam odpowiedź adekwatną do pytania w stylu:
    1. Tworzysz plik ini z sekcjami językowymi
    2. w każdejsekcji wpisujesz np. label1.caption=Tekst Plski itp.
    3. w zależności od wybranego języka przeładowujesz..... poprzez (FindComponnent) itp.....
    lub jakiś przykład.

    Wystarcza mi odpowiedź Dżyszla : "Nie istnieje żaden standard"

    więc po prostu sobie zrobię po swojemu, coś wymyślę. Widziałem na mój gust piękną aplikację opartą na bazie danych MsAccess. gdzie były kolumny językowe i można było jedno obok drugiego pisać nowe języki, myślałem o podobnej rzeczy w excelu ale nie chciałbym stwarzać na użytkowniku obowiązku posiadania excela, może coś wymyślę.

    0
  • #12 24 Paź 2010 23:06
    prokopcio
    Poziom 29  

    Dzięki za podpowiedzi - ta ostatnia jest najbardziej trafna w moje oczekiwanie :)

    0
  • #13 26 Paź 2010 18:03
    gaskoin
    Poziom 38  

    Szczerze mówiąc nie zerknąłem nawet do tego tematu, przed chwilą dostałem maila o upomnieniu. Także jeżeli się da to proszę o usunięcie go.

    XML-a często się używa do lokalizacji aplikacji, napisanych w obojętnie jakim języku.

    Można utworzyć klasę ze słowami, zawierającą dwa pola:

    id_słowa
    string słowo

    oraz enuma który będzie zawierał id poszczególnych słów (np plik, edycja, pomoc itd), żeby ich nie pamiętać(id) tylko odwoływać się do nich słownie

    Serializujemy klasę ze słowami do XMLa, dla różnych języków robimy osobne pliki XML i w nich wstawiamy sobie id słów i samo słowo. Wygląda to mniej więcej tak:

    Code:
    <Frazy>
    
    <slowo>
    id=1
    sslowo = "plik"
    </slowo>

    <slowo>
    ...
    </slowo>
    ...
    </Frazy>


    W kodzie w delphi wystarczy więc tylko zrobić deserializację danych (najlepiej wrzucić to do listy/tablicy) i poszczególnym zmiennym zawierającym tekst etykiet czy czegokolwiek innego przypisać wartość z tablicy.

    Jest to proste łatwe i przyjemne. I nie wymaga bezsensownego parsowania danych jak w przypadku plików ini.

    0
  Szukaj w 5mln produktów