1
0
Fork 0
mirror of https://github.com/lrsjng/h5ai synced 2025-12-06 08:52:45 +01:00
This commit is contained in:
Fuan 2021-01-24 18:12:19 +01:00 committed by GitHub
commit 0326ce12d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 962 additions and 46 deletions

View file

@ -3,6 +3,7 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "besonderhede",
"displayAll": "Vertoon alles",
"download": "aflaai",
"empty": "leeg",
"files": "lêers",
@ -10,9 +11,18 @@
"folders": "gidse",
"grid": "rooster",
"icons": "ikone",
"info": "Inligting",
"language": "Taal",
"lastModified": "Laas verander",
"name": "Naam",
"noMatch": "geen resultaat",
"pagination": "Paginasie",
"pagInputBtn": "GO",
"pagInputTxt": "bladsy",
"parentDirectory": "Hoër Vlak",
"size": "Grootte"
"perPage": "### per bladsy",
"search": "soek",
"size": "Grootte",
"tree": "boom",
"view": "geaardheid"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "детайли",
"download": "изтегляне",
"displayAll": "Показване на ВСИЧКИ",
"empty": "празна",
"files": "файлове",
"filter": "филтър",
"folders": "директории",
"grid": "мрежа",
"icons": "икони",
"info": "Информация",
"language": "език",
"lastModified": "Последна промяна",
"name": "Име",
"noMatch": "няма съвпадение",
"pagination": "Пагинация",
"pagInputBtn": "ОТИВАМ",
"pagInputTxt": "страница",
"parentDirectory": "Предходна директория",
"size": "Размер"
"perPage": "### на страница",
"search": "търсене",
"size": "Размер",
"tree": "Дърво",
"view": "Разпореждане"
}

View file

@ -1,18 +1,28 @@
{
"lang": "čeština",
"dateFormat": "DD.MM.YYYY HH:mm",
"DateFormat": "DD.MM.YYYY HH:mm",
"details": "Podrobnosti",
"download": "Stáhnout",
"displayAll": "Zobrazit VŠE",
"empty": "Prázdná složka",
"files": "souborů",
"filter": "Filtr",
"folders": "složek",
"grid": "Seznam",
"icons": "Velké ikony",
"info": "Informace",
"language": "Jazyk",
"lastModified": "Datum změny",
"name": "Název",
"noMatch": "Žádná shoda",
"pagination": "Stránkování",
"pagInputBtn": "JÍT",
"pagInputTxt": "strana",
"parentDirectory": "Nadřazený adresář",
"size": "Velikost"
"perPage": "### na stránku",
"search": "vyhledávání",
"size": "Velikost",
"tree": "Strom",
"view": "Dispozice"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "detaljer",
"download": "download",
"displayAll": "Vis ALLE",
"empty": "tom",
"files": "filer",
"filter": "filter",
"folders": "mapper",
"grid": "grid",
"icons": "ikoner",
"info": "Oplysninger",
"language": "Sprog",
"lastModified": "Sidst ændret",
"name": "Navn",
"noMatch": "ingen match",
"pagination": "Paginering",
"pagInputBtn": "GÅ",
"pagInputTxt": "side",
"parentDirectory": "Overordnet mappe",
"size": "Størrelse"
"perPage": "### pr. Side",
"search": "søge",
"size": "Størrelse",
"tree": "Træ",
"view": "Disposition"
}

View file

@ -4,17 +4,23 @@
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "Details",
"download": "Download",
"displayAll": "ALLE anzeigen",
"empty": "leer",
"files": "Dateien",
"filter": "filtern",
"folders": "Ordner",
"grid": "Gitter",
"icons": "Icons",
"info": "Informationen",
"language": "Sprache",
"lastModified": "Geändert",
"name": "Name",
"noMatch": "keine Treffer",
"pagination": "Seitennummerierung",
"pagInputBtn": "GEHEN",
"pagInputTxt": "Seite",
"parentDirectory": "Übergeordnetes Verzeichnis",
"perPage": "### pro Seite",
"search": "suchen",
"size": "Größe",
"tree": "Baum",

View file

@ -4,15 +4,25 @@
"dateFormat": "DD/MM/YYYY HH:mm",
"details": "λεπτομέρειες",
"download": "μεταμόρφωση",
"displayAll": "Εμφάνιση ΟΛΩΝ",
"empty": "κενό",
"files": "αρχεία",
"filter": "φίλτρο",
"folders": "φάκελοι",
"grid": "πλέγμα",
"icons": "εικονίδια",
"info": "Πληροφορίες",
"language": "Γλώσσα",
"lastModified": "Τελευταία τροποποίηση",
"name": "Όνομα",
"noMatch": "κανένα αποτέλεσμα",
"pagination": "Σελιδοποίηση",
"pagInputBtn": "ΠΗΓΑΙΝΩ",
"pagInputTxt": "σελίδα",
"parentDirectory": "Προηγούμενος Κατάλογος",
"size": "Μέγεθος"
"perPage": "### ανά σελίδα",
"search": "ψάχνω",
"size": "Μέγεθος",
"tree": "Δέντρο",
"view": "Διάθεση"
}

View file

@ -5,17 +5,23 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "details",
"download": "download",
"displayAll": "Display ALL",
"empty": "empty",
"files": "files",
"filter": "filter",
"folders": "folders",
"grid": "grid",
"icons": "icons",
"info": "Informations",
"language": "Language",
"lastModified": "Last modified",
"name": "Name",
"noMatch": "no match",
"pagination": "Pagination",
"pagInputBtn": "GO",
"pagInputTxt": "page",
"parentDirectory": "Parent Directory",
"perPage": "### per page",
"search": "search",
"size": "Size",
"tree": "Tree",

View file

