PDA

Orijinalini görmek için tıklayınız : PHP ile cok dil konusabilen programlar yazmak..


tepisenordek
08-11-2007, 21:14 PM
PHP Ingilizce bir programlama dilidir.En azindan fonksiyon isimleri ve programlama yapisi bu
sekildedir.Az cok Ingilizce bilmeniz bu dili kullanabilmeniz icin gereklidir.Ayni sey bu dil ile
yazilan programlar icin gecerli degildir :)

Bu yazimizda sizlere birden fazla dil icin bir programi nasil yazacabileceginizi kisacasi birden
fazla dil ile bir web sayfasini nasil olusturabileceginizi gosterecegiz :

1.Asagida dili_belirle.inc.php dosyasi yer aliyor.Bu kucuk program ile hangi dosyayi dil dosyasi
olarak web sayfalarimiza ekleyecegimize karar veriyoruz,
PHP:

1.
2. <?php
3.
4.
5. # Oturumu Baslat
6. session_start ();
7.
8. # Ongorulen dili belirliliyoruz,
9. $ongorulen_dil = "tr";
10.
11. # Cerez kullanilmak isteniyorsa 1 istenmiyorsa 0 olarak ata,
12. $cerez_kullan = 1;
13.
14.
15. # Cerez icin omur zamani (saniye olarak)
16. $cerez_omru = 3600 * 24 * 2; /* Toplam 2 gun */
17.
18.
19. # Eger siteden GET ile 'dil' degeri belirlenmisse $dili_al degiskenini
20. # olustur.Boylece istenilen dili belirlemis oluyoruz...
21. $dili_al = "";
22. $dili_al = $_GET['dil'];
23.
24.
25.
26. # 'dil' degiskeni siteden belirlenmis ise cerez dosyasina yaz.
27. # Cerez degiskeni mevcut ise oturuma kaydet...
28. if ( $cerez_kullan == 1 ) {
29.
30.
31.
32. if ( isset ($dili_al) ) {
33. setcookie ('dil', $dili_al, $cerez_omru);
34. }
35.
36.
37.
38. if ( isset ($_COOKIE['dil']) ) {
39. $_SESSION['dil'] = $_COOKIE['dil'];
40.
41.
42.
43. }
44. }
45.
46.
47.
48. # Baglanti iptal edildiginde oturumu yok et,cerez dosyasini zaman asimina
49. # ugrat.(Cerezin son kullanim tarihini geride bir zaman olarak ayarla)
50.
51.
52.
53. if ( isset ($_GET['oturumu_kapat']) ) {
54.
55.
56.
57. session_destroy ();
58.
59.
60.
61. if ( $cerez_kullan == 1 ) { setcookie ('dil',$dili_al, -3600); }
62. header ("Location: http://" . $_SERVER['HTTP_HOST'] . $PHP_SELF."?dil=$ongorulen_dil");
63.
64.
65.
66. }
67.
68. # Programin ana govdesi.
69.
70. function dili_belirle () {
71. global $ongorulen_dil;
72. global $dili_al;
73.
74.
75.
76. $dil = $_SESSION['dil'];
77.
78.
79.
80. $dil_parametreleri = func_get_args ();
81.
82.
83.
84.
85.
86.
87. # Siteye ilk kez geliniyorsa,
88. if ( !isset ($dil) ) {
89. session_register ('dil');
90. $dil = $ongorulen_dil;
91. }
92.
93.
94. # $_GET['dil'] siteden GET ile belirlenmis bir dil var ise,$dil
95. # degerini oturuma yaz,
96.
97. if ( isset ($dili_al) ) {
98. $dil = $dili_al;
99. $_SESSION['dil'] = $dil;
100.
101.
102.
103. }
104.
105. # Su anda $dil degiskeni $ongorulen_dil, $dili_al, veya $_SESSION['dil']
106. # degiskenlerinden biri ile belirlenmis durumda.
107. # Eger dil dosyasi da mevcut ise dil ile ilgili aciklamalar (o dilin degerleri)
108. # programa dil dosyasindan
109. # sabit degiskenler olarak,
110. # aktariliyor...
111.
112.
113. //fonksiyona dil ve dil dosyasi argumentleri aktarilmis ise,
114. if ( count ($dil_parametreleri) ) {
115.
116.
117.
118. //argumentlerin icinde dil degiskenin degeri mevcut ise,
119. if ( in_array ($dil, $dil_parametreleri) ) {
120.
121.
122.
123. //kac adet argument varsa o kadar donguyu calistir,
124. for ($i = 0; $i < count ($dil_parametreleri); $i++) {
125.
126.
127.
128. //Dil degeri esit ise Orn:en,tr,fr gibi,
129. if ( $dil_parametreleri[$i] == $dil ) {
130.
131.
132.
133.
134.
135.
136. //Dil degerini buldugunda onun bir ustunde yer alan anahtarin degerini dondur,
137. //Orn :english.inc,turkce.inc vb. Boylece include fonksiyonuna eklenecek dosyayi
138. //tayin edebiliyoruz...
139. return $dil_parametreleri[$i + 1];
140.
141.
142.
143. }
144. }
145. }
146. }
147.
148.
149.
150. return "";
151. }
152.
153.
154.
155. ?>


