Clicky

Skocz do zawartości


Zdjęcie
- - - - -

[K3] Language

5 odpowiedzi w tym temacie

  • Zaloguj się, aby dodać odpowiedź

#1 ZuyPan

ZuyPan

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 171 postów

Napisano 18 maj 2012 - 21:08

Witam.
Przedstawiam Wam mój moduł internacjonalizacji.
Oto co wprowadza:
- możliwość używania kilku plików z tłumaczeniami dla jednego języka,
- korzysta z cache osobno dla każdego języka,
- wygodne używanie tłumaczeń z różnych plików,
- możliwość używania starej klasy bez kolizji z tym modułem.

Update z development do 1.0. Nowości:
- możliwość ustawienia czasu życia danych w cache,
- ustawianie dostępnych języków w configu,
- metoda zwracająca dostępne języki (sprawdza czy faktycznie foldery z nimi istnieją)
- dodano stałą prowadzącą do katalogu z językami.

Jak działa:
Dodana została funkcja ___(); Podaje się jej następujący string: "plikjezykowy.string_do_przetlumaczenia" i ona z pliku "plikjezykowy" (bądź cache) wyciągnie tłumaczenie dla frazy "string_do_przetlumaczenia".
Możliwe jest oczywiście podawanie dodatkowych wartości do zamienienia w już przetłumaczonym stringu. Jeśli podamy coś w stylu "zwykly_string" to wykorzystana będzie zwykła funkcja z klasy I18n.

Instalacja:
- wrzuć folder language do MODPATH,
- dodaj wpis do bootstrap w tablicy z modułami,
- ewentualnie ustaw plik konfiguracyjny (jego nazwa to language),
- utwórz folder w którym będą trzymane tłumaczenia dla danego języka np. pl lub us,
- dodaj tam plik lub kilka w którym będą trzymane tłumaczenia.

W folderze application jest prosty przykład użycia i plików językowych.

Git:
https://github.com/ZuyPan/Language

Oceniajcie, krytykujcie, jeśli chcecie używajcie :)


// Przeniosłem
// mck

Dziękuję i przepraszam za problem ;)

#2 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 18 maj 2012 - 21:57

Dodana została funkcja ___(); Podaje się jej następujący string: "plikjezykowy.string_do_przetlumaczenia" i ona z pliku "plikjezykowy" (bądź cache) wyciągnie tłumaczenie dla frazy "string_do_przetlumaczenia".
Możliwe jest oczywiście podawanie dodatkowych wartości do zamienienia w już przetłumaczonym stringu. Jeśli podamy coś w stylu "zwykly_string" to wykorzystana będzie zwykła funkcja z klasy I18n.

Załóżmy, że wpiszę 3 zwykłe zdania. Twoja funkcja rozbije to na 4 elementy (ostatni pusty), spróbuje załadować plik o nazwie jak pierwsze zdanie, a jeśli takiego nie znajdzie, to zwróci ponownie te 3 zdania, nieprzetłumaczone.
Chyba byłoby lepiej gdybyś usunął kropki z początku/końca, sprawdził ile pozostało kropek, explode(,,2), sprawdził czy pierwszy element może być nazwą pliku (brak znaków białych i specjalnych), sprawdził czy taki plik istnieje i w końcu zdecydował, czy to czasem aby nie jest tekst, który też przydałoby się przetłumaczyć funkcją Kohany ;)

#3 ZuyPan

ZuyPan

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 171 postów

Napisano 18 maj 2012 - 22:06

O taki przypadek dba preg_match na początku funkcji - przepuszcza tylko coś pod postacią "string.string" Bez kropek po drugim stringu itd. Można używać jedynie [a-z A-z 0-9] i "_". Test z trzema zdaniami wykazał u mnie, że zabrała się za to stara funkcja Kohany więc błędu jako tako nie ma.

#4 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 18 maj 2012 - 22:07

No i to chciałem usłyszeć (choć mogłem jednak looknąć w źródła ;))

#5 Riu

Riu

    Senior Mastah

  • Webmastahy
  • PipPipPip
  • 949 postów

Napisano 18 maj 2012 - 22:52

Przyznam szczerze, że wchodzą w ten wątek miałem nadzieję zobaczyć wątek o kolejnym module do obsługi języków, a nie samego i18n. Z jednej strony rozumiem koncepcje, ale jak zwykle mam "ale" ;) Trochę to mnożenie plików jest, a jeśli przyjmujesz że standardowe i18n dalej działa to tym bardziej.

Zaczynam się zastanawiać jak u Ciebie wygląda kwestia wydajności w aplikacjach skoro masz tendencje do robienia wszystkiego dwa razy (2 x ładowanie modułów -> workshop, teraz 2 x pliki językowe).

Debian/Ubuntu + Kohana/Hanariu/Phalcon + MongoDB/MySQL + HTML5/CSS3 + Node.js/jQuery + CEO Sport Magazyn/CEO Hanariu


#6 ZuyPan

ZuyPan

    Młodszy Mastah

  • Użytkownik
  • PipPip
  • 171 postów

Napisano 19 maj 2012 - 11:14

Zostawiłem I18n ze względu na to, ze inne moduły lub klasy, - które mógł stworzyć każdy - mogą z niego korzystać (co jest niezbyt rozsądne, ale jednak). Moim zdaniem posiadanie kilku dodatkowych plików z tłumaczeniami nie jest aż takim obciążeniem. To trochę tak jak narzekać na kaskadowość Kohany. Tworzy się multum teoretycznie zbędnych powielaczy klas i te pliki w pamięci muszę zostać. Kolejną kwestią jest to, że jeżeli dany plik językowy został chociaż raz użyty to jest on już w cache i nie będzie includowany. Chyba od takich zadań cache jest prawda? A co to za różnica czy ja szukam stringa po cache czy po pliku pl.php?

Btw czy ktoś w ogóle rzucił okiem na source?

Update! Nowości wypisałem w pierwszym poście.




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych