Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Języki w aplikacji
Forum PHP.pl > Forum > PHP > Object-oriented programming
adbacz
Piszę aplikację w której potrzebuję mieć języki, osobno dla treści edytowanej przez użytkowników, i osobno dla panelu administracyjnego. Będą nim zarządzać osoby z różnych krajów a i sama strona będzie zawierała treści w różnych językach. Wiem jak rozwiązać języki w treściach w bazie danych, i języki UI w plikach językowych. Problemem dla mnie jest rozgraniczenie w aplikacji tych dwóch wartości.

1. Jak nazwać obydwa języki? UILanguage i ContentLanguage? Może ktoś już kiedyś coś wymyślił, tylko ja tego nie znalazłem w G?
2. Znalazłem jakiś artykuł w którym ktoś pisał o language i locale. Czym to się różni? Czy to jest rozwiązanie mojego problemu?
3. Jak to rozwiązać w postaci kodu? Obydwie te rzeczy powinny mieć swoje własne klasy? Może jedną, jako Language|Localisation a w niej dopiero rozgraniczenie pomiędzy te dwa typy?

Języki UI i języki treści będą oczywiście inne. Języki treści będą dodawana dynamicznie przez panel administracyjny, ale pliki językowe UI będą dodawane tylko przez developerów, więc będą to dwie osobne listy języków.
kpt_lucek
W Symfony masz coś takiego, co nazywa się DOMAIN. W praktyce komponent http://symfony.com/doc/current/translation.html
adbacz
Dziękuję za odpowiedź, ale to troszkę mija się z moim problemem. Jak już wspominałem, wiem jak rozwiązać tłumaczenia w plikach językowych.
phpion
Nie bardzo wiem po co to rozgraniczać. Wersja językowa to wersja językowa, nieważne czy dla użytkowników czy administratorów. Dotyczy to zarówno treści definiowanych w panelu (baza danych) jak i zwykłych statycznych komunikatów (pliki lub też baza danych). Skoro administratorzy bedą mieć prezentowane treści w zależności od swojego języka to czym to sie różni od zwykłych użytkowników? Administrator to taki sam użytkownik tylko ze z większymi uprawnieniami. Opisz może bliżej problem bo w sumie nie do końca wiadomo o co chodzi.
adbacz
Załóżmy taką sytuację (nie rozgraniczamy tych języków):

Mamy panią Kasię z sekretariatu, która ma za zadanie uzupełnić stronę podanymi danymi (artykuły, kontakt i parę innych zakładek) z podanych plików DOC. Pani Kasia się loguje, wrzuca język Niemiecki i dostaje jebca, bo cały Panel jej zmienił język. A ona chciała tylko wrzucić artykuł o firmie w języku niemieckim, a tak na prawdę ma Panel w języku niemieckim i ma zagwozdkę, czy ona coś popsuła, jak teraz to cofnąć. Musi zmieniać z powrotem na polski, wejść w odpowiednie miejsce w Panelu, zmienić ponownie język na niemiecki i wrzucić treść. A co jeśli zapomni wrzucić tytułu, i pokaże jej się komunikat o błędzie w języku niemieckim, bo akurat edytowała język niemiecki?

Mam nadzieje, że to rozwieje wątpliwości zmiany języka, osobno dla treści i osobno dla UI.
Pyton_000
Ale jaki masz problem bo nie bardzo rozumiem?

Język dla treści definiujesz przy treści, a język dla UI w tabeli z tłumaczeniami dla UI
phpion
Juz widzę w czym problem: uzależniasz język wprowadzanej przez administratora treści od języka panelu. Ja zawsze robiłem to niezależne tj. w zasadzie obsługiwałem tylko język panelu. Wprowadzanie treści robiłem w ten sposób, ze dla listy zdefiniowanych języków tworzyłem pola formularza. Przykładowo jeśli mam do wprowadzenia tytuł i treść, a system obsługuje 3 języki to łącznie wyświetlam 6 pół - po 2 dla każdego języka. Języki grupuje w zakładki (np. JQuery UI) wyświetlając w tabach flagi obrazujące język. Domyślny język zawsze miał ustawioną walidacje na wymagalność, dla pozostałych pola były opcjonalne.
adbacz
Cytat(phpion @ 16.01.2017, 06:54:20 ) *
uzależniasz język wprowadzanej przez administratora treści od języka panelu.


Ale napisałem na początku, że chcę to zrobić niezależne.

Potrzebuję tyko pomysłu na to, jak to spiąć w kodzie, samo zarządzanie językami, przechowywanie listy języków.
Napisałem już, że mam ogarnięte pliki językowe i przechowywanie w bazie danych.
Puszy
Cytat(adbacz @ 16.01.2017, 13:07:21 ) *
Ale napisałem na początku, że chcę to zrobić niezależne.

Potrzebuję tyko pomysłu na to, jak to spiąć w kodzie, samo zarządzanie językami, przechowywanie listy języków.
Napisałem już, że mam ogarnięte pliki językowe i przechowywanie w bazie danych.


Phpion podał Ci rozwiązanie, wyświetlasz n pól formularza przy n języków lub robisz <select> z formularzu który zmienia język danych pól.

Poniżej rozwiązanie które stosuję.

adbacz
Może ja źle tłumaczę. Chodzi mi o kod PHP, rdzenia systemu. Pomysł na wdrożenie tego w OOP. Nie o kod HTML i widoki dla użytkownika :/

PS. Wszystko jest zawarte w 3 pytaniach na początku tematu, nie wiem już jak to inaczej opisać.
Puszy
Cytat(adbacz @ 16.01.2017, 16:01:22 ) *
Może ja źle tłumaczę. Chodzi mi o kod PHP, rdzenia systemu. Pomysł na wdrożenie tego w OOP. Nie o kod HTML i widoki dla użytkownika :/

PS. Wszystko jest zawarte w 3 pytaniach na początku tematu, nie wiem już jak to inaczej opisać.


No to ja nie rozumiem. Jeżeli obecnie korzystasz z i18n no to problem interfejsu masz z głowy. A dane które wprowadza użytkownik udźwignij w ten sposób który Ci pokazałem od strony kodu to jest zwykły formularz z tym że pola generowane są dynamicznie foreachem po aktywnych językach. Odpowiednie ustawienia pól formularza, walidacja pól językowych, flush do bazy i ot tyle.
adbacz
Przepraszam, ale czy:
Cytat
A dane które wprowadza użytkownik udźwignij w ten sposób który Ci pokazałem od strony kodu to jest zwykły formularz

to jest to samo co:
Cytat
Chodzi mi o kod PHP, rdzenia systemu. Pomysł na wdrożenie tego w OOP. Nie o kod HTML i widoki dla użytkownika

?

Poddaje się...
Puszy
Cytat(adbacz @ 17.01.2017, 16:13:06 ) *
Przepraszam, ale czy:

to jest to samo co:

?

Poddaje się...


Jeżeli dla Ciebie obsługa formularzy to HTML to ja się poddaję.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.