@ -4,19 +4,25 @@
"dateFormat": "DD/MM/YYYY HH:mm",
"details": "Detalles",
"download": "Descargar",
"displayAll": "Mostrar TODO",
"empty": "vacío",
"files": "Archivos",
"filter": "Filtrar",
"folders": "Directorios",
"grid": "Cuadrícula",
"icons": "Íconos",
"info": "Informaciones",
"language": "Idioma",
"lastModified": "Última modificación",
"name": "Nombre",
"noMatch": "Sin coincidencias",
"pagination": "Paginación",
"pagInputBtn": "ANDA",
"pagInputTxt": "página",
"parentDirectory": "Directorio superior",
"perPage": "### por página",
"search": "buscar",
"size": "Tamaño",
"tree": "Arbol",
"view": "Vista"
"view": "Disposición"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "DD-MM-YYYY HH.mm",
"details": "täpsem info",
"download": "laadi alla",
"displayAll": "Kuva KÕIK",
"empty": "tühi",
"files": "failid",
"filter": "filter",
"folders": "kataloogid",
"grid": "võre",
"icons": "ikoonid",
"info": "Teave",
"language": "Keel",
"lastModified": "Viimati muudetud",
"name": "Nimi",
"noMatch": "ei leitud sobivat",
"pagination": "Lehekülgede otsimine",
"pagInputBtn": "SAADA",
"pagInputTxt": "lehele",
"parentDirectory": "Emakataloog",
"perPage": "### lehe kohta",
"search": "otsi",
"size": "Suurus",
"tree": "Puu",
"view": "Vaade"
"view": "Dispositsioon"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "tiedot",
"download": "lataa",
"displayAll": "Näytä KAIKKI",
"empty": "tyhjä",
"files": "tiedostoa",
"filter": "suodata",
"folders": "hakemistoa",
"grid": "ruudukko",
"icons": "ikonit",
"info": "Tiedot",
"language": "Kieli",
"lastModified": "Viimeksi muokattu",
"name": "Nimi",
"noMatch": "ei osumia",
"pagination": "Sivunumerointi",
"pagInputBtn": "MENNÄ",
"pagInputTxt": "sivu",
"parentDirectory": "Ylähakemisto",
"size": "Koko"
"perPage": "### per sivu",
"search": "etsintä",
"size": "Koko",
"tree": "Puu",
"view": "Hävittäminen"
}

View file

@ -3,6 +3,7 @@
"dateFormat": "DD/MM/YYYY HH:mm",
"details": "détails",
"displayAll": "Afficher tout",
"download": "télécharger",
"empty": "vide",
"files": "Fichiers",
@ -10,11 +11,16 @@
"folders": "Répertoires",
"grid": "grille",
"icons": "icônes",
"info": "Informations",
"language": "Langue",
"lastModified": "Dernière modification",
"name": "Nom",
"noMatch": "rien trouvé",
"pagination": "Pagination",
"pagInputBtn": "GO",
"pagInputTxt": "page",
"parentDirectory": "Dossier parent",
"perPage": "### par page",
"search": "rechercher",
"size": "Taille",
"tree": "Arborescence",

View file

@ -4,14 +4,25 @@
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "פרטים",
"download": "הורדה",
"displayAll": "הצג הכל",
"empty": "ריק",
"files": "קבצים",
"filter": "סינון",
"folders": "תיקיות",
"grid": "רֶשֶׁת",
"icons": "צלמיות",
"info": "מידע",
"language": "שפה",
"lastModified": "שינוי אחרון",
"name": "שם",
"noMatch": "אין תוצאות",
"pagination": "דִפּוּף",
"pagInputBtn": "ללכת",
"pagInputTxt": "עמוד",
"parentDirectory": "תיקיית הורה",
"size": "גודל"
"perPage": "לעמוד ###",
"search": "לחפש",
"size": "גודל",
"tree": "עֵץ",
"view": "מֶזֶג"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "DD.MM.YYYY HH:mm",
"details": "विस्तार",
"download": "डाउनलोड",
"displayAll": "सभी प्रदर्शित करें",
"empty": "खाली",
"files": "फ़ाइलें",
"filter": "फ़िल्टर",
"folders": "फोल्डर",
"grid": "ग्रिड",
"icons": "आइकॉन",
"info": "जानकारियां",
"language": "भाषा",
"lastModified": "पिछला परिवर्तन",
"name": "नाम",
"noMatch": "कोई समानता नहीं",
"pagination": "पृष्ठ पर अंक लगाना",
"pagInputBtn": "जाओ",
"pagInputTxt": "पृष्ठ",
"parentDirectory": "मूल डायरेक्टरी",
"size": "माप"
"perPage": "### प्रति पेज।",
"search": "खोज",
"size": "माप",
"tree": "पेड़",
"view": "स्वभाव"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "detalji",
"download": "preuzmi",
"displayAll": "Prikaži SVE",
"empty": "prazno",
"files": "datoteka",
"filter": "filter",
"folders": "direktorij(a)",
"grid": "mreža",
"icons": "ikone",
"info": "Informacije",
"language": "Jezik",
"lastModified": "Posljednja izmjena",
"name": "Naziv",
"noMatch": "nema rezultata",
"pagination": "Paginacija",
"pagInputBtn": "IĆI",
"pagInputTxt": "stranica",
"parentDirectory": "Natrag",
"size": "Veličina"
"perPage": "### po stranici",
"search": "traženje",
"size": "Veličina",
"tree": "Drvorez",
"view": "Dispozicija"
}

View file

@ -4,13 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "részletek",
"download": "letöltés",
"displayAll": "Összes megjelenítése",
"empty": "üres",
"files": "fájlok",
"filter": "szűrő",
"folders": "mappák",
"grid": "rács",
"icons": "ikonok",
"info": "Információk",
"language": "Nyelv",
"lastModified": "Utoljára módosítva",
"name": "Név",
"noMatch": "nincs találat",
"pagination": "Lapszámozás",
"pagInputBtn": "MEGY",
"pagInputTxt": "oldal",
"parentDirectory": "Szülő könyvtár",
"size": "Méret"
"perPage": "### oldalanként",
"search": "keresés",
"size": "Méret",
"tree": "Fa szerkezete",
"view": "Diszpozíció"
}

View file

@ -4,17 +4,23 @@
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "rincian",
"download": "unduh",
"displayAll": "Tampilkan SEMUA",
"empty": "kosong",
"files": "berkas",
"filter": "saring",
"folders": "pelipat",
"grid": "jaring",
"icons": "ikon",
"info": "Informasi",
"language": "Bahasa",
"lastModified": "Di modifikasi",
"name": "Nama",
"noMatch": "tidak cocok",
"pagination": "Penomoran halaman",
"pagInputBtn": "PERGI",
"pagInputTxt": "halaman",
"parentDirectory": "Direktori induk",
"perPage": "### per halaman",
"search": "cari",
"size": "Ukuran",
"tree": "Pohon",

View file

@ -4,19 +4,25 @@
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "dettagli",
"download": "download",
"displayAll": "Visualizza TUTTO",
"empty": "vuota",
"files": "file",
"filter": "filtra",
"folders": "cartelle",
"grid": "griglia",
"icons": "icone",
"language": "Linugua",
"info": "Informazioni",
"language": "Lingua",
"lastModified": "Ultima modifica",
"name": "Nome",
"noMatch": "nessun risultato",
"pagination": "Paginatura",
"pagInputBtn": "GO",
"pagInputTxt": "pagina",
"parentDirectory": "Cartella Superiore",
"perPage": "### per pagina",
"search": "cerca",
"size": "Dimensione",
"tree": "Albero",
"view": "Vista"
"tree": "Arborescenza",
"view": "Disposizione"
}

View file

@ -4,17 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "詳細",
"download": "ダウンロード",
"displayAll": "すべてを表示",
"empty": "(空)",
"files": "ファイル",
"filter": "フィルター",
"folders": "フォルダー",
"grid": "グリッド",
"icons": "アイコン",
"info": "情報",
"language": "言語",
"lastModified": "最終変更日時",
"name": "名前",
"noMatch": "一致する項目が見つかりません",
"pagination": "ページネーション",
"pagInputBtn": "取得",
"pagInputTxt": "ページ",
"parentDirectory": "親ディレクトリへ",
"perPage": "ページあたり###",
"search": "探索",
"size": "サイズ",
"view": "ビュー"
"tree": "ツリー",
"view": "配置"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "자세히",
"download": "다운로드",
"displayAll": "모두 표시",
"empty": "빈 폴더",
"files": "파일",
"filter": "필터",
"folders": "폴더",
"grid": "그리드",
"icons": "아이콘",
"info": "정보",
"language": "언어",
"lastModified": "최근 수정일",
"name": "파일명",
"noMatch": "해당파일이 없습니다.",
"pagination": "쪽수 매기기",
"pagInputBtn": "이동",
"pagInputTxt": "페이지",
"parentDirectory": "상위폴더",
"perPage": "페이지 당 ### 개",
"search": "검색",
"size": "크기",
"tree": "트리",
"view": "보기"
"view": "처분"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "detaļas",
"download": "lejupielādēt",
"displayAll": "Parādīt VISU",
"empty": "tukšs",
"files": "faili",
"filter": "filtrēt",
"folders": "mapes",
"grid": "režģis",
"icons": "ikonas",
"info": "Informācija",
"language": "Valoda",
"lastModified": "Pēdējoreiz modificēts",
"name": "Nosaukums",
"noMatch": "nav sakritības",
"pagination": "Lapošana",
"pagInputBtn": "IET",
"pagInputTxt": "lapa",
"parentDirectory": "Vecākdirektorijs",
"perPage": "### vienā lappusē",
"search": "meklēt",
"size": "Izmērs",
"tree": "Koks",
"view": "Skats"
"view": "Dispozīcija"
}

View file

@ -1,15 +1,28 @@
{
"lang": "norwegian",
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "detaljer",
"download": "last ned",
"displayAll": "Vis ALLE",
"empty": "tom",
"files": "filer",
"filter": "filter",
"folders": "mapper",
"grid": "nett",
"icons": "ikoner",
"info": "Informasjon",
"language": "Språk",
"lastModified": "Sist endret",
"name": "Navn",
"noMatch": "ingen treff",
"pagination": "Paginering",
"pagInputBtn": "GÅ",
"pagInputTxt": "side",
"parentDirectory": "Overordnet mappe",
"size": "Størrelse"
"perPage": "### per side",
"search": "søk",
"size": "Størrelse",
"tree": "Tre",
"view": "Disposisjon"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "details",
"download": "download",
"displayAll": "Alles weergeven",
"empty": "leeg",
"files": "bestanden",
"filter": "filter",
"folders": "mappen",
"grid": "grid",
"icons": "iconen",
"info": "Informatie",
"language": "Taal",
"lastModified": "Laatste wijziging",
"name": "Naam",
"noMatch": "geen overeenkomst",
"pagination": "Paginering",
"pagInputBtn": "GO",
"pagInputTxt": "pagina",
"parentDirectory": "Bovenliggende map",
"perPage": "### per pagina",
"search": "zoeken",
"size": "Grootte",
"tree": "Boom",
"view": "Bekijk"
"view": "Dispositie"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "szczegóły",
"download": "pobierz",
"displayAll": "Wyświetl WSZYSTKIE",
"empty": "pusty",
"files": "plików",
"filter": "filtr",
"folders": "folderów",
"grid": "kafelki",
"icons": "ikony",
"info": "Informacje",
"language": "Język",
"lastModified": "Ostatnia modyfikacja",
"name": "Nazwa",
"noMatch": "nie znaleziono",
"pagination": "Paginacja",
"pagInputBtn": "IŚĆ",
"pagInputTxt": "strona",
"parentDirectory": "Katalog nadrzędny",
"perPage": "### na stronę",
"search": "szukaj",
"size": "Rozmiar",
"tree": "Drzewo",
"view": "Układ"
"view": "Usposobienie"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "detalhes",
"download": "download",
"displayAll": "Exibir TODOS",
"empty": "vazio",
"files": "arquivos",
"filter": "filtro",
"folders": "pastas",
"grid": "grade",
"icons": "ícones",
"info": "Informações",
"language": "Idioma",
"lastModified": "Última modificação",
"name": "Nome",
"noMatch": "sem resultados",
"pagination": "Paginação",
"pagInputBtn": "IR",
"pagInputTxt": "pagina",
"parentDirectory": "Diretório acima",
"perPage": "### por pagina",
"search": "pesquisa",
"size": "Tamanho",
"tree": "Árvore",
"view": "Visualização"
"view": "Disposição"
}

