Skocz do zawartości
Pecetowicz Forum komputerowe

Pisanie wtyczki. Jak dodać tłumaczenie? | Invision Community


Przejdź do rozwiązania Rozwiązane przez aXenDev,

Rekomendowane odpowiedzi

Cześć. Jestem w trakcie pisania wtyczki pod Invision Community w trybie Developerskim. Mam pytania co do tłumaczeń. Gdy podaję taką formułkę do kodu:

\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->get( 'module__test_fronttext' );

Czy zmienna module__test_frontext doda mi się do tłumaczeń, aby potem ją przetłumaczyć czy muszę ją dodać manualnie przez opcję Add phrases? Jeżeli nie to jak zrobić aby nie dodawać tych zmiennych do tłumaczeń manualnie bo trochę ich porobiłem i dodawać mi się osobno każdej nie chce.

I czym się różnią te dwie funkcje od tłumaczenia:

\IPS\Member::loggedIn()->language()->addToStack()

a

\IPS\Member::loggedIn()->language()->get()

Dziękuję z góry za udzieloną pomoc.

  • Lubię to! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
  • Rozwiązanie

Domyślne tłumaczenie dajesz w pliku lang.php, który znajduje się w folderze dev aplikacji/pluginu i wygląda on przykładowo tak:

Domyślne tłumaczenie dajesz w pliku lang.php

Godzinę temu, RiV napisał:

przez opcję Add phrases

Przez co?

Godzinę temu, RiV napisał:

I czym się różnią te dwie funkcje od tłumaczenia

Challenge dla Ciebie. Sprawdź w kodzie źródłowym 🙂

  • Lubię to! 2
  • Dzięki! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
57 minut temu, aXenDev napisał:

Przez co?

image.thumb.png.9c1e211c9fb763fb65aef16bdbef1044.png

57 minut temu, aXenDev napisał:

Challenge dla Ciebie. Sprawdź w kodzie źródłowym 🙂

Śmieszek 😂

Dzięki wielkie za pomoc. Problem rozwiązany.

@aXenDev Jeszcze mam ostatnie pytanie na temat tłumaczeń. W jaki sposób dodać tłumaczenie do tabelek? 

$table = new \IPS\Helpers\Table\Custom($array, \IPS\Http\Url::internal( 'app=test&module=panel&controller=users' ));
$table->include = [ 'test1', 'test2', 'test3', 'test4', 'test5' ];
$table->langPrefix = 'test_usersTable_head_';

Po dodaniu do pliku lang.php frazy test_usersTable_head_ nic się nie zmienia.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Założyciel

Przy dodawaniu ręcznie fraz do swojego języka to nie miałby sensu bo przecież jeżeli ktoś instalowałby wtyczkę u siebie to nie miałby tych fraz w swoim języku. 

aXen w zasadzie wyjaśnił, należy dodać frazy językowe do pliku lang.php przykładowo:

<?php

$lang = array(
'nazwawtyczki_title' => "Title",
'nazwawtyczki_desc' => "Desc"
);

Najlepiej też aby wszystkie frazy rozpoczynały się nazwą wtyczki, ułatwia to wyszukiwanie tych fraz i tłumaczenie ich.

Przejrzyj sobie dokumentację dla developerów może dowiesz się czegoś nowego 😉 

1 godzinę temu, RiV napisał:

I czym się różnią te dwie funkcje addToStack() i get() od tłumaczenia

Pierwsza funkcja dodaje wartość a druga pobiera. get() nie odwołuje się tylko do tłumaczenia to funkcja pośrednia.

  • Lubię to! 1
  • Dzięki! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

@SeNioR Dzięki za nakierowanie. Czy mógłbyś mi pomóc przy tym?

47 minut temu, RiV napisał:

W jaki sposób dodać tłumaczenie do tabelek? 


$table = new \IPS\Helpers\Table\Custom($array, \IPS\Http\Url::internal( 'app=test&module=panel&controller=users' ));
$table->include = [ 'test1', 'test2', 'test3', 'test4', 'test5' ];
$table->langPrefix = 'test_usersTable_head_';

Po dodaniu do pliku lang.php frazy test_usersTable_head_ nic się nie zmienia.

Z góry dzięki 🙂

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Założyciel

Kod wygląda na pierwszy rzut oka poprawnie.

Dodałeś wszystkie frazy czyli 

  • test_usersTable_head_test1 
  • test_usersTable_head_test2
  • ....

itd?

W kodzie HTML możesz później zrobić tak:

{lang="{$table->langPrefix}test1"}
  • Lubię to! 2
Odnośnik do odpowiedzi
Udostępnij na innych stronach
12 minut temu, SeNioR napisał:

Kod wygląda na pierwszy rzut oka poprawnie.

Dodałeś wszystkie frazy czyli 

  • test_usersTable_head_test1 
  • test_usersTable_head_test2
  • ....

itd?

W kodzie HTML możesz później zrobić tak:


{lang="{$table->langPrefix}test1"}

Dodałem do pliku lang.php

	'test_usersTable_head_test1'	=> 'Test1',
	'test_usersTable_head_test2'	=> 'Test2',

image.thumb.png.ad88f0cf729ef021a4f8d85d6fe5b22c.png

Pozostałe frazy tłumaczeń wyświetlają się bez problemów.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

W czym jest problem? Brak tłumaczenia? Sprawdź czy nie używasz gdzieś tego samego klucza, tylko że z małych liter.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
6 godzin temu, Weak. napisał:

W czym jest problem? Brak tłumaczenia? Sprawdź czy nie używasz gdzieś tego samego klucza, tylko że z małych liter.

Nie tłumaczy mi tylko tytułów w tabelce. Tłumaczenie mam poprawnie dodane w pliku lang.php.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
Teraz, aXenDev napisał:

Pokaż nazwę kolumny z bazy danych.

Jak z bazy danych? Nie rozumiem.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

Zrób osobną wtyczkę i zrób dokładnie to samo z tabelką i wyślij ją tutaj. Kod jest prawidłowy, być może gdzieś indziej jest błąd.

  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)
11 godzin temu, aXenDev napisał:

Zrób osobną wtyczkę i zrób dokładnie to samo z tabelką i wyślij ją tutaj. Kod jest prawidłowy, być może gdzieś indziej jest błąd.

Problem rozwiązany. Różniła się jedna wielkość litery i dlatego tłumaczenie się nie wyświetlało. Sorki za stracony czas. I dzięki za pomoc 😄

Edytowane przez RiV
  • Lubię to! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...