Yukarida yer alan programi dili_belirle.inc.php olarak kayit ediniz.

2.Bu program icin ornek olarak iki adet dil dosyasi hazirlayiniz : (english.inc ve turkce.inc
olarak)

PHP:

1.
2. <?
3. ####################################
4. # english.inc
5. #
6. ####################################
7.
8.
9. define ('GIRIS_GEREKLI', "Login Required");
10. define ('GIRIS', "Login");
11. define ('SIFRE', "Password");
12. define ('GONDER', "Submit");
13. ?>
14.
15. Yukaridaki dosyayi english.inc olarak kayit ediniz,
16.
17. <?
18. ####################################
19. # turkce.inc
20. #
21. ####################################
22.
23.
24. define ('GIRIS_GEREKLI', "Bu sayfaya girmek icin giris yapmalisiniz!");
25. define ('GIRIS', "Kullanici Adi");
26. define ('SIFRE', "Sifre");
27. define ('GONDER', "Gonder");
28. ?>



Yukaridaki dosyayi turkce.inc olarak kayit ediniz,

3.Cok dilde gosterilecek sayfayi hazirlayiniz : (Ornek olarak bir giris ekrani
kullanilmistir.Burada dikkat edilmesi gereken nokta bu dosyalarin,cok dilde gosterilecek dosyalar
icinde herhangi bir HTML ciktisi gonderilmeden once sayafaya eklenmesidir.Cunku
dili_belirle.inc.php dosyasi cerez kullanmaktadir ve bir kez HTML ciktisi istemciye gonderilmeye
basladiktan sonra cerez fonksiyonlari kullanamaz...)

PHP:

1.
2. <? include_once ("./dili_belirle.inc.php") ?>
3. <? include ( dili_belirle ( 'tr', './turkce.inc', 'en', './english.inc') )?>
4. <html>
5. <body>
6. Dil secimi icin ornek program.Son yaptiginiz secim 2 gun boyunca cerez dosyasinda saklanir <BR>
7. <a href='http://<?=$_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?dil=tr" ?>'>Turkce</a> |
8. <a href='http://<?=$_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?dil=en"?>'>English</a> |
9. <a href='http://<?=$_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?oturumu_kapat=1"?>'>Oturumu
10. Kapat</a>
11.
12.
13. <form method="post" action="http://<?=$_SERVER['HTTP_HOST'] .$_SERVER['PHP_SELF']?>">
14. <p>
15. <?=GIRIS_GEREKLI?>
16. </p>
17. <p>
18. <?=GIRIS?><br><input type="text" name="uid" size="8">
19. </p>
20. <p>
21. <?=SIFRE?><br><input type="password" name="pwd" size="8">
22. </p>
23. <p>
24. <input type="submit" name="girisformu" value="<?=GONDER?> ">
25. </p>
26. </form>
27. </body>
</html>