diff --git a/src/lang/german.txt b/src/lang/german.txt --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -463,7 +463,7 @@ STR_RAIL_MENU_MAGLEV_CONSTRUCTION # Road construction menu ###length 2 STR_ROAD_MENU_ROAD_CONSTRUCTION :Straßenbau -STR_ROAD_MENU_TRAM_CONSTRUCTION :Straßenbahn bauen +STR_ROAD_MENU_TRAM_CONSTRUCTION :Straßenbahnbau # Waterways construction menu ###length 1 @@ -690,10 +690,10 @@ STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zufällige Wiedergabe ein/aus STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zeige Musiktitelauswahl # Playlist window -STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Musikprogramm - „{STRING}“ +STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Musikprogramm – „{STRING}“ STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} „{STRING}“ STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Titelindex -STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - „{STRING}“ +STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm – „{STRING}“ STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Bereinigen STR_PLAYLIST_CHANGE_SET :{BLACK}Set ändern STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Lösche laufendes Programm (nur für Benutzerdefiniert 1 und 2) @@ -899,12 +899,12 @@ STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_C STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subventionsangebot abgelaufen:{}{}{STRING}transport von {STRING} nach {STRING} wird nicht mehr subventioniert STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subventionsende:{}{}{STRING}transport von {STRING} nach {STRING} wird nicht mehr subventioniert -STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subventionsangebot:{}{}Erster {STRING}transport von {STRING} nach {STRING} wird {NUM} Jahr{P "" e} von den örtlichen Behörden subventioniert! +STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subventionsangebot:{}{}Erster {STRING} von {STRING} nach {STRING} wird {NUM} Jahr{P "" e} von den örtlichen Behörden subventioniert! ###length 4 -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} einen 50% höheren Preis! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} den doppelten Preis! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} den dreifachen Preis! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING}transport von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} den vierfachen Preis! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING} von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} einen 50% höheren Preis! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING} von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} den doppelten Preis! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING} von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} den dreifachen Preis! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subvention vergeben an {STRING}!{}{}{STRING} von {STRING} nach {STRING} erhält für {NUM} Jahr{P "" e} den vierfachen Preis! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Verkehrschaos in {TOWN}!{}{}Straßensanierungsprogramm finanziert durch {STRING} wird 6 Monate lang Verzögerungen im Verkehr bewirken! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopol! @@ -1040,7 +1040,7 @@ STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Die Schriftgröße der Spieloberfläche auswählen STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(automatisch erkennen) STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal -STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Zweifach +STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Doppelt STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Vierfach STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafik @@ -1159,7 +1159,7 @@ STR_CITY_APPROVAL_TOLERANT :Mäßig STR_CITY_APPROVAL_HOSTILE :Gering STR_CITY_APPROVAL_PERMISSIVE :Hoch (kein Effekt auf Firmenaktionen) -STR_WARNING_NO_SUITABLE_AI :{WHITE}Keine KI gefunden...{}Verschiedene KI sind via „Erweiterungen herunterladen“ verfügbar +STR_WARNING_NO_SUITABLE_AI :{WHITE}Keine KI gefunden ...{}Verschiedene KI sind via „Erweiterungen herunterladen“ verfügbar # Settings tree window STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Einstellungen @@ -1262,7 +1262,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Auswählen, wie stark Lärm und Umweltschäden die Stadtbewertung einer Firma sinken lassen. Bei einer zu schlechten Bewertung werden dann in dieser Stadt keine Bauvorhaben mehr genehmigt STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Höhenlimit der Karte: {STRING} -STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Bestimme die maximale Höhe der Karte. Mit "(auto)" wird ein passender Wert nach der Weltgenerierung bestimmt. +STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Die maximale Höhe der Karte setzen. Mit „(auto)“ wird ein passender Wert nach der Weltgenerierung bestimmt. STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM} ###setting-zero-is-special STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto) @@ -1469,7 +1469,7 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximalabstand vom Kartenrand für Ölraffinerien: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ölraffinerien werden nur in der Nähe des Kartenrands gebaut, bei inselreichen Karten nahe der Küste STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Schneegrenze auf: {STRING} -STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wähle die Höhe der Schneefallgrenze im subarktischen Klima. Schnee beeinflusst auch die Platzierung von Industrien und Voraussetzungen für Städtewachstum. Dies kann nur im Scenario-Editor geändert werden oder wird ansonsten anhand der Einstellung "Schneebedeckung" berechnet. +STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Höhe der Schneefallgrenze im subarktischen Klima wählen. Schnee beeinflusst auch die Platzierung von Industrien und Voraussetzungen für Städtewachstum. Dies kann nur im Szenarieneditor geändert werden oder wird ansonsten anhand der Einstellung „Schneebedeckung“ berechnet. STR_CONFIG_SETTING_SNOW_COVERAGE :Schneebedeckung: {STRING} STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Steuert die ungefähre Menge von Schneeflächen im subarktischen Klima. Schnee beeinflusst die Platzierung von Industrien und Vorausstzungen für Städtewachstum. Dies kann nur während der Kartenerzeugung benutzt werden. Land knapp über dem Meeresspiegel ist stets schneefrei. @@ -1591,7 +1591,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fenster mit Rechtsklick schließen: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Schließt ein Fenster mittels Rechtsklick. Schaltet Tooltip mit Rechtsklick ab! STR_CONFIG_SETTING_AUTOSAVE :Autosicherung: {STRING} -STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Interval zwischen automatischen Speicherungen wählen +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Intervall zwischen automatischen Speicherungen wählen STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Datumsformat für Spielstandsnamen: {STRING} STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Das Datumsformat für Spielstandsdateien festlegen @@ -2040,7 +2040,7 @@ STR_CONFIG_ERROR STR_CONFIG_ERROR_ARRAY :{WHITE}... Fehler im Array „{STRING}“ STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... ungültiger Wert „{STRING}“ für „{STRING}“ STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... angehängte Zeichen an der Einstellung „{STRING}“ -STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoriere NewGRF „{STRING}“: identische GRF ID wie „{STRING}“ +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignoriere NewGRF „{STRING}“: identische GRF-ID wie „{STRING}“ STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignoriere ungültiges NewGRF „{STRING}“: {STRING} STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :nicht gefunden STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :ungeignet für statischen Gebrauch @@ -3036,7 +3036,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firmeneigenes Gelände STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprüngliches Copyright {COPYRIGHT} 1995 Chris Sawyer, alle Rechte vorbehalten STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–{STRING} OpenTTD-Team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-{STRING} OpenTTD-Team # Framerate display window STR_FRAMERATE_CAPTION :{WHITE}Bildwiederholrate @@ -3074,7 +3074,7 @@ STR_FRAMERATE_DRAWING STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK}Kartenansichten: STR_FRAMERATE_VIDEO :{BLACK}Videoausgabe: STR_FRAMERATE_SOUND :{BLACK}Sound-Abmischung: -STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI-Skripte gesamt: +STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS-/KI-Skripte gesamt: STR_FRAMERATE_GAMESCRIPT :{BLACK} Skript: STR_FRAMERATE_AI :{BLACK} KI {NUM} {STRING} @@ -3363,7 +3363,7 @@ STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ändert die Ladekapazität für „{1:ENGINE}“ ohne Umrüst-Auftrag außerhalb von Depots STR_BROKEN_VEHICLE_LENGTH :{WHITE}Zug „{VEHICLE}“ der Firma „{COMPANY}“ hat eine ungültige Länge. Vermutlich ein NewGRF-Problem. Spiel kann desynchronisieren oder abstürzen STR_NEWGRF_BUGGY :{WHITE}NewGRF „{0:STRING}“ liefert falsche Informationen -STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fracht / Ersetzungs - Informationen für „{1:ENGINE}“ weichen von der Einkaufsliste nach dem Kauf ab. Das kann dazu führen, dass das Umrüsten beim autmatisches Ersetzen oder Erneuern nicht korrekt funktioniert +STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fracht / Ersetzungsinformationen für „{1:ENGINE}“ weichen von der Einkaufsliste nach dem Kauf ab. Das kann dazu führen, dass das Umrüsten beim autmatisches Ersetzen oder Erneuern nicht korrekt funktioniert STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}„{1:STRING}“ verursachte eine Endlosschleife in Produktions-Rückruffunktion STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Rückruffunktion {1:HEX} lieferte des unbekannte/ungülte Resultat {2:HEX} STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}„{1:STRING}“ lieferte eine ungültige Frachtart in der Produktions-Rückruffunktion {2:HEX} @@ -3610,7 +3610,7 @@ STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Namen der Boje ändern STR_EDIT_WAYPOINT_NAME :{WHITE}Namen des Wegpunkts ändern # Finances window -STR_FINANCES_CAPTION :{WHITE}{COMPANY} - Finanzen {BLACK}{COMPANY_NUM} +STR_FINANCES_CAPTION :{WHITE}{COMPANY} – Finanzen {BLACK}{COMPANY_NUM} STR_FINANCES_YEAR :{WHITE}{NUM} ###length 3 @@ -3872,10 +3872,10 @@ STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Schiff kaufen und umrüsten STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :Flugzeug kaufen und umrüsten ###length VEHICLE_TYPES -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Fahrzeug kaufen. Shift+Klick zeigt einen Kostenvoranschlag +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Fahrzeug kaufen. Umschalt+Klick zeigt einen Kostenvoranschlag STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Fahrzeug kaufen. Umschalt+Klick zeigt einen Kostenvoranschlag STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Schiff kaufen. Umschalt+Klick zeigt einen Kostenvoranschlag -STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Augewähltes Flugzeug kaufen. Shift+Klick zeigt einen Kostenvoranschlag +STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Augewähltes Flugzeug kaufen. Umschalt+Klick zeigt einen Kostenvoranschlag ###length VEHICLE_TYPES STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Fahrzeug kaufen und umrüsten. Umschalt+Klick zeigt einen Kostenvoranschlag @@ -3931,10 +3931,10 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT}) ###length VEHICLE_TYPES -STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Züge - Fahrzeug ziehen, um es an-/abzukoppeln. Rechtsklick für Fahrzeuginformationen, Rechtsklick für Einzelheiten. Strg, um die jeweilige Funktion für das gesamte Gespann auszuführen -STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Straßenfahrzeuge - Rechtsklick für Einzelheiten -STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Schiffe - Rechtsklick für Einzelheiten -STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugzeuge - Rechtsklick für Einzelheiten +STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Züge – Fahrzeug ziehen, um es an-/abzukoppeln. Rechtsklick für Fahrzeuginformationen, Rechtsklick für Einzelheiten. Strg, um die jeweilige Funktion für das gesamte Gespann auszuführen +STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Straßenfahrzeuge – Rechtsklick für Einzelheiten +STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Schiffe – Rechtsklick für Einzelheiten +STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Flugzeuge – Rechtsklick für Einzelheiten ###length VEHICLE_TYPES STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Schienenfahrzeug hierher ziehen, um es zu verkaufen @@ -5029,11 +5029,11 @@ STR_DESKTOP_SHORTCUT_COMMENT # Translatable descriptions in media/baseset/*.ob* files ###external 10 -STR_BASEGRAPHICS_DOS_DESCRIPTION :Originale „Transport Tycoon Deluxe“-DOS-Basisgrafiken. -STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originale „Transport Tycoon Deluxe“-DOS-Basisgrafiken (Deutsch). -STR_BASEGRAPHICS_WIN_DESCRIPTION :Originale „Transport Tycoon Deluxe“-Windows-Basisgrafiken. -STR_BASESOUNDS_DOS_DESCRIPTION :Originale „Transport Tycoon Deluxe“-DOS-Basissounds. -STR_BASESOUNDS_WIN_DESCRIPTION :Originale „Transport Tycoon Deluxe“-Windows-Basissounds. +STR_BASEGRAPHICS_DOS_DESCRIPTION :Originale Grafiken von Transport Tycoon Deluxe in der DOS-Edition. +STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Originale Grafiken von Transport Tycoon Deluxe in der DOS-Edition (Deutsch). +STR_BASEGRAPHICS_WIN_DESCRIPTION :Originale Grafiken von Transport Tycoon Deluxe in der Windows-Edition. +STR_BASESOUNDS_DOS_DESCRIPTION :Originale Sounds von Transport Tycoon Deluxe in der DOS-Edition. +STR_BASESOUNDS_WIN_DESCRIPTION :Originale Sounds von Transport Tycoon Deluxe in der Windows-Edition. STR_BASESOUNDS_NONE_DESCRIPTION :Ein Soundpaket ohne Sounds. STR_BASEMUSIC_WIN_DESCRIPTION :Originale Musik von Transport Tycoon Deluxe in der Windows-Edition. STR_BASEMUSIC_DOS_DESCRIPTION :Originale Musik von Transport Tycoon Deluxe in der DOS-Edition. @@ -5149,7 +5149,7 @@ STR_SV_STNAME_BUOY STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x6020 STR_SV_STNAME_ANNEXE :{STRING} Anbau -STR_SV_STNAME_SIDINGS :{STRING} Seite +STR_SV_STNAME_SIDINGS :{STRING} Ausweiche STR_SV_STNAME_BRANCH :{STRING} Abzweig STR_SV_STNAME_UPPER :Ober-{STRING} STR_SV_STNAME_LOWER :Unter-{STRING} @@ -5296,9 +5296,9 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :MightyMover-Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Powernaught-Postwagen STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Wizzowow-Postwagen -STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe-Öltanker -STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster-Öltanker -STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry-Öltanker +STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Witcombe-Öltankwagen +STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Foster-Öltankwagen +STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Perry-Öltankwagen STR_VEHICLE_NAME_ROAD_VEHICLE_TALBOTT_LIVESTOCK_VAN :Talbott-Viehtransporter STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_LIVESTOCK_VAN :Uhl-Viehtransporter STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_LIVESTOCK_VAN :Foster-Viehtransporter