View file

@ -4,19 +4,25 @@
"dateFormat": "DD-MM-YYYY HH:mm",
"details": "detalhes",
"download": "descarregar",
"displayAll": "Exibir TODOS",
"empty": "vazio",
"files": "arquivos",
"filter": "filtro",
"folders": "pastas",
"grid": "grelha",
"icons": "ícones",
"info": "Informações",
"language": "Idioma",
"lastModified": "última modificação",
"name": "Nome",
"noMatch": "sem resultados",
"pagination": "Paginação",
"pagInputBtn": "IR",
"pagInputTxt": "página",
"parentDirectory": "Diretório acima",
"perPage": "### por página",
"search": "pesquisa",
"size": "Tamanho",
"tree": "Árvore",
"view": "Visualização"
"view": "Disposição"
}

View file

@ -3,13 +3,24 @@
"details": "detalii",
"download": "descarcă",
"displayAll": "Afișați TOATE",
"empty": "gol",
"files": "fişiere",
"filter": "filtru",
"folders": "dosar",
"icons": "pictograme",
"icons": "icoane",
"info": "informație",
"language": "Limba",
"lastModified": "ultima modificare",
"name": "nume",
"noMatch": "0 rezultate",
"pagination": "Paginare",
"pagInputBtn": "MERGE",
"pagInputTxt": "pagină",
"parentDirectory": "dosar părinte",
"size": "mărime"
"perPage": "### pe pagină",
"search": "căutare",
"size": "mărime",
"tree": "Arborele",
"view": "Dispoziţie"
}

View file

@ -4,17 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "Детали",
"download": "Скачать",
"displayAll": "Показать ВСЕ",
"empty": "Пусто",
"files": "Файлы",
"filter": "Фильтр",
"folders": "Папки",
"grid": "Сетка",
"icons": "Иконки",
"info": "Информация",
"language": "Язык",
"lastModified": "Последние изменения",
"name": "Имя",
"noMatch": "Нет совпадений",
"pagination": "Пагинация",
"pagInputBtn": "ИДТИ",
"pagInputTxt": "страница",
"parentDirectory": "Главная директория",
"perPage": "### на странице",
"search": "поиск",
"size": "Размер",
"view": "Вид"
"tree": "Древесие",
"view": "Диспозиция"
}

View file

@ -2,12 +2,26 @@
"lang": "slovenčina",
"details": "podrobnosti",
"download": "prenesi",
"displayAll": "Prikaži VSE",
"empty": "prázdny",
"files": "súborov",
"filter": "filtrirati",
"folders": "priečinkov",
"grid": "mreža",
"icons": "ikony",
"info": "Informácie",
"language": "Jezik",
"lastModified": "Upravené",
"name": "Názov",
"noMatch": "ni ujemanj",
"pagination": "Paginacija",
"pagInputBtn": "POJDI",
"pagInputTxt": "strani",
"parentDirectory": "Nadriadený priečinok",
"size": "Velkosť"
"perPage": "### na stran",
"search": "iskanje",
"size": "Velkosť",
"tree": "Drevo",
"view": "Dispozicija"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "DD. MM. YYYY HH:mm",
"details": "podrobnosti",
"download": "prenesi",
"displayAll": "Prikaži VSE",
"empty": "prazno",
"files": "datoteke",
"filter": "filter",
"folders": "mape",
"grid": "mreža",
"icons": "ikone",
"info": "Informacije",
"language": "Jezik",
"lastModified": "Zadnja sprememba",
"name": "Ime",
"noMatch": "ni zadetkov",
"pagination": "Paginacija",
"pagInputBtn": "POJDI",
"pagInputTxt": "strani",
"parentDirectory": "Nadrejena mapa",
"size": "Velikost"
"perPage": "### na stran",
"search": "iskanje",
"size": "Velikost",
"tree": "Drevo",
"view": "Dispozicija"
}

View file

@ -3,13 +3,25 @@
"details": "detalji",
"download": "download",
"displayAll": "Prikažite SVE",
"empty": "prazno",
"files": "fajlovi",
"filter": "filtrate",
"folders": "direktorijum",
"grid": "mreža",
"icons": "ikone",
"info": "Информације",
"language": "Jezik",
"lastModified": "Poslednja modifikacija",
"name": "Ime",
"noMatch": "bez poklapanja",
"pagination": "Paginacija",
"pagInputBtn": "GO",
"pagInputTxt": "stranica",
"parentDirectory": "Roditeljski direktorijum",
"size": "Veličina"
"perPage": "### po stranici",
"search": "pretraga",
"size": "Veličina",
"tree": "Mapa",
"view": "Dispozicija"
}

View file

