diff --git a/framework/yii/messages/config.php b/framework/yii/messages/config.php
index 18c5879..0617d5e 100644
--- a/framework/yii/messages/config.php
+++ b/framework/yii/messages/config.php
@@ -7,7 +7,7 @@ return [
'messagePath' => __DIR__,
// array, required, list of language codes that the extracted messages
// should be translated to. For example, ['zh-CN', 'de'].
- 'languages' => ['de', 'ru', 'pt-BR', 'it', 'da'],
+ 'languages' => ['da', 'de', 'ru', 'pl', 'pt-BR', 'it'],
// string, the name of the function for translating messages.
// Defaults to 'Yii::t'. This is used as a mark to find the messages to be
// translated. You may use a string for single function name or an array for
diff --git a/framework/yii/messages/pl/yii.php b/framework/yii/messages/pl/yii.php
new file mode 100644
index 0000000..8715534
--- /dev/null
+++ b/framework/yii/messages/pl/yii.php
@@ -0,0 +1,81 @@
+ '(brak wartości)',
+ 'An internal server error occurred.' => 'Wystąpił wewnętrzny błąd serwera.',
+ 'Are you sure to delete this item?' => 'Na pewno usunąć ten element?',
+ 'Delete' => 'Usuń',
+ 'Error' => 'Bład',
+ 'File upload failed.' => 'Wgrywanie pliku nie powiodło się.',
+ 'Home' => 'Strona domowa',
+ 'Invalid data received for parameter "{param}".' => 'Otrzymano nieprawidłowe dane dla parametru "{param}".',
+ 'Login Required' => 'Wymagane zalogowanie się',
+ 'Missing required arguments: {params}' => 'Brak wymaganych argumentów: {params}',
+ 'Missing required parameters: {params}' => 'Brak wymaganych parametrów: {params}',
+ 'No' => 'Nie',
+ 'No help for unknown command "{command}".' => 'Brak pomocy dla nieznanego polecenia "{command}".',
+ 'No help for unknown sub-command "{command}".' => 'Brak pomocy dla nieznanego pod-polecenia "{command}".',
+ 'No results found.' => 'Brak wyników.',
+ 'Only files with these extensions are allowed: {extensions}.' => 'Dozwolone są tylko pliki z następującymi rozszerzeniami: {extensions}.',
+ 'Only files with these mimeTypes are allowed: {mimeTypes}.' => 'Dozwolone są tylko pliki o następujących typach MIME: {mimeTypes}.',
+ 'Page not found.' => 'Nie odnaleziono strony.',
+ 'Please fix the following errors:' => 'Proszę poprawić następujące błędy:',
+ 'Please upload a file.' => 'Proszę wgrać plik.',
+ 'Showing {begin, number}-{end, number} of {totalCount, number} {totalCount, plural, one{item} other{items}}.' => 'Wyświetlone {begin, number}-{end, number} z {totalCount, number}.',
+ 'The file "{file}" is not an image.' => 'Plik "{file}" nie jest obrazem.',
+ 'The file "{file}" is too big. Its size cannot exceed {limit, number} {limit, plural, one{byte} other{bytes}}.' => 'Plik "{file}" jest zbyt duży. Jego rozmiar nie może przekraczać {limit, number} {limit, plural, one{bajtu} few{bajtów} many{bajtów} other{bajta}}.',
+ 'The file "{file}" is too small. Its size cannot be smaller than {limit, number} {limit, plural, one{byte} other{bytes}}.' => 'Plik "{file}" jest za mały. Jego rozmiar nie może być mniejszy niż {limit, number} {limit, plural, one{bajtu} few{bajtów} many{bajtów} other{bajta}}.',
+ 'The format of {attribute} is invalid.' => 'Format {attribute} jest nieprawidłowy.',
+ 'The image "{file}" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest zbyt duży. Wysokość nie może być większa niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
+ 'The image "{file}" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest zbyt duży. Szerokość nie może być większa niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
+ 'The image "{file}" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest za mały. Wysokość nie może być mniejsza niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
+ 'The image "{file}" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Obraz "{file}" jest za mały. Szerokość nie może być mniejsza niż {limit, number} {limit, plural, one{piksela} few{pikseli} many{pikseli} other{piksela}}.',
+ 'The verification code is incorrect.' => 'Kod weryfikacyjny jest nieprawidłowy.',
+ 'Total {count, number} {count, plural, one{item} other{items}}.' => 'Razem {count, number} {count, plural, one{rekord} few{rekordy} many{rekordów} other{rekordu}}.',
+ 'Unable to verify your data submission.' => 'Nie udało się zweryfikować przesłanych danych.',
+ 'Unknown command "{command}".' => 'Nieznane polecenie "{command}".',
+ 'Unknown option: --{name}' => 'Nieznana opcja: --{name}',
+ 'Update' => 'Aktualizuj',
+ 'View' => 'Zobacz szczegóły',
+ 'Yes' => 'Tak',
+ 'You are not allowed to perform this action.' => 'Brak upoważnienia do wykonania tej czynności.',
+ 'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Możliwe wgranie najwyżej {limit, number} {limit, plural, one{pliku} few{plików} many{plików} other{pliku}}.',
+ 'the input value' => 'wartość wejściowa',
+ '{attribute} "{value}" has already been taken.' => '{attribute} "{value}" jest już w użyciu.',
+ '{attribute} cannot be blank.' => '{attribute} nie może pozostać bez wartości.',
+ '{attribute} is invalid.' => '{attribute} zawiera nieprawidłową wartość.',
+ '{attribute} is not a valid URL.' => '{attribute} nie zawiera prawidłowego adresu URL.',
+ '{attribute} is not a valid email address.' => '{attribute} nie zawiera prawidłowego adresu email.',
+ '{attribute} must be "{requiredValue}".' => '{attribute} musi mieć wartość "{requiredValue}".',
+ '{attribute} must be a number.' => '{attribute} musi być liczbą.',
+ '{attribute} must be a string.' => '{attribute} musi być tekstem.',
+ '{attribute} must be an integer.' => '{attribute} musi być liczbą całkowitą.',
+ '{attribute} must be either "{true}" or "{false}".' => '{attribute} musi mieć wartość "{true}" lub "{false}".',
+ '{attribute} must be greater than "{compareValue}".' => '{attribute} musi mieć wartość większą od "{compareValue}".',
+ '{attribute} must be greater than or equal to "{compareValue}".' => '{attribute} musi mieć wartość większą lub równą "{compareValue}".',
+ '{attribute} must be less than "{compareValue}".' => '{attribute} musi mieć wartość mniejszą od "{compareValue}".',
+ '{attribute} must be less than or equal to "{compareValue}".' => '{attribute} musi mieć wartość mniejszą lub równą "{compareValue}".',
+ '{attribute} must be no greater than {max}.' => '{attribute} musi wynosić nie więcej niż {max}.',
+ '{attribute} must be no less than {min}.' => '{attribute} musi wynosić nie mniej niż {min}.',
+ '{attribute} must be repeated exactly.' => 'Wartość {attribute} musi być dokładnie powtórzona.',
+ '{attribute} must not be equal to "{compareValue}".' => '{attribute} musi mieć wartość różną od "{compareValue}".',
+ '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => '{attribute} powinien zawierać co najmniej {min, number} {min, plural, one{znak} few{znaki} many{znaków} other{znaku}}.',
+ '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => '{attribute} powinien zawierać nie więcej niż {max, number} {min, plural, one{znak} few{znaki} many{znaków} other{znaku}}.',
+ '{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => '{attribute} powinien zawierać dokładnie {length, number} {min, plural, one{znak} few{znaki} many{znaków} other{znaku}}.',
+);