Daniel Gołąbek

Daniel Gołąbek PHP Developer

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Po raz kolejny podchodzę do pisania aplikacji autorskiej w której będzie możliwość dodawania dowolnej liczby wersji językowych.

Problem o który chcę pisać dotyczy rozwiązania zarządzania tymi wersjami w panelu administracyjnym.
I tak podejścia są dwa.

1. Przy edycji menu, podstron, aktualności, galerii, produktów w katalogu ofertowym wyświetlam np w formie tabów obok siebie wszystkie wersje językowe.
Plusy: obejmuję daną treść w wszystkich językach, stosunkowo wszytko dostępne jest pod ręką.
Minusy: przy większej liczbie wersji językowych robi się już galimatias; Aby utworzyć podstronę, która będzie występowała tylko w jednej wersji językowej muszę utworzyć ją we wszystkich i publikować(jest taka funkcjonalność) tylką tą jedną.

2. Podejście. Mam globalnie zdefiniowane w sesji jaką aktualnie wersję językową edytuję - i w modułach menu, podstron, etc...
wyświetlam tylko tą jedną.
Plusy: Przejrzystość, Mogę tworzyć dowolnie inne struktury niezależnie od domyślnej wersji językowej.
Minus: w przypadku edycji jednej podstrony w wielu językach muszę globalnie przełączać się między wersjami językowymi.


Na pewno zdarzyło Wam się napotkać podobny problem.
Którą opcję wybralibyście :D ??

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

