Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Podstawianie stringów
phpamator
post 26.06.2018, 17:04:38
Post #1





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Wymyśliłem sobie, zrobić dwujęzyczna stronę (na potrzeby edukacyjne oczywiście) i trochę utknłem bo mi array_search owszem wyszukuje ale ... często źle, źle bo np w tablicy mam kilkakrotnie występujce ciagi znaków no i zamiast jeden raz powiela mi te stringi.
W sumie samo podstawianie to prosta funkcja, jak jednak zmusić, żeby array_search wyszukiwał mi tylko stringi które pasuja 1:1, poniższy kod działa całkiem dobrze:

  1. function transIt($data,$loc) {
  2. echo '<pre>';
  3. echo $data;
  4. $translation = array('Żadany: ' => 'Requested: ','Nowa licencja: ' => 'New licence: ','Oto twój nowy klucz licencyjny: ' => 'Here is your new license key: ','Keypoints - licencja' => 'Keypoints - license',', skopiuj i wklej w okienku `Klucz licencyjny w module` ' => ', copy and paste it into `License key in module` ',' i wciśnij `Zapisz`.' => ' and click `Save`.');
  5. if ($loc == 'pl-PL'){
  6. $key = array_search($data, $translacja);
  7. }else{
  8. $key = array_search($data, $translation);
  9. }
  10. echo $key;
  11. return $key;
  12. }

wyczytałem, że można też użyć preg_grep albo preg_match.
Podpowiedzcie, jaka metoda będzie najszybsza, najlepsza, najodpowiedniejsza?


Go to the top of the page
+Quote Post
viking
post 26.06.2018, 17:12:02
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.gettext.php


--------------------
Go to the top of the page
+Quote Post
phpamator
post 26.06.2018, 17:14:20
Post #3





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Dzięki viking'u.
Nie chciałem zewnętrznego pliku do tego zatrudniać bo to ma być tylko do podmiany dosłownie kilku zdań.
Dlatego zrobiłem w ten sposób.
Może nie jest to zły pomysł użyć get_text()
szukam, jak powinien wygldać sformatowany tekst do tego.
bo jakoś nie widzę nigdzie.

To ma być .po?

  1. msgid ""
  2. msgstr ""
  3. "Project-Id-Version: Lingohub 1.0.1\n"
  4. "Report-Msgid-Bugs-To: support@lingohub.com \n"
  5. "Last-Translator: Marko Bošković <marko@lingohub.com>\n"
  6. "Language: de\n"
  7. "MIME-Version: 1.0\n"
  8. "Content-Type: text/plain; charset=UTF-8\n"
  9. "Content-Transfer-Encoding: 8bit\n"
  10. "Plural-Forms: nplurals=2; plural=(n != 1);\n"
  11.  
  12. msgid "Let’s make the web multilingual."
  13. msgstr "Machen wir das Internet mehrsprachig."
  14.  
  15. msgid "We connect developers and translators around the globe "
  16. "on Lingohub for a fantastic localization experience."
  17. msgstr "Wir verbinden Entwickler mit Übersetzern weltweit "
  18. "auf Lingohub für ein fantastisches Lokalisierungs-Erlebnis."
  19.  
  20. msgid "Welcome back, %1$s! Your last visit was on %2$s"
  21. msgstr "Willkommen zurück, %1$s! Dein letzter Besuch war am %2$s"
  22.  
  23. msgid "%d page read."
  24. msgid_plural "%d pages read."
  25. msgstr[0] "Eine Seite gelesen wurde."
  26. msgstr[1] "%d Seiten gelesen wurden."


Ten post edytował phpamator 26.06.2018, 17:20:19
Go to the top of the page
+Quote Post
miccom
post 26.06.2018, 17:27:47
Post #4





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


A nie lepiej w osobnym pliku ( np. pl.php, de.php, ru.php itd. ) definiować teksty do tłumaczenia, a potem z zależności jaki lang wybierze klient- taki plik ładować do nagłówka?


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
phpamator
post 26.06.2018, 17:33:27
Post #5





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


No może i lepiej ale jak napisałem to nie ma tłumaczyć całej strony tylko dosłownie kilka zdan więc nie bardzo widzę sens.
Stad moje pomysly z tablica i podmianka stringow

Ten post edytował phpamator 26.06.2018, 17:34:01
Go to the top of the page
+Quote Post
Pyton_000
post 26.06.2018, 17:36:54
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No to tak:

Oczywiście duże uproszczenie smile.gif

  1. function getTrans(string $key, string $lang = 'pl') {
  2. $langs = [
  3. 'pl' => [
  4. 'new_license' => 'Nowa licencja: ',
  5. ],
  6. 'en' => [
  7. 'new_license' => 'New licence: ',
  8. ]
  9. ];
  10.  
  11. return $langs[$lang][$key];
  12. }
Go to the top of the page
+Quote Post
phpamator
post 26.06.2018, 22:18:12
Post #7





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Hej python_000, a czy przypadkiem nie będzie to robiło dokładnie tego samego co search_array() ?
Czy w tym przypadku będzie podstawiało całe/pasujące stringi ?


Próbuję ale wywala mi błąd 500.
... przepisałem kropka w kropkę od ciebie, podstawiłem tylko swoje stringi i d...pa ...aaaa
po usunięciu 'string' z argumentów funkcji działa ...

Ten post edytował phpamator 26.06.2018, 22:39:00
Go to the top of the page
+Quote Post
leonpro778
post 27.06.2018, 07:42:43
Post #8





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


Cytat(phpamator @ 26.06.2018, 23:18:12 ) *
po usunięciu 'string' z argumentów funkcji działa ...


Przesiądź się na PHP 7+
Go to the top of the page
+Quote Post
phpamator
post 27.06.2018, 08:42:39
Post #9





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Jest szansa, że tak zrobię tongue.gif
Dzięki za podpowiedź smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 27.06.2018, 08:56:26
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No w 2018 to już by wypadało smile.gif
Go to the top of the page
+Quote Post
phpamator
post 27.06.2018, 15:56:57
Post #11





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

Ostrzeżenie: (0%)
-----


Kurcze gdybym miał dostęp do shella na wszystkich serwerach i mógł bez przeszkód zmienić wersję .... pewnie już dawno bym to zrobił.
Ale nie wszędzie mogę, więc muszę dostosować kod do najniższej wersji jaka mam, prosiłem administratorów na niektórych serwerach o zmiany to mi powiedzieli .... off.
"będziemy zmieniać ...... kiedyś" tongue.gif

no ... kicha

Ten post edytował phpamator 27.06.2018, 15:58:15
Go to the top of the page
+Quote Post
Pyton_000
post 27.06.2018, 17:46:40
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zmień serwery w takim razie bo nie widzę sensu trzymania kodu w PHP <7 bo te wersje są już nie wspierane.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 06:56