@ -3,14 +3,25 @@
"details": "detaljerad",
"download": "ladda ner",
"displayAll": "Visa ALLA",
"empty": "tom",
"files": "filer",
"filter": "filtrera",
"folders": "kataloger",
"grid": "rutnät",
"icons": "ikoner",
"info": "Information",
"language": "Språk",
"lastModified": "Senast ändrad",
"name": "Filnamn",
"noMatch": "ingen matchning",
"pagination": "Paginering",
"pagInputBtn": "GÅ",
"pagInputTxt": "sida",
"parentDirectory": "Till överordnad mapp",
"size": "Filstorlek"
"perPage": "### per sida",
"search": "sök",
"size": "Filstorlek",
"tree": "Trädstruktur",
"view": "Arrangemang"
}

View file

@ -3,12 +3,25 @@
"details": "detaylar",
"download": "indir",
"displayAll": "TÜMÜNÜ Görüntüle",
"empty": "boş",
"files": "dosyalar",
"filter": "filtre",
"folders": "klasörler",
"grid": "ızgara",
"icons": "ikonlar",
"info": "Bilgi",
"language": "Dil",
"lastModified": "Son Düzenleme",
"name": "İsim",
"noMatch": "eşleşme yok",
"pagination": "Sayfalandırma",
"pagInputBtn": "GİT",
"pagInputTxt": "sayfa",
"parentDirectory": "Üst Dizin",
"size": "Boyut"
"perPage": "Sayfa başına ###",
"search": "arama",
"size": "Boyut",
"tree": "Ağaçlanma",
"view": "Yerleşim"
}

View file

@ -4,15 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "Деталі",
"download": "Завантажити",
"displayAll": "Відобразити ВСЕ",
"empty": "Порожньо",
"files": "Файли(ів)",
"filter": "Фільтр",
"folders": "Тек(и)",
"grid": "Гратка",
"icons": "Піктограми",
"info": "Інформація",
"language": "Мова",
"lastModified": "Останні зміни",
"name": "Ім'я",
"noMatch": "Немає співпадінь",
"pagination": "Пагінація",
"pagInputBtn": "піти",
"pagInputTxt": "сторінки",
"parentDirectory": "Головна тека",
"size": "Розмір"
"perPage": "### на сторінку",
"search": "пошук",
"size": "Розмір",
"tree": "Дрівобережжя",
"view": "Диспозиція"
}

View file

@ -4,20 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "详情",
"download": "下载",
"displayAll": "显示全部",
"empty": "空文件夹",
"files": "文件",
"filter": "过滤",
"folders": "文件夹",
"grid": "网格",
"icons": "图标",
"info": "信息",
"language": "语言",
"lastModified": "修改时间",
"name": "文件名",
"noMatch": "无匹配项",
"pagination": "分页",
"pagInputBtn": "得到",
"pagInputTxt": "页",
"parentDirectory": "父文件夹",
"perPage": "每页10条",
"search": "搜索",
"size": "大小",
"tree": "树形目录",
"view": "视图",
"info": "信息"
"view": "视图"
}

View file

@ -4,20 +4,25 @@
"dateFormat": "YYYY-MM-DD HH:mm",
"details": "詳細資料",
"download": "下載",
"displayAll": "顯示全部",
"empty": "空資料夾",
"files": "檔案",
"filter": "過濾",
"folders": "資料夾",
"grid": "網格",
"icons": "圖示",
"info": "資訊",
"language": "語言",
"lastModified": "上次修改",
"name": "檔名",
"noMatch": "沒有符合的檔案",
"pagination": "分頁",
"pagInputBtn": "得到",
"pagInputTxt": "頁",
"parentDirectory": "上層目錄",
"perPage": "每頁###條",
"search": "搜尋",
"size": "大小",
"tree": "樹形目錄",
"view": "檢視",
"info": "資訊"
"view": "檢視"
}

View file

@ -48,6 +48,13 @@
The user selected view mode is also stored local in modern browsers
so that it will be persistent.
- modeToggle: boolean, show a view mode toggle in the toolbar, or "next"
- paginationItems: array of numbers
user selectable amounts of items to display at once until pagination occurs.
The first value will be selected as the default. Values are then sorted automatically.
Value "0" means display ALL items at once, no pagination needed (as an option).
It is recommended to place this value (if desired at all) at the end of the array.
The user selected amount is also stored local in modern browsers
so that is will be persistent.
- setParentFolderLabels: boolean, set parent folder labels to real folder names
- sizes: array of numbers
the first value indicates the default view size. If only one value
@ -72,6 +79,7 @@
"maxIconSize": 40,
"modes": ["details", "grid", "icons"],
"modeToggle": false,
"paginationItems": [100, 50, 200, 300, 400, 500, 0],
"setParentFolderLabels": true,
"sizes": [20, 40, 60, 80, 100, 140, 180, 220, 260, 300],
"theme": "comity",

View file

@ -0,0 +1,103 @@
// @minWidth: 30px;
// @height: 28px;
// @lineHeight: @height;
// @activeHeight: @height + 2;
@inputWidth: 35px;
@inputHeight: 28px;
@buttonMinWidth: 40px;
@buttonHeight: 30px;
@buttonLineHeight: @buttonHeight - 2;
@buttonPadding: 0 8px;
// @navHeight: @activeHeight;
@col-hover-green: #44EEAA;
@col-placeholder-grey: rgb(170, 170, 170);
#pagination_btm {
position: -webkit-sticky; /* Safari */
position: sticky;
bottom: 0;
.nav_buttons {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
position: -webkit-sticky; /* Safari */
position: sticky;
bottom: 0;
}
.nav_buttons button {
width: @buttonMinWidth; // 20px;
height: @buttonHeight; // 30px;
appearance: none;
border: none;
outline: none;
cursor: pointer;
padding: 0;
background-color: @col-link;
margin: 5px;
transition: 0.4s;
color: @col-back;
font-size: @font-size;
text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
&:hover {
background-color: @col-hover-green
}
&:disabled {
background-color: @col-text-disabled-black;
box-shadow: inset 0px 0px 4px rgb(0, 0, 0);
cursor: default;
}
}
.page_input {
display: flex;
align-content: flex-end;
float: left;
margin-left: 5px;
margin-right: 5px;
font-size: @font-size;
> input[type="text"]{
width: @inputWidth;
height: @inputHeight;
background: @col-back;
border-radius: 3px;
border: 1px solid @col-divider-black;
padding: @buttonPadding;
text-align: center;
vertical-align: baseline;
outline: none;
box-shadow: none;
box-sizing: initial;
&::placeholder {
color: @col-placeholder-grey;
opacity: 1; /* Firefox */
}
&:focus::placeholder {
color: transparent;
}
}
> input[type="button"]{
min-width: @buttonMinWidth;
height: @buttonHeight;
line-height: @buttonLineHeight;
background: @col-back;
border-radius: 3px;
border: 1px solid @col-divider-black;
text-align: center;
padding: @buttonPadding;
vertical-align: baseline;
outline: none;
box-shadow: none;
color: @col-text;
cursor: pointer;
&:hover{
background-color: @col-hover-green;
}
}
}
}

View file

