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