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.
W Symfony masz coś takiego, co nazywa się DOMAIN. W praktyce komponent http://symfony.com/doc/current/translation.html
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.
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.
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.
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
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.
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ć.
Przepraszam, ale czy:
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)