@ -18,6 +18,7 @@ const defaultTranslations = {
dateFormat: 'YYYY-MM-DD HH:mm',
details: 'details',
displayAll: "Display ALL",
download: 'download',
empty: 'empty',
files: 'files',
@ -25,11 +26,16 @@ const defaultTranslations = {
folders: 'folders',
grid: 'grid',
icons: 'icons',
info: 'Informations',
language: 'Language',
lastModified: 'Last modified',
name: 'Name',
noMatch: 'no match',
pagination: "Pagination",
pagInputBtn: "GO",
pagInputTxt: "page",
parentDirectory: 'Parent Directory',
perPage: "### per page",
search: 'search',
size: 'Size',
tree: 'Tree',
@ -62,6 +68,9 @@ const update = lang => {
each(currentLang, (value, key) => {
dom('.l10n-' + key).text(value);
dom('.l10n_ph-' + key).attr('placeholder', value);
replace(dom('.l10n_rp-' + key), value);
dom('.l10n_val-' + key).val(value);
dom('.l10n_title-' + key).prop('title', value)
});
format.setDefaultDateFormat(currentLang.dateFormat);
@ -70,6 +79,15 @@ const update = lang => {
});
};
const replace = (elem, value) => {
if (!elem.length) {
return;
}
each(elem, el => {
el.text = value.replace('###', el.value);
});
};
const loadLanguage = isoCode => {
if (loaded[isoCode]) {
return Promise.resolve(loaded[isoCode]);

View file

@ -193,7 +193,7 @@ const init = () => {
if (settings.clickndrag) {
$selectionRect.hide().appTo('#content');
dom('#content')
dom('#view')
.on('mousedown', selectionStart)
.on('drag', ev => ev.preventDefault())
.on('dragstart', ev => ev.preventDefault());

View file

@ -3,6 +3,7 @@ const event = require('../core/event');
const resource = require('../core/resource');
const allsettings = require('../core/settings');
const store = require('../core/store');
const pagination = require('../view/pagination');
const settings = Object.assign({
enabled: false,
@ -22,8 +23,8 @@ const columnClasses = {0: 'label', 1: 'date', 2: 'size'};
const cmpFn = (prop, reverse, ignorecase, natural) => {
return (el1, el2) => {
const item1 = el1._item;
const item2 = el2._item;
const item1 = el1._item === undefined ? el1 : el1._item;
const item2 = el2._item === undefined ? el2 : el2._item;
let res = getTypeOrder(item1) - getTypeOrder(item2);
if (res !== 0) {
@ -58,16 +59,32 @@ const sortItems = (column, reverse) => {
$headers.rmCls('ascending').rmCls('descending');
$header.addCls(reverse ? 'descending' : 'ascending');
if (pagination.isSortHandled(fn)) {
return;
}
dom(toArray(dom('#items .item:not(.folder-parent)')).sort(fn)).appTo('#items');
};
const onContentChanged = () => {
if (pagination.isActive()){
return;
}
let {column, reverse} = getSortOrder();
sortItems(column, reverse);
};
const getSortOrder = () => {
const order = store.get(storekey);
const column = order && order.column || settings.column;
const reverse = order && order.reverse || settings.reverse;
return {column, reverse};
}
sortItems(column, reverse);
};
const getSortFunc = () => {
let {column, reverse} = getSortOrder();
return cmpFn(columnProps[column], reverse, settings.ignorecase, settings.natural);
}
const addToggles = () => {
const $header = dom('#items li.header');
@ -94,3 +111,7 @@ const init = () => {
init();
module.exports = {
getSortFunc
}

View file

@ -0,0 +1,437 @@
const {each, includes, dom, values} = require('../util');
const event = require('../core/event');
const store = require('../core/store');
const allsettings = require('../core/settings');
const base = require('./base');
const paginationItems = [100, 0, 50, 250, 500];
const settings = Object.assign({
paginationItems,
hideParentFolder: false,
}, allsettings.view);
const defaultSize = settings.paginationItems.length ? settings.paginationItems[0] : 0;
const sortedSizes = [...new Set(settings.paginationItems)].sort((a, b) => a - b)
const storekey = 'pagination';
const paginationTpl =
`<div id="pagination_btm" class="pagination">
<div id="nav_btm" class="nav_buttons"></div>
</div>`;
const selectorTpl =
`<div id="pag_sidebar" class="block">
<h1 class="l10n-pagination">Pagination</h1>
<form id="pag_form">
<select id="pag_select" name='Pagination size'>
</select>
<noscript><input type="submit" value="Submit"></noscript>
</form>
</div>`;
const $pagination = dom(paginationTpl);
const btn_cls = {
'btn_first': '<<',
'btn_prev': '<',
'btn_next': '>',
'btn_last': '>>'
};
let pag_active = false;
let pag_buttons = [];
let pag_current_page = 1;
let pag_items;
let pag_payload;
let pag_view;
let pag_count = 0;
let pag_parent_folder;
let pag_rows_pref;
let sortfn;
const setup = (items) => {
updateItems(items);
pag_current_page = 1;
pag_buttons = [];
let $pagination_els = base.$content.find('.nav_buttons');
setupNavigation($pagination_els);
pag_active = true;
updateSortFunc();
sort(sortfn());
setCurrentPage(1);
}
const updateSortFunc = () => {
// Lazy load because sort module needs us loaded beforehand
sortfn = require('../ext/sort').getSortFunc;
}
const updateItems = (items) => {
if (!items){
return; // use cached items instead
}
pag_items = items;
popParentFolder(pag_items);
totalPages();
return;
}
const clear = () => {
if (pag_active){
pag_buttons.forEach(e => e.remove());
pag_buttons = [];
}
pag_active = false;
}
const isActive = () => {
return pag_active;
}
const totalPages = () => {
if (pag_rows_pref == 0){ // ALL
return pag_count = 1;
}
pag_count = Math.ceil(pag_items.length / pag_rows_pref);
return pag_count;
}
const popParentFolder = (items) => {
if (items.length > 0 && !settings.hideParentFolder){
pag_parent_folder = items.shift();
return;
}
pag_parent_folder = undefined;
}
const pushParentFolder = (items) => {
if (pag_parent_folder && items[0] !== pag_parent_folder) {
items.unshift(pag_parent_folder);
}
}
const setCurrentPage = (page) => {
if (!page) {
page = (pag_current_page <= pag_count) ? pag_current_page : pag_count;
}
pag_current_page = page;
const paginatedItems = computeSlice(pag_items, page, pag_rows_pref);
pushParentFolder(paginatedItems);
updateButtons();
if (pag_count <= 1) {
base.$content.find('.nav_buttons').addCls('hidden');
pag_active = false;
} else {
base.$content.find('.nav_buttons').rmCls('hidden');
pag_active = true;
}
pag_view.doSetItems(paginatedItems);
}
const computeSlice = (items, page, rows_per_page) => {
if (!rows_per_page) { // ALL
return items;
}
page--;
const start = rows_per_page * page;
const end = start + rows_per_page;
return items.slice(start, end);
}
const sort = (fn) => {
// We don't need parent folder item, so we don't filterPayload()
pag_items = values(pag_payload.content).sort(fn);
}
const setupNavigation = (container) => {
each(container, key => {
key.innerHTML = "";
});
each(container, el => {
for (let key in btn_cls) {
const btn = paginationButton(key, btn_cls[key]);
el.appendChild(btn);
pag_buttons.push(btn);
}
});
each(container, key => {
// Page status numbers
let div = updatePageStatus(null);
key.insertBefore(div, key.childNodes[2]);
pag_buttons.push(div);
// Manual page number selection
div = document.createElement('div');
div.classList.add('page_input');
let {input_field, input_btn} = pageInputForm();
div.appendChild(input_field);
div.appendChild(input_btn);
key.appendChild(div);
pag_buttons.push(input_field);
pag_buttons.push(input_btn);
});
}
const paginationButton = (classname, arrow) => {
const button = document.createElement('button');
button.innerText = arrow;
button.classList.add('nav_button');
button.id = classname;
switch (classname) {
case 'btn_prev':
button.req_page = () => pag_current_page - 1;
button.disabled = true;
break;
case 'btn_next':
button.req_page = () => pag_current_page + 1;
button.disabled = false;
break;
case 'btn_last':
button.req_page = () => pag_count;
button.disabled = false;
break;
default: // 'btn_first'
button.req_page = () => 1;
button.disabled = true;
}
button.addEventListener('click', function() {
setCurrentPage(this.req_page());
});
return button;
};
const updateButtons = () => {
const prev_buttons = dom('#btn_first, #btn_prev');
const next_buttons = dom('#btn_next, #btn_last');
if (pag_current_page <= 1) {
each(prev_buttons, button => button.disabled = true);
each(next_buttons, button => button.disabled = false);
} else if (pag_current_page >= pag_count && pag_current_page > 1) {
each(next_buttons, button => button.disabled = true);
each(prev_buttons, button => button.disabled = false);
} else {
const nav_buttons = dom('#btn_first, #btn_prev, #btn_next, #btn_last');
each(nav_buttons, button => button.disabled = false);
}
const pag_pos = dom('.pag_pos');
each(pag_pos, el => updatePageStatus(el));
}
const updatePageStatus = (div) => {
const status = pag_current_page.toString().concat('/', pag_count.toString());
if (!div) {
const div = document.createElement('div');
div.appendChild(document.createTextNode(status));
div.classList.add('pag_pos');
return div;
}
return div.innerText = status;
}
const pageInputForm = () => {
const input_field = document.createElement('input');
input_field.type = 'text';
// Use title instead of placeholder due to some translations not fitting in
input_field.classList.add('l10n_title-pagInputTxt'); // input_field.title = 'page';
input_field.placeholder = '...';
const input_btn = document.createElement('input');
input_btn.type = 'button';
input_btn.classList.add('l10n_val-pagInputBtn'); // input_btn.value = 'GO';
input_btn.addEventListener('click', () => {
if (input_field.value !== '' && input_field.value !== pag_current_page) {
let parsed = parseInt(input_field.value, 10);
if (!isNaN(parsed)) {
setCurrentPage(parsed);
}
}
input_field.value = "";
input_field.focus();
});
input_field.addEventListener('keydown', (e) => {
if (e.key === 'Enter' && input_field.value && /[^\s]/.test(input_field.value)) {
if (input_field.value !== pag_current_page) {
e.preventDefault();
let parsed = parseInt(input_field.value, 10);
if (!isNaN(parsed) && parsed !== pag_current_page) {
setCurrentPage(parsed);
}
}
input_field.value = "";
input_field.focus();
};
});
// Only allow digits, new line and max page, no leading zero or spaces
setInputFilter(input_field, (value) => {
return /^[^0\s][\d]*$/.test(value) && value <= pag_count;
});
return {input_field, input_btn};
}
// Restricts input for the given textbox to the given inputFilter function.
// In the future we could use beforeinput instead.
function setInputFilter(textbox, inputFilter) {
["input", "keydown", "keyup", "mousedown", "mouseup", "select",
"contextmenu", "drop"].forEach(function(event) {
textbox.addEventListener(event, function(e) {
if (this.value === '') {
this.oldValue = this.value;
}
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
} else {
this.value = "";
}
});
});
}
const initPagSelector = () => {
if (settings.paginationItems.length > 0) {
dom(selectorTpl).appTo('#sidebar');
document.querySelector('#pag_select')
.addEventListener('change', onSelect);
for (let option of addOptions(getCachedPref())) {
option.appTo('#pag_select');
}
}
};
function onSelect() {
setPref(parseInt(this.value, 10));
onPagPrefUpdated();
}
const addOptions = (cached_pref) => {
const options = [];
let set_default = false;
for (let size of sortedSizes) {
let element;
if (size === cached_pref && !set_default) {
element = dom(`<option selected value="${size}"></option>`);
set_default = true;
} else {
element = dom(`<option value="${size}"></option>`);
}
element.addCls((size === 0) ? 'l10n-displayAll' : 'l10n_rp-perPage');
options.push(element);
}
return options;
}
const onLocationChanged = () => {
// Workaround to append this to the sidebar at the last position
// since the view module includes us before the other extensions
if (dom('#pag_select').length === 0) {
initPagSelector();
}
}
const setPayload = (payload) => {
// Not a copy, but we probably won't alter it anyway.
pag_payload = payload;
}
const getCachedPref = () => {
if (pag_rows_pref === undefined)
return defaultSize;
return pag_rows_pref;
};
// The module won't work if a view is not set first. We need to reuse some funcs
const setView = (view) => {
pag_view = view;
}
const canHandle = (items) => {
clear();
if (items.length > getCachedPref()) {
// Probably won't alter it, so we don't make a copy to save memory.
setup(items);
return true;
}
return false;
}
const isSortHandled = (fn) => {
if (!pag_active) {
return false;
}
sort(fn);
setCurrentPage();
return true;
}
const onPagPrefUpdated = () => {
if (pag_active) {
totalPages();
setCurrentPage();
return;
}
const pref = getCachedPref();
if (values(pag_payload.content).length > pref && pref != 0) {
setup(pag_view.filterPayload(pag_payload));
}
}
const isRefreshHandled = (item) => {
setPayload(item);
// Block if pagination is active
if (values(item.content).length > getCachedPref()) {
if (pag_active){
updateItems(pag_view.filterPayload(item));
sort(sortfn()); // initial sort
setCurrentPage();
return true;
}
setup(pag_view.filterPayload(item));
return true;
}
// No need for pagination, recreate the items, hide & pass to default logic
if (pag_active){
updateItems(pag_view.filterPayload(item));
setCurrentPage(1);
clear();
return true;
}
// We are not interested in handling the items
return false;
}
const setPref = (size) => {
const stored = store.get(storekey);
size = (size !== undefined) ? size : stored ? stored : defaultSize;
size = includes(settings.paginationItems, size) ? size : defaultSize;
store.put(storekey, size);
pag_rows_pref = size;
}
const init = () => {
setPref();
event.sub('location.changed', onLocationChanged);
};
init();
module.exports = {
$el: $pagination,
canHandle,
isActive,
isRefreshHandled,
isSortHandled,
setPayload,
setView
}

View file

@ -6,6 +6,7 @@ const resource = require('../core/resource');
const store = require('../core/store');
const allsettings = require('../core/settings');
const base = require('./base');
const pagination = require('./pagination');
const modes = ['details', 'grid', 'icons'];
const sizes = [20, 40, 60, 80, 100, 150, 200, 250, 300, 350, 400];
@ -183,6 +184,12 @@ const checkHint = () => {
};
const setItems = items => {
if (!pagination.canHandle(items)) {
doSetItems(items);
}
};
const doSetItems = items => {
const removed = map($items.find('.item'), el => el._item);
$items.find('.item').rm();
@ -218,6 +225,15 @@ const onLocationChanged = item => {
item = location.getItem();
}
pagination.setPayload(item);
const items = filterPayload(item);
setHint('empty');
setItems(items);
};
const filterPayload = item => {
const items = [];
if (item.parent && !settings.hideParentFolder) {
@ -229,12 +245,18 @@ const onLocationChanged = item => {
items.push(child);
}
});
setHint('empty');
setItems(items);
};
return items;
}
const onLocationRefreshed = (item, added, removed) => {
if (added.length === 0 && removed.length === 0){
return;
}
if (pagination.isRefreshHandled(item)) {
return;
}
const add = [];
each(added, child => {
@ -263,6 +285,7 @@ const init = () => {
set();
$view.appTo(base.$content);
pagination.$el.appTo(base.$content);
$hint.hide();
format.setDefaultMetric(settings.binaryPrefix);
@ -277,7 +300,9 @@ init();
module.exports = {
$el: $view,
filterPayload,
setItems,
doSetItems,
changeItems,
setLocation: onLocationChanged,
setHint,
@ -288,3 +313,6 @@ module.exports = {
getSize,
setSize
};
// For code reuse purposes
pagination.setView(module.exports);