• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Strona dwujęzyczna

Object Storage Arubacloud
0 głosów
533 wizyt
pytanie zadane 29 kwietnia 2018 w PHP przez SoDoIt Obywatel (1,190 p.)

Witam, tworzę stronę w której jest 12 podstron (używam include w związku z tym dodając header i footer)
Mój problem polega na tym że w sumie to chciałbym stworzyć stronę dwujęzyczną dokładniej na każdej z obydwóch stron umieściłbym przycisk który po naciśnięciu na dany język zmienia kontent strony z polskiego na angielski  i nie wiem w jaki sposób to zrobić. Przeczytałem, że można (albo i nie ?) za pomocą php odwołać się do bazy(jak jestem na pl to dodaje tekst po polsku) i tekst ten dodać do divów czy innych sekcji. Wymyśliłem też że można zrobić kolejne 12 podstron tyle że pierwsze 12 będzie po polsku a drugie 12 po angielsku i dodać jakoś za pomocą include() 
Dodam że nie miałem wcześniej nigdy doczynienia z php i mysql.
ew. proszę o inne pomysły i kawałki kodu ;/  
Czy da się uniknąć takiej sytuacji że np. nazwastrony.com/en/zakładka | nazwastrony.com/pl/zakładka

4 odpowiedzi

+1 głos
odpowiedź 29 kwietnia 2018 przez pablop76 VIP (123,180 p.)
komentarz 29 kwietnia 2018 przez SoDoIt Obywatel (1,190 p.)
zdecydowanie się przyda ! :)
komentarz 30 kwietnia 2018 przez w2 Obywatel (1,110 p.)

@pablop76, Stoje przed tym problemem, robienia strony w kolejnych językach.
Tutaj mój temat bez żadnego odezwu: https://forum.pasja-informatyki.pl/346814/struktura-katalogow-w-projekcie-rozbudowanej-strony-atom

Z tego Twojego linku wynika, że lepiej tworzyć niezależny serwis w kolejnym języku- powielając kompletnie podstawową stronę, i tworząc podobnie rozbudowaną gałąź katalogów.
Kolega z postu wyżej ma tylko 12 pod-stron. Ja mam >30, a za chwilę mogę mieć 40 (tylko w 1! języku). To ma być te dobre rozwiązanie bo jest przyjaźniejsze pod indeksowanie robotów? W podanym przez Ciebie linku- jest jedynie subiektywny głos w dyskusji. Ale czy to jest universalne dobre/przydatne i praktyczne? Wątpię

komentarz 30 kwietnia 2018 przez pablop76 VIP (123,180 p.)
przywrócone 30 kwietnia 2018 przez pablop76
Całkowicie powielasz tylko strny główne.
komentarz 30 kwietnia 2018 przez w2 Obywatel (1,110 p.)

Których mam obecnie >30. Każda za nich zawiera kompletnie swoją informację. I nie może być ich mniej, ani nie mogą być ze sobą łączone.
Co to w ogóle za określenie- strony główne? Chyba odnosi się do okreslenia z 1 strona(one page website).Jeśli piszę serwis modułowo to na 1 stronę przypada np. 4 moduły(a czasem wiecej) ktore includuje wewnatrz niezaleznych kart zwanych tutaj; projektami . Np:

Strona projekt 01
moduł: head1
moduł: navbar1
moduł: body1
modul: footer1

Strona projekt 02
moduł: head1
moduł: navbar1
moduł: body2 (tu jest roznica!)
modul: footer1

To są setki plików.

komentarz 30 kwietnia 2018 przez pablop76 VIP (123,180 p.)
Tak racja. Robiłem coś takiego ostatnio. I powielałem strony główne a treść pobierałem ajaxem.
+1 głos
odpowiedź 29 kwietnia 2018 przez BT101 Stary wyjadacz (12,540 p.)
edycja 29 kwietnia 2018 przez BT101

Cześć. Wczoraj akurat napisałem dokładnie taki skrypt, do tłumaczenia może Ci się przyda. Ogólnie nie jest zbytnio skomplikowany działa na takiej zasadzie:

  • Musisz mieć 1 plik w formacie .json w którym będą teksty do wrzucenia do paragrafów na stronie
  • Każdy paragraf musi mieć odpowiednie ID
  • Do każdego paragrafu wrzucasz tekst z jsona
  • Przy pierwszym wczytaniu strony jej język zależy od języka ustawionego dla przeglądarki (później oczywiście można go zmienić)

JSON zawierający teksty na stronę:

{
    "PL": {
        "aboutHeading": "Kilka słów o mnie"
    },
    "ENG": {
        "aboutHeading": "Few words about me"
    }
}

translator.js

