Wielojęzykowość, Czekam na Wasze propozycje |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Wielojęzykowość, Czekam na Wasze propozycje |
17.04.2006, 15:28:25
Post
#21
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Jabol: Muszę się zgodzić z Borą, wygląd pliku jest podobny do plików INI,a wprowadzenie tego w życie jest bardzije zamotane niż INI. Mój skrypt jest tylko silnikiem (albo słowo ostatnio bardzo popularne - frameworkiem) i nie ja go będe dalej rozwijał. Parse_ini_file jest w php4, pod które skrypt (niestety)...
Pewnie zaraz padnie pytanie: "Po co ten temat ?". Szukam jakieś alternatywy dla plików ini i wielkich tablic. pozdrawiam |
|
|
18.04.2006, 17:56:26
Post
#22
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) |
Cytat(Fipaj @ 2006-04-17 14:24:45) A co, jeśli w tłumaczonym tekście wystąpi znak "=" bądź przełamanie linii? Użyć encji. Przełamanie lini jest rozwiązane w plikach konfiguracyjnych smarty. Jeszcze jakieś trudne pytania? -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
18.04.2006, 18:01:58
Post
#23
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) |
Cytat(Fipaj @ 2006-04-17 14:24:45) A co, jeśli w tłumaczonym tekście wystąpi znak "=" bądź przełamanie linii? Przeczytaj dokładnie to zauważysz, że oba problemy już są rozwiązane.Osobiście w pewnym projekcie używałem też takiej opcji: tabela: txts pola: id int name varchar pl text de text Tyle, że wiedziałem ile będzie języków... Teksty ogólne miały w name jakąś nazwę i je ładowałem do smarta i potem tylko Kod {$txts.PageName} Teksty, które miały tam NULL były modułami innych modułów i z nich też były podlinkowane, także nie trzeba było się o nie martwić.
Ten post edytował Jabol 18.04.2006, 18:05:24 |
|
|
26.04.2006, 11:57:49
Post
#24
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) |
Witam,
Kilka dni temu pisalem klase opbsugujaca jezyk w moim frameworku. Wyglada to tak: Klasa Language : __construct($sLanguage = null) 1. jezeli podano w parametrze jezyk, ustaw go. 2. jezeli nie podano go, a ustnieje ciastko z nazwa jezyka (tlumaczenie strony w czasie trwania sesji), to zastosuja taki jezyk 3. w innym przypadku stosuj dod`myslny. __get() dzieki ktorej w prtosty sposob korzysta,my z jezyka. W pliku english.php mam tablice: $aLanguage['main_menu_custam'] = 'SuperTurboMegaGigaUltraString '; W aplikacji odwoluje sie do tego tak: $oLanguage->main_menu_custam; W szablonach wpisuje: {$LANGUAGE.MAIN_MENU_CUSTAM}. Dziala :] |
|
|
27.04.2006, 07:20:49
Post
#25
|
|
Grupa: Zarejestrowani Postów: 67 Pomógł: 0 Dołączył: 13.09.2004 Ostrzeżenie: (0%) |
Przepraszam będe pisał bez shifta bo siedze w szkole
w każdym razie: wg. mnie najlepszym rozwiązaniem jest to które już oferuje pewien mod do php (nie pamiętam niestsety nazwy ale jest nawet jego opis gdzieś w manualu): polega on na korzystaniu z tablic zawierających całe tłumaczenia stringów i wywoływanie tłumaczeń np poprzez funkcję a przedtem na załądowaniu tej tablicy do pamięci. Potem wystarczy napisać sobie edytor w c++ (czy co tam chcecie) który wyciąga wszystkie stringi zawarte w tych funkcjach np. w podanym katalogu i przedstawia wygodny formularz do tłumaczenia. Za to w plikach .php pisazemy sobie jakimś językiem referencyjnym np. angielskim. Pomysł programu pomocniczego to już idea barzeij wniesiona przeze mnie (albo plagiat czyjejś - nie pamiętam) ale takie rozwiązanie wydaje się wygodne i szybkie. -------------------- current: nexcite cms (0.2.5) running on top of netsource framework (0.5.3)
workbench: nsapi | php 5.1.2 | mysql 5.0.18 | phpmyadmin 2.9 rc1 | zend studio 5.2.0 | apache/2.2.0 (linux/suse) |
|
|
27.04.2006, 07:35:10
Post
#26
|
|
Grupa: Zarejestrowani Postów: 505 Pomógł: 0 Dołączył: 8.01.2005 Ostrzeżenie: (0%) |
takie wlasnie (podobne) rozwiaznie jest w klasie Babel, ktory korzysta z plikow .po / .mo z gettexta. nie trzeba pisac zadnego programu w c++, wystarczy skorzytac z progmau gettext
xgettext example01.php -L php -o pl_PL.po --keyword=_r --keyword=_p i wycina do pliku po wszystkie ciagi tekstowe poprzedzone funkcja _r i _p -------------------- /dev/blog : http://www.santyago.pl/
|
|
|
27.04.2006, 10:47:56
Post
#27
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 25.04.2006 Ostrzeżenie: (0%) |
|
|
|
5.05.2006, 13:20:27
Post
#28
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
Odkopuje temat bo zastanawiam sie nad tym w jaki spsob, zgrabnie pobierac dane z tablicy z jezykami wewnatrz obiektu.
Moja tablica wyglada mnie wiecej tak:
Trzymam ja w pliku pl_PL.lang.php i includuje w zaleznosci od ustawien lokalizacji. Teraz aby moc uzywac tej tablicy w klasie, przekazuj ja do konstruktora:
Robie tak bo nie chce uzywac globali. Zastanawiam sie teraz, czy dalo by sie to jednak inaczej zapisac. Moze zamiast przekazywania tablicy uzyc singletonu zawierajacego ta tablice i odwolywac sie do niej np tak:
? Ogolnie chodzi mi o to zeby wewnatrz obiektu moc sie dostac do pliku jezykowego bez uzywania global. Ma ktos jakies pomysly? |
|
|
5.05.2006, 21:36:48
Post
#29
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) |
Bardzo przydatny temat dla wszystkich którzy odwiedziają ten wątek: http://forum.mojavi.org/index.php?showtopic=1502&st=0
Są tam diagramy które ilustrują istotę działania. Polecam uwadze wszystkich. -------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
20.05.2006, 09:54:11
Post
#30
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 7.03.2006 Ostrzeżenie: (0%) |
Mam taką tablicę
Chciałbym żeby zamiast za każdym razem pisać (aby się wyświetliło Łukasz Peroń)
żeby stosować krótką forme (taką jak niżej) ale o tym samym działaniu co powyższy kod
Może ktoś ma pomysł jak to zrobić, wielkie THX Ten post edytował AveNET 20.05.2006, 09:56:12 |
|
|
20.05.2006, 21:20:50
Post
#31
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
Cytat(Seth @ 2006-05-05 13:20:27) Ogolnie chodzi mi o to zeby wewnatrz obiektu moc sie dostac do pliku jezykowego bez uzywania global. A może po prostu nie używać tablicy? W końcu jest tyle "ładniejszych" rozwiązań? Można np. przechowywać te dane w pliku pl_PL.ini (.php) który nie tylko jest szybciej parsowany, niż php, to na dodatek - łatwiejszy do generowania z utomatu. Równie dobrze - można te dane przechowywać przecież w mini klasach, a wtedy korzystanie z sigletona staje się już banalne. Choć osobiście najbardziej żałuję, że prace z plikami .po / .mo z gettexta jest w tej chwili tak skomplikowana, ponieważ najchętniej na nie przerzuciłbym cały ten problem - choćby z uwagi na wydajność i wszechstonność (obsluga liczb pojedynczych i mnogich, odmiany itp.) -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
1.06.2006, 20:23:06
Post
#32
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 23.11.2004 Ostrzeżenie: (0%) |
a co powiedzie o languagefactory::GetLang()
a pozniej w miejscach w tpl <? $lang->get('id_slowa');?> ? |
|
|
4.06.2006, 19:22:50
Post
#33
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Moim zdaniem, (ja tak zrobilem w moim programie ktory teraz pisze), w pliku php, zrobic array :
Angielskie:
Polskie:
Wyjasniam, texty w plikach sa zachowane w tej postaci, znaczy sie "key" od przeumaczonego slowa albo zdanie to jest to samo zdanie tylko ze po angielsku, wtedy bedziesz wyswietlal error np. user not found, to poszuka w array czy jest index z takim kluczem, jak tak to go wyswietli a jak nie to wyswietli to zdanie ktore pisales, ktore tez jest poprawne. a oto funkcja to tumaczy:
t tak mozesz byc pewien ze nigdy nikt nie zobaczy bledu zwiazanego z nie znalezieniem polskiego (czy innego) odpowiednika. |
|
|
3.12.2006, 09:13:15
Post
#34
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 7.08.2006 Ostrzeżenie: (0%) |
Witam
Odgrzeję kotleta... Piszę średniej wielkości aplikację i także stanąłem przed problemem wielojęzyczności. Miałem zamiar rozwiązać to przy pomocy plików językowych zawierających tablice z całymi "zdaniami" Jednak po przeczytaniu tego tematu zainteresowałem się plikami .po/.mo (zwłaszcza, że miałem z nimi już do czynienia przy okazji tłumaczenia jakiejś gry...) I teraz mam prośbę do kogoś kto kożysta z tego sposobu tłumaczenia w php. Proszę o jakieś fragmęty kodu jak się używa tych plików. I jescze nasówa mi się pytanie czy na serwerze nie musi być coś doinstalowywane żeby obsługa tych plików była możliwa, bo jeśli tak to niestety ten sposób lokalizacji odpada Pozdrawiam |
|
|
3.12.2006, 12:55:27
Post
#35
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
-------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
3.12.2006, 17:03:29
Post
#36
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) |
Można też skorzystać z TMX, zunifikowany opis XMLowy.
-------------------- CMS dla Twojej firmy
Wojciech Małota |
|
|
4.12.2006, 10:55:20
Post
#37
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
Nie wiem czy ktoś wogóle o tym słyszał czy używał, ale ja osobiscie pracuje z gettextem. Bardzo szybki, duzo narzedzi okienkowych, z webowymi jest gorzej, chociaz sam juz napisałem cos takiego ale jest jeszcze w wersji wczesnych beta, jesli nie masz tlumaczenia dla klucza, to pokazuje ci sie klucz, niby wymaga od uzytkownika zeby klucze byly pelnymi zdaniami, ale chociaz szablony dla widoku sa czytelniejsze. Problemy: trzeba przygotowywac pliki poprzez kompliacje.
Jeszcze jeden blad to to ze serverrobi cache plikow skompilowanych i przy czestej edycji nie widac poprawek. Ale sa sposoby na obejscie tego problemu Ten post edytował Sh4dow 4.12.2006, 10:57:13 -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
7.12.2006, 23:18:16
Post
#38
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
Właśnie o gettext była mowa, gdy wspominaliśmy o Babel oraz plikach .mo i .po
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
21.03.2007, 20:27:11
Post
#39
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 7 Dołączył: 30.09.2006 Ostrzeżenie: (0%) |
Problem multijęzykowości rozwiązałem w prosty sposób. Mam taką strukturę katalogów:
Kod | Languages | -- Polish | -- | -- global.php | -- | -- header.php | -- | -- footer.php | -- | -- cośtam.php | -- English | -- | -- global.php | -- | -- header.php | -- | -- footer.php | -- | -- cośtam.php I w bazie mam np. artykuły: id, pl_title, eng_title, pl_body, eng_body W cookies trzymam pl lub eng, i sprawdzam w aplikacji, czy jest pl, czy eng. Jeżeli nie ma lub jest inne, to korzystam z default (pl) i ładuję odpowiednie pliki językowe w odpowiednich częściach aplikacji, oraz pobieram odpowiednie treści z bazy danych. Proste, i wydajne |
|
|
21.03.2007, 20:30:23
Post
#40
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 27.09.2024 - 03:31 |