Własne tłumaczenie
From LimeSurvey Manual
Wprowadzenie
Od wersji LimeSurvey 5.4.0 możesz mieć własne tłumaczenie wszystkich ciągów znaków we wszystkich dostępnych językach dzięki bezpośredniemu dostępowi do bazy danych.
Ten system można wykorzystać, jeśli istniejące tłumaczenie nie odpowiada potrzebom Twojej organizacji.
Należy go stosować tylko w szczególnych przypadkach, ponieważ zmiany tekstów w rdzeniu LimeSurvey będą ponownie wymagały modyfikacji bazy danych.
Ponadto możesz użyć tej metody do tłumaczenia ciągów znaków specyficznych dla motywu ankiety.
Jak działają tłumaczenia w bazie danych
W przypadku tłumaczeń w bazie danych LimeSurvey używa metody wzorowanej na CDbMessageSource z frameworka Yii.
- znajdź ciąg znaków w tabeli SourceMessage lime_source_message->message i pobierz identyfikator: lime_source_message->id
- jeśli istnieje, znajdź powiązane tłumaczenie w tabeli Message lime_message->translation dla bieżącego języka lime_message->language i bieżącego identyfikatora lime_message->id
LimeSurvey tworzy tabelę z tłumaczeniami z pliku po (informacje o aktualizacji tego pliku znajdziesz w artykule Tłumaczenie LimeSurvey), a następnie łączy ją ze wszystkimi tłumaczeniami z bazy danych.
Następnie tłumaczenia z bazy danych są zawsze zwracane, jeśli istnieją.
Przykład przycisku „Wyślij” w języku angielskim i francuskim
Chcesz, aby na przycisku wysyłania we wszystkich Twoich ankietach (z określonym motywem) wyświetlał się napis _Validate_ zamiast _Submit_. Jeśli po prostu zaktualizujesz motyw i zamienisz gT('Submit') na gT('Validate'), napis _Validate_ będzie wyświetlany we wszystkich językach.
Dla wszystkich ankiet ze wszystkimi motywami
- Utwórz komunikat źródłowy
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - Sprawdź identyfikator (jeśli jest to pierwszy wpis, ID wynosi 1) i użyj go w następnej instrukcji
- Utwórz powiązane tłumaczenie:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
Nie zastępuj ciągu znaków pustym ciągiem, ponieważ tłumaczenie powróci wtedy do oryginalnego angielskiego zdania. Musisz wstawić co najmniej spację.
Użycie własnego motywu (zalecane rozwiązanie)
Ta metoda wykorzystuje własny szablon i aktualizuje domyślny ciąg znaków również dla wszystkich pozostałych języków.
- W edytorze motywów wybierz część Nawigacja
- Wyszukaj
Template:GT("Submit")(w pliku navigator.twig) - Zamień na
Template:GT("Validate") - Utwórz komunikat źródłowy
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - Sprawdź identyfikator (jeśli jest to pierwszy wpis, ID wynosi 1) i użyj go w następnej instrukcji
- Utwórz powiązane tłumaczenie:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
Uwaga
Pole category w tabeli lime_source_message musi być pustym ciągiem znaków (''), a nie NULL. Jeśli kategoria nie zgadza się dokładnie, gT() nie znajdzie komunikatu źródłowego i Twoje tłumaczenie nie zostanie zastosowane. Jest to szczególnie ważne przy dodawaniu tłumaczeń ciągów znaków specyficznych dla motywu.