ja uzywam rozwiazania nr dwa.. i sobie chwale.. jesli przelaczanie zrobisz w latwo dostepnym miejscu to nie jest to klopotliwe (ja mam to zrobione na taki floating boxie, ktory gania mi gora/dol.. taki przybornik..

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Był podobny temat jakiś czas temu na którejś grupie branżowej. Niestety tam szybko 'umarł' i nie wywiązała się dyskusja, na ten temat, który również i mnie interesuje.

Do tej pory robiłem jak Ty proponujesz mniej więcej w punkcie 2.

U mnie wyglądało to tak, że miałem dwie zmienne dla wersji językowych - jedna przełączała treść contentu, druga treść panelu.

Zdarzało się, że tłumacz nie znał polskiego i wprowadzał treść z niemieckiego na angielski. Panel przełączał na niemiecką wersję, a treść na angielską/niemiecką. Zmiennymi przełączałem szablony i niektóre tabele w bazie, bo niektóre np. administratorzy dla wygody zostawiłem wspólne.

Oprócz samego panelu warto przewidzieć również separację szablonów odpowiedzialnych za generowanie strony. Może się okazać, że klienci będą mieli bardzo rozbudowany polski serwis, bo ten im łatwiej prowadzić, a pozostałe wersje językowe będą w prostszej formie.

Dodam, że na całkiem sporą ilość serwisów wielojęzycznych nigdy nie zdarzyła się sytuacja, że każda wersja musiała być kubek w kubek jak inna.

Różniły się plikami graficznymi, treścią w bazie, łącznie np. z cenami w sklepach nie przeliczanymi po kursie, czasami nawet ogólnym rozmieszczeniem elementów na stronie.Peter K. edytował(a) ten post dnia 03.04.09 o godzinie 12:16
Daniel Gołąbek

Daniel Gołąbek PHP Developer

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Serwis na d którym pracuję będzie z założenia międzynarodowy natomiast treści będą różnic się dość znacznie.
Ja realizuję wszystkie wersje językowe 1 szablonem w oddzielnej tabeli mam skonfigurowane "Teksty stałe" (napis na butonach etc.)

Problem jaki pojawia się przy wersji 2 jest np taki:
Tworzę nową podstronę w danym języku i chciałbym podpiąć do niej zdjęcia w formie galerii. W sytuacji gdy wszystkie wersje językowe są razem zdjęcia dodaję raz a w wersji 2 odseparowanej albo będę musiał dopisać import fotek z innej wersji językowej tej podstrony albo dodać je jeszcze raz. Zdjęcia i tak mają definiowalne per język atrybuty alt, pola autor i jakiś opisik.

Problem z importem fotek z innej wersji językowej tej samej podstrony dodatkowo komplikuje fakt że posiadają różny ID więc nie będzie to automat a raczej select lub input "suggest".

Ja osobiście skłaniam mimo wszystko do wersji 2. Kusi mnie porządek który w takiej opcji pasuje :D
Adam W.

Adam W. senior php
developer, Symfony

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

ja wersje językowe również robiłem na sesjach. była akcja, w której sprawdzałem czy jest taki język dostępny (pobrany z url), jeżeli taki język jest to zapis w sesji i powrót na stronę, z której nastąpiło żądanie.

teraz zrobiłbym to inaczej. język byłby zawsze w URL. tylko wersja domyślna, np. polska, mogła by być bez języka w url.

jeżeli zdjęcia mają możliwość przypisywania odrębnych altów, title czy innych opisów dla każdego języka to można je normalnie podpinać pod artykuł w dowolnej wersji językowej.
Mirosław O.

Mirosław O. netBOMB.pl

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Daniel Gołąbek:
Na pewno zdarzyło Wam się napotkać podobny problem.
Którą opcję wybralibyście :D ??

Różnie. Serwis serwisowi nie równy. Co innego robi się w przypadku jakiejś typowej firmówki z ofertą, zupełnie inaczej postępuje się w przypadku np. społecznościówki.
Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Ja myślę że opcja druga. Z tymże co do drugiego minusa tj. przełączaniem się między językami można to rozwiązać w ten sposób że dajesz pętlę która wyświetli to samo pole dla różnych wersji językowych i wypełniasz tylko w tych językach w których Cię interesuje -> zastosowano coś takie w osCommerce

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Opcja pierwsza, wychodzi z założenia, że struktura strony dla wszystkich języków jest taka sama... a niekoniecznie musi być... Druga sprawa - co w sytuacji gdy mamy np. 6 języków? 6 formularzy? Ciasno się robi.

Opcja druga - jest na prawdę przyjemna w użyciu.
---
Przy załączaniu jakichkolwiek plików do tekstów pojawia się pytanie - a co w sytuacji gdy dla tego samego tekstu dwóch językach, masz mieć dwa różne zestawy plików? Najprostszy przykład: pdf'ik z ofertą do pobrania.

Daj użytkownikowi możliwość załączania czego chce. Masz przecież wszystkie zdjęcia zapisane, daj mu więc możliwość wybrać plik/pliki z jego komputera (upload), z serwera (wcześniej wrzucone pliki - upload/ftp), a jak spodziewasz się że będzie dużo zdjęć w galeriach, to możesz zrobić klientowi nawet 'tworzenie galerii z katalogu', tylko katalog wybrać musi.
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Powiedzmy opcja nr2 + możliwość użycia ze artykuł będzie dostępny tylko dla określonej subdomeny - cms wielodomenowy.
Kamil Szot

Kamil Szot PHP, JavaScript -
rozwiązywanie
problemów.
limeline.pl

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Opcja nr. 2 z takim ułatwieniem, że jeżeli będąc na jakiejś treści przełączymy język na taki w którym odpowiednika tej treści jeszcze nie ma to proponuje nam utworzenie takiego odpowiednika.

Dobrym pomysłem była możliwość podejrzenia gdzieś z boku jak ta treść wygląda w innym języku niż ten globalnie wybrany.

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Osobiście używam sposobu, który wyglądem w panelu admina bardziej przypomina sposób 1 - wszystkie wersje językowe są w nim jednocześnie widoczne. Jednak nie jestem zmuszony dodawania np. podstrony we wszystkich możliwych wersjach językowych - nawet gdy mam 50 języków do wyboru, mogę dodać tylko w jednym. Po dodaniu podstronki w jednym języku, dostaję możliwość zapisania jej w innym używając zmodyfikowanej funkcji Edytuj, która pobiera z formularza dane w zapisanym języku, umożliwia dzięki temu jej przetłumaczenie nie wychodząc z ekranu, a następnie zapisuje w innym wybranym języku. W bazie jako klucza głównego używam połączenia id podstrony + język.

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Dawno temu i nie prawda pracowalem dla poteznego portalu pokerowego, gdzie bylo az 6 wersji jezykowych, niestety przyszlo mi pracowac z niezlym galimatiasem, gdyz tworca serwisu zrobil sobie includy z samymi DEFINE() i w zaleznosci od wybranej wersji jezykowej byl wczytywany odpowiedni define, pozniej te pliki jezykowe po 500kb potrafily nieźle wkurwić.

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Właśnie, zapomniałem zapytać, czego używacie do etykiet tekstowych przy wielojęzyczności? define, globalnej tablicy z etykietami, bazy danych, a może czegoś jeszcze? Pod tym względem nie mam dużego doświadczenia, a zainspirowany phpBB w moim bieżącym dziele używam include'owanej globalnej tablicy.
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Bartosz Zasada:
Właśnie, zapomniałem zapytać, czego używacie do etykiet tekstowych przy wielojęzyczności? define, globalnej tablicy z etykietami, bazy danych, a może czegoś jeszcze? Pod tym względem nie mam dużego doświadczenia, a zainspirowany phpBB w moim bieżącym dziele używam include'owanej globalnej tablicy.

gettext, mało wygodny w samym tłumaczeniu ale skuteczny i szybki :-) (mam nadzieję że zrozumiałem pytanie :-)).
Adam W.

