Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Object-oriented programming _ Języki w aplikacji

Napisany przez: adbacz 14.01.2017, 18:24:21

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.

Napisany przez: kpt_lucek 14.01.2017, 19:17:26

W Symfony masz coś takiego, co nazywa się DOMAIN. W praktyce komponent http://symfony.com/doc/current/translation.html

Napisany przez: adbacz 15.01.2017, 18:49:57

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.

Napisany przez: phpion 15.01.2017, 20:42:32

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.

Napisany przez: adbacz 15.01.2017, 21:52:16

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.

Napisany przez: Pyton_000 15.01.2017, 21:56:53

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

Napisany przez: phpion 16.01.2017, 06:54:20

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.

Napisany przez: adbacz 16.01.2017, 13:07:21

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.

Napisany przez: Puszy 16.01.2017, 15:03:28

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ę.


Napisany przez: 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ć.

Napisany przez: Puszy 17.01.2017, 12:05:51

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.

Napisany przez: adbacz 17.01.2017, 16:13:06

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ę...

Napisany przez: Puszy 17.01.2017, 16:52:04

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ę.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)