Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[tut] LanguagePack , czyli jak dodać inny język do własnego programu.


Rekomendowane odpowiedzi

Opublikowano

LanguagePack na plikach " .ini " , czyli jak dodać inny język do własnego programu.

 

 

Jest to przkład jak można dodawać jezyki do własnego programu w autoit.

 

Opiera się on o pliki .ini które również po skompilowaniu programu .au3 można edytować w edytorze tekstowym,

dodając nowe języki i nowe tłumaczenia, bez konieczności ponownego kompilowania pliku .au3

 

Plik LanguagePack znajduje się w załączniku.

 

28.01.2012

- Nazwy języków zmieniono na nazwy w ich ojczystych językach , dzięki temu nie trzeba ich dodatkowo tłumaczyć.

29.01.2012

- Dodano ostrzeżenia przed zamknięciem się programu, jeśli pliki .ini zostały źle edytowane.

4.03.2012

Pliki .ini muszą być w formacie ANSI inaczej autoit ma problem z odczytaniem z nich danych.

Na razie nie umiem do tego napisać komunikatu o błędzie, gdy plik okaże się w formacie utf-8.

 

Plik można sprawdzić miedzy innymi w:

http://onlinescan.avast.com/

http://virusscan.jot...6f2d98824357104

LanguagePack.zip

Kocham mpcforum.pl!!!

18706.png

Opublikowano

#cs ----------------------------------------------------------------------------


Author:		 tele


#ce ----------------------------------------------------------------------------
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Include <String.au3>
#include <Array.au3>

#Region ### START Koda GUI section ### Form=d:\zainstalowane\autoit3\koda\forms\form4a.kxf

$Form1_1 = GUICreate("Kalkulator monet", 741, 727, 295, 145)

;_______________________________ 1 ZAKLADKA--------------------------------
$PageControl1 = GUICtrlCreateTab(8, 8, 724, 712)