Adam W. senior php
developer, Symfony

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Bartosz Zasada:
Właśnie, zapomniałem zapytać, czego używacie do etykiet tekstowych przy wielojęzyczności? define, globalnej tablicy z etykietami, bazy danych, a może czegoś jeszcze? Pod tym względem nie mam dużego doświadczenia, a zainspirowany phpBB w moim bieżącym dziele używam include'owanej globalnej tablicy.

a ja pobieram z bazy - łatwość w tłumaczeniu jeżeli jest tłumacz nie programista;)

w kohanie jest to fajnie zrobione, przerobiłem trochę, żeby nie pobierał danych z plików tylko z bazy.

może to być jedno zapytanie bądź trochę więcej w zależności od podstrony i wykorzystanych na niej tekstów. zapytania można trzymać w cache.Adam W. edytował(a) ten post dnia 14.04.09 o godzinie 16:43
Marcin Laber

Marcin Laber internet
technologies
magician

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Bartosz Zasada:
Właśnie, zapomniałem zapytać, czego używacie do etykiet tekstowych przy wielojęzyczności? define, globalnej tablicy z etykietami, bazy danych, a może czegoś jeszcze? Pod tym względem nie mam dużego doświadczenia, a zainspirowany phpBB w moim bieżącym dziele używam include'owanej globalnej tablicy.

Prosta klasa do PHP i jej odpowiednik w JS korzystająca z tablicy o strukturze 'polski tekst' => 'obcojęzyczny tekst', obsługująca funkcję _('tekst') do tłumaczenia prostego lub _s('tekst', args) do tłumaczenia z uwzględnieniem parametrów sprintf. Do PHP jak i JS ta sama tablica (jeden język = jeden plik = jedna tablica), dla JS serwowana jako JSON.
Przy poprawnym zapisie wszystkich tekstów w plikach szablonów, kodu PHP i JS osobnym skryptem generowana jest tablica którą można podrzucić osobie odpowiedzialnej za tłumaczenia.Marcin L. edytował(a) ten post dnia 14.04.09 o godzinie 17:19

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Jezyk w ciasteczku, nie bawie się w żadne URL, dane w bazie, tabela prawie że rozmiarów spuchniętego baobabu po wypiciu hektolitrów wody. Dane pobierane z bazy po ciasteczku, co tu się dużo rozpisywać, trzeba sobie jakoś stronę na moduły podzielić i nie jest tak źle. Wiem że to nie jest najlepszy sposób. Ale lepszy taki niż żaden.

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Ja to rozwiązałem plikiem polish.php, gdzie wszystko jest na zasadzie:

