/* * i18n.c: Internationalization * * See the main source file 'vdr.c' for copyright information and * how to reach the author. * * $Id: i18n.c 1.78 2002/04/01 11:37:08 kls Exp $ * * Slovenian translations provided by Miha Setina <mihasetina@softhome.net> and Matjaz Thaler <matjaz.thaler@guest.arnes.si> * Italian translations provided by Alberto Carraro <bertocar@tin.it> * Dutch translations provided by Arnold Niessen <niessen@iae.nl> <arnold.niessen@philips.com> * Portuguese translations provided by Paulo Lopes <pmml@netvita.pt> * French translations provided by Jean-Claude Repetto <jc@repetto.org> * Norwegian translations provided by J�rgen Tvedt <pjtvedt@online.no> and Truls Slevigen <truls@slevigen.no> * Finnish translations provided by Hannu Savolainen <hannu@opensound.com> * Polish translations provided by Michael Rakowski <mrak@gmx.de> * */ /* * How to add a new language: * * 1. Announce your translation action on the Linux-DVB mailing * list to avoid duplicate work. * 2. Increase the value of 'NumLanguages'. * 3. Insert a new line in every member of the 'Phrases[]' array, * containing the translated text for the new language. * For example, assuming you want to add the Italian language, * * { "English", * "Deutsch", * }, * * would become * * { "English", * "Deutsch", * "Italiano", * }, * * and so on. Append your language after the last existing language * and write the name of your language in your language (not in English, * which means that it should be 'Italiano', not 'Italian'). * Note that only the characters defined in 'fontosd.c' will * be available! * 4. Compile VDR and test the new language by switching to it * in the "Setup" menu. * 5. Send the modified 'i18n.c' file to <kls@cadsoft.de> to have * it included in the next version of VDR. * * In case an English phrase is used in more than one context (and might need * different translations in other languages) it can be preceeded with an * arbitrary string to describe its context, separated from the actual phrase * by a '$' character (see for instance "Button$Stop" vs. "Stop"). * Of course this means that no English phrase may contain the '$' character! * If this should ever become necessary, the existing '$' would have to be * replaced with something different... */ #include "i18n.h" #include <stdio.h> #include "config.h" #include "tools.h" const int NumLanguages = 10; typedef const char *tPhrase[NumLanguages]; const tPhrase Phrases[] = { // The name of the language (this MUST be the first phrase!): { "English", "Deutsch", "Slovenski", "Italiano", "Nederlands", "Portugu�s", "Fran�ais", "Norsk", "Suomi", "Polski", }, // Menu titles: { "VDR", "VDR", "VDR", "VDR", "VDR", "VDR", "VDR", "VDR", "VDR", "VDR", }, { "Schedule", "Programm", "Urnik", "Programmi", "Gids", "Programa��o", "Programmes", "Programmer", "Ohjelmat", "Program", }, { "Channels", "Kan�le", "Kanali", "Canali", "Kanalen", "Canais", "Cha�nes", "Kanaler", "Kanavat", "Kanaly", }, { "Timers", "Timer", "Termini", "Timer", "Timers", "Timers", "Programmation", "Timere", "Ajastin", "Timery", }, { "Recordings", "Aufzeichnungen", "Posnetki", "Registrazioni", "Opnames", "Grava��es", "Enregistrements", "Opptak", "Nauhoitteet", "Nagrania", }, { "Setup", "Einstellungen", "Nastavitve", "Opzioni", "Instellingen", "Configurar", "Configuration", "Konfigurasjon", "Asetukset", "Nastawy", }, { "Commands", "Befehle", "Ukazi", "Comandi", "Commando's", "Comandos", "Commandes", "Kommandoer", "Komennot", "Rozkazy", }, { "Edit Channel", "Kanal Editieren", "Uredi kanal", "Modifica canale", "Kanaal aanpassen", "Modificar Canal", "Modifier une cha�ne", "Editer Kanal", "Muokkaa kanavaa", "Ustawienie Kanalu", }, { "Edit Timer", "Timer Editieren", "Uredi termin", "Modifica Timer", "Timer veranderen", "Modificar Timer", "Changer la programmation", "Editer Timer", "Muokkaa ajastusta", "Ustawienie Timerow", }, { "Event", "Sendung", "Oddaja", "Eventi", "Uitzending", "Evento", "Ev�nement", "Hendelse", "Tapahtuma", "Audycja", }, { "Summary", "Inhalt", "Vsebina", "Sommario", "Inhoud", "Resumo", "R�sum�", "Sammendrag", "Yhteenveto", "Zawartosc", }, { "Schedule - %s", "Programm - %s", "Urnik - %s", "Programma - %s", "Programma - %s", "Programa - %s", "Programmes - %s", "Program Guide - %s", "Ohjelma - %s", "Program - %s", }, { "What's on now?", "Was l�uft jetzt?", "Kaj je na sporedu?", "In programmazione", "Wat is er nu?", "Programa actual?", "Programmes en cours", "Hvilket program sendes n�?", "Nykyinen ohjelma", "Program biezacy", }, { "What's on next?", "Was l�uft als n�chstes?", "Kaj sledi?", "Prossimi programmi", "Wat komt er hierna?", "Pr�ximo Programa?", "Prochains programmes", "Hvilket program er neste?", "Seuraava ohjelma", "Program nastepny", }, // Button texts (should not be more than 10 characters!): { "Edit", "Editieren", "Uredi", "Modifica", "Verander", "Modificar", "Modifier", "Editer", "Muuta", "Edycja", }, { "New", "Neu", "Novo", "Nuovo", "Nieuw", "Novo", "Nouveau", "Ny", "Uusi", "Nowy", }, { "Delete", "L�schen", "Odstrani", "Cancella", "Verwijder", "Apagar", "Supprimer", "Slett", "Poista", "Usunac", }, { "Mark", "Markieren", "Oznaci", "Marca", "Verplaats", "Marcar", "Marquer", "Marker", "Merkitse", "Zaznaczyc", }, { "On/Off", "Ein/Aus", "Vklop/Izklop", "On/Off", "Aan/Uit", "On/Off", "Marche/Arr", "Av/P�", "P��ll�/Pois", "Zal./ Wyl.", }, { "Record", "Aufnehmen", "Posnemi", "Registra", "Opnemen", "Gravar", "Enregistre", "Ta opp", "Nauhoita", "Nagrywac", }, { "Play", "Wiedergabe", "Predavajaj", "Riproduci", "Afspelen", "Play", "Lire", "Spill av", "Toista", "Odtwarzac", }, { "Rewind", "Anfang", "Zacetek", "Da inizio", "Naar begin", "Rebobinar", "Retour", "Spol tilbake", "Takaisinkel.", "Poczatek", }, { "Button$Stop", "Beenden", "Ustavi", "Stop", "Eindigen", "Parar", "Arr�t", "Stopp", "Pys�yt�", "Zakonczyc", }, { "Resume", "Weiter", "Nadaljuj", "Riprendi", "Verder", "Continuar", "Reprendre", "Fortsett", "Jatka", "Dalej", }, { "Summary", "Inhalt", "Vsebina", "Sommario", "Inhoud", "Resumo", "R�sum�", "Sammendrag", "Yhteenveto", "Zawartosc", }, { "Open", "�ffnen", "Odpri", "Apri", "Openen", "Abrir", "Ouvrir", "�pne", "Avaa", "Otworzyc", }, { "Switch", "Umschalten", "Preklopi", "Cambia", "Selecteer", "Seleccionar", "Regarder", "Skift til", "Valitse", "Przelaczyc", }, { "Now", "Jetzt", "Sedaj", "Adesso", "Nu", "Agora", "Maintenant", "N�", "Nyt", "Teraz", }, { "Next", "N�chste", "Naslednji", "Prossimo", "Hierna", "Proximo", "Apr�s", "Neste", "Seuraava", "Nastepny", }, { "Button$Schedule", "Programm", "Urnik", "Programma", "Programma", "Programa��o", "Programme", "Programmer", "Ohjelmisto", "Program", }, { "Language", "Sprache", "Jezik", "Linguaggio", "Taal", "Linguagem", "Langue", "Spr�k", "Kieli", "Jezyk", }, { "Eject", "Auswerfen", "Izvrzi", "Eject", "Eject", "Ejectar", "Ejection", "Eject", "Avaa", "Wyrzucenie", }, // Confirmations: { "Delete channel?", "Kanal l�schen?", "Odstrani kanal?", "Cancello il canale?", "Kanaal verwijderen?", "Apagar o canal?", "Supprimer la cha�ne?", "Slette kanal?", "Poistetaanko kanava?", "Usunac kanal?", }, { "Delete timer?", "Timer l�schen?", "Odstani termin?", "Cancello il timer?", "Timer verwijderen?", "Apagar o timer?", "Supprimer la programmation?", "Slette timer?", "Poistetaanko ajastus?", "Usunac timer?", }, { "Delete recording?", "Aufzeichnung l�schen?", "Odstrani posnetek?", "Cancello la registrazione?", "Opname verwijderen?", "Apagar a grava��o?", "Supprimer l'enregistrement?", "Slette opptak?", "Poistetaanko nauhoitus?", "Usunac nagranie?", }, { "Timer still recording - really delete?", "Timer zeichnet auf - trotzdem l�schen?", "Snemanje po terminu - zares odstrani?", "Timer in regestazione - cancello?", "Timer neemt nog op - toch verwijderen?" "Timer activo - t�m a certeza que quer apagar?", "Enregistrement en cours - confirmez la suppression", "Timer gj�r opptak - vil du slette likevel?", "Ajastin nauhoittaa - poistetaanko silti?", "Nagrywanie w trakcie - napewno usunac?", }, { "Stop recording?", "Aufzeichnung beenden?", "Koncaj snemanje?", "Fermo la registrazione?", "Opname stoppen?", "Parar Grava��o?", "Arr�ter l'enregistrement?", "Stoppe opptak?", "Pys�ytet��nk� nauhoitus?", "Zakonczyc nagranie?", }, { "on primary interface", "auf dem prim�ren Interface", "na primarni napravi", "su interfaccia primaria", "op eerste interface", "no interface prim�rio", "sur la carte primaire", "p� f�rste enhet", "p��vastaanottimella", "na pierwszym interfejsie", }, { "Cancel editing?", "Schneiden abbrechen?", "Zelite prekiniti urejanje?", "Annullo la modifica?", "Bewerken afbreken?", "Cancelar Modifica��es?", "Annuler les modifications?", "Avbryte redigering?", "Peruutetaanko muokkaus?", "Zakonczyc montaz?", }, { "Really restart?", "Wirklich neu starten?", "Zares ponoven zagon", "Eseguo un restart?", "Werkelijk opnieuw starten?", "Tem a certeza que quer reiniciar?", "Red�marrer?", "Vil du virkelig starte p� nytt?", "Aloitetaanko varmasti alusta?", "Rzeczywiscie nowy start?", }, { "Recording - restart anyway?", "Aufnahme l�uft - trotzdem neu starten?", "Snemanje - zares ponoven zagon", "In registrazione - restart comunque?", "Opname loopt - toch opnieuw starten?", "Em grava��o - quer mesmo reiniciar?", "Enregistrement en cours - red�marrer?", "Gj�r opptak - starte p� nytt likevel?", "Nauhoitus k�ynniss� - aloitetaanko alusta?", "Nagrywanie w trakcie - rzeczywiscie nowy start?", }, { "Recording - shut down anyway?", "Aufnahme l�uft - trotzdem ausschalten?", "Snemanje - zares izklopi?", "In registrazione - spengo comunque?", "Opname loopt - toch uitschakelen?", "Em grava��o - quer mesmo desligar?", "Enregistrement en cours - confirmez l'arr�t", "Gj�r opptak - sl� av likevel?", "Nauhoitus kesken - lopetetaanko se?", "Nagrywanie w trakcie - mimo to wylaczyc?", }, { "Recording in %d minutes, shut down anyway?", "Aufnahme in %d Minuten - trotzdem ausschalten?", "Snemanje cez %d minut, zares izklopi?", "Registrazione fra %d minuti - spengo comunque?", "Opname in %d minuten - toch uitschakelen?", "Em grava��o dentro de %d minutos - quer mesmo desligar?", "Enregistrement dans %d minutes - confirmez l'arr�t", "Skal gj�re opptak om %d minutter - sl� av likevel?", "Nauhoitus alkaisi %d min. kuluttua - sammutetaanko silti?", "Nagrywanie za %d minut - mimo to wylaczyc?", }, { "Press any key to cancel shutdown", "Taste dr�cken um Shutdown abzubrechen", "Pritisni katerikoli gumb za preklic izklopa", "Un tasto per annullare lo spegnimento", "Druk een toets om shutdown af te breken", "Pressione qualquer tecla para cancelar", "Appuyez sur une touche pour annuler l'arr�t", "Trykk en tast for ikke � sl� av", "Peruuta pys�ytys painamalla jotakin n�pp�int�", "Dowolny przycisk zatrzyma wylaczanie", }, // Channel parameters: { "Name", "Name", "Naziv", "Nome", "Naam", "Nome", "Nom", "Navn", "Nimi", "Nazwa", }, { "Frequency", "Frequenz", "Frekvenca", "Frequenza", "Frequentie", "Frequ�ncia", "Fr�quence", "Frekvens", "Taajuus", "Czestotliwosc", }, { "Polarization", "Polarisation", "Polarizacija", "Polarizzazione", "Polarisatie", "Polariza��o", "Polarisation", "Polarisasjon", "Polarisaatio", "Polaryzacja", }, { "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", "DiSEqC", }, { "Srate", "Srate", "Srate", "Srate", "Srate", "Srate", "Fr�q. Symbole", "Srate", "Srate", "Srate", }, { "Vpid", "Vpid", "Vpid", "Vpid", "Vpid", "PID de V�deo", "PID Vid�o", "Vpid", "Kuva PID", "Vpid", }, { "Apid1", "Apid1", "Apid1", "Apid1", "Apid1", "PID �udio (1)", "PID Audio (1)", "Apid1", "��ni PID1", "Apid1", }, { "Apid2", "Apid2", "Apid2", "Apid2", "Apid2", "Apid2", "PID �udio (2)", "Apid2", "��ni PID2", "Apid2", }, { "Dpid1", "Dpid1", "Dpid1", "Dpid1", "Dpid1", "PID AC3 (1)", "PID AC3 (1)", "AC3pid1", "AC3 PID1", "Dpid1", }, { "Dpid2", "Dpid2", "Dpid2", "Dpid2", "Dpid2", "PID AC3 (2)", "PID AC3 (2)", "AC3pid2", "AC3 PID2", "Dpid2", }, { "Tpid", "Tpid", "Tpid", "Tpid", "Tpid", "PID Teletexto", "PID T�l�texte", "Tekst-TV pid", "TekstiTV PID", "Tpid", }, { "CA", "CA", "CA", "CA", "CA", "Encripta��o", "Cryptage", "Kortleser", "Salauskortti", "CA", }, { "Pnr", "Pnr", "Pnr", "Pnr", "Pnr", "N�m. Progr.", "Num. Progr.", "Program Id", "Ohjelmatunnus", "Pnr", }, // Timer parameters: { "Active", "Aktiv", "Aktivno", "Attivo", "Actief", "Activo", "Actif", "Aktiv", "Aktiivinen", "Aktywny", }, { "Channel", "Kanal", "Kanal", "Canale", "Kanaal", "Canal", "Cha�ne", "Kanal", "Kanava", "Kanal", }, { "Day", "Tag", "Dan", "Giorno", "Dag", "Dia", "Jour", "Dag", "P�iv�", "Dzien", }, { "Start", "Anfang", "Zacetek", "Inizio", "Begin", "Inicio", "D�but", "Start", "Aloitus", "Poczatek", }, { "Stop", "Ende", "Konec", "Fine", "Einde", "Fim", "Fin", "Slutt", "Lopetus", "Koniec", }, { "Priority", "Priorit�t", "Prioriteta", "Priorita", "Prioriteit", "Prioridade", "Priorit�", "Prioritet", "Prioriteetti", "Priorytet", }, { "Lifetime", "Lebensdauer", "Veljavnost", "Durata", "Bewaarduur", "Dura��o", "Dur�e de vie", "Levetid", "Voimassaolo", "Trwalosc dni", }, { "File", "Datei", "Datoteka", "Nome", "Filenaam", "Ficheiro", "Fichier", "Filnavn", "Tiedosto", "Plik", }, { "First day", "Erster Tag", "Prvi dan", "Primo giorno", "Eerste dag", "Primeiro dia", "Premier jour", "F�rste dag", "1. p�iv�", "Pierwszy dzien", }, // Error messages: { "Channel is being used by a timer!", "Kanal wird von einem Timer benutzt!", "Urnik zaseda kanal!", "Canale occupato da un timer!", "Kanaal wordt gebruikt door een timer!", "Canal a ser utilizador por um timer!", "Cette cha�ne est en cours d'utilisation!", "Kanalen er i bruk av en timer!", "Kanava on ajastimen k�yt�ss�!", "Kanal jest zajety przez timer nagran", }, { "Can't switch channel!", "Kanal kann nicht umgeschaltet werden!", "Ne morem preklopiti kanala!", "Impossibile cambiare canale!", "Kan geen kanaal wisselen!", "N�o pode mudar de canal!", "Impossible de changer de cha�ne!", "Ikke mulig � skifte kanal!", "Kanavan vaihtaminen ei mahdollista!", "Kanal nie moze byc teraz przelaczony!", }, { "Timer is recording!", "Timer zeichnet gerade auf!", "Snemanje po urniku!", "Registrazione di un timer in corso!", "Timer is aan het opnemen!", "Timer a gravar!", "Enregistrement en cours!", "Timer gj�r opptak!", "Ajastinnauhoitus k�ynniss�!", "Timer nagrywa!", }, { "Error while accessing recording!", "Fehler beim ansprechen der Aufzeichnung!", "Napaka pri dostopu do posnetka", "Errore nel tentativo di acc alla registrazione", "Fout bij lezen opname!", "Erro ao aceder � grava��o", "Impossible d'acc�der � l'enregistrement", "Feil under lesing av opptak!", "Nauhoituksen toistaminen ep�onnistui!", "Blad - brak dostepu do nagrania!", }, { "Error while deleting recording!", "Fehler beim L�schen der Aufzeichnung!", "Napaka pri odstranjevanju posnetka!", "Errore durante la canc del filmato!", "Fout bij verwijderen opname!", "Erro enquanto apagava uma grava��o!", "Erreur de suppression de l'enregistrement!", "Feil under sletting av opptak!", "Nauhoituksen poistaminen ep�onnistui!", "Blad przy usuwaniu nagrania!", }, { "*** Invalid Channel ***", "*** Ung�ltiger Kanal ***", "*** Neznan kanal ***", "*** CANALE INVALIDO ***", "*** Ongeldig kanaal ***", "*** Canal Inv�lido! ***", "*** Cha�ne invalide! ***", "*** Ugyldig Kanal! ***", "*** Virheellinen kanavavalinta! ***", "*** Niewazny kanal ***", }, { "No free DVB device to record!", "Keine freie DVB-Karte zum Aufnehmen!", "Ni proste DVB naprave za snemanje!", "Nessuna card DVB disp per registrare!", "Geen vrije DVB kaart om op te nemen!", "Nenhuma placa DVB disponivel para gravar!", "Pas de carte DVB disponible pour l'enregistrement!", "Ingen ledige DVB enheter for opptak!", "Ei vapaata vastaanotinta nauhoitusta varten!", "Brak wolnej karty DVB do nagrywania!", }, { "Channel locked (recording)!", "Kanal blockiert (zeichnet auf)!", "Zaklenjen kanal (snemanje)!", "Canale bloccato (in registrazione)!", "Kanaal geblokkeerd (neemt op)!", "Canal bloqueado (a gravar)!", "Cha�ne verrouill�e (enregistrement en cours)!", "Kanalen er l�st (opptak)!", "Kanava lukittu (nauhoitusta varten)!", "Kanal zablokowany (nagrywanie w toku)!", }, { "Can't start Transfer Mode!", "Transfer-Mode kann nicht gestartet werden!", "Ne morem zaceti z prenosnim nacinom", "Impossibile iniziare la modalita' di trasferimento!", "Kan Transfer-Mode niet starten", "Imposs�vel iniciar modo de transfer�ncia!", "Impossible d'utiliser le mode transfert!", "Kan ikke starte transfer modus!", "K�sitt�m�tt�mi� teknisi� ongelmia!", "Tryb transferowy jest niemozliwy!", }, { "Can't start editing process!", "Schnitt kann nicht gestartet werden!", "Ne morem zaceti urejanja!", "Imposs iniziare processo di modifica", "Kan niet beginnen met bewerken!", "N�o pode iniciar a modifica��o!", "Impossible de commencer le montage!", "Kan ikke starte redigeringsprosessen!", "Muokkauksen aloittaminen ei onnistu!", "Uruchamianie montazu jest niemozliwe!", }, { "Editing process already active!", "Schnitt bereits aktiv!", "Urejanje je ze aktivno!", "Processo di modifica gia` attivo", "Bewerken is al actief!", "Processo de modifica��o j� activo!", "Montage d�j� en cours!", "Redigeringsprosessen er allerede aktiv!", "Muokkaus on jo k�ynniss�!", "Montaz w toku!", }, { "Can't shutdown - option '-s' not given!", "Shutdown unm�glich - Option '-s' fehlt!", "Zaustavitev ni mogoca - opcija '-s' ni podana!", "Impossibile spegnere - parametro '-s' non passato", "Shutdown onmogelijk - Optie '-s' ontbreekt!", "Imposs�vel desligar - falta a op��o '-s'!", "Arr�t impossible - option '-s' absente!", "Kan ikke sl� av - startet uten parameteret '-s'!", "Ei voida sammuttaa '-s' parametria ei annettu!", "Wylaczenie niemozliwe - brak opcji '-s' !", }, { "Low disk space!", "Platte beinahe voll!", "Zmanjkuje prostora na disku", "Poco spazio su disco!", "Disk bijna vol!", "Espa�o em disco reduzido!", "Disque presque plein!", "Lite ledig diskplass!", "Kovalevy l�hes t�ynn�!", "Dysk wkrotce pelny!", }, // Setup pages: { "OSD", "OSD", "OSD", "OSD", "OSD", "OSD", "Affichage des menus", "OSD", "Tekstin�ytt�", "OSD", }, { "EPG", "EPG", "EPG", "EPG", "EPG", "EPG", "Guide des programmes", "Programoversikt", "Ohjelmaopas", "EPG", }, { "DVB", "DVB", "DVB", "Scheda DVB", "DVB", "DVB", "Cartes DVB", "DVB-enheter", "DVB", "DVB", }, { "LNB", "LNB", "LNB", "LNB", "LNB", "LNB", "LNB", "LNB", "LNB", "LNB", }, { "CICAM", "CICAM", "CICAM", "CICAM", "CICAM", "CICAM", "Acc�s conditionnel", "CICAM", "CICAM", "CICAM", }, { "Recording", "Aufnahme", "Snemanje", "Registrazione", "Opname", "A gravar", "Enregistrement", "Opptak", "Nauhoita", "Nagranie", }, { "Replay", "Wiedergabe", "Predvajanje", "Replay", "Afspelen", "Replay", "Lecture", "Spill av", "Toista", "Odtwarzanie", }, { "Miscellaneous", "Sonstiges", "Ostalo", "Generici", "Overig", "Outros", "Divers", "Forskjellig", "Sekalaista", "Pozostale", }, { "Restart", "Neustart", "Ponoven zagon", "Restart", "Herstart", "Reiniciar", "Red�marrer", "Start p� nytt", "Aloita uudelleen", "Zastartowac", }, // Setup parameters: { "Setup.OSD$Language", "Sprache", "Jezik", "Linguaggio", "Taal", "Linguagem", "Langue", "Spr�k", "Kieli", "Jezyk", }, { "Setup.OSD$Width", "Breite", "Sirina", "Largh OSD", "Breedte", "Largura", "Largeur", "Bredde", "Leveys", "Szerokosc", }, { "Setup.OSD$Height", "H�he", "Visina", "Altezz OSD", "Hoogte", "Altura", "Hauteur", "H�yde", "Korkeus", "Wysokosc", }, { "Setup.OSD$Message time (s)", "Anzeigedauer f�r Nachrichten (s)", "Cas sporocila (s)", "Tempo del messaggio (s)", "Weergave duur van berichten (s)", "Mostrar contador (s)", "Dur�e affichage �cran (s)", "Tid meldinger skal vises (s)", "Ilmoitusten n�kymisaika (s)", "Czas wyswietlania wiadomosci (s)", }, { "Setup.OSD$Channel info position", "Kanal-Info Position", "Pozicija informacije o kanalu", "Posizione info canale", "Kanaal info positie", "Posi��o de info dos canais", "Position infos cha�nes", "Posisjon p� kanalinformasjon", "Kanavainfon sijainti", "Lokalizacja informacji o kanale", }, { "Setup.OSD$Info on channel switch", "Info beim Kanalwechsel", "Pokazi naziv kanala", "Vis info nel cambio canale", "Kanaal info tonen", "Mostrar info ao mudar de Canal", "Affichage progr. en cours", "Info ved kanalskifte", "N�yt� kanavainfo", "Informacja przy zmianie kanalu", }, { "Setup.OSD$Scroll pages", "Seitenweise scrollen", "Drsni meni", "Scrolla pagina nel menu", "Scrollen per pagina", "Scroll da p�gina no menu", "Affichage progr. suivant", "Rask rulling i menyer", "Valikkojen rullaus", "Przesuwac stronami", }, { "Setup.OSD$Sort timers", "Timer sortieren", "Sortiraj termine", "Ordinamento timer", "Timers sorteren", "Ordenar os timers", "Trier les programmations", "Sorter timere", "J�rjest� ajastimet", "Sortowanie timerow", }, { "Setup.OSD$Recording directories", "Aufnahme Verzeichnisse", "Direktoriji za posnetke", "Directory di registrazione", "Opname directories", "Directorias de grava��o", "Dossiers d'enregistrements", "Kataloger til opptak", "Nauhoitushakemistot", "Wykaz nagran", }, { "Setup.EPG$EPG scan timeout (h)", "Zeit bis EPG Scan (h)", "Cas do EPG pregleda (h)", "Timeout EPG (h)", "EPG-scan Timeout (h)", "Expirou o EPG (h)", "Temps maxi EPG (h)", "Ledig tid f�r EPG-s�k (h)", "Ohjelmatied. odotusaika (h)", "Czas do skanu EPG (h)", }, { "Setup.EPG$EPG bugfix level", "EPG Fehlerbereinigung", "Nivo za popravilo EPG napak", "EPG livello corr", "EPG foutcorrectieniveau", "N�vel de correct��o EPG", "Niveau de correction EPG", "Niv� for EPG-feilretting", "EPG Bugfix Level", "Poziom bledow EPG", }, { "Setup.EPG$Set system time", "Systemzeit stellen", "Nastavi sistemski cas", "Settaggio orario auto", "Systeem klok instellen", "Ajustar rel�gio do sistema", "Ajuster l'heure du syst�me", "Juster system-klokken", "Vastaanota kellonaika", "Ustawianie czasu", }, { "Setup.EPG$Use time from transponder", "Transponder f�r Systemzeit", "Transponder za nastavitev casa", "Utilizza orario da transponder", "Gebruik transponder tijd voor systeem", "Usar rel�gio do transponder", "Utiliser l'heure de la cha�ne", "Bruk klokke fra transponder", "Vastaanota kellonaika l�hettimelt�", "Transponder do ustawiania czasu", }, { "Setup.DVB$Primary DVB interface", "Prim�res DVB Interface", "Primarna naprava", "Scheda DVB primaria", "Eerste DVB kaart", "Interface DVB prim�rio", "Carte DVB primaire", "Hoved DVB-enhet", "Ensisij. vast.otin", "Pierwotny interfejs DVB", }, { "Setup.DVB$Video format", "Video Format", "Video format", "Formato video", "Videoformaat", "Formato v�deo", "Format vid�o", "TV-Format", "Kuvamuoto", "Format telewizyjny", }, { "Setup.LNB$SLOF (MHz)", "SLOF (MHz)", "Frekvenca preklopa (MHz)", "SLOF (MHz)", "SLOF (MHz)", "Limite de bandas LNB (MHz)", "Limite de bandes LNB (MHz)", "LO-grensefrekvens (MHz)", "SLOF (MHz)", "SLOF (MHz)", }, { "Setup.LNB$Low LNB frequency (MHz)", "Untere LNB-Frequenz (MHz)", "Spodnja LNB-frek. (MHz)", "Freq LO LNB (MHz)", "Laagste LNB frequentie (MHz)", "Frequ�ncia base LNB (MHz)", "Fr�quence basse LNB (MHz)", "LO-frekvens i lavb�ndet (MHz)", "LO LNB taajuus (MHz)", "Dolna czestotliwosc LNB (MHz)", }, { "Setup.LNB$High LNB frequency (MHz)", "Obere LNB-Frequenz (MHz)", "Zgornja LNB-frek. (MHz)", "Freq HI LNB (MHz)", "Hoogste LNB frequentie (MHz)", "Frequ�ncia alta LNB (MHz)", "Fr�quence haute LNB (MHz)", "LO-frekvens i h�yb�ndet (MHz)", "HI LNB taajuus (MHz)", "Gorna czestotliwosc LNB (MHz)", }, { "Setup.LNB$Use DiSEqC", "DiSEqC benutzen", "Uporabi DiSEqC", "Utilizza DiSEqC", "DiSEqC gebruiken", "Utilizar DiSEqC", "Utiliser le DiSEqC", "Bruk DiSEqC", "K�yt� DiSEqC", "Uzywac DiSEqC", }, { "Setup.CICAM$CICAM DVB", "CICAM DVB", "CICAM DVB", "CICAM DVB", "CICAM DVB", "CICAM DVB", "Acc�s conditionnel", "CICAM DVB", "CICAM DVB", "CICAM DVB", }, { "Setup.Recording$Margin at start (min)", "Zeitpuffer bei Anfang (min)", "Premor pred zacetkom (min)", "Min margine inizio (min)", "Tijd marge begin (min)", "Margem inicial (min)", "Marge ant�rieure (min)", "Opptaksmargin start (min)", "Aloitusmarginaali (min)", "Poczatkowy czas buforowy (min)", }, { "Setup.Recording$Margin at stop (min)", "Zeitpuffer bei Ende (min)", "Premor za koncem (min)", "Min margine fine (min)", "Tijd marge eind (min)", "Margem final (min)", "Marge post�rieure (min)", "Opptaksmargin slutt (min)", "Lopetusmarginaali (min)", "Koncowy czas buforowy (min)", }, { "Setup.Recording$Primary limit", "Prim�r-Limit", "Osnovna meja", "Limite primario", "Eerste grens", "Limite Prim�rio", "Premi�re limite", "Prioritetsgrense HovedDVB", "PrimaryLimit", "Pierwotny limit", }, { "Setup.Recording$Default priority", "Default Priorit�t", "Osnovna prioriteta", "Priorita' predefinita", "Standaard prioriteit", "Prioridade por defeito", "Priorit� par d�faut", "Normal prioritet (Timer)", "Oletusprioriteetti", "Priorytet pierwotny", }, { "Setup.Recording$Default lifetime (d)", "Default Lebensdauer (d)", "Osnovni zivljenski cas (d)", "Durata predefinita (d)", "Standaard levensduur (d)", "Validade por defeito (d)", "Dur�e de vie par d�faut (d)", "Normal levetid timer (d)", "Oletus voimassaoloaika (d)", "Pierwotna trwalosc (d)", }, { "Setup.Recording$Use episode name", "Episodenname verwenden", "Uporabi ime epizode", "Utilizza il nome dell'episodio", "Gebruik episode naam", "Utilizar o nome do epis�dio", "Utiliser le nom de l'�pisode", "Bruk episodenavn", "K�yt� jakson nime�", "Czy uzywac nazwe epizodu", }, { "Setup.Recording$Mark instant recording", "Direktaufzeichnung markieren", "Oznaci direktno snemanje", "Marca la registrazione", "Direkte opnamen markeren", "Marca de grava��o r�pida", "Enregistrement imm�diat", "Markere direkteopptak", "Merkitse v�lit�n nauh.", "Zaznaczyc natychm. nagranie", }, { "Setup.Recording$Name instant recording", "Direktaufzeichnung benennen", "Ime za direktno snemanje", "Nome registrazione istantanea", "Naam direkt-opname", "Nome de grava��o r�pida", "Noms enregistr. imm�diats", "Navngi direkteopptak", "Nime� v�lit�n nauh.", "Nazwac natychm. nagranie", }, { "Setup.Recording$Record Dolby Digital", "Dolby Digital Ton aufzeichnen", "Posnemi dolby digital", "Registra dolby digital", "Dolby Digital geluid opnamen", "Gravar em Dolby Digital", "Enregistrer en Dolby Digital", "Ta opp Dolby Digital lyd", "Dolby Digital nauhoitus", "Nagrywac Dolby Digital", }, { "Setup.Recording$Max. video file size (MB)", "Max. Video Dateigr��e (MB)", "Najvecja velikost datoteke (MB)", "Dimensione massima file video (MB)", "Maximale omvang video file (MB)", "Tamanho m�ximo dos ficheiros (MB)", "Taille maxi des fichiers (MB)", "Maksimal st�rrelse p� videofiler (MB)", "Maksimi tiedoston koko (MB)", "Maks. wielkosc pliku (MB)", }, { "Setup.Recording$Split edited files", "Editierte Dateien aufteilen", "Razdeli urejene datoteke", "Dividi i file modificati", "Bewerkte files opdelen", "Quebrar ficheiros", "S�parer les s�quences", "Splitt redigerte filer", "Paloittele muokatut", "Dzielic montowane pliki", }, { "Setup.Replay$Multi speed mode", "MultiSpeed Modus", "Rezim z vec hitrostmi", "Modalita' multispeed", "Multi-speed mode", "Modo de multi-speed", "Mode multi-vitesses", "Multispeed modus", "Moninopeustila", "Tryb wielopredkosciowy", }, { "Setup.Replay$Show replay mode", "Wiedergabestatus anzeigen", "Prikazi rezim predvajanja", "Modalita' di visualizz su replay", "Weergave mode aangeven", "Mostrar modo de replay", "Affichage mode de lecture", "Vis avspillingsmodus", "N�yt� toiston tila", "Wyswietlac status odtwarzania", }, { "Setup.Miscellaneous$Min. event timeout (min)", "Mindest Event Pause (min)", "Najmanjsi cas dogodka (min)", "Tempo minimo di pausa (min)", // ??? i don't know... "Minimale event time-out (min)", "Per�odo m�nimo de pausa (min)", "MinEventTimeout (min)", // Too difficult to translate - read the manual! "Minste hendelsespause (min)", "Minimi tapahtuman odotus (min)", "Min. czas do nast. akcji (Event) (min)", }, { "Setup.Miscellaneous$Min. user inactivity (min)", "Mindest Benutzer-Inaktivit�t (min)", "Najmanjsi cas neaktivnosti (min)", "Tempo minimo di inattivita' (min)", "Minimum gebruikers inactiviteit (min)", "Per�odo m�nimo de inactividade (min)", "Dur�e minimale d'inactivit� (min)", "Minimumstid med inaktivitet (min)", "Minimi k�ytt�j�n odotus (min)", "Min. brak aktywnosci uzytkownika (min)", }, { "Setup.Miscellaneous$SVDRP timeout (min)", "SVDRP Timeout (min)", "SVDRP Timeout (min)", "Timeout SVDRP (min)", "SVDRP Timeout (min)", "Timeout SVDRP (min)", "Temps maxi SVDRP (min)", "Ubrukt SVDRP-levetid (min)", "SVDRP odotusaika (min)", "Min. brak aktywnosci SVDRP (min)", }, // The days of the week: { "MTWTFSS", "MDMDFSS", "PTSCPSN", "DLMMGVS", "MDWDVZZ", "STQQSSD", "LMMJVSD", "MTOTFLS", "MTKTPLS", "PWSCPSN", }, { "MonTueWedThuFriSatSun", // must all be 3 letters! "MonDieMitDonFreSamSon", "PonTorSreCetPetSobNed", "LunMarMerGioVenSabDom", "MaaDinWoeDonVryZatZon", "SegTerQuaQuiSexSabDom", "LunMarMerJeuVenSamDim", "ManTirOnsTorFreL�rS�n", "MaaTiiKesTorPerLauSun", "PonWtoSroCzwPiaSobNie", }, // Learning keys: { "Learning Remote Control Keys", "Fernbedienungs-Codes lernen", "Ucim se kod upravljalca", "Apprendimento tasti unita` remota", "Leren toetsen afstandsbediening", "Aprender as teclas do telecomando", "Apprentissage des codes de t�l�commande", "L�re fjernkontrolltaster", "Kaukos��timen n�pp�inten opettelu", "Nauka kodu pilota", }, { "Phase 1: Detecting RC code type", "Phase 1: FB Code feststellen", "Faza 1: Sprejemanje IR kode", "Fase 1: tipo ricevitore RC", "Fase 1: detecteren type afstandsbediening", "Fase 1: detectar tipo de receptor", "Phase 1: D�tection du type de code", "Fase 1: Finne fjernkontroll-kodetype", "Vaihe 1: L�hetystavan selvitt�minen", "Faza 1: Detekcja typu kodu", }, { "Press any key on the RC unit", "Eine Taste auf der FB dr�cken", "Pritisnite tipko na upravljalcu", "Premere un tasto nell'unita` RC", "Druk op een willekeurige knop", "Pressione qualquer tecla do telecomando", "Appuyer sur une touche de la t�l�commande", "Trykk en av tastene p� fjernkontrollen", "Paina mit� tahansa kaukos��timen n�pp�int�", "Nacisnac klawisz pilota", }, { "RC code detected!", "FB Code erkannt!", "IR koda sprejeta!", "Codice RC rilevato!", "Afstandsbediening code herkend!", "C�digo do telecomando detectado!", "Code de la t�l�commande d�tect�!", "Fjernkontroll-kodetype funnet!", "N�pp�inpainallus vastaanotettu!", "Kod pilota zostal poznany!", }, { "Do not press any key...", "Keine Taste dr�cken...", "Ne pritiskajte tipk...", "Non premere alcun tasto...", "Druk niet op een knop...", "N�o pressione nada...", "N'appuyer sur aucune touche ...", "Ikke trykk p� noen av tastene...", "�l� paina mit��n n�pp�int�...", "Nie naciskac klawiszy...", }, { "Phase 2: Learning specific key codes", "Phase 2: Einzelne Tastencodes lernen", "Faza 2: Ucenje posebnih kod", "Fase 2: Codici specifici dei tasti", "Fase 2: Leren specifieke toets-codes", "Fase 2: A aprender c�digos especificos", "Phase 2: Apprentissage des codes des touches", "Fase 2: L�re spesifikke tastekoder", "Vaihe 2: N�pp�inkoodien opettelu", "Faza 2: Nauka pojedynczych klawiszy", }, { "Press key for '%s'", "Taste f�r '%s' dr�cken", "Pritisnite tipko za '%s'", "Premere il tasto per '%s'", "Druk knop voor '%s'", "Pressione tecla para '%s'", "Appuyer sur la touche '%s'", "Trykk tasten for '%s'", "Paina n�pp�int� toiminnolle '%s'", "Nacisnac klawisz dla '%s'", }, { "Press 'Up' to confirm", "'Auf' dr�cken zum Best�tigen", "Pritisnite tipko 'Gor' za potrditev", "Premere 'Su' per confermare", "Druk 'Omhoog' om te bevestigen", "Pressione 'Cima' para confirmar", "Appuyer sur 'Haut' pour confirmer", "Trykk 'Opp' for � bekrefte", "Paina 'Yl�s' hyv�ksy�ksesi", "Nacisnac 'Gora' do potwierdzenia", }, { "Press 'Down' to continue", "'Ab' dr�cken zum Weitermachen", "Pritisnite tipko 'Dol' za nadaljevanje", "Premere 'Giu' per confermare", "Druk 'Omlaag' om verder te gaan", "Pressione 'Baixo' para continuar", "Appuyer sur 'Bas' pour continuer", "Trykk Ned' for � fortsette", "Paina 'Alas' jatkaaksesi", "Nacisnac 'Dol' zeby kontynuowac", }, { "(press 'Up' to go back)", "('Auf' dr�cken um zur�ckzugehen)", "(pritisnite 'Gor' za nazaj)", "(premere 'Su' per tornare indietro)", "(druk 'Omhoog' om terug te gaan)", "(Pressione 'Cima' para voltar)", "(Appuyer sur 'Haut' pour revenir en arri�re)", "(trykk 'Opp' for � g� tilbake)", "(paina 'Yl�s' palataksesi takaisin)", "(Nacisnac 'Gora' cofa)", }, { "(press 'Down' to end key definition)", "('Ab' dr�cken zum Beenden)", "(pritisnite 'Dol' za konec)", "('Giu' per finire la definiz tasti)", "(Druk 'Omlaag' om te beeindigen)", "(Pressione 'Baixo' para terminar a defini��o)", "(Appuyer sur 'Bas' pour terminer)", "(trykk 'Ned' for � avslutte innl�ring)", "(paina 'Alas' lopettaaksesi n�pp�inten opettelun)", "(Nacisnac 'Dol' by zakonczyc)", }, { "Phase 3: Saving key codes", "Phase 3: Codes abspeichern", "Faza 3: Shranjujem kodo", "Fase 3: Salvataggio key codes", "Fase 3: Opslaan toets codes", "Fase 3: A salvar os c�digos das teclas", "Phase 3: Sauvegarde des codes des touches", "Fase 3: Lagre tastekoder", "Vaihe 3: N�pp�inkoodien tallettaminen", "Faza 3: Zapamietac Kod", }, { "Press 'Up' to save, 'Down' to cancel", "'Auf' speichert, 'Ab' bricht ab", "'Gor' za potrditev, 'Dol' za prekinitev", "'Su' per salvare, 'Giu' per annullare", "'Omhoog' te bewaren, 'Omlaag' voor annuleren", "'Cima' para Salvar, 'Baixo' para Cancelar", "Appuyer sur 'Haut' pour sauvegarder, 'Bas' pour annuler", "Trykk 'Opp' for � lagre, 'Ned' for � avbryte", "Paina 'Yl�s' tallettaaksesi ja 'Alas' peruuttaaksesi", "'Gora' zapamietuje, 'Dol' przerywa", }, // Key names: { "Up", "Auf", "Gor", "Su", "Omhoog", "Cima", "Haut", "Opp", "Yl�s", "Gora", }, { "Down", "Ab", "Dol", "Giu", "Omlaag", "Baixo", "Bas", "Ned", "Alas", "Dol", }, { "Menu", "Men�", "Meni", "Menu", "Menu", "Menu", "Menu", "Meny", "Valikko", "Menu", }, { "Ok", "Ok", "Ok", "Ok", "Ok", "Ok", "Ok", "Ok", "Ok", "Ok", }, { "Back", "Zur�ck", "Nazaj", "Indietro", "Terug", "Voltar", "Retour", "Tilbake", "Takaisin", "Wstecz", }, { "Left", "Links", "Levo", "Sinistra", "Links", "Esquerda", "Gauche", "Venstre", "Vasemmalle", "Lewo", }, { "Right", "Rechts", "Desno", "Destra", "Rechts", "Direita", "Droite", "H�yre", "Oikealle", "Prawo", }, { "Red", "Rot", "Rdeca", "Rosso", "Rood", "Vermelho", "Rouge", "R�d", "Punainen", "Czerwony", }, { "Green", "Gr�n", "Zelena", "Verde", "Groen", "Verde", "Vert", "Gr�nn", "Vihre�", "Zielony", }, { "Yellow", "Gelb", "Rumena", "Giallo", "Geel", "Amarelo", "Jaune", "Gul", "Keltainen", "Zolty", }, { "Blue", "Blau", "Modra", "Blu", "Blauw", "Azul", "Bleu", "Bl�", "Sininen", "Niebieski", }, { "Power", "Ausschalten", "Izklop", "Power", "Uitschakelen", "Ligar", "Arr�t", "Power", "Virtakytkin", "Wylaczyc", }, { "Volume+", "Lautst�rke+", "Glasnost+", "Volume+", "Volume+", "Volume+", "Volume+", "Volum+", "��nenvoimakkuus+", "Glosnej", }, { "Volume-", "Lautst�rke-", "Glasnost-", "Volume-", "Volume-", "Volume-", "Volume-", "Volum-", "��nenvoimakkuus-", "Ciszej", }, { "Mute", "Stumm", "Izklop zvoka", "Mute", "Geluid onderbreken", "Sem som", "Coupure du son", "Lyd av", "��nen vaimennus", "Cisza", }, // Miscellaneous: { "yes", "ja", "da", "si", "ja", "sim", "oui", "ja", "kyll�", "tak", }, { "no", "nein", "ne", "no", "nee", "n�o", "non", "nei", "ei", "nie", }, { "top", "oben", "zgoraj", "limite sup", "boven", "topo", "haut", "�vre", "yl�", "gora", }, { "bottom", "unten", "spodaj", "limite inf", "onder", "fundo", "bas", "nedre", "ala", "dol", }, { "Disk", "Disk", "Disk", "Disk", "Disk", "Disk", "Disque", "Disk", "Disk", "Disk", }, { "free", "frei", "prosto", "liberi", "vrij", "livre", "restant", "ledig", "vapaa", "pozostalo", }, { "Jump: ", // note the trailing blank "Springen: ", "Skoci: ", "Vai a: ", "Springen: ", "Saltar: ", "Acc�s direct: ", "Hopp: ", "Hypp��: ", "Skok: ", }, { "Volume ", // note the trailing blank "Lautst�rke ", "Glasnost ", "Volume ", "Volume ", "Volume ", "Volume ", "Volum ", "��nenvoimakkuus ", "Glosnosc ", }, { " Stop replaying", // note the leading blank! " Wiedergabe beenden", " Prekini ponavljanje", " Interrompi riproduzione", " Stop afspelen", " Parar reprodu��o", " Arr�ter la lecture", " Stopp avspilling", " Pys�yt� toisto", " Zatrzymac odtwarzanie", }, { " Stop recording ", // note the leading and trailing blanks! " Aufzeichnung beenden ", " Prekini shranjevanje ", " Interrompi registrazione ", " Stop opnemen ", " Parar grava��o ", " Arr�ter l'enregistrement ", " Stopp opptak fra ", " Pys�yt� nauhoitus ", " Zatrzymac nagrywanie ", }, { " Cancel editing", // note the leading blank! " Schneiden abbrechen", " Prekini urejanje", " Annulla modifiche", " Bewerken afbreken", " Anular modifica��o", " Annuler le montage", " Avbryt redigering", " Peruuta muokkaus", " Przerwac montaz ", }, { "Switching primary DVB...", "Prim�res Interface wird umgeschaltet...", "Preklapljanje primarne naprave...", "Cambio su card DVB primaria...", "Eerste DVB-kaart wordt omgeschakeld...", "A mudar interface DVB prim�rio...", "Changement de carte DVB primaire...", "Bytter f�rste DVB-enhet..." "Vaihdetaan ensisijainen vastaanotin...", "Pierwszy interfejs DVB przelacza...", }, { "Up/Dn for new location - OK to move", "Auf/Ab f�r neue Position - dann OK", "Gor/Dol za novo poz. - Ok za premik", "Su/Giu per nuova posizione - OK per muovere", "Gebruik Omhoog/Omlaag - daarna Ok", "Cima/Baixo para nova localiza��o - Ok para mover", "Haut/Bas -> nouvelle place - OK -> d�placer", "Opp/Ned for ny plass - OK for � flytte", "Yl�s/Alas = liiku, OK = siirr�", "Gora/Dol na nowa pozycje - Ok zmienia", }, { "Editing process started", "Schnitt gestartet", "Urejanje se je zacelo", "Processo di modifica iniziato", "Bewerken is gestart", "Processo de modifica��o iniciado", "Op�ration de montage lanc�e", "Redigeringsprosess startet", "Muokkaus aloitettu", "Uruchomiony proces montazu", }, { "Editing process finished", "Schnitt beendet", "Proces urejanja koncan", "Processo di modifica terminato", "Bewerken is klaar", "Processo de modifica��o terminado", "Montage termin�", "Redigeringsprosess avsluttet", "Muokkaus lopetettu", "Proces montazu zakonczony", }, { "Editing process failed!", "Schnitt gescheitert!", "Napaka pri procesu urejenja!", "Processo di modifica fallito!", "Bewerken is mislukt!", "Falha no processo de modifica��o", "Echec du montage!", "Feil under redigering!", "Muokkaus ep�onnistui!", "Bledny proces montazu!", }, { "scanning recordings...", "Aufzeichnungen werden durchsucht...", "iskanje posnetkov...", "scansione registrazioni...", "Doorzoeken opnames...", "A pesquisar grava��es...", "Recherche des enregistrements...", "G�r igjennom opptakene...", "haetaan nauhoituksia...", "Skan nagran...", }, { NULL } }; const char *tr(const char *s) { if (Setup.OSDLanguage) { for (const tPhrase *p = Phrases; **p; p++) { if (strcmp(s, **p) == 0) { const char *t = (*p)[Setup.OSDLanguage]; if (t && *t) return t; } } esyslog(LOG_ERR, "no translation found for '%s' in language %d (%s)\n", s, Setup.OSDLanguage, Phrases[0][Setup.OSDLanguage]); } const char *p = strchr(s, '$'); return p ? p + 1 : s; } const char * const * Languages(void) { return &Phrases[0][0]; }