$TabSheet4 = GUICtrlCreateTabItem("Kal. Opłacalnosci")
$Button49 = GUICtrlCreateButton("Otwórz", 624, 72, 91, 41)
$Label81 = GUICtrlCreateLabel("Kalkulator systemowy", 544, 48, 173, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Label19 = GUICtrlCreateLabel("Kalkulator opłacalnoci złotych monet.", 80, 64, 253, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

;----------------------------------------2 ZAKLADKA-----------------------------
$TabSheet5 = GUICtrlCreateTabItem("Zmień język")  ; <--- "Zmień język"
$Label16 = GUICtrlCreateLabel("Aktualny język :", 80, 112, 95, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Combo6 = GUICtrlCreateCombo("", 207, 112, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) ; Jezyki

GUISetState(@SW_SHOW)

;------------------------------------------KONIEC ZAKLADEK-------------------------





;----------------------------------------POCZATEK PROGRAMU DO GUI ( WCZYTUJE USTAWIENIA DOMYSLNE)-----------------------

		If FileExists(@WorkingDir&"\Language\BazaLanguage.ini") Then
		   $jjdefault = IniReadSection(@WorkingDir&"\Language\BazaLanguage.ini", "Language" )
		Endif	



 ;	[0,0] - ilość kluczy	   [0,1] - niewykorzystane
 ;	[1,0] - wartosc 1 klucza   [1,1] - nazwa 1 klucza
 ;	[2,0] - wartosc 2 klucza   [2,1] - nazwa 2 klucza



$x1  =  $jjdefault [1][1]		; czyta nazwe wartosci 1 klucza, czyli liczbę jako jezyk domyslny
$x2  =  $jjdefault [$x1][1]   ; nazwa jezyka default


  MsgBox(0, "Nasz język to: ",$x2)				   ; Nazwa jezyka default
  MsgBox(0, "Liczba jezykow: ",$jjdefault[0][0]-1)   ; Liczba dostepnych jezyków


If FileExists(@WorkingDir&"\Language\"&$x1&".ini") Then  ; czyta plik z danym jezykiem
$jjdefault2 = IniReadSection(@WorkingDir&"\Language\"&$x1&".ini", "jezyk" )
  endif

  MsgBox(0, "Nazwa przetłumaczona to: ",$jjdefault2 [1][1])
 ; GUICtrlSetData($Button49, $jjdefault2[1][1]) ; wkleja nazwe(tekst) wartości 1

 WklejaJezyk()   ; jedna z naszych funkcji, ktora wkleja jezyk

  ;____________________________



			   For $i = 2 to $jjdefault[0][0] Step +1  ; ma dodawać od 2 wartosci do konca co 1

				   GUICtrlSetData($Combo6, $jjdefault[$i][1],$x2)  ; wkleja do combo6 jezyki, przy czym $x2 to jezyk domyslny

			   Next
  ;____________________________



;-------------------- NASZE GUI JUZ GOTOWE----------------------




;-------------------- GLOWNA CZESC PROGRAMU----------------------

While 1
$nMsg = GUIGetMsg()
Switch $nMsg				   ;<-- poczatek przycisków
   	 Case $GUI_EVENT_CLOSE
		Exit

		Case   $Button49   ; Guzik uruchamiajacy kalkulator systemowowy
		CalculatorSys()


		Case   $Combo6
	   		 Zsr()

		EndSwitch



 Wend

 ;--------------- KONIEC GLOWNEJ CZESCI PROGRAMU-----------------




 ;------------------------------------------------------
 ;---------FUNKCJE:  -----------------------------------


;__________________________________________________________________________________________
 Func CalculatorSys()   ; FUNKCJA URUCHAMIA KALKULATOR SYSTEMOWY

  	  Run("calc.exe")   		

 EndFunc
 ;________________________________________________________________________________________

 ;___________________________________________________________________________________________
Func Zsr()   ; FUNKCJA


  				; czyta combo6 i przyrównuje z tekstem
  		  $last=''
		 $read = GUICtrlRead($Combo6)
  		  If $last <> $read Then
   	  $last = $read



	;-----------------------PETLA------------------------------------------------------
	  For $i = 2 to $jjdefault[0][0] Step +1  ; ma dodawać od 2 wartosci do konca co 1

				If $read = $jjdefault[$i][1] Then  ;  Jezeli tekst z combo6 = tekstowi z pliku to...

	   		  IniWrite(@WorkingDir&"\Language\BazaLanguage.ini", "Language", $jjdefault [1][0], $i)  ;Zapisuje: plik,secja,klucz,wartosc


	   				  If FileExists(@WorkingDir&"\Language\BazaLanguage.ini") Then
							$jjdefault = IniReadSection(@WorkingDir&"\Language\BazaLanguage.ini", "Language" )
						 Endif


			MsgBox(0, "wartosc wklejona jezyka: ",$jjdefault [1][1])


	   				  If FileExists(@WorkingDir&"\Language\"&$jjdefault[1][1]&".ini") Then  ; czyta plik z danym jezykiem
							$jjdefault2 = IniReadSection(@WorkingDir&"\Language\"&$jjdefault[1][1]&".ini", "jezyk" )
						 Endif



			MsgBox(0, "Nazwa przetłumaczona to: ",$jjdefault2 [1][1])



				   	 WklejaJezyk()


	   		EndIf
	   Next
	;  --------------------------KONIEC PETLI ------------------------------------------


	Endif

 EndFunc
;___________________________________________________________________________________________




;__________________________________________________________________________________________
 Func WklejaJezyk()   ; FUNKCJA WKLEJA JEZYK

  	  GUICtrlSetData($Button49, $jjdefault2[1][1]) ; wkleja nazwe(tekst) danego jezyka wartości 1 w guzik
	 GUICtrlSetData($TabSheet4, $jjdefault2[2][1])
	 GUICtrlSetData($Label81, $jjdefault2[3][1])
	 GUICtrlSetData($Label19, $jjdefault2[4][1])

 EndFunc
 ;________________________________________________________________________________________

  • 2 miesiące temu...
Opublikowano

trochę czaje trochę nie :P

 

mogę to wykorzystać w swoim bocie ? którego będę potem sprzedawał ?

 

czy raczej muszę sobie coś innego wymyślać ?

Opublikowano

ahahaha wole zrobic 8 plikow i pozadnie nie takie cos zrobilem 8 polączylem w 1 i git ;P

[You]Znasz Php/Msql/Inne? Lub znasz sie na grafice napisz na pw!

Opublikowano

niezbyt to przydatne. Jak ktoś pisze program gdzie chce mieć pare języków to najlepiej zrobić to samemu, bo z twojego kodu tylko 1 linijka jest (w miare)uniwersalna

If FileExists(@WorkingDir&"\Language\"&$x1&".ini") Then jjdefault2 = IniReadSection(@WorkingDir&"\Language\"&$x1&".ini", "jezyk" )

 

i proszę Cię. Usuwaj puste linie... (przynajmniej te większe odstępy)

Opublikowano

Istnieje tylko jeden Ogólnie Poprawny sposób na zapisywanie różnych wersji językowych i jest to formatowanie XML, ze względu na powszechność edytorów i łatwość obsługi dla przyszłych tłumaczy. Nie możesz od programisty oczekiwać, że będzie pisał po turecku. Dopiero turecki fansite może się tym zająć...

Ta sygnatura jest pusta.

  • 1 miesiąc temu...
Opublikowano

Jarx88

 

Możesz sobie wykorzystać do czego chcesz , po to jest ten dział , by inni mogli się podzielić.

 

 

 

No zgadza sie moj program nie jest doskonały , ale lepsze niż nic .

Program działa wolniej, wczytuje razy jezyk polski, pierw jako zmienne i chyba drugi raz jako tłumaczenie,

odświezanie programu też nie wyglada zbyt pieknie. ( nie dałem rady inaczej )

 

" Tronowo "

1. Jego głównym celem było intuicyjne podzielenie na pliki tekstowe , żeby każdy mógł edytować.

2. Program dzieki temu jest lżejszy - szybciej się uruchamia, przy starcie wczytuje tylko najważniejsze pliki.

 

i proszę Cię. Usuwaj puste linie... (przynajmniej te większe odstępy)

Sopelek997

One są specjalnie - ułatwiają odnalezienie się w programie , program tworzyłem notepad++

( on potrafi zawijać np. definicje i widzisz tylko to co chcesz prawie, na jednej stronie )

- dzieki temu program jest bardziej czytelny.

 

4ggr35510n

Trohę cie nie zrozumiałem ....

pliki konfiguracyjne pisze się miedzy innymi w .ini i .xml , ja uzyłem .ini bo było mi łatwiej.

Jeśli chodzi .xml to się zgadzam , może i byłby lepszy , ze wzgledu

- na użycie tam formatowania utf-8.

Dzięki temu znika czesciowo prroblem z kodowaniem znaków i nawet chińczyk mógłby edytować pliki.

Można by jeszcze dopisać menu w którym otwierało by sie nowe okno i pytało co dodać i najlepiej gdyby to było jako dodatkowy

pod programik , dlaczego ?

Jak wspomniałem , gdyby to napisać w 1 pliku , program jest odczuwalnie cięższy , podzielony - szybciej się uruchamia.

Kocham mpcforum.pl!!!

18706.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...