define("_SOME_VARIABLE", "Jakaś zmienna, która pojawi się %s razy");

zależnie od wyboru języka inkluduje to w treść, a potem w kodzie mam

printf(_SOME_VARIABLE,10);

Co daje wynik jako:

Jakaś zmienna, która pojawi się 10 razy.

Proste i wygodne - do komunikatów, błędów itp.
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Nie no zaraz padnę. Poważne pytanie a niektóre odpowiedzi wyglądają jakby w ogóle nikt go nie zrozumiał.

Po pierwsze. Zrobienie wersji językowej dla stałych elementów na stronie takich jak "Zapisz", "Usuń", "Zatwierdź" itp to nie jest żaden problem i tak na prawdę wybór - define, tabela itp nie ma praktycznie żadnego znaczenia. W ten sposób się robi wersje językowe w oprogramowaniu i już.

Pytanie natomiast było jak zorganizować treść serwisu wprowadzaną przez redaktorów używających CMS'a. Tutaj już jest większy problem, ponieważ wiele zależy od organizacji danego serwisu i potrzeb firmy go wprowadzającej. Nie ma tutaj jednej słusznej metody.

Przykład 1.
Firma ma polską wersję językową z jakąś treścią (newsy, opisy itp). Chciałaby aby strona była też w wersji angielskiej, wynajmuje do tego tłumacza, który ma wszystko przeklepać na angielski. Wiadomo, tłumaczy dokładnie całą treść serwisu, bez wyjątków. Musi to wszystko być tak zorganizowane aby mógł sobie zobaczyć co już ma przetłumaczone i dopisać resztę treści. Tutaj może być tak jak już ktoś pisał, że po wejściu w dany wpis ma formularz z obiema wersjami językowymi.

Przykład 2.
Serwis ma podobną treść co poprzedni, natomiast jest problem, ponieważ treść w jednej i w drugiej wersji jednak się różni. W przypadku jak różni się nie bardzo, to wiadomo że trzeba jakoś wpisy ze sobą powiązać ale zarazem dać możliwość dodania czegoś innego. W przypadku jak różni się bardzo, można się pokusić o zupełnie oddzielne wprowadzanie treści w danym serwisie. Wtedy chyba najprostszym sposobem jest dodanie prefixu albo sufixu do tabel w bazie danych, tak aby do każdej wersji językowej były inne tabele.

Przykład 3.
Strona z 20 wersjami językowymi treści. Jak sobie wyobrażacie aby można było wprowadzać na raz wszystkie wersje? Po pierwsze jest to niewygodne, ponieważ mamy ogromny formularz z 20 różnymi polami na samą treść, a co z tytułem itp ? Po drugie jest bałagan, z reguły nie mamy geniusza, który zna 20 języków, tylko do różnych języków są różne osoby itp. Wtedy np dobrym sposobem byłoby umożliwienie danemu redaktorowi wybrania języka z którego i na jaki ma tłumaczyć i pokazania mu tylko tych treści.

konto usunięte

Temat: Realizacja wersji jęzkowych w Waszych systemach CMS

Jakub Korupczyński:
Nie no zaraz padnę.

Byle na coś miękkiego ;)
Poważne pytanie a niektóre odpowiedzi wyglądają jakby w ogóle nikt go nie zrozumiał.

Każdy zrozumiał na swój sposób ;)Peter K. edytował(a) ten post dnia 15.05.09 o godzinie 12:02



Wyślij zaproszenie do