(() => {
    const translator = {
        currentLanguage: '',
        getText() {
            return fetch('js/text.json').then(res => res.json());
        },
        checkLanguage() {
            switch (window.navigator.language) {
                case 'pl':
                case 'pl-PL': {
                    this.currentLanguage = 'pl';
                    break;
                }
                case 'en': {
                    this.currentLanguage = 'eng';
                    break;
                }
                default: {
                    this.currentLanguage = 'eng';
                    break;
                }
            }
        },
        fillText(lang) {
            this.getText()
                .then((res) => {
                    console.log('in fill text: ');
                    console.log(res);

                    if(lang === 'pl') {
                        document.getElementById('few-words-about-me-header').innerHTML = res.PL.aboutHeading;
                        // tutaj złap kolejne elementy i wrzuć im tekst przez innerHTML
                    }
                    if(lang === 'eng') {
                        document.getElementById('few-words-about-me-header').innerHTML = res.ENG.aboutHeading;
                        // tutaj złap kolejne elementy i wrzuć im tekst przez innerHTML
                    }
                });
        },
    };

    translator.checkLanguage();
    translator.fillText(translator.currentLanguage);

    document.getElementById('polish-flag').addEventListener('click', () => {
        translator.fillText('pl');
    });
    document.getElementById('english-flag').addEventListener('click', () => {
        translator.fillText('eng');
    });
})();

Swoją drogą jak jakiś bardziej doświadczony dev ma ochotę to chętnie poczytam opinie o tym skrypcie, czy można by coś zrobić lepiej.

I trochę podłączając się pod twoje pytanie zastanawiam się jaką wartość dla lang w stronie dwujęzycznej powinienem przypisać?

<html lang="pl/en">

Czy może 

<html lang="mul">

I jeszcze jedno pytanie - jak w takiej sytuacji rozwiązać problem z id w języku polskim/angielskim? Ogólnie czytałem sporo wypowiedzi Comandeera, w których zalecał na polskich stronach id po polsku ze względu na przyjemny dla usera link jednakże co powinienem zrobić w takiej sytuacji, podmieniać id?

0 głosów
odpowiedź 29 kwietnia 2018 przez Mariusz08 Maniak (62,300 p.)
Tak, da się uniknąć takiej sytuacji - informacje o języku możesz trzymać np. w cookie. Najlepiej to faktycznie trzeba to zrobić z bazą danych. Można tworzyć też 12 podstron (łącznie 24), ale nie jest to wydajne rozwiązanie.
komentarz 29 kwietnia 2018 przez Assasz Nałogowiec (30,460 p.)
Albo trzymanie samych tłumaczeń w JSON, XML bądź Yamlu i podstawianie do szablonu.
komentarz 29 kwietnia 2018 przez SoDoIt Obywatel (1,190 p.)
wygląda skąplikowanie xd
komentarz 29 kwietnia 2018 przez Mariusz08 Maniak (62,300 p.)
JSON jest o tyle słaby, że dodanie/edycja tłumaczenia dla użytkownika byłaby bardzo trudna; korzystając z bazy jest jednak ten w jakimś stopniu przyjazny interfejs gdzie można coś zmienić ;)
komentarz 29 kwietnia 2018 przez SoDoIt Obywatel (1,190 p.)
znowóż czytam że nie powinno się pobierać informacji o języku strony z cookie

edit: nie pobierania a pokazywania
komentarz 29 kwietnia 2018 przez Mariusz08 Maniak (62,300 p.)
Dlaczego nie powinno się pobierać języka strony z cookie/local storage?
komentarz 29 kwietnia 2018 przez SoDoIt Obywatel (1,190 p.)

https://digitalhill.pl/blog/wersje-jezykowe-strony-www-zwrocic-uwage/ hmm no nie wiem w sumie, nie podają powodu sad

2
komentarz 29 kwietnia 2018 przez Ehlert Ekspert (212,670 p.)

Bardzo Głupi pomysł, żeby trzymać język w cookiesch, skoro jest Accept-Language

–1 głos
odpowiedź 29 kwietnia 2018 przez Paweł Mansfeld Obywatel (1,420 p.)
Trzymam kciuki za twój projekt. Jeżeli to pierwsze podejście do strony wielojęzycznej pamiętaj o hreflang ;) Google to doceni. Pozdro!

Podobne pytania

0 głosów
0 odpowiedzi 81 wizyt
pytanie zadane 25 listopada 2019 w HTML i CSS przez eric19972 Użytkownik (590 p.)
0 głosów
2 odpowiedzi 151 wizyt
pytanie zadane 2 czerwca 2020 w JavaScript przez Antoni2422 Użytkownik (570 p.)
0 głosów
0 odpowiedzi 239 wizyt

92,577 zapytań

141,426 odpowiedzi

319,653 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...