diff options
100 files changed, 2418 insertions, 812 deletions
diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index d6569cdc4f9..66e17898188 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -282,7 +282,7 @@ OC.L10N.register( "Saved availability" : "Verfügbarkeit gespeichert", "Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden", "Time zone:" : "Zeitzone:", - "to" : "an", + "to" : "bis", "Delete slot" : "Slot löschen", "No working hours set" : "Keine Arbeitszeiten konfiguriert", "Add slot" : "Slot hinzufügen", diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index e3a6f980ba1..94354959e6f 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -280,7 +280,7 @@ "Saved availability" : "Verfügbarkeit gespeichert", "Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden", "Time zone:" : "Zeitzone:", - "to" : "an", + "to" : "bis", "Delete slot" : "Slot löschen", "No working hours set" : "Keine Arbeitszeiten konfiguriert", "Add slot" : "Slot hinzufügen", diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index 1072d8f9ff2..0a53ba564a7 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -282,7 +282,7 @@ OC.L10N.register( "Saved availability" : "Verfügbarkeit gespeichert", "Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden", "Time zone:" : "Zeitzone:", - "to" : "an", + "to" : "bis", "Delete slot" : "Zeitfenster löschen", "No working hours set" : "Keine Arbeitszeiten konfiguriert", "Add slot" : "Zeitfenster hinzufügen", diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index 721cee8c91a..7bf998eec36 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -280,7 +280,7 @@ "Saved availability" : "Verfügbarkeit gespeichert", "Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden", "Time zone:" : "Zeitzone:", - "to" : "an", + "to" : "bis", "Delete slot" : "Zeitfenster löschen", "No working hours set" : "Keine Arbeitszeiten konfiguriert", "Add slot" : "Zeitfenster hinzufügen", diff --git a/apps/dav/l10n/et_EE.js b/apps/dav/l10n/et_EE.js index 69f941b3daa..2cf7703d686 100644 --- a/apps/dav/l10n/et_EE.js +++ b/apps/dav/l10n/et_EE.js @@ -31,7 +31,11 @@ OC.L10N.register( "{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}", "You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}", - "You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}", + "You updated event {event} in calendar {calendar}" : "Sa uuendasid „{event}“ sündmust „{calendar}“ kalendris", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} teisaldas „{event}“ sündmuse „{sourceCalendar}“ kalendrist „{targetCalendar}“ kalendrisse", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Sina teisaldasid „{event}“ sündmuse „{sourceCalendar}“ kalendrist „{targetCalendar}“ kalendrisse", + "{actor} restored event {event} of calendar {calendar}" : "{actor} taastas „{event}“ sündmuse „{calendar}“ kalendris", + "You restored event {event} of calendar {calendar}" : "Sina taastasid „{event}“ sündmuse „{calendar}“ kalendris", "Busy" : "Hõivatud", "{actor} created to-do {todo} in list {calendar}" : "{actor} lisas {todo} ülesande {calendar} loendissse", "You created to-do {todo} in list {calendar}" : "Sina lisasid {todo} ülesande {calendar} loendisse", @@ -68,6 +72,7 @@ OC.L10N.register( "Description: %s" : "Kirjeldus: %s", "Where: %s" : "Kus: %s", "%1$s via %2$s" : "%1$s %2$s kaudu", + "Every Day between %1$s - %2$s until %3$s" : "Iga päev ajavahemikus %1$s-%2$s kuni %3$s", "Cancelled: %1$s" : "Tühistatud: %1$s", "\"%1$s\" has been canceled" : "„%1$s“ on tühistatud", "Re: %1$s" : "Re: %1$s", diff --git a/apps/dav/l10n/et_EE.json b/apps/dav/l10n/et_EE.json index 2eed43d0c8f..e4615d45ca2 100644 --- a/apps/dav/l10n/et_EE.json +++ b/apps/dav/l10n/et_EE.json @@ -29,7 +29,11 @@ "{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}", "You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}", - "You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}", + "You updated event {event} in calendar {calendar}" : "Sa uuendasid „{event}“ sündmust „{calendar}“ kalendris", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} teisaldas „{event}“ sündmuse „{sourceCalendar}“ kalendrist „{targetCalendar}“ kalendrisse", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Sina teisaldasid „{event}“ sündmuse „{sourceCalendar}“ kalendrist „{targetCalendar}“ kalendrisse", + "{actor} restored event {event} of calendar {calendar}" : "{actor} taastas „{event}“ sündmuse „{calendar}“ kalendris", + "You restored event {event} of calendar {calendar}" : "Sina taastasid „{event}“ sündmuse „{calendar}“ kalendris", "Busy" : "Hõivatud", "{actor} created to-do {todo} in list {calendar}" : "{actor} lisas {todo} ülesande {calendar} loendissse", "You created to-do {todo} in list {calendar}" : "Sina lisasid {todo} ülesande {calendar} loendisse", @@ -66,6 +70,7 @@ "Description: %s" : "Kirjeldus: %s", "Where: %s" : "Kus: %s", "%1$s via %2$s" : "%1$s %2$s kaudu", + "Every Day between %1$s - %2$s until %3$s" : "Iga päev ajavahemikus %1$s-%2$s kuni %3$s", "Cancelled: %1$s" : "Tühistatud: %1$s", "\"%1$s\" has been canceled" : "„%1$s“ on tühistatud", "Re: %1$s" : "Re: %1$s", diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js index 40ad6b5be23..d1e9d2c2e71 100644 --- a/apps/federatedfilesharing/l10n/de_DE.js +++ b/apps/federatedfilesharing/l10n/de_DE.js @@ -53,7 +53,7 @@ OC.L10N.register( "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sie können mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! Geben Sie einfach deren Federated-Cloud-ID in den Teilen-Dialog ein. Diese sieht wie folgt aus: person@cloud.example.com", "Your Federated Cloud ID" : "Ihre Federated-Cloud-ID", - "Share it so your friends can share files with you:" : "Teilen Sie es, so dass Ihre Freunde Dateien mit Ihnen teilen können:", + "Share it so your friends can share files with you:" : "Teilen Sie es, damit Ihre Freunde Dateien mit Ihnen teilen können:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (früher Twitter)", "formerly Twitter" : "früher Twitter", diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json index c6cdd274032..962f6fb0857 100644 --- a/apps/federatedfilesharing/l10n/de_DE.json +++ b/apps/federatedfilesharing/l10n/de_DE.json @@ -51,7 +51,7 @@ "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sie können mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! Geben Sie einfach deren Federated-Cloud-ID in den Teilen-Dialog ein. Diese sieht wie folgt aus: person@cloud.example.com", "Your Federated Cloud ID" : "Ihre Federated-Cloud-ID", - "Share it so your friends can share files with you:" : "Teilen Sie es, so dass Ihre Freunde Dateien mit Ihnen teilen können:", + "Share it so your friends can share files with you:" : "Teilen Sie es, damit Ihre Freunde Dateien mit Ihnen teilen können:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (früher Twitter)", "formerly Twitter" : "früher Twitter", diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index f4b11b60bfe..3237a8b49d0 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -99,6 +99,10 @@ OC.L10N.register( "Rename file" : "Datei umbenennen", "Folder" : "Ordner", "Unknown file type" : "Unbekannter Dateityp", + "{ext} image" : "{ext}-Bild", + "{ext} video" : "{ext}-Video", + "{ext} audio" : "{ext}-Audio", + "{ext} text" : "{ext}-Text", "Pending" : "Ausstehend", "Unknown date" : "Unbekanntes Datum", "Clear filter" : "Filter zurücksetzen", diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index f34d8585898..f5ebd06c5a8 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -97,6 +97,10 @@ "Rename file" : "Datei umbenennen", "Folder" : "Ordner", "Unknown file type" : "Unbekannter Dateityp", + "{ext} image" : "{ext}-Bild", + "{ext} video" : "{ext}-Video", + "{ext} audio" : "{ext}-Audio", + "{ext} text" : "{ext}-Text", "Pending" : "Ausstehend", "Unknown date" : "Unbekanntes Datum", "Clear filter" : "Filter zurücksetzen", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index cbb4d16f40a..bcf374148b5 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -99,6 +99,10 @@ OC.L10N.register( "Rename file" : "Datei umbenennen", "Folder" : "Ordner", "Unknown file type" : "Unbekannter Dateityp", + "{ext} image" : "{ext}-Bild", + "{ext} video" : "{ext}-Video", + "{ext} audio" : "{ext}-Audio", + "{ext} text" : "{ext}-Text", "Pending" : "Ausstehend", "Unknown date" : "Unbekanntes Datum", "Clear filter" : "Filter zurücksetzen", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 8e1f611f317..fd0d1714920 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -97,6 +97,10 @@ "Rename file" : "Datei umbenennen", "Folder" : "Ordner", "Unknown file type" : "Unbekannter Dateityp", + "{ext} image" : "{ext}-Bild", + "{ext} video" : "{ext}-Video", + "{ext} audio" : "{ext}-Audio", + "{ext} text" : "{ext}-Text", "Pending" : "Ausstehend", "Unknown date" : "Unbekanntes Datum", "Clear filter" : "Filter zurücksetzen", diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js index 17330fbf036..86f79a96ea9 100644 --- a/apps/files/l10n/et_EE.js +++ b/apps/files/l10n/et_EE.js @@ -99,6 +99,10 @@ OC.L10N.register( "Rename file" : "Muuda failinime", "Folder" : "Kaust", "Unknown file type" : "Tundmatu failitüüp", + "{ext} image" : "{ext} pilt", + "{ext} video" : "{ext} video", + "{ext} audio" : "{ext} helifail", + "{ext} text" : "{ext} tekst", "Pending" : "Ootel", "Unknown date" : "Tundmatu kuupäev", "Clear filter" : "Tühjenda filter", diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json index cb2182202e8..7c1baa0915c 100644 --- a/apps/files/l10n/et_EE.json +++ b/apps/files/l10n/et_EE.json @@ -97,6 +97,10 @@ "Rename file" : "Muuda failinime", "Folder" : "Kaust", "Unknown file type" : "Tundmatu failitüüp", + "{ext} image" : "{ext} pilt", + "{ext} video" : "{ext} video", + "{ext} audio" : "{ext} helifail", + "{ext} text" : "{ext} tekst", "Pending" : "Ootel", "Unknown date" : "Tundmatu kuupäev", "Clear filter" : "Tühjenda filter", diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 3d61616343b..6c16223edef 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -71,6 +71,8 @@ OC.L10N.register( "Transferred from %1$s on %2$s" : "%1$sから%2$sに転送", "Files compatibility" : "ファイルの互換性", "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "ファイルをすべてのクライアントと同期できるようにするために、ファイル名を制限することを許可します。デフォルトではPOSIX(LinuxやmacOSなど)で有効なすべてのファイル名が許可されています。", + "After enabling the Windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Windows 互換のファイル名を有効にすると、既存のファイルは変更できなくなりますが、所有者が有効な新しいファイル名に変更できるようになります。", + "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "この設定を有効にした後、自動的にファイルを移行することも可能です。occコマンドに関するドキュメントを参照してください。", "Enforce Windows compatibility" : "Windowsとの互換性を強制", "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "予約名や特殊文字のような、Windowsシステムにおいて有効でないファイル名をブロックします。これは大文字、小文字の互換性を強制するものではありません。", "File Management" : "ファイル管理", @@ -96,6 +98,11 @@ OC.L10N.register( "Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" から \"{newName}\" に名前を変更済み", "Rename file" : "ファイル名の変更", "Folder" : "フォルダー", + "Unknown file type" : "不明なファイルタイプ", + "{ext} image" : "{ext}画像", + "{ext} video" : "{ext}ビデオ", + "{ext} audio" : "{ext}音声", + "{ext} text" : "{ext}テキスト", "Pending" : "保留中", "Unknown date" : "不明な日付", "Clear filter" : "フィルターをクリア", @@ -106,6 +113,7 @@ OC.L10N.register( "Total rows summary" : "総行数のサマリー", "Toggle selection for all files and folders" : "すべてのファイルとフォルダの選択を切り替える", "Name" : "名前", + "File type" : "ファイルの種類", "Size" : "サイズ", "\"{displayName}\" failed on some elements" : "いくつかの要素で \"{displayName}\" が失敗しました。", "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" バッチアクションが正常に実行されました。", @@ -184,6 +192,7 @@ OC.L10N.register( "Sort favorites first" : "お気に入りを最初に並べる", "Sort folders before files" : "ファイルよりもフォルダを先に並べ替えます", "Show hidden files" : "隠しファイルを表示", + "Show file type column" : "ファイルの種類のカラムを表示する", "Crop image previews" : "プレビュー画像を切り抜く", "Enable the grid view" : "グリッド表示を有効にする", "Enable folder tree" : "フォルダーツリーを有効にする", diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index e778a19f0bb..6e24c0a0326 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -69,6 +69,8 @@ "Transferred from %1$s on %2$s" : "%1$sから%2$sに転送", "Files compatibility" : "ファイルの互換性", "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "ファイルをすべてのクライアントと同期できるようにするために、ファイル名を制限することを許可します。デフォルトではPOSIX(LinuxやmacOSなど)で有効なすべてのファイル名が許可されています。", + "After enabling the Windows compatible filenames, existing files cannot be modified anymore but can be renamed to valid new names by their owner." : "Windows 互換のファイル名を有効にすると、既存のファイルは変更できなくなりますが、所有者が有効な新しいファイル名に変更できるようになります。", + "It is also possible to migrate files automatically after enabling this setting, please refer to the documentation about the occ command." : "この設定を有効にした後、自動的にファイルを移行することも可能です。occコマンドに関するドキュメントを参照してください。", "Enforce Windows compatibility" : "Windowsとの互換性を強制", "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "予約名や特殊文字のような、Windowsシステムにおいて有効でないファイル名をブロックします。これは大文字、小文字の互換性を強制するものではありません。", "File Management" : "ファイル管理", @@ -94,6 +96,11 @@ "Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" から \"{newName}\" に名前を変更済み", "Rename file" : "ファイル名の変更", "Folder" : "フォルダー", + "Unknown file type" : "不明なファイルタイプ", + "{ext} image" : "{ext}画像", + "{ext} video" : "{ext}ビデオ", + "{ext} audio" : "{ext}音声", + "{ext} text" : "{ext}テキスト", "Pending" : "保留中", "Unknown date" : "不明な日付", "Clear filter" : "フィルターをクリア", @@ -104,6 +111,7 @@ "Total rows summary" : "総行数のサマリー", "Toggle selection for all files and folders" : "すべてのファイルとフォルダの選択を切り替える", "Name" : "名前", + "File type" : "ファイルの種類", "Size" : "サイズ", "\"{displayName}\" failed on some elements" : "いくつかの要素で \"{displayName}\" が失敗しました。", "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" バッチアクションが正常に実行されました。", @@ -182,6 +190,7 @@ "Sort favorites first" : "お気に入りを最初に並べる", "Sort folders before files" : "ファイルよりもフォルダを先に並べ替えます", "Show hidden files" : "隠しファイルを表示", + "Show file type column" : "ファイルの種類のカラムを表示する", "Crop image previews" : "プレビュー画像を切り抜く", "Enable the grid view" : "グリッド表示を有効にする", "Enable folder tree" : "フォルダーツリーを有効にする", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 65358d419aa..8e77d1b2bb5 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -99,6 +99,10 @@ OC.L10N.register( "Rename file" : "Renomear arquivo", "Folder" : "Pasta", "Unknown file type" : "Tipo de arquivo desconhecido", + "{ext} image" : "imagem {ext}", + "{ext} video" : "vídeo {ext}", + "{ext} audio" : "áudio {ext}", + "{ext} text" : "texto {ext}", "Pending" : "Pendente", "Unknown date" : "Data desconhecida", "Clear filter" : "Limpar filtro", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 7b39fa76f77..09de897bc56 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -97,6 +97,10 @@ "Rename file" : "Renomear arquivo", "Folder" : "Pasta", "Unknown file type" : "Tipo de arquivo desconhecido", + "{ext} image" : "imagem {ext}", + "{ext} video" : "vídeo {ext}", + "{ext} audio" : "áudio {ext}", + "{ext} text" : "texto {ext}", "Pending" : "Pendente", "Unknown date" : "Data desconhecida", "Clear filter" : "Limpar filtro", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 2847bc373c7..ad6b2e96bf4 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -98,6 +98,11 @@ OC.L10N.register( "Renamed \"{oldName}\" to \"{newName}\"" : "Bytte namn på \"{oldName}\" till \"{newName}\"", "Rename file" : "Byt namn på fil", "Folder" : "Mapp", + "Unknown file type" : "Okänd filtyp", + "{ext} image" : "{ext} bild", + "{ext} video" : "{ext} video", + "{ext} audio" : "{ext} ljud", + "{ext} text" : "{ext} text", "Pending" : "Väntar", "Unknown date" : "Okänt datum", "Clear filter" : "Rensa filter", @@ -108,6 +113,7 @@ OC.L10N.register( "Total rows summary" : "Sammanfattning antal rader", "Toggle selection for all files and folders" : "Växla markering för alla filer och mappar", "Name" : "Namn", + "File type" : "Filtyp", "Size" : "Storlek", "\"{displayName}\" failed on some elements" : "\"{displayName}\" misslyckades med vissa element", "\"{displayName}\" batch action executed successfully" : "Batchåtgärden \"{displayName}\" har utförts", @@ -186,6 +192,7 @@ OC.L10N.register( "Sort favorites first" : "Sortera favoriter först", "Sort folders before files" : "Sortera mappar före filer", "Show hidden files" : "Visa dolda filer", + "Show file type column" : "Visa kolumn för filtyp", "Crop image previews" : "Beskär förhandsgranskningar för bilder", "Enable the grid view" : "Aktivera rutnätsvy", "Enable folder tree" : "Aktivera mappträd", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index affd94daa75..514dd77aab7 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -96,6 +96,11 @@ "Renamed \"{oldName}\" to \"{newName}\"" : "Bytte namn på \"{oldName}\" till \"{newName}\"", "Rename file" : "Byt namn på fil", "Folder" : "Mapp", + "Unknown file type" : "Okänd filtyp", + "{ext} image" : "{ext} bild", + "{ext} video" : "{ext} video", + "{ext} audio" : "{ext} ljud", + "{ext} text" : "{ext} text", "Pending" : "Väntar", "Unknown date" : "Okänt datum", "Clear filter" : "Rensa filter", @@ -106,6 +111,7 @@ "Total rows summary" : "Sammanfattning antal rader", "Toggle selection for all files and folders" : "Växla markering för alla filer och mappar", "Name" : "Namn", + "File type" : "Filtyp", "Size" : "Storlek", "\"{displayName}\" failed on some elements" : "\"{displayName}\" misslyckades med vissa element", "\"{displayName}\" batch action executed successfully" : "Batchåtgärden \"{displayName}\" har utförts", @@ -184,6 +190,7 @@ "Sort favorites first" : "Sortera favoriter först", "Sort folders before files" : "Sortera mappar före filer", "Show hidden files" : "Visa dolda filer", + "Show file type column" : "Visa kolumn för filtyp", "Crop image previews" : "Beskär förhandsgranskningar för bilder", "Enable the grid view" : "Aktivera rutnätsvy", "Enable folder tree" : "Aktivera mappträd", diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 24c6af3046f..b0cc1433457 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -98,6 +98,11 @@ OC.L10N.register( "Renamed \"{oldName}\" to \"{newName}\"" : "已将“{oldName}”重命名为“{newName}”", "Rename file" : "重命名文件", "Folder" : "文件夹", + "Unknown file type" : "未知文件类型", + "{ext} image" : "{ext} 图片", + "{ext} video" : "{ext} 视频", + "{ext} audio" : "{ext} 音频", + "{ext} text" : "{ext} 文本", "Pending" : "等待", "Unknown date" : "未知日期", "Clear filter" : "清除筛选", @@ -108,6 +113,7 @@ OC.L10N.register( "Total rows summary" : "总行摘要", "Toggle selection for all files and folders" : "切换所有文件和文件夹的选择", "Name" : "名称", + "File type" : "文件类型", "Size" : "大小", "\"{displayName}\" failed on some elements" : "“{displayName}”在某些元素上失败", "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功", @@ -186,6 +192,7 @@ OC.L10N.register( "Sort favorites first" : "收藏排序优先", "Sort folders before files" : "将文件夹排在文件前面", "Show hidden files" : "显示隐藏文件", + "Show file type column" : "显示文件类型列", "Crop image previews" : "裁剪图片预览", "Enable the grid view" : "启用网格视图", "Enable folder tree" : "启用文件夹树", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 6fb7facb3b6..e15d9f5b180 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -96,6 +96,11 @@ "Renamed \"{oldName}\" to \"{newName}\"" : "已将“{oldName}”重命名为“{newName}”", "Rename file" : "重命名文件", "Folder" : "文件夹", + "Unknown file type" : "未知文件类型", + "{ext} image" : "{ext} 图片", + "{ext} video" : "{ext} 视频", + "{ext} audio" : "{ext} 音频", + "{ext} text" : "{ext} 文本", "Pending" : "等待", "Unknown date" : "未知日期", "Clear filter" : "清除筛选", @@ -106,6 +111,7 @@ "Total rows summary" : "总行摘要", "Toggle selection for all files and folders" : "切换所有文件和文件夹的选择", "Name" : "名称", + "File type" : "文件类型", "Size" : "大小", "\"{displayName}\" failed on some elements" : "“{displayName}”在某些元素上失败", "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功", @@ -184,6 +190,7 @@ "Sort favorites first" : "收藏排序优先", "Sort folders before files" : "将文件夹排在文件前面", "Show hidden files" : "显示隐藏文件", + "Show file type column" : "显示文件类型列", "Crop image previews" : "裁剪图片预览", "Enable the grid view" : "启用网格视图", "Enable folder tree" : "启用文件夹树", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index 51c97322725..4ff34d480e5 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -99,6 +99,10 @@ OC.L10N.register( "Rename file" : "重新命名檔案", "Folder" : "資料夾", "Unknown file type" : "未知檔案類型", + "{ext} image" : "{ext} 影像", + "{ext} video" : "{ext} 視訊", + "{ext} audio" : "{ext} 音訊", + "{ext} text" : "{ext} 文字", "Pending" : "待處理", "Unknown date" : "未知日期", "Clear filter" : "清除過濾條件", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index ead55fc3891..0def7339d4d 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -97,6 +97,10 @@ "Rename file" : "重新命名檔案", "Folder" : "資料夾", "Unknown file type" : "未知檔案類型", + "{ext} image" : "{ext} 影像", + "{ext} video" : "{ext} 視訊", + "{ext} audio" : "{ext} 音訊", + "{ext} text" : "{ext} 文字", "Pending" : "待處理", "Unknown date" : "未知日期", "Clear filter" : "清除過濾條件", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index f6aa0685ab2..e686a33970e 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -182,7 +182,7 @@ OC.L10N.register( "Choose a default folder for accepted shares" : "Einen Standardordner für akzeptierte Freigaben wählen", "Invalid path selected" : "Ungültigen Pfad ausgewählt", "Unknown error" : "Unbekannter Fehler", - "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", + "Set default folder for accepted shares" : "Standardordner für angenommene Freigaben", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", "Share expiration: " : "Freigabe-Ablaufdatum:", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 52b17773dbd..a797c90fe56 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -180,7 +180,7 @@ "Choose a default folder for accepted shares" : "Einen Standardordner für akzeptierte Freigaben wählen", "Invalid path selected" : "Ungültigen Pfad ausgewählt", "Unknown error" : "Unbekannter Fehler", - "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", + "Set default folder for accepted shares" : "Standardordner für angenommene Freigaben", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", "Share expiration: " : "Freigabe-Ablaufdatum:", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 1269c6a0cfb..608e60101c9 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -182,7 +182,7 @@ OC.L10N.register( "Choose a default folder for accepted shares" : "Wählen Sie einen Standardordner für akzeptierte Freigaben", "Invalid path selected" : "Ungültiger Pfad ausgewählt", "Unknown error" : "Unbekannter Fehler", - "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", + "Set default folder for accepted shares" : "Standardordner für angenommene Freigaben", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", "Share expiration: " : "Freigabe-Ablaufdatum:", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 0a61a725d3e..97c1ac18a7c 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -180,7 +180,7 @@ "Choose a default folder for accepted shares" : "Wählen Sie einen Standardordner für akzeptierte Freigaben", "Invalid path selected" : "Ungültiger Pfad ausgewählt", "Unknown error" : "Unbekannter Fehler", - "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", + "Set default folder for accepted shares" : "Standardordner für angenommene Freigaben", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", "Share expiration: " : "Freigabe-Ablaufdatum:", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index 062614d2fe3..dfbb41c95cc 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -313,7 +313,9 @@ OC.L10N.register( "Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "組織内の個人またはチームとファイルを共有するには、この方法を使用します。受信者がすでに共有にアクセスできるが、その場所を見つけられない場合は、簡単にアクセスできるように内部共有リンクを送信できます。", "Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "組織外の個人や組織とファイルを共有するには、この方法を使用します。ファイルやフォルダは、パブリック共有リンクやメールアドレスで共有できます。また、連携クラウドIDを使用して、異なるインスタンスにホストされている他のNextcloudアカウントと共有することもできます。", "Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "内部または外部共有に含まれない共有。これはアプリや他のソースからの共有になります。", + "Share with accounts, teams, federated cloud IDs" : "アカウント、チーム、連携クラウドIDとの共有", "Share with accounts and teams" : "アカウントとチームで共有", + "Email, federated cloud ID" : "電子メール、連携クラウドID", "Unable to load the shares list" : "共有リストを読み込めません", "Expires {relativetime}" : "有効期限 {relativetime}", "this share just expired." : "この共有は期限切れになりました。", @@ -422,6 +424,7 @@ OC.L10N.register( "You are not allowed to edit link shares that you don't own" : "あなたが所有していない共有リンクを編集することは許可されていません", "_1 email address already added_::_{count} email addresses already added_" : ["{count} メールアドレスはすでに追加されています"], "_1 email address added_::_{count} email addresses added_" : ["{count} メールアドレスが追加されました"], + "Share with accounts, teams, federated cloud id" : "アカウント、チーム、連携クラウドIDで共有", "Email, federated cloud id" : "電子メール、連携クラウドID" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index c2657abce02..67b977bbe3b 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -311,7 +311,9 @@ "Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "組織内の個人またはチームとファイルを共有するには、この方法を使用します。受信者がすでに共有にアクセスできるが、その場所を見つけられない場合は、簡単にアクセスできるように内部共有リンクを送信できます。", "Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "組織外の個人や組織とファイルを共有するには、この方法を使用します。ファイルやフォルダは、パブリック共有リンクやメールアドレスで共有できます。また、連携クラウドIDを使用して、異なるインスタンスにホストされている他のNextcloudアカウントと共有することもできます。", "Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "内部または外部共有に含まれない共有。これはアプリや他のソースからの共有になります。", + "Share with accounts, teams, federated cloud IDs" : "アカウント、チーム、連携クラウドIDとの共有", "Share with accounts and teams" : "アカウントとチームで共有", + "Email, federated cloud ID" : "電子メール、連携クラウドID", "Unable to load the shares list" : "共有リストを読み込めません", "Expires {relativetime}" : "有効期限 {relativetime}", "this share just expired." : "この共有は期限切れになりました。", @@ -420,6 +422,7 @@ "You are not allowed to edit link shares that you don't own" : "あなたが所有していない共有リンクを編集することは許可されていません", "_1 email address already added_::_{count} email addresses already added_" : ["{count} メールアドレスはすでに追加されています"], "_1 email address added_::_{count} email addresses added_" : ["{count} メールアドレスが追加されました"], + "Share with accounts, teams, federated cloud id" : "アカウント、チーム、連携クラウドIDで共有", "Email, federated cloud id" : "電子メール、連携クラウドID" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/provisioning_api/tests/CapabilitiesTest.php b/apps/provisioning_api/tests/CapabilitiesTest.php index e3c14f37ed7..67a0335829c 100644 --- a/apps/provisioning_api/tests/CapabilitiesTest.php +++ b/apps/provisioning_api/tests/CapabilitiesTest.php @@ -1,9 +1,11 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Provisioning_API\Tests\unit; +namespace OCA\Provisioning_API\Tests; use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\Provisioning_API\Capabilities; @@ -21,11 +23,8 @@ use Test\TestCase; */ class CapabilitiesTest extends TestCase { - /** @var Capabilities */ - protected $capabilities; - - /** @var IAppManager|MockObject */ - protected $appManager; + protected IAppManager&MockObject $appManager; + protected Capabilities $capabilities; public function setUp(): void { parent::setUp(); @@ -38,7 +37,7 @@ class CapabilitiesTest extends TestCase { ->willReturn('1.12'); } - public function getCapabilitiesProvider() { + public static function getCapabilitiesProvider(): array { return [ [true, false, false, true, false], [true, true, false, true, false], @@ -52,7 +51,7 @@ class CapabilitiesTest extends TestCase { /** * @dataProvider getCapabilitiesProvider */ - public function testGetCapabilities($federationAppEnabled, $federatedFileSharingAppEnabled, $lookupServerEnabled, $expectedFederatedScopeEnabled, $expectedPublishedScopeEnabled): void { + public function testGetCapabilities(bool $federationAppEnabled, bool $federatedFileSharingAppEnabled, bool $lookupServerEnabled, bool $expectedFederatedScopeEnabled, bool $expectedPublishedScopeEnabled): void { $this->appManager->expects($this->any()) ->method('isEnabledForUser') ->will($this->returnValueMap([ diff --git a/apps/provisioning_api/tests/Controller/AppConfigControllerTest.php b/apps/provisioning_api/tests/Controller/AppConfigControllerTest.php index 41739b6283f..3d2c1645d25 100644 --- a/apps/provisioning_api/tests/Controller/AppConfigControllerTest.php +++ b/apps/provisioning_api/tests/Controller/AppConfigControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -30,7 +32,6 @@ use function json_encode; * @package OCA\Provisioning_API\Tests */ class AppConfigControllerTest extends TestCase { - private IAppConfig&MockObject $appConfig; private IUserSession&MockObject $userSession; private IL10N&MockObject $l10n; @@ -51,7 +52,7 @@ class AppConfigControllerTest extends TestCase { /** * @param string[] $methods - * @return AppConfigController|\PHPUnit\Framework\MockObject\MockObject + * @return AppConfigController|MockObject */ protected function getInstance(array $methods = []) { $request = $this->createMock(IRequest::class); @@ -79,7 +80,7 @@ class AppConfigControllerTest extends TestCase { $this->settingManager, $this->appManager, ]) - ->setMethods($methods) + ->onlyMethods($methods) ->getMock(); } } @@ -95,7 +96,7 @@ class AppConfigControllerTest extends TestCase { $this->assertEquals(['data' => ['apps']], $result->getData()); } - public function dataGetKeys() { + public static function dataGetKeys(): array { return [ ['app1 ', null, new \InvalidArgumentException('error'), Http::STATUS_FORBIDDEN], ['app2', ['keys'], null, Http::STATUS_OK], @@ -104,12 +105,8 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataGetKeys - * @param string $app - * @param array|null $keys - * @param \Exception|null $throws - * @param int $status */ - public function testGetKeys($app, $keys, $throws, $status): void { + public function testGetKeys(string $app, ?array $keys, ?\Throwable $throws, int $status): void { $api = $this->getInstance(['verifyAppId']); if ($throws instanceof \Exception) { $api->expects($this->once()) @@ -140,7 +137,7 @@ class AppConfigControllerTest extends TestCase { } } - public function dataGetValue() { + public static function dataGetValue(): array { return [ ['app1', 'key', 'default', null, new \InvalidArgumentException('error'), Http::STATUS_FORBIDDEN], ['app2', 'key', 'default', 'return', null, Http::STATUS_OK], @@ -149,14 +146,8 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataGetValue - * @param string $app - * @param string|null $key - * @param string|null $default - * @param string|null $return - * @param \Exception|null $throws - * @param int $status */ - public function testGetValue($app, $key, $default, $return, $throws, $status): void { + public function testGetValue(string $app, string $key, string $default, ?string $return, ?\Throwable $throws, int $status): void { $api = $this->getInstance(['verifyAppId']); if ($throws instanceof \Exception) { $api->expects($this->once()) @@ -184,7 +175,7 @@ class AppConfigControllerTest extends TestCase { } } - public function dataSetValue() { + public static function dataSetValue(): array { return [ ['app1', 'key', 'default', new \InvalidArgumentException('error1'), null, Http::STATUS_FORBIDDEN], ['app2', 'key', 'default', null, new \InvalidArgumentException('error2'), Http::STATUS_FORBIDDEN], @@ -201,14 +192,8 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataSetValue - * @param string $app - * @param string|null $key - * @param string|null $value - * @param \Exception|null $appThrows - * @param \Exception|null $keyThrows - * @param int|\Throwable $status */ - public function testSetValue($app, $key, $value, $appThrows, $keyThrows, $status, int|\Throwable $type = IAppConfig::VALUE_MIXED): void { + public function testSetValue(string $app, string $key, string $value, ?\Throwable $appThrows, ?\Throwable $keyThrows, int $status, int|\Throwable $type = IAppConfig::VALUE_MIXED): void { $adminUser = $this->createMock(IUser::class); $adminUser->expects($this->once()) ->method('getUid') @@ -297,7 +282,7 @@ class AppConfigControllerTest extends TestCase { } } - public function dataDeleteValue() { + public static function dataDeleteValue(): array { return [ ['app1', 'key', new \InvalidArgumentException('error1'), null, Http::STATUS_FORBIDDEN], ['app2', 'key', null, new \InvalidArgumentException('error2'), Http::STATUS_FORBIDDEN], @@ -307,13 +292,8 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataDeleteValue - * @param string $app - * @param string|null $key - * @param \Exception|null $appThrows - * @param \Exception|null $keyThrows - * @param int $status */ - public function testDeleteValue($app, $key, $appThrows, $keyThrows, $status): void { + public function testDeleteValue(string $app, string $key, ?\Throwable $appThrows, ?\Throwable $keyThrows, int $status): void { $api = $this->getInstance(['verifyAppId', 'verifyConfigKey']); if ($appThrows instanceof \Exception) { $api->expects($this->once()) @@ -367,7 +347,7 @@ class AppConfigControllerTest extends TestCase { $this->addToAssertionCount(1); } - public function dataVerifyAppIdThrows() { + public static function dataVerifyAppIdThrows(): array { return [ ['activity..'], ['activity/'], @@ -378,16 +358,15 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataVerifyAppIdThrows - * @param string $app */ - public function testVerifyAppIdThrows($app): void { + public function testVerifyAppIdThrows(string $app): void { $this->expectException(\InvalidArgumentException::class); $api = $this->getInstance(); $this->invokePrivate($api, 'verifyAppId', [$app]); } - public function dataVerifyConfigKey() { + public static function dataVerifyConfigKey(): array { return [ ['activity', 'abc', ''], ['dav', 'public_route', ''], @@ -398,17 +377,14 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataVerifyConfigKey - * @param string $app - * @param string $key - * @param string $value */ - public function testVerifyConfigKey($app, $key, $value): void { + public function testVerifyConfigKey(string $app, string $key, string $value): void { $api = $this->getInstance(); $this->invokePrivate($api, 'verifyConfigKey', [$app, $key, $value]); $this->addToAssertionCount(1); } - public function dataVerifyConfigKeyThrows() { + public static function dataVerifyConfigKeyThrows(): array { return [ ['activity', 'installed_version', ''], ['calendar', 'enabled', ''], @@ -424,11 +400,8 @@ class AppConfigControllerTest extends TestCase { /** * @dataProvider dataVerifyConfigKeyThrows - * @param string $app - * @param string $key - * @param string $value */ - public function testVerifyConfigKeyThrows($app, $key, $value): void { + public function testVerifyConfigKeyThrows(string $app, string $key, string $value): void { $this->expectException(\InvalidArgumentException::class); $api = $this->getInstance(); diff --git a/apps/provisioning_api/tests/Controller/AppsControllerTest.php b/apps/provisioning_api/tests/Controller/AppsControllerTest.php index bbcabfddd8b..f56be7c4c36 100644 --- a/apps/provisioning_api/tests/Controller/AppsControllerTest.php +++ b/apps/provisioning_api/tests/Controller/AppsControllerTest.php @@ -24,12 +24,9 @@ use OCP\Server; * @package OCA\Provisioning_API\Tests */ class AppsControllerTest extends TestCase { - /** @var IAppManager */ - private $appManager; - /** @var AppsController */ - private $api; - /** @var IUserSession */ - private $userSession; + private IAppManager $appManager; + private AppsController $api; + private IUserSession $userSession; protected function setUp(): void { parent::setUp(); @@ -38,9 +35,7 @@ class AppsControllerTest extends TestCase { $this->groupManager = Server::get(IGroupManager::class); $this->userSession = Server::get(IUserSession::class); - $request = $this->getMockBuilder(IRequest::class) - ->disableOriginalConstructor() - ->getMock(); + $request = $this->createMock(IRequest::class); $this->api = new AppsController( 'provisioning_api', @@ -96,7 +91,7 @@ class AppsControllerTest extends TestCase { $this->assertEquals(count($disabled), count($data['apps'])); } - + public function testGetAppsInvalidFilter(): void { $this->expectException(OCSException::class); $this->expectExceptionCode(101); diff --git a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php index 29b098429e8..e4f8b3af183 100644 --- a/apps/provisioning_api/tests/Controller/GroupsControllerTest.php +++ b/apps/provisioning_api/tests/Controller/GroupsControllerTest.php @@ -22,30 +22,20 @@ use OCP\IUserManager; use OCP\IUserSession; use OCP\L10N\IFactory; use OCP\UserInterface; +use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; class GroupsControllerTest extends \Test\TestCase { - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */ - protected $request; - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */ - protected $userManager; - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - protected $config; - /** @var Manager|\PHPUnit\Framework\MockObject\MockObject */ - protected $groupManager; - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - protected $userSession; - /** @var IAccountManager|\PHPUnit\Framework\MockObject\MockObject */ - protected $accountManager; - /** @var ISubAdmin|\PHPUnit\Framework\MockObject\MockObject */ - protected $subAdminManager; - /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */ - protected $l10nFactory; - /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */ - protected $logger; - - /** @var GroupsController|\PHPUnit\Framework\MockObject\MockObject */ - protected $api; + protected IRequest&MockObject $request; + protected IUserManager&MockObject $userManager; + protected IConfig&MockObject $config; + protected Manager&MockObject $groupManager; + protected IUserSession&MockObject $userSession; + protected IAccountManager&MockObject $accountManager; + protected ISubAdmin&MockObject $subAdminManager; + protected IFactory&MockObject $l10nFactory; + protected LoggerInterface&MockObject $logger; + protected GroupsController&MockObject $api; private IRootFolder $rootFolder; @@ -82,16 +72,12 @@ class GroupsControllerTest extends \Test\TestCase { $this->rootFolder, $this->logger ]) - ->setMethods(['fillStorageInfo']) + ->onlyMethods(['fillStorageInfo']) ->getMock(); } - /** - * @param string $gid - * @return IGroup|\PHPUnit\Framework\MockObject\MockObject - */ - private function createGroup($gid) { - $group = $this->getMockBuilder('\OCP\IGroup')->disableOriginalConstructor()->getMock(); + private function createGroup(string $gid): IGroup&MockObject { + $group = $this->createMock(\OCP\IGroup::class); $group ->method('getGID') ->willReturn($gid); @@ -116,7 +102,7 @@ class GroupsControllerTest extends \Test\TestCase { /** * @param string $uid - * @return IUser|\PHPUnit\Framework\MockObject\MockObject + * @return IUser&MockObject */ private function createUser($uid) { $user = $this->getMockBuilder(IUser::class)->disableOriginalConstructor()->getMock(); @@ -165,7 +151,7 @@ class GroupsControllerTest extends \Test\TestCase { }); } - public function dataGetGroups() { + public static function dataGetGroups(): array { return [ [null, 0, 0], ['foo', 0, 0], @@ -177,12 +163,8 @@ class GroupsControllerTest extends \Test\TestCase { /** * @dataProvider dataGetGroups - * - * @param string|null $search - * @param int|null $limit - * @param int|null $offset */ - public function testGetGroups($search, $limit, $offset): void { + public function testGetGroups(?string $search, int $limit, int $offset): void { $groups = [$this->createGroup('group1'), $this->createGroup('group2')]; $search = $search === null ? '' : $search; @@ -509,7 +491,7 @@ class GroupsControllerTest extends \Test\TestCase { ->method('getUserGroups') ->willReturn([$group]); - /** @var \PHPUnit\Framework\MockObject\MockObject */ + /** @var MockObject */ $this->subAdminManager->expects($this->any()) ->method('isSubAdminOfGroup') ->willReturn(false); @@ -554,7 +536,7 @@ class GroupsControllerTest extends \Test\TestCase { ->method('getUserGroups') ->willReturn([$group]); - /** @var \PHPUnit\Framework\MockObject\MockObject */ + /** @var MockObject */ $this->subAdminManager->expects($this->any()) ->method('isSubAdminOfGroup') ->willReturn(false); diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 7d4f99356b3..80d6d0f6152 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -46,41 +46,24 @@ use RuntimeException; use Test\TestCase; class UsersControllerTest extends TestCase { - /** @var IUserManager|MockObject */ - protected $userManager; - /** @var IConfig|MockObject */ - protected $config; - /** @var Manager|MockObject */ - protected $groupManager; - /** @var IUserSession|MockObject */ - protected $userSession; - /** @var LoggerInterface|MockObject */ - protected $logger; - /** @var UsersController|MockObject */ - protected $api; - /** @var IAccountManager|MockObject */ - protected $accountManager; - /** @var ISubAdmin|MockObject */ - protected $subAdminManager; - /** @var IURLGenerator|MockObject */ - protected $urlGenerator; - /** @var IRequest|MockObject */ - protected $request; - /** @var IFactory|MockObject */ - private $l10nFactory; - /** @var NewUserMailHelper|MockObject */ - private $newUserMailHelper; - /** @var ISecureRandom|MockObject */ - private $secureRandom; - /** @var RemoteWipe|MockObject */ - private $remoteWipe; - /** @var KnownUserService|MockObject */ - private $knownUserService; - /** @var IEventDispatcher|MockObject */ - private $eventDispatcher; + protected IUserManager&MockObject $userManager; + protected IConfig&MockObject $config; + protected Manager&MockObject $groupManager; + protected IUserSession&MockObject $userSession; + protected LoggerInterface&MockObject $logger; + protected UsersController&MockObject $api; + protected IAccountManager&MockObject $accountManager; + protected ISubAdmin&MockObject $subAdminManager; + protected IURLGenerator&MockObject $urlGenerator; + protected IRequest&MockObject $request; + private IFactory&MockObject $l10nFactory; + private NewUserMailHelper&MockObject $newUserMailHelper; + private ISecureRandom&MockObject $secureRandom; + private RemoteWipe&MockObject $remoteWipe; + private KnownUserService&MockObject $knownUserService; + private IEventDispatcher&MockObject $eventDispatcher; private IRootFolder $rootFolder; - /** @var IPhoneNumberUtil */ - private $phoneNumberUtil; + private IPhoneNumberUtil $phoneNumberUtil; protected function setUp(): void { parent::setUp(); @@ -449,10 +432,6 @@ class UsersControllerTest extends TestCase { $this->groupManager ->expects($this->exactly(2)) ->method('groupExists') - ->withConsecutive( - ['ExistingGroup'], - ['NonExistingGroup'] - ) ->willReturnMap([ ['ExistingGroup', true], ['NonExistingGroup', false] @@ -798,18 +777,20 @@ class UsersControllerTest extends TestCase { ->method('get') ->with('ExistingGroup') ->willReturn($group); + + $calls = [ + ['Successful addUser call with userid: NewUser', ['app' => 'ocs_api']], + ['Added userid NewUser to group ExistingGroup', ['app' => 'ocs_api']], + ]; $this->logger ->expects($this->exactly(2)) ->method('info') - ->withConsecutive( - ['Successful addUser call with userid: NewUser', ['app' => 'ocs_api']], - ['Added userid NewUser to group ExistingGroup', ['app' => 'ocs_api']] - ); + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); - $this->assertTrue(key_exists( - 'id', - $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup'])->getData() - )); + $this->assertArrayHasKey('id', $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup'])->getData()); } @@ -966,11 +947,10 @@ class UsersControllerTest extends TestCase { $this->groupManager ->expects($this->exactly(2)) ->method('groupExists') - ->withConsecutive( - ['ExistingGroup1'], - ['ExistingGroup2'] - ) - ->willReturn(true); + ->willReturnMap([ + ['ExistingGroup1', true], + ['ExistingGroup2', true] + ]); $user = $this->getMockBuilder(IUser::class) ->disableOriginalConstructor() ->getMock(); @@ -996,24 +976,23 @@ class UsersControllerTest extends TestCase { $this->groupManager ->expects($this->exactly(4)) ->method('get') - ->withConsecutive( - ['ExistingGroup1'], - ['ExistingGroup2'], - ['ExistingGroup1'], - ['ExistingGroup2'] - ) ->willReturnMap([ ['ExistingGroup1', $existingGroup1], ['ExistingGroup2', $existingGroup2] ]); + + $calls = [ + ['Successful addUser call with userid: NewUser', ['app' => 'ocs_api']], + ['Added userid NewUser to group ExistingGroup1', ['app' => 'ocs_api']], + ['Added userid NewUser to group ExistingGroup2', ['app' => 'ocs_api']], + ]; $this->logger ->expects($this->exactly(3)) ->method('info') - ->withConsecutive( - ['Successful addUser call with userid: NewUser', ['app' => 'ocs_api']], - ['Added userid NewUser to group ExistingGroup1', ['app' => 'ocs_api']], - ['Added userid NewUser to group ExistingGroup2', ['app' => 'ocs_api']] - ); + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $subAdminManager = $this->getMockBuilder('OC\SubAdmin') ->disableOriginalConstructor()->getMock(); $this->groupManager @@ -1023,16 +1002,12 @@ class UsersControllerTest extends TestCase { $subAdminManager ->expects($this->exactly(2)) ->method('isSubAdminOfGroup') - ->withConsecutive( - [$loggedInUser, $existingGroup1], - [$loggedInUser, $existingGroup2] - ) - ->willReturn(true); + ->willReturnMap([ + [$loggedInUser, $existingGroup1, true], + [$loggedInUser, $existingGroup2, true], + ]); - $this->assertTrue(key_exists( - 'id', - $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup1', 'ExistingGroup2'])->getData() - )); + $this->assertArrayHasKey('id', $this->api->addUser('NewUser', 'PasswordOfTheNewUser', '', '', ['ExistingGroup1', 'ExistingGroup2'])->getData()); } @@ -1541,7 +1516,7 @@ class UsersControllerTest extends TestCase { $this->assertEquals($expected, $this->invokePrivate($this->api, 'getUserData', ['UID'])); } - public function dataSearchByPhoneNumbers(): array { + public static function dataSearchByPhoneNumbers(): array { return [ 'Invalid country' => ['Not a country code', ['12345' => ['NaN']], 400, null, null, []], 'No number to search' => ['DE', ['12345' => ['NaN']], 200, null, null, []], @@ -1556,10 +1531,6 @@ class UsersControllerTest extends TestCase { /** * @dataProvider dataSearchByPhoneNumbers - * @param string $location - * @param array $search - * @param int $status - * @param array $expected */ public function testSearchByPhoneNumbers(string $location, array $search, int $status, ?array $searchUsers, ?array $userMatches, array $expected): void { $knownTo = 'knownTo'; @@ -1870,7 +1841,7 @@ class UsersControllerTest extends TestCase { $this->api->editUser('UserToEdit', 'email', 'demo.org'); } - public function selfEditChangePropertyProvider() { + public static function selfEditChangePropertyProvider(): array { return [ [IAccountManager::PROPERTY_TWITTER, '@oldtwitter', '@newtwitter'], [IAccountManager::PROPERTY_FEDIVERSE, '@oldFediverse@floss.social', '@newFediverse@floss.social'], @@ -2294,7 +2265,7 @@ class UsersControllerTest extends TestCase { $this->assertEquals([], $this->api->editUser('UserToEdit', 'language', 'de')->getData()); } - public function dataEditUserSelfEditChangeLanguageButForced() { + public static function dataEditUserSelfEditChangeLanguageButForced(): array { return [ ['de'], [true], @@ -3942,11 +3913,10 @@ class UsersControllerTest extends TestCase { $api->expects($this->exactly(2)) ->method('getUserData') - ->withConsecutive( - ['uid', false], - ['currentuser', true], - ) - ->willReturn($expected); + ->willReturnMap([ + ['uid', false, $expected], + ['currentuser', true, $expected], + ]); $this->assertSame($expected, $api->getUser('uid')->getData()); @@ -4263,7 +4233,7 @@ class UsersControllerTest extends TestCase { } - public function dataGetEditableFields() { + public static function dataGetEditableFields(): array { return [ [false, true, ISetDisplayNameBackend::class, [ IAccountManager::PROPERTY_EMAIL, @@ -4388,10 +4358,6 @@ class UsersControllerTest extends TestCase { /** * @dataProvider dataGetEditableFields - * - * @param bool $allowedToChangeDisplayName - * @param string $userBackend - * @param array $expected */ public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $allowedToChangeEmail, string $userBackend, array $expected): void { $this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => match ($key) { diff --git a/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php b/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php index d097febb04f..d40aab90d66 100644 --- a/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php +++ b/apps/provisioning_api/tests/Middleware/ProvisioningApiMiddlewareTest.php @@ -24,34 +24,29 @@ class ProvisioningApiMiddlewareTest extends TestCase { $this->reflector = $this->createMock(IControllerMethodReflector::class); } - public function dataAnnotation() { + public static function dataAnnotation(): array { return [ [false, false, false, false, false], - [false, false, true, false, false], - [false, true, true, false, false], - [ true, false, false, false, true], - [ true, false, true, false, false], - [ true, true, false, false, false], - [ true, true, true, false, false], + [false, false, true, false, false], + [false, true, true, false, false], + [true, false, false, false, true], + [true, false, true, false, false], + [true, true, false, false, false], + [true, true, true, false, false], [false, false, false, true, false], - [false, false, true, true, false], - [false, true, true, true, false], - [ true, false, false, true, false], - [ true, false, true, true, false], - [ true, true, false, true, false], - [ true, true, true, true, false], + [false, false, true, true, false], + [false, true, true, true, false], + [true, false, false, true, false], + [true, false, true, true, false], + [true, true, false, true, false], + [true, true, true, true, false], ]; } /** * @dataProvider dataAnnotation - * - * @param bool $subadminRequired - * @param bool $isAdmin - * @param bool $isSubAdmin - * @param bool $shouldThrowException */ - public function testBeforeController($subadminRequired, $isAdmin, $isSubAdmin, $hasSettingAuthorizationAnnotation, $shouldThrowException): void { + public function testBeforeController(bool $subadminRequired, bool $isAdmin, bool $isSubAdmin, bool $hasSettingAuthorizationAnnotation, bool $shouldThrowException): void { $middleware = new ProvisioningApiMiddleware( $this->reflector, $isAdmin, @@ -80,7 +75,7 @@ class ProvisioningApiMiddlewareTest extends TestCase { } } - public function dataAfterException() { + public static function dataAfterException(): array { return [ [new NotSubAdminException(), false], [new \Exception('test', 42), true], @@ -89,11 +84,8 @@ class ProvisioningApiMiddlewareTest extends TestCase { /** * @dataProvider dataAfterException - * - * @param \Exception $e - * @param bool $forwared */ - public function testAfterException(\Exception $exception, $forwared): void { + public function testAfterException(\Exception $exception, bool $forwared): void { $middleware = new ProvisioningApiMiddleware( $this->reflector, false, diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index 66150d7a47b..1b90e97094c 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -122,7 +122,7 @@ OC.L10N.register( "Mobile & desktop" : "Mobil & Desktop", "Email server" : "E-Mail-Server", "Mail Providers" : "E-Mail-Anbieter", - "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Provider ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Anbieter ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", "Send emails using" : "E-Mails senden mittels", "User's email account" : "E-Mail-Konto des Benutzers", "System email account" : "System-E-Mail-Konto", @@ -371,14 +371,14 @@ OC.L10N.register( "Allow users to set custom share link tokens" : "Benutzern erlauben, benutzerdefinierte Freigabelink-Token festzulegen", "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Freigaben mit benutzerdefinierten Token sind auch noch nach der Deaktivierung dieser Einstellung zugänglich", "Shares with guessable tokens may be accessed easily" : "Auf Freigaben mit erratbaren Token kann u. U. leicht zugegriffen werden", - "Limit sharing based on groups" : "Freigeben basierend auf Gruppen beschränken", + "Limit sharing based on groups" : "Freigaben nach Gruppen einschränken", "Allow sharing for everyone (default)" : "Teilen für alle erlauben (Standard)", - "Exclude some groups from sharing" : "Einige Gruppen vom Teilen ausschließen", - "Limit sharing to some groups" : "Teilen auf einige Gruppen beschränken", - "Groups allowed to share" : "Gruppen, die teilen dürfen", + "Exclude some groups from sharing" : "Bestimmte Gruppen vom Teilen ausschließen", + "Limit sharing to some groups" : "Teilen für bestimmte Gruppen erlauben", + "Groups allowed to share" : "Für die Linkfreigabe zugelassene Gruppen", "Groups excluded from sharing" : "Von der Linkfreigabe ausgeschlossene Gruppen", "Not allowed groups will still be able to receive shares, but not to initiate them." : "Nicht zugelassene Gruppen können zwar weiterhin Freigaben empfangen, aber nicht erstellen.", - "Set default expiration date for internal shares" : "Lege das Standardablaufdatum für interne Freigaben fest", + "Set default expiration date for internal shares" : "Standardablaufdatum für interne Freigaben festlegen", "Enforce expiration date" : "Ablaufdatum erzwingen", "Default expiration time of new shares in days" : "Standardablaufzeit neuer Freigaben in Tagen", "Expire shares after x days" : "Freigaben laufen nach x Tagen ab", @@ -393,7 +393,7 @@ OC.L10N.register( "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Restrict account name autocompletion and system address book access to users within the same groups" : "Die automatische Vervollständigung von Kontonamen und den Zugriff auf das Systemadressbuch auf Benutzer innerhalb derselben Gruppen beschränken", "Restrict account name autocompletion to users based on phone number integration" : "Die automatische Vervollständigung des Kontonamens auf Benutzer beschränken, die auf der Integration von Telefonnummern basieren.", - "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Die automatische Vervollständigung ermöglichen, wenn der vollständige Name oder die E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite (Wird nur gezeigt, wenn die Dateiliste nicht angezeigt wird.) ", "Disclaimer text" : "Haftungsausschlusstext", "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", @@ -549,7 +549,7 @@ OC.L10N.register( "The cron.php needs to be executed by the system account \"{user}\"." : "Die cron.php muss von dem Systemkonto \"{user}\" ausgeführt werden.", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "Die PHP-POSIX-Erweiterung ist erforderlich. Weitere Einzelheiten hierzu in der {linkstart}PHP-Dokumentation{linkend}.", "Unable to update background job mode" : "Hintergrund-Job-Modus kann nicht aktualisiert werden", - "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden sich in der Dokumentation.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrund-Aufgaben richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden sich in der Dokumentation.", "Last job execution ran {time}. Something seems wrong." : "Der letzte Job lief {time}. Etwas scheint nicht zu stimmen.", "Last job ran {relativeTime}." : "Der letzte Job lief {relativeTime}.", "Background job did not run yet!" : "Hintergrund-Job wurde bislang nicht ausgeführt!", @@ -870,7 +870,7 @@ OC.L10N.register( "Save" : "Speichern", "Test and verify email settings" : "Testen und überprüfen der E-Mail-Einstellungen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um dir dabei zu helfen, werden einige automatische Prüfungen durchgeführt. Weitere Informationen kannst du der verlinkten Dokumentation entnehmen.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Leistung deiner Instanz ist es von großer Bedeutung, dass alles richtig konfiguriert ist. Um dich dabei zu unterstützen, werden einige automatische Prüfungen durchgeführt. Weitere Informationen findest du in der verlinkten Dokumentation.", "All checks passed." : "Alle Überprüfungen bestanden.", "There are some errors regarding your setup." : "Es gibt einige Fehler in der Systemkonfiguration.", "There are some warnings regarding your setup." : "Es gibt einige Warnungen in der Systemkonfiguration.", diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index c25dbf707bd..19b887b7028 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -120,7 +120,7 @@ "Mobile & desktop" : "Mobil & Desktop", "Email server" : "E-Mail-Server", "Mail Providers" : "E-Mail-Anbieter", - "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Provider ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Anbieter ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", "Send emails using" : "E-Mails senden mittels", "User's email account" : "E-Mail-Konto des Benutzers", "System email account" : "System-E-Mail-Konto", @@ -369,14 +369,14 @@ "Allow users to set custom share link tokens" : "Benutzern erlauben, benutzerdefinierte Freigabelink-Token festzulegen", "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Freigaben mit benutzerdefinierten Token sind auch noch nach der Deaktivierung dieser Einstellung zugänglich", "Shares with guessable tokens may be accessed easily" : "Auf Freigaben mit erratbaren Token kann u. U. leicht zugegriffen werden", - "Limit sharing based on groups" : "Freigeben basierend auf Gruppen beschränken", + "Limit sharing based on groups" : "Freigaben nach Gruppen einschränken", "Allow sharing for everyone (default)" : "Teilen für alle erlauben (Standard)", - "Exclude some groups from sharing" : "Einige Gruppen vom Teilen ausschließen", - "Limit sharing to some groups" : "Teilen auf einige Gruppen beschränken", - "Groups allowed to share" : "Gruppen, die teilen dürfen", + "Exclude some groups from sharing" : "Bestimmte Gruppen vom Teilen ausschließen", + "Limit sharing to some groups" : "Teilen für bestimmte Gruppen erlauben", + "Groups allowed to share" : "Für die Linkfreigabe zugelassene Gruppen", "Groups excluded from sharing" : "Von der Linkfreigabe ausgeschlossene Gruppen", "Not allowed groups will still be able to receive shares, but not to initiate them." : "Nicht zugelassene Gruppen können zwar weiterhin Freigaben empfangen, aber nicht erstellen.", - "Set default expiration date for internal shares" : "Lege das Standardablaufdatum für interne Freigaben fest", + "Set default expiration date for internal shares" : "Standardablaufdatum für interne Freigaben festlegen", "Enforce expiration date" : "Ablaufdatum erzwingen", "Default expiration time of new shares in days" : "Standardablaufzeit neuer Freigaben in Tagen", "Expire shares after x days" : "Freigaben laufen nach x Tagen ab", @@ -391,7 +391,7 @@ "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Restrict account name autocompletion and system address book access to users within the same groups" : "Die automatische Vervollständigung von Kontonamen und den Zugriff auf das Systemadressbuch auf Benutzer innerhalb derselben Gruppen beschränken", "Restrict account name autocompletion to users based on phone number integration" : "Die automatische Vervollständigung des Kontonamens auf Benutzer beschränken, die auf der Integration von Telefonnummern basieren.", - "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Die automatische Vervollständigung ermöglichen, wenn der vollständige Name oder die E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite (Wird nur gezeigt, wenn die Dateiliste nicht angezeigt wird.) ", "Disclaimer text" : "Haftungsausschlusstext", "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", @@ -547,7 +547,7 @@ "The cron.php needs to be executed by the system account \"{user}\"." : "Die cron.php muss von dem Systemkonto \"{user}\" ausgeführt werden.", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "Die PHP-POSIX-Erweiterung ist erforderlich. Weitere Einzelheiten hierzu in der {linkstart}PHP-Dokumentation{linkend}.", "Unable to update background job mode" : "Hintergrund-Job-Modus kann nicht aktualisiert werden", - "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden sich in der Dokumentation.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrund-Aufgaben richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden sich in der Dokumentation.", "Last job execution ran {time}. Something seems wrong." : "Der letzte Job lief {time}. Etwas scheint nicht zu stimmen.", "Last job ran {relativeTime}." : "Der letzte Job lief {relativeTime}.", "Background job did not run yet!" : "Hintergrund-Job wurde bislang nicht ausgeführt!", @@ -868,7 +868,7 @@ "Save" : "Speichern", "Test and verify email settings" : "Testen und überprüfen der E-Mail-Einstellungen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um dir dabei zu helfen, werden einige automatische Prüfungen durchgeführt. Weitere Informationen kannst du der verlinkten Dokumentation entnehmen.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Leistung deiner Instanz ist es von großer Bedeutung, dass alles richtig konfiguriert ist. Um dich dabei zu unterstützen, werden einige automatische Prüfungen durchgeführt. Weitere Informationen findest du in der verlinkten Dokumentation.", "All checks passed." : "Alle Überprüfungen bestanden.", "There are some errors regarding your setup." : "Es gibt einige Fehler in der Systemkonfiguration.", "There are some warnings regarding your setup." : "Es gibt einige Warnungen in der Systemkonfiguration.", diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index 5388ff52529..002bd98e591 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -122,7 +122,7 @@ OC.L10N.register( "Mobile & desktop" : "Mobil & Desktop", "Email server" : "E-Mail-Server", "Mail Providers" : "E-Mail-Anbieter", - "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Provider ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Anbieter ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", "Send emails using" : "E-Mails senden mittels", "User's email account" : "E-Mail-Konto des Benutzers", "System email account" : "System-E-Mail-Konto", @@ -371,14 +371,14 @@ OC.L10N.register( "Allow users to set custom share link tokens" : "Benutzern erlauben, benutzerdefinierte Freigabelink-Token festzulegen", "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Freigaben mit benutzerdefinierten Token sind auch noch nach der Deaktivierung dieser Einstellung zugänglich", "Shares with guessable tokens may be accessed easily" : "Auf Freigaben mit erratbaren Token kann u. U. leicht zugegriffen werden", - "Limit sharing based on groups" : "Freigeben basierend auf Gruppen beschränken", - "Allow sharing for everyone (default)" : "Teilen für jedermann erlauben (Standard)", - "Exclude some groups from sharing" : "Einige Gruppen vom Teilen ausschließen", - "Limit sharing to some groups" : "Teilen auf einige Gruppen beschränken", - "Groups allowed to share" : "Gruppen, die teilen dürfen", + "Limit sharing based on groups" : "Freigaben nach Gruppen einschränken", + "Allow sharing for everyone (default)" : "Teilen für alle erlauben (Standard)", + "Exclude some groups from sharing" : "Bestimmte Gruppen vom Teilen ausschließen", + "Limit sharing to some groups" : "Teilen für bestimmte Gruppen erlauben", + "Groups allowed to share" : "Für die Linkfreigabe zugelassene Gruppen", "Groups excluded from sharing" : "Von der Linkfreigabe ausgeschlossene Gruppen", "Not allowed groups will still be able to receive shares, but not to initiate them." : "Nicht zugelassene Gruppen können zwar weiterhin Freigaben empfangen, aber nicht erstellen.", - "Set default expiration date for internal shares" : "Legen Sie das Standardablaufdatum für interne Freigaben fest", + "Set default expiration date for internal shares" : "Standardablaufdatum für interne Freigaben festlegen", "Enforce expiration date" : "Ablaufdatum erzwingen", "Default expiration time of new shares in days" : "Standardablaufzeit neuer Freigaben in Tagen", "Expire shares after x days" : "Freigaben laufen nach x Tagen ab", @@ -393,7 +393,7 @@ OC.L10N.register( "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Restrict account name autocompletion and system address book access to users within the same groups" : "Die automatische Vervollständigung von Kontonamen und den Zugriff auf das Systemadressbuch auf Benutzer innerhalb derselben Gruppen beschränken", "Restrict account name autocompletion to users based on phone number integration" : "Die automatische Vervollständigung des Kontonamens auf Benutzer beschränken, die auf der Integration von Telefonnummern basieren.", - "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der volle Namen oder E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Die automatische Vervollständigung ermöglichen, wenn der vollständige Name oder die E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Haftungsausschluss auf der öffentlichen Upload-Seite anzeigen (Wird nur gezeigt, wenn die Dateiliste nicht angezeigt wird.) ", "Disclaimer text" : "Haftungsausschlusstext", "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", @@ -549,7 +549,7 @@ OC.L10N.register( "The cron.php needs to be executed by the system account \"{user}\"." : "Die cron.php muss von dem Systemkonto \"{user}\" ausgeführt werden.", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "Die PHP-POSIX-Erweiterung ist erforderlich. Weitere Einzelheiten finden Sie in der {linkstart}PHP-Dokumentation{linkend}.", "Unable to update background job mode" : "Hintergrund-Aufgaben-Modus kann nicht aktualisiert werden", - "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrund-Aufgaben richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.", "Last job execution ran {time}. Something seems wrong." : "Die letzte Aufgaben-Ausführung lief {time}. Etwas scheint falsch zu sein.", "Last job ran {relativeTime}." : "Die letzte Aufgabe lief {relativeTime}.", "Background job did not run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", @@ -789,7 +789,7 @@ OC.L10N.register( "Location" : "Ort", "Profile picture" : "Profilbild", "About" : "Über", - "Date of birth" : "Geburtsdatum:", + "Date of birth" : "Geburtsdatum", "Full name" : "Vollständiger Name", "Additional email" : "Zusätzliche E-Mail-Adresse", "Fediverse (e.g. Mastodon)" : "Fediverse (wie z. B. Mastodon)", @@ -870,7 +870,7 @@ OC.L10N.register( "Save" : "Speichern", "Test and verify email settings" : "Testen und Überprüfen der E-Mail-Einstellungen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Geschwindigkeit Ihrer Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie in der verlinkten Dokumentation.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Leistung Ihrer Instanz ist es von großer Bedeutung, dass alles richtig konfiguriert ist. Um Sie dabei zu unterstützen, werden einige automatische Prüfungen durchgeführt. Weitere Informationen finden Sie in der verlinkten Dokumentation.", "All checks passed." : "Alle Überprüfungen bestanden.", "There are some errors regarding your setup." : "Es gibt einige Fehler in Ihrer Systemkonfiguration.", "There are some warnings regarding your setup." : "Es gibt einige Warnungen zu Ihrer Systemkonfiguration.", diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index 0f35dc26f55..4d040cf5a19 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -120,7 +120,7 @@ "Mobile & desktop" : "Mobil & Desktop", "Email server" : "E-Mail-Server", "Mail Providers" : "E-Mail-Anbieter", - "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Provider ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Der E-Mail-Anbieter ermöglicht das Senden von E-Mails direkt über das persönliche E-Mail-Konto des Benutzers. Derzeit ist diese Funktion auf Kalendereinladungen beschränkt. Es erfordert Nextcloud Mail 4.1 und ein E-Mail-Konto in Nextcloud Mail, das mit der E-Mail-Adresse des Benutzers in Nextcloud übereinstimmt.", "Send emails using" : "E-Mails senden mittels", "User's email account" : "E-Mail-Konto des Benutzers", "System email account" : "System-E-Mail-Konto", @@ -369,14 +369,14 @@ "Allow users to set custom share link tokens" : "Benutzern erlauben, benutzerdefinierte Freigabelink-Token festzulegen", "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Freigaben mit benutzerdefinierten Token sind auch noch nach der Deaktivierung dieser Einstellung zugänglich", "Shares with guessable tokens may be accessed easily" : "Auf Freigaben mit erratbaren Token kann u. U. leicht zugegriffen werden", - "Limit sharing based on groups" : "Freigeben basierend auf Gruppen beschränken", - "Allow sharing for everyone (default)" : "Teilen für jedermann erlauben (Standard)", - "Exclude some groups from sharing" : "Einige Gruppen vom Teilen ausschließen", - "Limit sharing to some groups" : "Teilen auf einige Gruppen beschränken", - "Groups allowed to share" : "Gruppen, die teilen dürfen", + "Limit sharing based on groups" : "Freigaben nach Gruppen einschränken", + "Allow sharing for everyone (default)" : "Teilen für alle erlauben (Standard)", + "Exclude some groups from sharing" : "Bestimmte Gruppen vom Teilen ausschließen", + "Limit sharing to some groups" : "Teilen für bestimmte Gruppen erlauben", + "Groups allowed to share" : "Für die Linkfreigabe zugelassene Gruppen", "Groups excluded from sharing" : "Von der Linkfreigabe ausgeschlossene Gruppen", "Not allowed groups will still be able to receive shares, but not to initiate them." : "Nicht zugelassene Gruppen können zwar weiterhin Freigaben empfangen, aber nicht erstellen.", - "Set default expiration date for internal shares" : "Legen Sie das Standardablaufdatum für interne Freigaben fest", + "Set default expiration date for internal shares" : "Standardablaufdatum für interne Freigaben festlegen", "Enforce expiration date" : "Ablaufdatum erzwingen", "Default expiration time of new shares in days" : "Standardablaufzeit neuer Freigaben in Tagen", "Expire shares after x days" : "Freigaben laufen nach x Tagen ab", @@ -391,7 +391,7 @@ "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Restrict account name autocompletion and system address book access to users within the same groups" : "Die automatische Vervollständigung von Kontonamen und den Zugriff auf das Systemadressbuch auf Benutzer innerhalb derselben Gruppen beschränken", "Restrict account name autocompletion to users based on phone number integration" : "Die automatische Vervollständigung des Kontonamens auf Benutzer beschränken, die auf der Integration von Telefonnummern basieren.", - "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der volle Namen oder E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Die automatische Vervollständigung ermöglichen, wenn der vollständige Name oder die E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Haftungsausschluss auf der öffentlichen Upload-Seite anzeigen (Wird nur gezeigt, wenn die Dateiliste nicht angezeigt wird.) ", "Disclaimer text" : "Haftungsausschlusstext", "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", @@ -547,7 +547,7 @@ "The cron.php needs to be executed by the system account \"{user}\"." : "Die cron.php muss von dem Systemkonto \"{user}\" ausgeführt werden.", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "Die PHP-POSIX-Erweiterung ist erforderlich. Weitere Einzelheiten finden Sie in der {linkstart}PHP-Dokumentation{linkend}.", "Unable to update background job mode" : "Hintergrund-Aufgaben-Modus kann nicht aktualisiert werden", - "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrund-Aufgaben richtig zu konfigurieren. Cron ist die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.", "Last job execution ran {time}. Something seems wrong." : "Die letzte Aufgaben-Ausführung lief {time}. Etwas scheint falsch zu sein.", "Last job ran {relativeTime}." : "Die letzte Aufgabe lief {relativeTime}.", "Background job did not run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", @@ -787,7 +787,7 @@ "Location" : "Ort", "Profile picture" : "Profilbild", "About" : "Über", - "Date of birth" : "Geburtsdatum:", + "Date of birth" : "Geburtsdatum", "Full name" : "Vollständiger Name", "Additional email" : "Zusätzliche E-Mail-Adresse", "Fediverse (e.g. Mastodon)" : "Fediverse (wie z. B. Mastodon)", @@ -868,7 +868,7 @@ "Save" : "Speichern", "Test and verify email settings" : "Testen und Überprüfen der E-Mail-Einstellungen", "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Geschwindigkeit Ihrer Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie in der verlinkten Dokumentation.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Leistung Ihrer Instanz ist es von großer Bedeutung, dass alles richtig konfiguriert ist. Um Sie dabei zu unterstützen, werden einige automatische Prüfungen durchgeführt. Weitere Informationen finden Sie in der verlinkten Dokumentation.", "All checks passed." : "Alle Überprüfungen bestanden.", "There are some errors regarding your setup." : "Es gibt einige Fehler in Ihrer Systemkonfiguration.", "There are some warnings regarding your setup." : "Es gibt einige Warnungen zu Ihrer Systemkonfiguration.", diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index 38ccba9634c..56e7508f399 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -223,7 +223,7 @@ OC.L10N.register( "MySQL row format" : "MySQL format row ", "You are not using MySQL" : "Vous n'utilisez pas MySQL", "None of your tables use ROW_FORMAT=Compressed" : "Aucune de vos tables n'utilise ROW_FORMAT=Compressed", - "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "Format de ligne incorrect trouvé dans votre base de donnéées. ROW_FORMAT=Dynamic offre les meilleures performances de base de données pour Nextcloud. Veuillez modifier le format de ligne dans la liste: %s", + "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "Format de ligne incorrect trouvé dans votre base de données. ROW_FORMAT=Dynamic offre les meilleures performances de base de données pour Nextcloud. Veuillez modifier le format de ligne dans la liste: %s", "MySQL Unicode support" : "Compatibilité Unicode MySQL", "MySQL is used as database and does support 4-byte characters" : "MySQL est utilisé comme base de données et n'est pas compatible avec les caractères sur 4 octets", "MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL." : "MySQL est utilisé comme base de données et n'est pas compatible avec les caractères sur 4 octets. Pour être capable de gérer les caractères sur 4 octets (comme les émojis) sans problème, par exemple, dans les noms de fichiers ou les commentaires, il est recommandé d'activer la compatibilité 4 octets dans MySQL.", diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index 5b5d67102f7..2b5a1e5bd65 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -221,7 +221,7 @@ "MySQL row format" : "MySQL format row ", "You are not using MySQL" : "Vous n'utilisez pas MySQL", "None of your tables use ROW_FORMAT=Compressed" : "Aucune de vos tables n'utilise ROW_FORMAT=Compressed", - "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "Format de ligne incorrect trouvé dans votre base de donnéées. ROW_FORMAT=Dynamic offre les meilleures performances de base de données pour Nextcloud. Veuillez modifier le format de ligne dans la liste: %s", + "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "Format de ligne incorrect trouvé dans votre base de données. ROW_FORMAT=Dynamic offre les meilleures performances de base de données pour Nextcloud. Veuillez modifier le format de ligne dans la liste: %s", "MySQL Unicode support" : "Compatibilité Unicode MySQL", "MySQL is used as database and does support 4-byte characters" : "MySQL est utilisé comme base de données et n'est pas compatible avec les caractères sur 4 octets", "MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL." : "MySQL est utilisé comme base de données et n'est pas compatible avec les caractères sur 4 octets. Pour être capable de gérer les caractères sur 4 octets (comme les émojis) sans problème, par exemple, dans les noms de fichiers ou les commentaires, il est recommandé d'activer la compatibilité 4 octets dans MySQL.", diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js index 5fd40d06340..95f012f9599 100644 --- a/apps/settings/l10n/it.js +++ b/apps/settings/l10n/it.js @@ -256,6 +256,7 @@ OC.L10N.register( "OPcache is not working as it should, opcache_get_status() returns false, please check configuration." : "OPcache non funziona come dovrebbe, opcache_get_status() restituisce false, controlla la configurazione.", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply \"opcache.max_accelerated_files\" to your PHP configuration with a value higher than \"%s\"." : "Il numero massimo di chiavi OPcache è stato quasi superato. Per garantire che tutti gli script possano essere mantenuti nella cache, si consiglia di applicare \"opcache.max_accelerated_files\" alla configurazione PHP con un valore superiore a \"%s\".", "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply \"opcache.memory_consumption\" to your PHP configuration with a value higher than \"%s\"." : "Il buffer OPcache è quasi pieno. Per garantire che tutti gli script possano essere conservati nella cache, si consiglia di applicare \"opcache.memory_consumption\" alla configurazione PHP con un valore superiore a \"%s\".", + "The PHP OPcache module is not properly configured. %s." : "Il modulo PHP OPcache non è correttamente configurato. %s.", "Correctly configured" : "Configurato correttamente", "PHP version" : "Versione PHP", "You are currently running PHP %s." : "Attualmente stai usando PHP %s.", @@ -304,7 +305,16 @@ OC.L10N.register( "Enforce password protection" : "Imponi la protezione con password", "Exclude groups from password requirements" : "Escludi gruppi dai requisiti della password", "Exclude groups from creating link shares" : "Escludi gruppi dalla creazione dei collegamenti di condivisione", + "Allow users to set custom share link tokens" : "Consenti agli utenti di impostare token di collegamento personalizzati", + "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Le condivisioni con token personalizzati continueranno a essere accessibili dopo aver disabilitato questa impostazione", + "Shares with guessable tokens may be accessed easily" : "Le condivisioni con token indovinabili sono facilmente accessibili", + "Limit sharing based on groups" : "Limita la condivisione in base ai gruppi", + "Exclude some groups from sharing" : "Escludi alcuni gruppi dalla condivisione", + "Limit sharing to some groups" : "Limita la condivisione ad alcuni gruppi", + "Groups allowed to share" : "Gruppi autorizzati a condividere", "Groups excluded from sharing" : "Gruppi esclusi dalla condivisione", + "Not allowed groups will still be able to receive shares, but not to initiate them." : "I gruppi non autorizzati potranno comunque ricevere condivisioni, ma non avviarle.", + "Set default expiration date for internal shares" : "Imposta la data di scadenza predefinita per le condivisioni interne", "Enforce expiration date" : "Forza la data di scadenza", "Default expiration time of new shares in days" : "Scadenza predefinita delle nuove condivisioni in giorni", "Expire shares after x days" : "Scadenza delle condivisioni dopo x giorni", @@ -315,6 +325,7 @@ OC.L10N.register( "Set default expiration date for shares via link or mail" : "Imposta la data di scadenza predefinita per le condivisioni tramite link o posta", "Default expiration time of shares in days" : "Scadenza predefinita delle condivisioni in giorni", "Privacy settings for sharing" : "Impostazioni sulla privacy per la condivisione", + "Allow account name autocompletion in share dialog and allow access to the system address book" : "Consenti il completamento automatico del nome dell'account nella finestra di dialogo di condivisione e consenti l'accesso alla rubrica di sistema", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se completamento di \"stesso gruppo\" e \"integrazione numero di telefono\" sono attivi, una corrispondenza in uno dei due è sufficiente per mostrare l'utente.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento automatico quando inserisci il nome completo o l'indirizzo email (ignorando la corrispondenza della rubrica mancante e l'appartenenza allo stesso gruppo)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mostra il testo della liberatoria sulla pagina di caricamento del collegamento pubblico (visualizzato solo quando l'elenco dei file è nascosto)", @@ -348,6 +359,7 @@ OC.L10N.register( "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", "_%n app has an update available_::_%n apps have an update available_" : ["%n applicazione ha un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile"], "_Update_::_Update all_" : ["Aggiorna","Aggiorna","Aggiorna tutto"], + "Failed to load groups" : "Impossibile caricare i gruppi", "Failed to create group" : "Creazione gruppo fallita", "Create group" : "Crea gruppo", "Group name" : "Nome del gruppo", @@ -423,6 +435,7 @@ OC.L10N.register( "Password" : "Password", "Show QR code for mobile apps" : "Mostra il codice QR per le applicazioni mobili", "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.", + "The cron.php needs to be executed by the system account \"{user}\"." : "Il cron.php deve essere eseguito dall'account di sistema \"{user}\".", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "È necessaria l'estensione POSIX di PHP. Vedi la {linkstart}documentazione di PHP{linkend} per maggiori dettagli.", "Unable to update background job mode" : "Impossibile aggiornare la modalità delle operazioni in background", "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Per un buon funzionamento del server, è importante configurare le operazioni in background correttamente. \"Cron\" è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.", @@ -523,12 +536,14 @@ OC.L10N.register( "Password change is disabled because the master key is disabled" : "La modifica della password è disabilitata poiché la chiave principale è disabilitata", "Loading accounts …" : "Caricamento account in corso...", "Manager" : "Responsabile", + "Failed to search groups" : "Impossibile cercare i gruppi", "New account" : "Nuovo account", "Display name" : "Nome visualizzato", "Either password or email is required" : "La password o l'email è necessaria", "Password (required)" : "Password (richiesta)", "Email (required)" : "Email (richiesta)", "Email" : "Posta elettronica", + "Member of the following groups" : "Membro dei seguenti gruppi", "Quota" : "Quote", "Language" : "Lingua", "Set default language" : "Imposta lingua predefinita", diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json index 7bc04158924..16d6b817633 100644 --- a/apps/settings/l10n/it.json +++ b/apps/settings/l10n/it.json @@ -254,6 +254,7 @@ "OPcache is not working as it should, opcache_get_status() returns false, please check configuration." : "OPcache non funziona come dovrebbe, opcache_get_status() restituisce false, controlla la configurazione.", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply \"opcache.max_accelerated_files\" to your PHP configuration with a value higher than \"%s\"." : "Il numero massimo di chiavi OPcache è stato quasi superato. Per garantire che tutti gli script possano essere mantenuti nella cache, si consiglia di applicare \"opcache.max_accelerated_files\" alla configurazione PHP con un valore superiore a \"%s\".", "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply \"opcache.memory_consumption\" to your PHP configuration with a value higher than \"%s\"." : "Il buffer OPcache è quasi pieno. Per garantire che tutti gli script possano essere conservati nella cache, si consiglia di applicare \"opcache.memory_consumption\" alla configurazione PHP con un valore superiore a \"%s\".", + "The PHP OPcache module is not properly configured. %s." : "Il modulo PHP OPcache non è correttamente configurato. %s.", "Correctly configured" : "Configurato correttamente", "PHP version" : "Versione PHP", "You are currently running PHP %s." : "Attualmente stai usando PHP %s.", @@ -302,7 +303,16 @@ "Enforce password protection" : "Imponi la protezione con password", "Exclude groups from password requirements" : "Escludi gruppi dai requisiti della password", "Exclude groups from creating link shares" : "Escludi gruppi dalla creazione dei collegamenti di condivisione", + "Allow users to set custom share link tokens" : "Consenti agli utenti di impostare token di collegamento personalizzati", + "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Le condivisioni con token personalizzati continueranno a essere accessibili dopo aver disabilitato questa impostazione", + "Shares with guessable tokens may be accessed easily" : "Le condivisioni con token indovinabili sono facilmente accessibili", + "Limit sharing based on groups" : "Limita la condivisione in base ai gruppi", + "Exclude some groups from sharing" : "Escludi alcuni gruppi dalla condivisione", + "Limit sharing to some groups" : "Limita la condivisione ad alcuni gruppi", + "Groups allowed to share" : "Gruppi autorizzati a condividere", "Groups excluded from sharing" : "Gruppi esclusi dalla condivisione", + "Not allowed groups will still be able to receive shares, but not to initiate them." : "I gruppi non autorizzati potranno comunque ricevere condivisioni, ma non avviarle.", + "Set default expiration date for internal shares" : "Imposta la data di scadenza predefinita per le condivisioni interne", "Enforce expiration date" : "Forza la data di scadenza", "Default expiration time of new shares in days" : "Scadenza predefinita delle nuove condivisioni in giorni", "Expire shares after x days" : "Scadenza delle condivisioni dopo x giorni", @@ -313,6 +323,7 @@ "Set default expiration date for shares via link or mail" : "Imposta la data di scadenza predefinita per le condivisioni tramite link o posta", "Default expiration time of shares in days" : "Scadenza predefinita delle condivisioni in giorni", "Privacy settings for sharing" : "Impostazioni sulla privacy per la condivisione", + "Allow account name autocompletion in share dialog and allow access to the system address book" : "Consenti il completamento automatico del nome dell'account nella finestra di dialogo di condivisione e consenti l'accesso alla rubrica di sistema", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se completamento di \"stesso gruppo\" e \"integrazione numero di telefono\" sono attivi, una corrispondenza in uno dei due è sufficiente per mostrare l'utente.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento automatico quando inserisci il nome completo o l'indirizzo email (ignorando la corrispondenza della rubrica mancante e l'appartenenza allo stesso gruppo)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mostra il testo della liberatoria sulla pagina di caricamento del collegamento pubblico (visualizzato solo quando l'elenco dei file è nascosto)", @@ -346,6 +357,7 @@ "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", "_%n app has an update available_::_%n apps have an update available_" : ["%n applicazione ha un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile"], "_Update_::_Update all_" : ["Aggiorna","Aggiorna","Aggiorna tutto"], + "Failed to load groups" : "Impossibile caricare i gruppi", "Failed to create group" : "Creazione gruppo fallita", "Create group" : "Crea gruppo", "Group name" : "Nome del gruppo", @@ -421,6 +433,7 @@ "Password" : "Password", "Show QR code for mobile apps" : "Mostra il codice QR per le applicazioni mobili", "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.", + "The cron.php needs to be executed by the system account \"{user}\"." : "Il cron.php deve essere eseguito dall'account di sistema \"{user}\".", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "È necessaria l'estensione POSIX di PHP. Vedi la {linkstart}documentazione di PHP{linkend} per maggiori dettagli.", "Unable to update background job mode" : "Impossibile aggiornare la modalità delle operazioni in background", "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Per un buon funzionamento del server, è importante configurare le operazioni in background correttamente. \"Cron\" è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.", @@ -521,12 +534,14 @@ "Password change is disabled because the master key is disabled" : "La modifica della password è disabilitata poiché la chiave principale è disabilitata", "Loading accounts …" : "Caricamento account in corso...", "Manager" : "Responsabile", + "Failed to search groups" : "Impossibile cercare i gruppi", "New account" : "Nuovo account", "Display name" : "Nome visualizzato", "Either password or email is required" : "La password o l'email è necessaria", "Password (required)" : "Password (richiesta)", "Email (required)" : "Email (richiesta)", "Email" : "Posta elettronica", + "Member of the following groups" : "Membro dei seguenti gruppi", "Quota" : "Quote", "Language" : "Lingua", "Set default language" : "Imposta lingua predefinita", diff --git a/apps/settings/tests/Activity/SecurityFilterTest.php b/apps/settings/tests/Activity/SecurityFilterTest.php index f3f94df3d21..22ef03816d3 100644 --- a/apps/settings/tests/Activity/SecurityFilterTest.php +++ b/apps/settings/tests/Activity/SecurityFilterTest.php @@ -12,15 +12,9 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SecurityFilterTest extends TestCase { - - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - - /** @var IL10N|MockObject */ - private $l10n; - - /** @var SecurityFilter */ - private $filter; + private IURLGenerator&MockObject $urlGenerator; + private IL10N&MockObject $l10n; + private SecurityFilter $filter; protected function setUp(): void { parent::setUp(); diff --git a/apps/settings/tests/Activity/SecurityProviderTest.php b/apps/settings/tests/Activity/SecurityProviderTest.php index 35526995a67..1687f116871 100644 --- a/apps/settings/tests/Activity/SecurityProviderTest.php +++ b/apps/settings/tests/Activity/SecurityProviderTest.php @@ -16,27 +16,19 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SecurityProviderTest extends TestCase { - - /** @var IFactory|MockObject */ - private $l10n; - - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - - /** @var IManager|MockObject */ - private $activityManager; - - /** @var SecurityProvider */ - private $provider; + private IFactory&MockObject $l10nFactory; + private IURLGenerator&MockObject $urlGenerator; + private IManager&MockObject $activityManager; + private SecurityProvider $provider; protected function setUp(): void { parent::setUp(); - $this->l10n = $this->createMock(IFactory::class); + $this->l10nFactory = $this->createMock(IFactory::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->activityManager = $this->createMock(IManager::class); - $this->provider = new SecurityProvider($this->l10n, $this->urlGenerator, $this->activityManager); + $this->provider = new SecurityProvider($this->l10nFactory, $this->urlGenerator, $this->activityManager); } public function testParseUnrelated(): void { @@ -50,7 +42,7 @@ class SecurityProviderTest extends TestCase { $this->provider->parse($lang, $event); } - public function subjectData() { + public static function subjectData(): array { return [ ['twofactor_success'], ['twofactor_failed'], @@ -60,7 +52,7 @@ class SecurityProviderTest extends TestCase { /** * @dataProvider subjectData */ - public function testParse($subject): void { + public function testParse(string $subject): void { $lang = 'ru'; $event = $this->createMock(IEvent::class); $l = $this->createMock(IL10N::class); @@ -68,7 +60,7 @@ class SecurityProviderTest extends TestCase { $event->expects($this->once()) ->method('getType') ->willReturn('security'); - $this->l10n->expects($this->once()) + $this->l10nFactory->expects($this->once()) ->method('get') ->with('settings', $lang) ->willReturn($l); @@ -104,7 +96,7 @@ class SecurityProviderTest extends TestCase { $event->expects($this->once()) ->method('getType') ->willReturn('security'); - $this->l10n->expects($this->once()) + $this->l10nFactory->expects($this->once()) ->method('get') ->with('settings', $lang) ->willReturn($l); diff --git a/apps/settings/tests/Activity/SecuritySettingTest.php b/apps/settings/tests/Activity/SecuritySettingTest.php index 1b2b0e3361c..c109a9f7fdf 100644 --- a/apps/settings/tests/Activity/SecuritySettingTest.php +++ b/apps/settings/tests/Activity/SecuritySettingTest.php @@ -12,8 +12,8 @@ use Test\TestCase; class SecuritySettingTest extends TestCase { private $l10n; - /** @var SecuritySetting */ - private $setting; + /** @var */ + private SecuritySetting $setting; protected function setUp(): void { parent::setUp(); diff --git a/apps/settings/tests/AppInfo/ApplicationTest.php b/apps/settings/tests/AppInfo/ApplicationTest.php index 677efdc64bf..85be8c56178 100644 --- a/apps/settings/tests/AppInfo/ApplicationTest.php +++ b/apps/settings/tests/AppInfo/ApplicationTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -26,11 +28,8 @@ use Test\TestCase; * @group DB */ class ApplicationTest extends TestCase { - /** @var Application */ - protected $app; - - /** @var IAppContainer */ - protected $container; + protected Application $app; + protected IAppContainer $container; protected function setUp(): void { parent::setUp(); @@ -43,7 +42,7 @@ class ApplicationTest extends TestCase { $this->assertEquals('settings', $this->container->getAppName()); } - public function dataContainerQuery() { + public static function dataContainerQuery(): array { return [ [AdminSettingsController::class, Controller::class], [AppSettingsController::class, Controller::class], @@ -59,10 +58,8 @@ class ApplicationTest extends TestCase { /** * @dataProvider dataContainerQuery - * @param string $service - * @param string $expected */ - public function testContainerQuery($service, $expected): void { + public function testContainerQuery(string $service, string $expected): void { $this->assertTrue($this->container->query($service) instanceof $expected); } } diff --git a/apps/settings/tests/Controller/AppSettingsControllerTest.php b/apps/settings/tests/Controller/AppSettingsControllerTest.php index f72bd45a3d2..5194ca2cc33 100644 --- a/apps/settings/tests/Controller/AppSettingsControllerTest.php +++ b/apps/settings/tests/Controller/AppSettingsControllerTest.php @@ -37,39 +37,23 @@ use Test\TestCase; * @group DB */ class AppSettingsControllerTest extends TestCase { - /** @var AppSettingsController */ - private $appSettingsController; - /** @var IRequest|MockObject */ - private $request; - /** @var IL10N|MockObject */ - private $l10n; - /** @var IConfig|MockObject */ - private $config; - /** @var INavigationManager|MockObject */ - private $navigationManager; + private IRequest&MockObject $request; + private IL10N&MockObject $l10n; + private IConfig&MockObject $config; + private INavigationManager&MockObject $navigationManager; private AppManager&MockObject $appManager; - /** @var CategoryFetcher|MockObject */ - private $categoryFetcher; - /** @var AppFetcher|MockObject */ - private $appFetcher; - /** @var IFactory|MockObject */ - private $l10nFactory; - /** @var BundleFetcher|MockObject */ - private $bundleFetcher; - /** @var Installer|MockObject */ - private $installer; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var LoggerInterface|MockObject */ - private $logger; - /** @var IInitialState|MockObject */ - private $initialState; - /** @var IAppDataFactory|MockObject */ - private $appDataFactory; - /** @var AppDiscoverFetcher|MockObject */ - private $discoverFetcher; - /** @var IClientService|MockObject */ - private $clientService; + private CategoryFetcher&MockObject $categoryFetcher; + private AppFetcher&MockObject $appFetcher; + private IFactory&MockObject $l10nFactory; + private BundleFetcher&MockObject $bundleFetcher; + private Installer&MockObject $installer; + private IURLGenerator&MockObject $urlGenerator; + private LoggerInterface&MockObject $logger; + private IInitialState&MockObject $initialState; + private IAppDataFactory&MockObject $appDataFactory; + private AppDiscoverFetcher&MockObject $discoverFetcher; + private IClientService&MockObject $clientService; + private AppSettingsController $appSettingsController; protected function setUp(): void { parent::setUp(); diff --git a/apps/settings/tests/Controller/AuthSettingsControllerTest.php b/apps/settings/tests/Controller/AuthSettingsControllerTest.php index 13213992d94..bb6068ffe94 100644 --- a/apps/settings/tests/Controller/AuthSettingsControllerTest.php +++ b/apps/settings/tests/Controller/AuthSettingsControllerTest.php @@ -28,24 +28,15 @@ use Psr\Log\LoggerInterface; use Test\TestCase; class AuthSettingsControllerTest extends TestCase { - - /** @var AuthSettingsController */ - private $controller; - /** @var IRequest|MockObject */ - private $request; - /** @var IProvider|MockObject */ - private $tokenProvider; - /** @var ISession|MockObject */ - private $session; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var ISecureRandom|MockObject */ - private $secureRandom; - /** @var IManager|MockObject */ - private $activityManager; - /** @var RemoteWipe|MockObject */ - private $remoteWipe; - private $uid = 'jane'; + private IRequest&MockObject $request; + private IProvider&MockObject $tokenProvider; + private ISession&MockObject $session; + private IUserSession&MockObject $userSession; + private ISecureRandom&MockObject $secureRandom; + private IManager&MockObject $activityManager; + private RemoteWipe&MockObject $remoteWipe; + private string $uid = 'jane'; + private AuthSettingsController $controller; protected function setUp(): void { parent::setUp(); @@ -57,7 +48,7 @@ class AuthSettingsControllerTest extends TestCase { $this->secureRandom = $this->createMock(ISecureRandom::class); $this->activityManager = $this->createMock(IManager::class); $this->remoteWipe = $this->createMock(RemoteWipe::class); - /** @var LoggerInterface|MockObject $logger */ + /** @var LoggerInterface&MockObject $logger */ $logger = $this->createMock(LoggerInterface::class); $this->controller = new AuthSettingsController( @@ -214,7 +205,7 @@ class AuthSettingsControllerTest extends TestCase { $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); } - public function dataRenameToken(): array { + public static function dataRenameToken(): array { return [ 'App password => Other token name' => ['App password', 'Other token name'], 'Other token name => App password' => ['Other token name', 'App password'], @@ -223,9 +214,6 @@ class AuthSettingsControllerTest extends TestCase { /** * @dataProvider dataRenameToken - * - * @param string $name - * @param string $newName */ public function testUpdateRename(string $name, string $newName): void { $tokenId = 42; @@ -257,7 +245,7 @@ class AuthSettingsControllerTest extends TestCase { $this->assertSame([], $this->controller->update($tokenId, [IToken::SCOPE_FILESYSTEM => true], $newName)); } - public function dataUpdateFilesystemScope(): array { + public static function dataUpdateFilesystemScope(): array { return [ 'Grant filesystem access' => [false, true], 'Revoke filesystem access' => [true, false], @@ -266,9 +254,6 @@ class AuthSettingsControllerTest extends TestCase { /** * @dataProvider dataUpdateFilesystemScope - * - * @param bool $filesystem - * @param bool $newFilesystem */ public function testUpdateFilesystemScope(bool $filesystem, bool $newFilesystem): void { $tokenId = 42; diff --git a/apps/settings/tests/Controller/CheckSetupControllerTest.php b/apps/settings/tests/Controller/CheckSetupControllerTest.php index 27f7aa1b696..a8e89260573 100644 --- a/apps/settings/tests/Controller/CheckSetupControllerTest.php +++ b/apps/settings/tests/Controller/CheckSetupControllerTest.php @@ -29,59 +29,40 @@ use Test\TestCase; * @package Tests\Settings\Controller */ class CheckSetupControllerTest extends TestCase { - /** @var CheckSetupController | \PHPUnit\Framework\MockObject\MockObject */ - private $checkSetupController; - /** @var IRequest | \PHPUnit\Framework\MockObject\MockObject */ - private $request; - /** @var IConfig | \PHPUnit\Framework\MockObject\MockObject */ - private $config; - /** @var IURLGenerator | \PHPUnit\Framework\MockObject\MockObject */ - private $urlGenerator; - /** @var IL10N | \PHPUnit\Framework\MockObject\MockObject */ - private $l10n; - /** @var LoggerInterface */ - private $logger; - /** @var Checker|\PHPUnit\Framework\MockObject\MockObject */ - private $checker; - /** @var ISetupCheckManager|MockObject */ - private $setupCheckManager; + private IRequest&MockObject $request; + private IConfig&MockObject $config; + private IURLGenerator&MockObject $urlGenerator; + private IL10N&MockObject $l10n; + private LoggerInterface&MockObject $logger; + private Checker&MockObject $checker; + private ISetupCheckManager&MockObject $setupCheckManager; + private CheckSetupController $checkSetupController; protected function setUp(): void { parent::setUp(); - $this->request = $this->getMockBuilder(IRequest::class) - ->disableOriginalConstructor()->getMock(); - $this->config = $this->getMockBuilder(IConfig::class) - ->disableOriginalConstructor()->getMock(); - $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class) - ->disableOriginalConstructor()->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->request = $this->createMock(IRequest::class); + $this->config = $this->createMock(IConfig::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { return vsprintf($message, $replace); }); - $this->checker = $this->getMockBuilder('\OC\IntegrityCheck\Checker') - ->disableOriginalConstructor()->getMock(); - $this->logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); + $this->checker = $this->createMock(Checker::class); + $this->logger = $this->createMock(LoggerInterface::class); $this->setupCheckManager = $this->createMock(ISetupCheckManager::class); - $this->checkSetupController = $this->getMockBuilder(CheckSetupController::class) - ->setConstructorArgs([ - 'settings', - $this->request, - $this->config, - $this->urlGenerator, - $this->l10n, - $this->checker, - $this->logger, - $this->setupCheckManager, - ]) - ->setMethods([ - 'getCurlVersion', - 'isPhpOutdated', - 'isPHPMailerUsed', - ])->getMock(); + $this->checkSetupController = new CheckSetupController( + 'settings', + $this->request, + $this->config, + $this->urlGenerator, + $this->l10n, + $this->checker, + $this->logger, + $this->setupCheckManager, + ); } public function testCheck(): void { diff --git a/apps/settings/tests/Controller/DelegationControllerTest.php b/apps/settings/tests/Controller/DelegationControllerTest.php index 5994ddf298d..c4cbe67466b 100644 --- a/apps/settings/tests/Controller/DelegationControllerTest.php +++ b/apps/settings/tests/Controller/DelegationControllerTest.php @@ -10,23 +10,18 @@ use OC\Settings\AuthorizedGroup; use OCA\Settings\Controller\AuthorizedGroupController; use OCA\Settings\Service\AuthorizedGroupService; use OCP\IRequest; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class DelegationControllerTest extends TestCase { - - /** @var AuthorizedGroupService */ - private $service; - - /** @var IRequest */ - private $request; - - /** @var AuthorizedGroupController */ - private $controller; + private AuthorizedGroupService&MockObject $service; + private IRequest&MockObject $request; + private AuthorizedGroupController $controller; protected function setUp(): void { parent::setUp(); - $this->request = $this->getMockBuilder(IRequest::class)->getMock(); - $this->service = $this->getMockBuilder(AuthorizedGroupService::class)->disableOriginalConstructor()->getMock(); + $this->request = $this->createMock(IRequest::class); + $this->service = $this->createMock(AuthorizedGroupService::class); $this->controller = new AuthorizedGroupController( 'settings', $this->request, $this->service ); @@ -41,7 +36,7 @@ class DelegationControllerTest extends TestCase { $this->service->expects($this->once()) ->method('findExistingGroupsForClass') ->with('MySecretSetting') - ->will($this->returnValue($oldGroups)); + ->willReturn($oldGroups); $this->service->expects($this->once()) ->method('delete') @@ -50,7 +45,7 @@ class DelegationControllerTest extends TestCase { $this->service->expects($this->once()) ->method('create') ->with('world', 'MySecretSetting') - ->will($this->returnValue(AuthorizedGroup::fromParams(['groupId' => 'world', 'class' => $setting]))); + ->willReturn(AuthorizedGroup::fromParams(['groupId' => 'world', 'class' => $setting])); $result = $this->controller->saveSettings([['gid' => 'hello'], ['gid' => 'world']], 'MySecretSetting'); diff --git a/apps/settings/tests/Controller/MailSettingsControllerTest.php b/apps/settings/tests/Controller/MailSettingsControllerTest.php index 2a0028738dd..dcb1e3efef4 100644 --- a/apps/settings/tests/Controller/MailSettingsControllerTest.php +++ b/apps/settings/tests/Controller/MailSettingsControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -16,25 +18,18 @@ use OCP\IURLGenerator; use OCP\IUserSession; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; +use PHPUnit\Framework\MockObject\MockObject; /** * @package Tests\Settings\Controller */ class MailSettingsControllerTest extends \Test\TestCase { - - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - private $config; - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - private $userSession; - /** @var IMailer|\PHPUnit\Framework\MockObject\MockObject */ - private $mailer; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ - private $l; - /** @var IURLGenerator */ - private $urlGenerator; - - /** @var MailSettingsController */ - private $mailController; + private IConfig&MockObject $config; + private IUserSession&MockObject $userSession; + private IMailer&MockObject $mailer; + private IL10N&MockObject $l; + private IURLGenerator&MockObject $urlGenerator; + private MailSettingsController $mailController; protected function setUp(): void { parent::setUp(); @@ -44,7 +39,7 @@ class MailSettingsControllerTest extends \Test\TestCase { $this->userSession = $this->createMock(IUserSession::class); $this->mailer = $this->createMock(IMailer::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject $request */ + /** @var IRequest&MockObject $request */ $request = $this->createMock(IRequest::class); $this->mailController = new MailSettingsController( 'settings', @@ -54,37 +49,40 @@ class MailSettingsControllerTest extends \Test\TestCase { $this->userSession, $this->urlGenerator, $this->mailer, - 'no-reply@nextcloud.com' ); } public function testSetMailSettings(): void { + $calls = [ + [[ + 'mail_domain' => 'nextcloud.com', + 'mail_from_address' => 'demo@nextcloud.com', + 'mail_smtpmode' => 'smtp', + 'mail_smtpsecure' => 'ssl', + 'mail_smtphost' => 'mx.nextcloud.org', + 'mail_smtpauth' => 1, + 'mail_smtpport' => '25', + 'mail_sendmailmode' => 'smtp', + ]], + [[ + 'mail_domain' => 'nextcloud.com', + 'mail_from_address' => 'demo@nextcloud.com', + 'mail_smtpmode' => 'smtp', + 'mail_smtpsecure' => 'ssl', + 'mail_smtphost' => 'mx.nextcloud.org', + 'mail_smtpauth' => null, + 'mail_smtpport' => '25', + 'mail_smtpname' => null, + 'mail_smtppassword' => null, + 'mail_sendmailmode' => 'smtp', + ]], + ]; $this->config->expects($this->exactly(2)) ->method('setSystemValues') - ->withConsecutive( - [[ - 'mail_domain' => 'nextcloud.com', - 'mail_from_address' => 'demo@nextcloud.com', - 'mail_smtpmode' => 'smtp', - 'mail_smtpsecure' => 'ssl', - 'mail_smtphost' => 'mx.nextcloud.org', - 'mail_smtpauth' => 1, - 'mail_smtpport' => '25', - 'mail_sendmailmode' => 'smtp', - ]], - [[ - 'mail_domain' => 'nextcloud.com', - 'mail_from_address' => 'demo@nextcloud.com', - 'mail_smtpmode' => 'smtp', - 'mail_smtpsecure' => 'ssl', - 'mail_smtphost' => 'mx.nextcloud.org', - 'mail_smtpauth' => null, - 'mail_smtpport' => '25', - 'mail_smtpname' => null, - 'mail_smtppassword' => null, - 'mail_sendmailmode' => 'smtp', - ]] - ); + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); // With authentication $response = $this->mailController->setMailSettings( @@ -93,7 +91,7 @@ class MailSettingsControllerTest extends \Test\TestCase { 'smtp', 'ssl', 'mx.nextcloud.org', - 1, + '1', '25', 'smtp' ); @@ -106,7 +104,7 @@ class MailSettingsControllerTest extends \Test\TestCase { 'smtp', 'ssl', 'mx.nextcloud.org', - 0, + '0', '25', 'smtp' ); diff --git a/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php b/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php index c34b2907dfd..9f8d53d4f9f 100644 --- a/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php +++ b/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -14,15 +16,9 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class TwoFactorSettingsControllerTest extends TestCase { - - /** @var IRequest|MockObject */ - private $request; - - /** @var MandatoryTwoFactor|MockObject */ - private $mandatoryTwoFactor; - - /** @var TwoFactorSettingsController */ - private $controller; + private IRequest&MockObject $request; + private MandatoryTwoFactor&MockObject $mandatoryTwoFactor; + private TwoFactorSettingsController $controller; protected function setUp(): void { parent::setUp(); diff --git a/apps/settings/tests/Controller/UsersControllerTest.php b/apps/settings/tests/Controller/UsersControllerTest.php index 96823e5ceed..d5fe38ad458 100644 --- a/apps/settings/tests/Controller/UsersControllerTest.php +++ b/apps/settings/tests/Controller/UsersControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2014-2015 ownCloud, Inc. @@ -40,38 +42,22 @@ use PHPUnit\Framework\MockObject\MockObject; * @package Tests\Settings\Controller */ class UsersControllerTest extends \Test\TestCase { - /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */ - private $groupManager; - /** @var UserManager|\PHPUnit\Framework\MockObject\MockObject */ - private $userManager; - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - private $userSession; - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - private $config; - /** @var IMailer|\PHPUnit\Framework\MockObject\MockObject */ - private $mailer; - /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */ - private $l10nFactory; - /** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */ - private $appManager; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ - private $l; - /** @var AccountManager|\PHPUnit\Framework\MockObject\MockObject */ - private $accountManager; - /** @var IJobList | \PHPUnit\Framework\MockObject\MockObject */ - private $jobList; - /** @var \OC\Security\IdentityProof\Manager|\PHPUnit\Framework\MockObject\MockObject */ - private $securityManager; - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - private $encryptionManager; - /** @var KnownUserService|\PHPUnit\Framework\MockObject\MockObject */ - private $knownUserService; - /** @var IEncryptionModule|\PHPUnit\Framework\MockObject\MockObject */ - private $encryptionModule; - /** @var IEventDispatcher|\PHPUnit\Framework\MockObject\MockObject */ - private $dispatcher; - /** @var IInitialState|\PHPUnit\Framework\MockObject\MockObject */ - private $initialState; + private IGroupManager&MockObject $groupManager; + private UserManager&MockObject $userManager; + private IUserSession&MockObject $userSession; + private IConfig&MockObject $config; + private IMailer&MockObject $mailer; + private IFactory&MockObject $l10nFactory; + private IAppManager&MockObject $appManager; + private IL10N&MockObject $l; + private AccountManager&MockObject $accountManager; + private IJobList&MockObject $jobList; + private \OC\Security\IdentityProof\Manager&MockObject $securityManager; + private IManager&MockObject $encryptionManager; + private KnownUserService&MockObject $knownUserService; + private IEncryptionModule&MockObject $encryptionModule; + private IEventDispatcher&MockObject $dispatcher; + private IInitialState&MockObject $initialState; protected function setUp(): void { parent::setUp(); @@ -85,7 +71,7 @@ class UsersControllerTest extends \Test\TestCase { $this->l10nFactory = $this->createMock(IFactory::class); $this->appManager = $this->createMock(IAppManager::class); $this->accountManager = $this->createMock(AccountManager::class); - $this->securityManager = $this->getMockBuilder(\OC\Security\IdentityProof\Manager::class)->disableOriginalConstructor()->getMock(); + $this->securityManager = $this->createMock(\OC\Security\IdentityProof\Manager::class); $this->jobList = $this->createMock(IJobList::class); $this->encryptionManager = $this->createMock(IManager::class); $this->knownUserService = $this->createMock(KnownUserService::class); @@ -106,9 +92,9 @@ class UsersControllerTest extends \Test\TestCase { /** * @param bool $isAdmin - * @return UsersController | \PHPUnit\Framework\MockObject\MockObject + * @return UsersController|MockObject */ - protected function getController($isAdmin = false, $mockedMethods = []) { + protected function getController(bool $isAdmin = false, array $mockedMethods = []) { $this->groupManager->expects($this->any()) ->method('isAdmin') ->willReturn($isAdmin); @@ -155,7 +141,9 @@ class UsersControllerTest extends \Test\TestCase { $this->dispatcher, $this->initialState, ] - )->onlyMethods($mockedMethods)->getMock(); + ) + ->onlyMethods($mockedMethods) + ->getMock(); } } @@ -177,7 +165,7 @@ class UsersControllerTest extends \Test\TestCase { return $property; } - protected function getDefaultAccountMock(bool $useDefaultValues = true): MockObject { + protected function getDefaultAccountMock(): MockObject { $propertyMocks = [ IAccountManager::PROPERTY_DISPLAYNAME => $this->buildPropertyMock( IAccountManager::PROPERTY_DISPLAYNAME, @@ -249,12 +237,8 @@ class UsersControllerTest extends \Test\TestCase { /** * @dataProvider dataTestSetUserSettings - * - * @param string $email - * @param bool $validEmail - * @param $expectedStatus */ - public function testSetUserSettings($email, $validEmail, $expectedStatus): void { + public function testSetUserSettings(string $email, bool $validEmail, int $expectedStatus): void { $controller = $this->getController(false, ['saveUserSettings']); $user = $this->createMock(IUser::class); $user->method('getUID')->willReturn('johndoe'); @@ -305,7 +289,7 @@ class UsersControllerTest extends \Test\TestCase { $this->assertSame($expectedStatus, $result->getStatus()); } - public function dataTestSetUserSettings() { + public static function dataTestSetUserSettings(): array { return [ ['', true, Http::STATUS_OK], ['', false, Http::STATUS_OK], @@ -515,18 +499,15 @@ class UsersControllerTest extends \Test\TestCase { /** * @dataProvider dataTestSetUserSettingsSubset - * - * @param string $property - * @param string $propertyValue */ - public function testSetUserSettingsSubset($property, $propertyValue): void { + public function testSetUserSettingsSubset(string $property, string $propertyValue): void { $controller = $this->getController(false, ['saveUserSettings']); $user = $this->createMock(IUser::class); $user->method('getUID')->willReturn('johndoe'); $this->userSession->method('getUser')->willReturn($user); - /** @var IAccount|MockObject $userAccount */ + /** @var IAccount&MockObject $userAccount */ $userAccount = $this->getDefaultAccountMock(); $this->accountManager->expects($this->once()) @@ -554,9 +535,9 @@ class UsersControllerTest extends \Test\TestCase { $pronouns = ($property === 'pronouns') ? $propertyValue : null; $pronounsScope = ($property === 'pronounsScope') ? $propertyValue : null; - /** @var IAccountProperty[]|MockObject[] $expectedProperties */ + /** @var IAccountProperty[]&MockObject[] $expectedProperties */ $expectedProperties = $userAccount->getProperties(); - $isScope = strrpos($property, 'Scope') === strlen($property) - strlen(5); + $isScope = strrpos($property, 'Scope') === strlen($property) - strlen('5'); switch ($property) { case 'avatarScope': $propertyId = IAccountManager::PROPERTY_AVATAR; @@ -636,7 +617,7 @@ class UsersControllerTest extends \Test\TestCase { ); } - public function dataTestSetUserSettingsSubset() { + public static function dataTestSetUserSettingsSubset(): array { return [ ['avatarScope', IAccountManager::SCOPE_PUBLISHED], ['displayName', 'Display name'], @@ -662,15 +643,8 @@ class UsersControllerTest extends \Test\TestCase { /** * @dataProvider dataTestSaveUserSettings - * - * @param array $data - * @param ?string $oldEmailAddress - * @param ?string $oldDisplayName */ - public function testSaveUserSettings($data, - $oldEmailAddress, - $oldDisplayName, - ): void { + public function testSaveUserSettings(array $data, ?string $oldEmailAddress, ?string $oldDisplayName): void { $controller = $this->getController(); $user = $this->createMock(IUser::class); @@ -722,7 +696,7 @@ class UsersControllerTest extends \Test\TestCase { $this->invokePrivate($controller, 'saveUserSettings', [$account]); } - public function dataTestSaveUserSettings() { + public static function dataTestSaveUserSettings(): array { return [ [ [ @@ -833,7 +807,7 @@ class UsersControllerTest extends \Test\TestCase { } - public function dataTestSaveUserSettingsException() { + public static function dataTestSaveUserSettingsException(): array { return [ [ [ @@ -870,14 +844,9 @@ class UsersControllerTest extends \Test\TestCase { } /** - * @param string $account - * @param string $type - * @param array $dataBefore - * @param array $expectedData - * * @dataProvider dataTestGetVerificationCode */ - public function testGetVerificationCode($account, $type, $dataBefore, $expectedData, $onlyVerificationCode): void { + public function testGetVerificationCode(string $account, string $type, array $dataBefore, array $expectedData, bool $onlyVerificationCode): void { $message = 'Use my Federated Cloud ID to share with me: user@nextcloud.com'; $signature = 'theSignature'; @@ -936,7 +905,7 @@ class UsersControllerTest extends \Test\TestCase { $this->assertSame($code, $data['code']); } - public function dataTestGetVerificationCode() { + public static function dataTestGetVerificationCode(): array { $accountDataBefore = [ IAccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => IAccountManager::NOT_VERIFIED], IAccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => IAccountManager::NOT_VERIFIED, 'signature' => 'theSignature'], @@ -973,16 +942,13 @@ class UsersControllerTest extends \Test\TestCase { /** * @dataProvider dataTestCanAdminChangeUserPasswords - * - * @param bool $encryptionEnabled - * @param bool $encryptionModuleLoaded - * @param bool $masterKeyEnabled - * @param bool $expected */ - public function testCanAdminChangeUserPasswords($encryptionEnabled, - $encryptionModuleLoaded, - $masterKeyEnabled, - $expected): void { + public function testCanAdminChangeUserPasswords( + bool $encryptionEnabled, + bool $encryptionModuleLoaded, + bool $masterKeyEnabled, + bool $expected, + ): void { $controller = $this->getController(); $this->encryptionManager->expects($this->any()) @@ -1005,7 +971,7 @@ class UsersControllerTest extends \Test\TestCase { $this->assertSame($expected, $result); } - public function dataTestCanAdminChangeUserPasswords() { + public static function dataTestCanAdminChangeUserPasswords(): array { return [ // encryptionEnabled, encryptionModuleLoaded, masterKeyEnabled, expectedResult [true, true, true, true], diff --git a/apps/settings/tests/Mailer/NewUserMailHelperTest.php b/apps/settings/tests/Mailer/NewUserMailHelperTest.php index 1a1fc20354b..26a2bf5a6b6 100644 --- a/apps/settings/tests/Mailer/NewUserMailHelperTest.php +++ b/apps/settings/tests/Mailer/NewUserMailHelperTest.php @@ -20,29 +20,20 @@ use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class NewUserMailHelperTest extends TestCase { - /** @var Defaults|\PHPUnit\Framework\MockObject\MockObject */ - private $defaults; - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ - private $urlGenerator; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ - private $l10n; - /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */ - private $l10nFactory; - /** @var IMailer|\PHPUnit\Framework\MockObject\MockObject */ - private $mailer; - /** @var ISecureRandom|\PHPUnit\Framework\MockObject\MockObject */ - private $secureRandom; - /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */ - private $timeFactory; - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - private $config; - /** @var ICrypto|\PHPUnit\Framework\MockObject\MockObject */ - private $crypto; - /** @var NewUserMailHelper */ - private $newUserMailHelper; + private Defaults&MockObject $defaults; + private IURLGenerator&MockObject $urlGenerator; + private IL10N&MockObject $l10n; + private IFactory&MockObject $l10nFactory; + private IMailer&MockObject $mailer; + private ISecureRandom&MockObject $secureRandom; + private ITimeFactory&MockObject $timeFactory; + private IConfig&MockObject $config; + private ICrypto&MockObject $crypto; + private NewUserMailHelper $newUserMailHelper; protected function setUp(): void { parent::setUp(); @@ -113,7 +104,7 @@ class NewUserMailHelperTest extends TestCase { ->expects($this->once()) ->method('getTime') ->willReturn(12345); - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ + /** @var IUser&MockObject $user */ $user = $this->createMock(IUser::class); $user ->expects($this->any()) @@ -371,7 +362,7 @@ EOF; ['myLogo',''], ]); - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ + /** @var IUser&MockObject $user */ $user = $this->createMock(IUser::class); $user ->expects($this->any()) @@ -611,7 +602,7 @@ EOF; ['myLogo', ''], ]); - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ + /** @var IUser&MockObject $user */ $user = $this->createMock(IUser::class); $user ->expects($this->any()) @@ -830,7 +821,7 @@ EOF; } public function testSendMail(): void { - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ + /** @var IUser&MockObject $user */ $user = $this->createMock(IUser::class); $user ->expects($this->once()) @@ -840,7 +831,7 @@ EOF; ->expects($this->once()) ->method('getDisplayName') ->willReturn('John Doe'); - /** @var IEMailTemplate|\PHPUnit\Framework\MockObject\MockObject $emailTemplate */ + /** @var IEMailTemplate&MockObject $emailTemplate */ $emailTemplate = $this->createMock(IEMailTemplate::class); $message = $this->createMock(Message::class); $message diff --git a/apps/settings/tests/Middleware/SubadminMiddlewareTest.php b/apps/settings/tests/Middleware/SubadminMiddlewareTest.php index 2992810af6c..37cfb5ccc59 100644 --- a/apps/settings/tests/Middleware/SubadminMiddlewareTest.php +++ b/apps/settings/tests/Middleware/SubadminMiddlewareTest.php @@ -29,7 +29,6 @@ use PHPUnit\Framework\MockObject\MockObject; */ class SubadminMiddlewareTest extends \Test\TestCase { private SubadminMiddleware $subadminMiddleware; - private IUserSession&MockObject $userSession; private ISubAdmin&MockObject $subAdminManager; private ControllerMethodReflector&MockObject $reflector; @@ -38,8 +37,7 @@ class SubadminMiddlewareTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->reflector = $this->getMockBuilder(ControllerMethodReflector::class) - ->disableOriginalConstructor()->getMock(); + $this->reflector = $this->createMock(ControllerMethodReflector::class); $this->userSession = $this->createMock(IUserSession::class); $this->subAdminManager = $this->createMock(ISubAdmin::class); $this->l10n = $this->createMock(IL10N::class); @@ -51,8 +49,7 @@ class SubadminMiddlewareTest extends \Test\TestCase { $this->l10n, ); - $this->controller = $this->getMockBuilder(Controller::class) - ->disableOriginalConstructor()->getMock(); + $this->controller = $this->createMock(Controller::class); $this->userSession ->expects(self::any()) @@ -67,10 +64,10 @@ class SubadminMiddlewareTest extends \Test\TestCase { $this->reflector ->expects($this->exactly(2)) ->method('hasAnnotation') - ->withConsecutive( - ['NoSubAdminRequired'], - ['AuthorizedAdminSetting'], - )->willReturn(false); + ->willReturnMap([ + ['NoSubAdminRequired', false], + ['AuthorizedAdminSetting', false], + ]); $this->subAdminManager ->expects(self::once()) @@ -99,10 +96,10 @@ class SubadminMiddlewareTest extends \Test\TestCase { $this->reflector ->expects($this->exactly(2)) ->method('hasAnnotation') - ->withConsecutive( - ['NoSubAdminRequired'], - ['AuthorizedAdminSetting'], - )->willReturn(false); + ->willReturnMap([ + ['NoSubAdminRequired', false], + ['AuthorizedAdminSetting', false], + ]); $this->subAdminManager ->expects(self::once()) diff --git a/apps/settings/tests/Settings/Admin/MailTest.php b/apps/settings/tests/Settings/Admin/MailTest.php index 560e4f8e997..37d7cb7d56d 100644 --- a/apps/settings/tests/Settings/Admin/MailTest.php +++ b/apps/settings/tests/Settings/Admin/MailTest.php @@ -21,8 +21,8 @@ class MailTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->config = $this->getMockBuilder(IConfig::class)->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); + $this->config = $this->createMock(IConfig::class); + $this->l10n = $this->createMock(IL10N::class); $this->admin = new Mail( $this->config, diff --git a/apps/settings/tests/Settings/Admin/SecurityTest.php b/apps/settings/tests/Settings/Admin/SecurityTest.php index 95b5e988397..63b52dd8616 100644 --- a/apps/settings/tests/Settings/Admin/SecurityTest.php +++ b/apps/settings/tests/Settings/Admin/SecurityTest.php @@ -16,21 +16,16 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SecurityTest extends TestCase { - /** @var Security */ - private $admin; - /** @var Manager */ - private $manager; - /** @var IUserManager */ - private $userManager; - /** @var MandatoryTwoFactor|MockObject */ - private $mandatoryTwoFactor; - /** @var IInitialState|MockObject */ - private $initialState; + private Manager $manager; + private IUserManager $userManager; + private MandatoryTwoFactor&MockObject $mandatoryTwoFactor; + private IInitialState&MockObject $initialState; + private Security $admin; protected function setUp(): void { parent::setUp(); - $this->manager = $this->getMockBuilder(Manager::class)->disableOriginalConstructor()->getMock(); - $this->userManager = $this->getMockBuilder(IUserManager::class)->getMock(); + $this->manager = $this->createMock(Manager::class); + $this->userManager = $this->createMock(IUserManager::class); $this->mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); $this->initialState = $this->createMock(IInitialState::class); @@ -43,10 +38,7 @@ class SecurityTest extends TestCase { ); } - /** - * @return array - */ - public function encryptionSettingsProvider() { + public static function encryptionSettingsProvider(): array { return [ [true], [false], @@ -55,9 +47,8 @@ class SecurityTest extends TestCase { /** * @dataProvider encryptionSettingsProvider - * @param bool $enabled */ - public function testGetFormWithOnlyOneBackend($enabled): void { + public function testGetFormWithOnlyOneBackend(bool $enabled): void { $this->manager ->expects($this->once()) ->method('isEnabled') diff --git a/apps/settings/tests/Settings/Admin/ServerTest.php b/apps/settings/tests/Settings/Admin/ServerTest.php index 35a8a3ce7f7..e2ca4cff3c6 100644 --- a/apps/settings/tests/Settings/Admin/ServerTest.php +++ b/apps/settings/tests/Settings/Admin/ServerTest.php @@ -25,24 +25,15 @@ use Test\TestCase; * @group DB */ class ServerTest extends TestCase { - /** @var IDBConnection */ - private $connection; - /** @var Server&MockObject */ - private $admin; - /** @var IInitialState&MockObject */ - private $initialStateService; - /** @var ProfileManager&MockObject */ - private $profileManager; - /** @var ITimeFactory&MockObject */ - private $timeFactory; - /** @var IConfig&MockObject */ - private $config; - /** @var IAppConfig&MockObject */ - private $appConfig; - /** @var IL10N&MockObject */ - private $l10n; - /** @var IUrlGenerator&MockObject */ - private $urlGenerator; + private IDBConnection $connection; + private Server&MockObject $admin; + private IInitialState&MockObject $initialStateService; + private ProfileManager&MockObject $profileManager; + private ITimeFactory&MockObject $timeFactory; + private IConfig&MockObject $config; + private IAppConfig&MockObject $appConfig; + private IL10N&MockObject $l10n; + private IUrlGenerator&MockObject $urlGenerator; protected function setUp(): void { parent::setUp(); diff --git a/apps/settings/tests/Settings/Admin/SharingTest.php b/apps/settings/tests/Settings/Admin/SharingTest.php index 048634be1e0..bd1a7a1045b 100644 --- a/apps/settings/tests/Settings/Admin/SharingTest.php +++ b/apps/settings/tests/Settings/Admin/SharingTest.php @@ -18,34 +18,22 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SharingTest extends TestCase { - /** @var Sharing */ - private $admin; - /** @var IConfig&MockObject */ - private $config; - /** @var IL10N&MockObject */ - private $l10n; - /** @var IManager|MockObject */ - private $shareManager; - /** @var IAppManager|MockObject */ - private $appManager; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var IInitialState|MockObject */ - private $initialState; + private IConfig&MockObject $config; + private IL10N&MockObject $l10n; + private IManager&MockObject $shareManager; + private IAppManager&MockObject $appManager; + private IURLGenerator&MockObject $urlGenerator; + private IInitialState&MockObject $initialState; + private Sharing $admin; protected function setUp(): void { parent::setUp(); - $this->config = $this->getMockBuilder(IConfig::class)->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); - - /** @var IManager|MockObject */ - $this->shareManager = $this->getMockBuilder(IManager::class)->getMock(); - /** @var IAppManager|MockObject */ - $this->appManager = $this->getMockBuilder(IAppManager::class)->getMock(); - /** @var IURLGenerator|MockObject */ - $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock(); - /** @var IInitialState|MockObject */ - $this->initialState = $this->getMockBuilder(IInitialState::class)->getMock(); + $this->config = $this->createMock(IConfig::class); + $this->l10n = $this->createMock(IL10N::class); + $this->shareManager = $this->createMock(IManager::class); + $this->appManager = $this->createMock(IAppManager::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->initialState = $this->createMock(IInitialState::class); $this->admin = new Sharing( $this->config, @@ -104,7 +92,7 @@ class SharingTest extends TestCase { ->willReturnCallback(function (string $key) use (&$initialStateCalls): void { $initialStateCalls[$key] = func_get_args(); }); - + $expectedInitialStateCalls = [ 'sharingAppEnabled' => false, 'sharingDocumentation' => '', diff --git a/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php b/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php index 44641ee98b3..f6f82ab311a 100644 --- a/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php +++ b/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php @@ -20,24 +20,12 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AuthtokensTest extends TestCase { - - /** @var IAuthTokenProvider|MockObject */ - private $authTokenProvider; - - /** @var ISession|MockObject */ - private $session; - - /** @var IUserSession|MockObject */ - private $userSession; - - /** @var IInitialState|MockObject */ - private $initialState; - - /** @var string */ - private $uid; - - /** @var Authtokens */ - private $section; + private IAuthTokenProvider&MockObject $authTokenProvider; + private ISession&MockObject $session; + private IUserSession&MockObject $userSession; + private IInitialState&MockObject $initialState; + private string $uid; + private Authtokens $section; protected function setUp(): void { parent::setUp(); @@ -80,34 +68,39 @@ class AuthtokensTest extends TestCase { ->method('getToken') ->with('session123') ->willReturn($sessionToken); + + $calls = [ + [ + 'app_tokens', [ + [ + 'id' => 100, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => false, + 'current' => true, + 'scope' => [IToken::SCOPE_FILESYSTEM => true], + 'canRename' => false, + ], + [ + 'id' => 200, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => true, + 'scope' => [IToken::SCOPE_FILESYSTEM => true], + 'canRename' => true, + ], + ] + ], + ['can_create_app_token', true], + ]; $this->initialState->expects($this->exactly(2)) ->method('provideInitialState') - ->withConsecutive( - [ - 'app_tokens', [ - [ - 'id' => 100, - 'name' => null, - 'lastActivity' => 0, - 'type' => 0, - 'canDelete' => false, - 'current' => true, - 'scope' => [IToken::SCOPE_FILESYSTEM => true], - 'canRename' => false, - ], - [ - 'id' => 200, - 'name' => null, - 'lastActivity' => 0, - 'type' => 0, - 'canDelete' => true, - 'scope' => [IToken::SCOPE_FILESYSTEM => true], - 'canRename' => true, - ], - ] - ], - ['can_create_app_token', true], - ); + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $form = $this->section->getForm(); diff --git a/apps/settings/tests/Settings/Personal/Security/PasswordTest.php b/apps/settings/tests/Settings/Personal/Security/PasswordTest.php index 62f2c998943..34a4b8e296f 100644 --- a/apps/settings/tests/Settings/Personal/Security/PasswordTest.php +++ b/apps/settings/tests/Settings/Personal/Security/PasswordTest.php @@ -16,15 +16,9 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class PasswordTest extends TestCase { - - /** @var IUserManager|MockObject */ - private $userManager; - - /** @var string */ - private $uid; - - /** @var Password */ - private $section; + private IUserManager&MockObject $userManager; + private string $uid; + private Password $section; protected function setUp(): void { parent::setUp(); diff --git a/apps/settings/tests/SetupChecks/AppDirsWithDifferentOwnerTest.php b/apps/settings/tests/SetupChecks/AppDirsWithDifferentOwnerTest.php index db3141e3a26..423f932dcf5 100644 --- a/apps/settings/tests/SetupChecks/AppDirsWithDifferentOwnerTest.php +++ b/apps/settings/tests/SetupChecks/AppDirsWithDifferentOwnerTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\AppDirsWithDifferentOwner; use OCP\IL10N; @@ -26,8 +26,7 @@ class AppDirsWithDifferentOwnerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { diff --git a/apps/settings/tests/SetupChecks/CodeIntegrityTest.php b/apps/settings/tests/SetupChecks/CodeIntegrityTest.php index 52101aed901..4dd54a644f5 100644 --- a/apps/settings/tests/SetupChecks/CodeIntegrityTest.php +++ b/apps/settings/tests/SetupChecks/CodeIntegrityTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OC\IntegrityCheck\Checker; use OCA\Settings\SetupChecks\CodeIntegrity; @@ -17,7 +17,7 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class CodeIntegrityTest extends TestCase { - + private IL10N&MockObject $l10n; private IURLGenerator&MockObject $urlGenerator; private Checker&MockObject $checker; @@ -25,8 +25,7 @@ class CodeIntegrityTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { diff --git a/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php b/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php index 51dffe58787..a48c6296aff 100644 --- a/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php +++ b/apps/settings/tests/SetupChecks/DataDirectoryProtectedTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\DataDirectoryProtected; use OCP\Http\Client\IClientService; @@ -30,9 +30,7 @@ class DataDirectoryProtectedTest extends TestCase { protected function setUp(): void { parent::setUp(); - /** @var IL10N&MockObject */ - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { diff --git a/apps/settings/tests/SetupChecks/ForwardedForHeadersTest.php b/apps/settings/tests/SetupChecks/ForwardedForHeadersTest.php index b8b25e74c63..b57eb852d80 100644 --- a/apps/settings/tests/SetupChecks/ForwardedForHeadersTest.php +++ b/apps/settings/tests/SetupChecks/ForwardedForHeadersTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\ForwardedForHeaders; use OCP\IConfig; @@ -26,8 +26,7 @@ class ForwardedForHeadersTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { @@ -68,7 +67,7 @@ class ForwardedForHeadersTest extends TestCase { ); } - public function dataForwardedForHeadersWorking(): array { + public static function dataForwardedForHeadersWorking(): array { return [ // description => trusted proxies, getHeader('REMOTE_ADDR'), getRemoteAddr, expected result 'no trusted proxies' => [[], '2.2.2.2', '2.2.2.2', SetupResult::SUCCESS], diff --git a/apps/settings/tests/SetupChecks/LoggingLevelTest.php b/apps/settings/tests/SetupChecks/LoggingLevelTest.php index d87f66bb484..9d588a4e486 100644 --- a/apps/settings/tests/SetupChecks/LoggingLevelTest.php +++ b/apps/settings/tests/SetupChecks/LoggingLevelTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\LoggingLevel; use OCP\IConfig; @@ -60,7 +60,7 @@ class LoggingLevelTest extends TestCase { } /** @dataProvider dataRun */ - public function testRun(mixed $value, string $expected): void { + public function testRun(string|int $value, string $expected): void { $this->urlGenerator->method('linkToDocs')->willReturn('admin-logging'); $this->config->expects(self::once()) diff --git a/apps/settings/tests/SetupChecks/OcxProvicersTest.php b/apps/settings/tests/SetupChecks/OcxProvicersTest.php index 4c2b36a8325..8e5a2c1b88b 100644 --- a/apps/settings/tests/SetupChecks/OcxProvicersTest.php +++ b/apps/settings/tests/SetupChecks/OcxProvicersTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\OcxProviders; use OCP\Http\Client\IClientService; @@ -30,9 +30,7 @@ class OcxProvicersTest extends TestCase { protected function setUp(): void { parent::setUp(); - /** @var IL10N|MockObject */ - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { diff --git a/apps/settings/tests/SetupChecks/PhpDefaultCharsetTest.php b/apps/settings/tests/SetupChecks/PhpDefaultCharsetTest.php index 4fba60cf72f..3722346219a 100644 --- a/apps/settings/tests/SetupChecks/PhpDefaultCharsetTest.php +++ b/apps/settings/tests/SetupChecks/PhpDefaultCharsetTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\PhpDefaultCharset; use OCP\IL10N; @@ -21,8 +21,7 @@ class PhpDefaultCharsetTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { diff --git a/apps/settings/tests/SetupChecks/PhpOutputBufferingTest.php b/apps/settings/tests/SetupChecks/PhpOutputBufferingTest.php index 69194df81c5..de509347044 100644 --- a/apps/settings/tests/SetupChecks/PhpOutputBufferingTest.php +++ b/apps/settings/tests/SetupChecks/PhpOutputBufferingTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\PhpOutputBuffering; use OCP\IL10N; @@ -21,8 +21,7 @@ class PhpOutputBufferingTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { diff --git a/apps/settings/tests/SetupChecks/SecurityHeadersTest.php b/apps/settings/tests/SetupChecks/SecurityHeadersTest.php index d8bb51d47c6..e7d87775485 100644 --- a/apps/settings/tests/SetupChecks/SecurityHeadersTest.php +++ b/apps/settings/tests/SetupChecks/SecurityHeadersTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\SecurityHeaders; use OCP\Http\Client\IClientService; @@ -20,19 +20,17 @@ use Psr\Log\LoggerInterface; use Test\TestCase; class SecurityHeadersTest extends TestCase { - private IL10N|MockObject $l10n; - private IConfig|MockObject $config; - private IURLGenerator|MockObject $urlGenerator; - private IClientService|MockObject $clientService; - private LoggerInterface|MockObject $logger; - private SecurityHeaders|MockObject $setupcheck; + private IL10N&MockObject $l10n; + private IConfig&MockObject $config; + private IURLGenerator&MockObject $urlGenerator; + private IClientService&MockObject $clientService; + private LoggerInterface&MockObject $logger; + private SecurityHeaders&MockObject $setupcheck; protected function setUp(): void { parent::setUp(); - /** @var IL10N|MockObject */ - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { @@ -92,7 +90,7 @@ class SecurityHeadersTest extends TestCase { $this->assertEquals(SetupResult::WARNING, $result->getSeverity()); } - public function dataSuccess(): array { + public static function dataSuccess(): array { return [ // description => modifiedHeaders 'basic' => [[]], @@ -112,7 +110,7 @@ class SecurityHeadersTest extends TestCase { /** * @dataProvider dataSuccess */ - public function testSuccess($headers): void { + public function testSuccess(array $headers): void { $headers = array_merge( [ 'X-XSS-Protection' => '1; mode=block', @@ -138,7 +136,7 @@ class SecurityHeadersTest extends TestCase { $this->assertEquals(SetupResult::SUCCESS, $result->getSeverity()); } - public function dataFailure(): array { + public static function dataFailure(): array { return [ // description => modifiedHeaders 'x-robots-none' => [['X-Robots-Tag' => 'none'], "- The `X-Robots-Tag` HTTP header is not set to `noindex,nofollow`. This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly.\n"], diff --git a/apps/settings/tests/SetupChecks/SupportedDatabaseTest.php b/apps/settings/tests/SetupChecks/SupportedDatabaseTest.php index 4bf529da6bb..6c75df47aa0 100644 --- a/apps/settings/tests/SetupChecks/SupportedDatabaseTest.php +++ b/apps/settings/tests/SetupChecks/SupportedDatabaseTest.php @@ -6,12 +6,12 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\SupportedDatabase; use OCP\IDBConnection; use OCP\IL10N; -use OCP\IUrlGenerator; +use OCP\IURLGenerator; use OCP\Server; use OCP\SetupCheck\SetupResult; use Test\TestCase; @@ -29,8 +29,8 @@ class SupportedDatabaseTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); - $this->urlGenerator = $this->getMockBuilder(IUrlGenerator::class)->getMock(); + $this->l10n = $this->createMock(IL10N::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->connection = Server::get(IDBConnection::class); $this->check = new SupportedDatabase( diff --git a/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php b/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php index 983f2c427ad..14473a540ba 100644 --- a/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php +++ b/apps/settings/tests/SetupChecks/WellKnownUrlsTest.php @@ -6,7 +6,7 @@ declare(strict_types=1); * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\Settings\Tests; +namespace OCA\Settings\Tests\SetupChecks; use OCA\Settings\SetupChecks\WellKnownUrls; use OCP\Http\Client\IClientService; @@ -20,19 +20,18 @@ use Psr\Log\LoggerInterface; use Test\TestCase; class WellKnownUrlsTest extends TestCase { - private IL10N|MockObject $l10n; - private IConfig|MockObject $config; - private IURLGenerator|MockObject $urlGenerator; - private IClientService|MockObject $clientService; - private LoggerInterface|MockObject $logger; - private WellKnownUrls|MockObject $setupcheck; + private IL10N&MockObject $l10n; + private IConfig&MockObject $config; + private IURLGenerator&MockObject $urlGenerator; + private IClientService&MockObject $clientService; + private LoggerInterface&MockObject $logger; + private WellKnownUrls&MockObject $setupcheck; protected function setUp(): void { parent::setUp(); - /** @var IL10N|MockObject */ - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); + /** @var IL10N&MockObject */ + $this->l10n = $this->createMock(IL10N::class); $this->l10n->expects($this->any()) ->method('t') ->willReturnCallback(function ($message, array $replace) { @@ -116,7 +115,7 @@ class WellKnownUrlsTest extends TestCase { } public function dataTestResponses(): array { - $createResponse = function (int $statuscode, array $header = []): IResponse|MockObject { + $createResponse = function (int $statuscode, array $header = []): IResponse&MockObject { $response = $this->createMock(IResponse::class); $response->expects($this->any()) ->method('getStatusCode') diff --git a/apps/settings/tests/UserMigration/AccountMigratorTest.php b/apps/settings/tests/UserMigration/AccountMigratorTest.php index cd3fd2f7aeb..ded905d226c 100644 --- a/apps/settings/tests/UserMigration/AccountMigratorTest.php +++ b/apps/settings/tests/UserMigration/AccountMigratorTest.php @@ -27,21 +27,12 @@ use Test\TestCase; * @group DB */ class AccountMigratorTest extends TestCase { - private IUserManager $userManager; - private IAvatarManager $avatarManager; - private AccountMigrator $migrator; - - /** @var IImportSource|MockObject */ - private $importSource; - - /** @var IExportDestination|MockObject */ - private $exportDestination; - - /** @var OutputInterface|MockObject */ - private $output; + private IImportSource&MockObject $importSource; + private IExportDestination&MockObject $exportDestination; + private OutputInterface&MockObject $output; private const ASSETS_DIR = __DIR__ . '/assets/'; @@ -72,9 +63,9 @@ class AccountMigratorTest extends TestCase { parent::tearDown(); } - public function dataImportExportAccount(): array { + public static function dataImportExportAccount(): array { return array_map( - function (string $filename) { + static function (string $filename): array { $dataPath = static::ASSETS_DIR . $filename; // For each account json file there is an avatar image and a config json file with the same basename $basename = pathinfo($filename, PATHINFO_FILENAME); @@ -111,17 +102,18 @@ class AccountMigratorTest extends TestCase { ->with($this->migrator->getId()) ->willReturn(1); + $calls = [ + [static::REGEX_ACCOUNT_FILE, json_encode($importData)], + [static::REGEX_CONFIG_FILE, json_encode($importConfig)], + ]; $this->importSource ->expects($this->exactly(2)) ->method('getFileContents') - ->withConsecutive( - [$this->matchesRegularExpression(static::REGEX_ACCOUNT_FILE)], - [$this->matchesRegularExpression(static::REGEX_CONFIG_FILE)], - ) - ->willReturnOnConsecutiveCalls( - json_encode($importData), - json_encode($importConfig), - ); + ->willReturnCallback(function ($path) use (&$calls) { + $expected = array_shift($calls); + $this->assertMatchesRegularExpression($expected[0], $path); + return $expected[1]; + }); $this->importSource ->expects($this->once()) @@ -152,13 +144,18 @@ class AccountMigratorTest extends TestCase { ); } + $calls = [ + [static::REGEX_ACCOUNT_FILE, new JsonMatches(json_encode($importData))], + [static::REGEX_CONFIG_FILE,new JsonMatches(json_encode($importConfig))], + ]; $this->exportDestination ->expects($this->exactly(2)) ->method('addFileContents') - ->withConsecutive( - [$this->matchesRegularExpression(static::REGEX_ACCOUNT_FILE), new JsonMatches(json_encode($exportData))], - [$this->matchesRegularExpression(static::REGEX_CONFIG_FILE), new JsonMatches(json_encode($exportConfig))], - ); + ->willReturnCallback(function ($path) use (&$calls) { + $expected = array_shift($calls); + $this->assertMatchesRegularExpression($expected[0], $path); + return $expected[1]; + }); $this->exportDestination ->expects($this->once()) diff --git a/apps/sharebymail/l10n/de.js b/apps/sharebymail/l10n/de.js index bbbe6d400f2..e66e9d82c37 100644 --- a/apps/sharebymail/l10n/de.js +++ b/apps/sharebymail/l10n/de.js @@ -13,7 +13,7 @@ OC.L10N.register( "{actor} unshared {file} from {email} by mail" : "{actor} teilt {file} nicht mehr mit {email} via E-Mail", "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", "Password to access {file} was sent to you" : "Passwort für den Zugriff auf {file} wurde an dich gesendet", - "Share by mail" : "Geteilt über eine E-Mail", + "Share by mail" : "Teilen per E-Mail", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "Freigeben von %1$s ist fehlgeschlagen, da dieses Element schon mit dem Konto %2$s geteilt wurde", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte gib in deinen persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche es erneut.", "Failed to send share by email. Got an invalid email address" : "Die Freigabe per E-Mail konnte nicht gesendet werden. Habe eine ungültige E-Mail-Adresse erhalten.", diff --git a/apps/sharebymail/l10n/de.json b/apps/sharebymail/l10n/de.json index a98ad30a28d..ca952b6d67c 100644 --- a/apps/sharebymail/l10n/de.json +++ b/apps/sharebymail/l10n/de.json @@ -11,7 +11,7 @@ "{actor} unshared {file} from {email} by mail" : "{actor} teilt {file} nicht mehr mit {email} via E-Mail", "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", "Password to access {file} was sent to you" : "Passwort für den Zugriff auf {file} wurde an dich gesendet", - "Share by mail" : "Geteilt über eine E-Mail", + "Share by mail" : "Teilen per E-Mail", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "Freigeben von %1$s ist fehlgeschlagen, da dieses Element schon mit dem Konto %2$s geteilt wurde", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte gib in deinen persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche es erneut.", "Failed to send share by email. Got an invalid email address" : "Die Freigabe per E-Mail konnte nicht gesendet werden. Habe eine ungültige E-Mail-Adresse erhalten.", diff --git a/apps/sharebymail/l10n/de_DE.js b/apps/sharebymail/l10n/de_DE.js index 338d60108cd..16e66447462 100644 --- a/apps/sharebymail/l10n/de_DE.js +++ b/apps/sharebymail/l10n/de_DE.js @@ -13,7 +13,7 @@ OC.L10N.register( "{actor} unshared {file} from {email} by mail" : "{actor} teilt {file} nicht mehr mit {email} via E-Mail", "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", "Password to access {file} was sent to you" : "Passwort für den Zugriff auf {file} wurde an Sie versandt ", - "Share by mail" : "Geteilt über eine E-Mail", + "Share by mail" : "Teilen per E-Mail", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "Freigeben von %1$s ist fehlgeschlagen, da dieses Element schon mit dem Konto %2$s geteilt wurde", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte geben Sie in Ihren persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche Sie es erneut.", "Failed to send share by email. Got an invalid email address" : "Die Freigabe per E-Mail konnte nicht gesendet werden. Es wurde eine ungültige E-Mail-Adresse angegeben.", diff --git a/apps/sharebymail/l10n/de_DE.json b/apps/sharebymail/l10n/de_DE.json index 27ee126b8f0..752bc7681c5 100644 --- a/apps/sharebymail/l10n/de_DE.json +++ b/apps/sharebymail/l10n/de_DE.json @@ -11,7 +11,7 @@ "{actor} unshared {file} from {email} by mail" : "{actor} teilt {file} nicht mehr mit {email} via E-Mail", "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", "Password to access {file} was sent to you" : "Passwort für den Zugriff auf {file} wurde an Sie versandt ", - "Share by mail" : "Geteilt über eine E-Mail", + "Share by mail" : "Teilen per E-Mail", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "Freigeben von %1$s ist fehlgeschlagen, da dieses Element schon mit dem Konto %2$s geteilt wurde", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes Passwort kann nicht versandt werden. Bitte geben Sie in Ihren persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche Sie es erneut.", "Failed to send share by email. Got an invalid email address" : "Die Freigabe per E-Mail konnte nicht gesendet werden. Es wurde eine ungültige E-Mail-Adresse angegeben.", diff --git a/apps/weather_status/l10n/ko.js b/apps/weather_status/l10n/ko.js index 6f28af490e8..9af97446624 100644 --- a/apps/weather_status/l10n/ko.js +++ b/apps/weather_status/l10n/ko.js @@ -7,11 +7,44 @@ OC.L10N.register( "Error" : "오류", "Weather status" : "날씨 현황", "Weather status in your dashboard" : "내 대시보드에 있는 날씨 현황", - "Detect location" : "위치 감지", - "Set custom address" : "주소 설정", - "Favorites" : "즐겨찾기", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "날씨 현황이 대시보드 앱에 통합되었습니다.\n사용자의 현재 위치를 자동 혹은 수동으로 지정할 수 있습니다. 그 후 6시간의 일기예보가 표시됩니다.\n날씨 현황은 달력 앱과 같이 다른 곳에서도 통합될 수 있습니다.", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} 오늘 오후 늦게 맑음", + "{temperature} {unit} clear sky" : "{temperature} {unit} 맑음", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 흐림 ", + "{temperature} {unit} cloudy" : "{temperature} {unit} 흐림 ", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 눈", + "{temperature} {unit} snow and thunder" : "{temperature} {unit} 천둥·번개를 동반한 눈", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 소나기눈", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 천둥·번개를 동반한 소나기눈", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개와 극야를 동반한 소나기눈", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 천둥·번개와 극야를 동반한 소나기눈", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기눈", + "{temperature} {unit} snow showers" : "{temperature} {unit} 소나기눈", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 극야를 동반한 소나기눈", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 극야를 동반한 소나기눈", + "{temperature} {unit} snow later today" : "{temperature} {unit} 오늘 오후 늦게 눈", + "{temperature} {unit} snow" : "{temperature} {unit} 눈", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} 오늘 오후 늦게 맑음", + "{temperature} {unit} fair weather" : "{temperature} {unit} 맑음", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 구름 조금", + "{temperature} {unit} partly cloudy" : "{temperature} {unit} 구름 조금", + "{temperature} {unit} foggy later today" : "{temperature} {unit} 오늘 오후 늦게 안개", + "{temperature} {unit} foggy" : "{temperature} {unit} 안개", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 약한 비", + "{temperature} {unit} light rainfall" : "{temperature} {unit} 약한 비", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 비", + "{temperature} {unit} rainfall" : "{temperature} {unit} 비", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 거센 비", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 거센 비", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} 소나기", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 약한 소나기", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 약한 소나기", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 거센 소나기", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 거센 소나기", "More weather for {adr}" : "{adr} 날씨 더 보기", "Loading weather" : "날씨 불러오는 중", + "Set location for weather" : "날씨 위치 설정", "Remove from favorites" : "즐겨찾기에서 제거", "Add as favorite" : "즐겨찾기로 추가", "You are not logged in." : "당신은 로그인하지 않았습니다.", @@ -22,7 +55,9 @@ OC.L10N.register( "There was an error setting the location." : "주소를 설정하는 동안 오류가 발생했습니다.", "There was an error saving the mode." : "모드 저장에 오류가 있습니다.", "There was an error using personal address." : "개인 주소를 사용하는 동안 오류가 발생했습니다.", - "Set location for weather" : "날씨 위치 설정", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "날씨 현황이 대시보드 앱에 통합되었습니다.\n사용자의 현재 위치를 자동 혹은 수동으로 지정할 수 있습니다. 그 후 6시간의 일기예보가 표시됩니다.\n날씨 현황은 달력 앱과 같이 다른 곳에서도 통합될 수 있습니다." + "Unknown weather code" : "알 수 없는 날씨 코드", + "Detect location" : "위치 감지", + "Set custom address" : "주소 설정", + "Favorites" : "즐겨찾기" }, "nplurals=1; plural=0;"); diff --git a/apps/weather_status/l10n/ko.json b/apps/weather_status/l10n/ko.json index b07606e36ae..1a7bbaa4d64 100644 --- a/apps/weather_status/l10n/ko.json +++ b/apps/weather_status/l10n/ko.json @@ -5,11 +5,44 @@ "Error" : "오류", "Weather status" : "날씨 현황", "Weather status in your dashboard" : "내 대시보드에 있는 날씨 현황", - "Detect location" : "위치 감지", - "Set custom address" : "주소 설정", - "Favorites" : "즐겨찾기", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "날씨 현황이 대시보드 앱에 통합되었습니다.\n사용자의 현재 위치를 자동 혹은 수동으로 지정할 수 있습니다. 그 후 6시간의 일기예보가 표시됩니다.\n날씨 현황은 달력 앱과 같이 다른 곳에서도 통합될 수 있습니다.", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} 오늘 오후 늦게 맑음", + "{temperature} {unit} clear sky" : "{temperature} {unit} 맑음", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 흐림 ", + "{temperature} {unit} cloudy" : "{temperature} {unit} 흐림 ", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 눈", + "{temperature} {unit} snow and thunder" : "{temperature} {unit} 천둥·번개를 동반한 눈", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개를 동반한 소나기눈", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} 천둥·번개를 동반한 소나기눈", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 천둥·번개와 극야를 동반한 소나기눈", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} 천둥·번개와 극야를 동반한 소나기눈", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기눈", + "{temperature} {unit} snow showers" : "{temperature} {unit} 소나기눈", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} 오늘 오후 늦게 극야를 동반한 소나기눈", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} 극야를 동반한 소나기눈", + "{temperature} {unit} snow later today" : "{temperature} {unit} 오늘 오후 늦게 눈", + "{temperature} {unit} snow" : "{temperature} {unit} 눈", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} 오늘 오후 늦게 맑음", + "{temperature} {unit} fair weather" : "{temperature} {unit} 맑음", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} 오늘 오후 늦게 구름 조금", + "{temperature} {unit} partly cloudy" : "{temperature} {unit} 구름 조금", + "{temperature} {unit} foggy later today" : "{temperature} {unit} 오늘 오후 늦게 안개", + "{temperature} {unit} foggy" : "{temperature} {unit} 안개", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 약한 비", + "{temperature} {unit} light rainfall" : "{temperature} {unit} 약한 비", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 비", + "{temperature} {unit} rainfall" : "{temperature} {unit} 비", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} 오늘 오후 늦게 거센 비", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} 거센 비", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 소나기", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} 소나기", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 약한 소나기", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} 약한 소나기", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} 오늘 오후 늦게 거센 소나기", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} 거센 소나기", "More weather for {adr}" : "{adr} 날씨 더 보기", "Loading weather" : "날씨 불러오는 중", + "Set location for weather" : "날씨 위치 설정", "Remove from favorites" : "즐겨찾기에서 제거", "Add as favorite" : "즐겨찾기로 추가", "You are not logged in." : "당신은 로그인하지 않았습니다.", @@ -20,7 +53,9 @@ "There was an error setting the location." : "주소를 설정하는 동안 오류가 발생했습니다.", "There was an error saving the mode." : "모드 저장에 오류가 있습니다.", "There was an error using personal address." : "개인 주소를 사용하는 동안 오류가 발생했습니다.", - "Set location for weather" : "날씨 위치 설정", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "날씨 현황이 대시보드 앱에 통합되었습니다.\n사용자의 현재 위치를 자동 혹은 수동으로 지정할 수 있습니다. 그 후 6시간의 일기예보가 표시됩니다.\n날씨 현황은 달력 앱과 같이 다른 곳에서도 통합될 수 있습니다." + "Unknown weather code" : "알 수 없는 날씨 코드", + "Detect location" : "위치 감지", + "Set custom address" : "주소 설정", + "Favorites" : "즐겨찾기" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index ffc0fc14aff..c0f3d35e57f 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -4619,9 +4619,6 @@ <code><![CDATA[$matches[0][$last_match]]]></code> <code><![CDATA[$matches[1][$last_match]]]></code> </InvalidArrayOffset> - <InvalidScalarArgument> - <code><![CDATA[$path]]></code> - </InvalidScalarArgument> <UndefinedInterfaceMethod> <code><![CDATA[getQuota]]></code> </UndefinedInterfaceMethod> diff --git a/core/l10n/de.js b/core/l10n/de.js index 85f1050e0e1..2c69f7aaa38 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -80,8 +80,125 @@ OC.L10N.register( "%s (incompatible)" : "%s (inkompatibel)", "The following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", + "Windows Command Script" : "Windows-Befehlsskript", + "Electronic book document" : "E-Book-Dokument", + "TrueType Font Collection" : "TrueType-Schriftartensammlung", + "Web Open Font Format" : "Web Open Font Format", + "GPX geographic data" : "GPX-Geodaten", + "Gzip archive" : "Gzip-Archiv", + "Adobe Illustrator document" : "Adobe Illustrator-Dokument", + "Java source code" : "Java Quellcode", + "JavaScript source code" : "JavaScript Quellcode", + "JSON document" : "JSON-Dokument", + "Microsoft Access database" : "Microsoft Access-Datenbank", + "Microsoft OneNote document" : "Microsoft OneNote-Dokument", + "Microsoft Word document" : "Microsoft Word-Dokument", "Unknown" : "Unbekannt", + "PDF document" : "PDF-Dokument", + "PostScript document" : "PostScript-Dokument", + "RSS summary" : "RSS-Zusammenfassung", + "Android package" : "Android-Paket", + "KML geographic data" : "KML-Geodaten", + "KML geographic compressed data" : "Komprimierte KML-Geodaten", + "Lotus Word Pro document" : "Lotus Word Pro-Dokument", + "Excel spreadsheet" : "Excel-Tabelle", + "Excel add-in" : "Excel-Add-in", + "Excel 2007 binary spreadsheet" : "Excel 2007 Binärtabelle", + "Excel spreadsheet template" : "Excel-Tabellenvorlage", + "Outlook Message" : "Outlook-Nachricht", + "PowerPoint presentation" : "PowerPoint-Präsentation", + "PowerPoint add-in" : "PowerPoint Add-in", + "PowerPoint presentation template" : "PowerPoint-Präsentationsvorlage", + "Word document" : "Word Dokument", + "ODF formula" : "ODF-Formel", + "ODG drawing" : "ODG-Zeichnung", + "ODG drawing (Flat XML)" : "ODG-Zeichnung (Flat XML)", + "ODG template" : "ODG-Vorlage", + "ODP presentation" : "ODP-Präsentation", + "ODP presentation (Flat XML)" : "ODP-Präsentation (Flat XML)", + "ODP template" : "ODP-Vorlage", + "ODS spreadsheet" : "ODS-Tabelle", + "ODS spreadsheet (Flat XML)" : "ODS-Tabelle (Flat XML)", + "ODS template" : "ODS-Vorlage", + "ODT document" : "ODT-Dokument", + "ODT document (Flat XML)" : "ODT-Dokument (Flat XML)", + "ODT template" : "ODT-Vorlage", + "PowerPoint 2007 presentation" : "PowerPoint 2007-Präsentation", + "PowerPoint 2007 show" : "PowerPoint 2007-Schau", + "PowerPoint 2007 presentation template" : "PowerPoint 2007-Präsentationsvorlage", + "Excel 2007 spreadsheet" : "Excel 2007-Tabelle", + "Excel 2007 spreadsheet template" : "Excel 2007-Tabellenvorlage", + "Word 2007 document" : "Word 2007-Dokument", + "Word 2007 document template" : "Word 2007-Dokumentenvorlage", + "Microsoft Visio document" : "Microsoft Visio-Dokument", + "WordPerfect document" : "WordPerfect-Dokument", + "7-zip archive" : "7-zip-Archiv", + "Blender scene" : "Blender-Szene", + "Bzip2 archive" : "Bzip2-Archiv", + "Debian package" : "Debian-Paket", + "FictionBook document" : "FictionBook-Dokument", + "Unknown font" : "Unbekannte Schriftart", + "Krita document" : "Krita-Dokument", + "Mobipocket e-book" : "Mobipocket E-Book", + "Windows Installer package" : "Windows-Installationspaket", + "Perl script" : "Perl-Skript", + "PHP script" : "PHP-Skript", + "Tar archive" : "Tar-Archiv", + "XML document" : "XML-Dokument", + "YAML document" : "YAML-Dokument", + "Zip archive" : "Zip-Archiv", + "Zstandard archive" : "Zstandard-Archiv", + "AAC audio" : "AAC-Audio", + "FLAC audio" : "FLAC-Audio", + "MPEG-4 audio" : "MPEG-4-Audio", + "MP3 audio" : "MP3-Audio", + "Ogg audio" : "Ogg-Audio", + "RIFF/WAVe standard Audio" : "RIFF/WAVe Standard-Audio", + "WebM audio" : "WebM-Audio", + "MP3 ShoutCast playlist" : "MP3 ShoutCast-Wiedergabeliste", + "Windows BMP image" : "Windows BMP-Bild", + "Better Portable Graphics image" : "Better Portable Graphics-Bild", + "EMF image" : "EMF-Bild", + "GIF image" : "GIF-Bild", + "HEIC image" : "HEIC-Bild", + "HEIF image" : "HEIF-Bild", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2-Bild", + "JPEG image" : "JPEG-Bild", "PNG image" : "PNG-Bild", + "SVG image" : "SVG-Bild", + "Truevision Targa image" : "Truevision Targa-Bild", + "TIFF image" : "TIFF-Bild", + "WebP image" : "WebP-Bild", + "Digital raw image" : "Digitales raw-Bild", + "Windows Icon" : "Windows-Symbol", + "Email message" : "E-Mail-Nachricht", + "VCS/ICS calendar" : "VCS/ICS-Kalender", + "CSS stylesheet" : "CSS-Stylesheet", + "CSV document" : "CSV-Dokument", + "HTML document" : "HTML-Dokument", + "Markdown document" : "Markdown-Dokument", + "Org-mode file" : "Org-mode-Datei", + "Plain text document" : "Rohtext-Dokument", + "Rich Text document" : "Rich Text-Dokument", + "Electronic business card" : "Elektronische Visitenkarte", + "C++ source code" : "C++-Quellcode", + "LDIF address book" : "LDIF-Adressbuch", + "NFO document" : "NFO-Dokument", + "PHP source" : "PHP-Quelltext", + "Python script" : "Python-Skript", + "ReStructuredText document" : "ReStructuredText-Dokument", + "3GPP multimedia file" : "3GPP Multimedia-Datei", + "MPEG video" : "MPEG-Video", + "DV video" : "DV-Video", + "MPEG-2 transport stream" : "MPEG-2-Transportstrom", + "MPEG-4 video" : "MPEG-4-Video", + "Ogg video" : "Ogg-Video", + "QuickTime video" : "QuickTime-Video", + "WebM video" : "WebM-Video", + "Flash video" : "Flash-Video", + "Matroska video" : "Matroska-Video", + "Windows Media video" : "Windows Media-Video", + "AVI video" : "AVI-Video", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "For more details see the {linkstart}documentation ↗{linkend}." : "Weitere Informationen findest du in der {linkstart}Dokumentation ↗{linkend}.", "unknown text" : "Unbekannter Text", diff --git a/core/l10n/de.json b/core/l10n/de.json index 12a5eef1ddf..04a0f5ace51 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -78,8 +78,125 @@ "%s (incompatible)" : "%s (inkompatibel)", "The following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", + "Windows Command Script" : "Windows-Befehlsskript", + "Electronic book document" : "E-Book-Dokument", + "TrueType Font Collection" : "TrueType-Schriftartensammlung", + "Web Open Font Format" : "Web Open Font Format", + "GPX geographic data" : "GPX-Geodaten", + "Gzip archive" : "Gzip-Archiv", + "Adobe Illustrator document" : "Adobe Illustrator-Dokument", + "Java source code" : "Java Quellcode", + "JavaScript source code" : "JavaScript Quellcode", + "JSON document" : "JSON-Dokument", + "Microsoft Access database" : "Microsoft Access-Datenbank", + "Microsoft OneNote document" : "Microsoft OneNote-Dokument", + "Microsoft Word document" : "Microsoft Word-Dokument", "Unknown" : "Unbekannt", + "PDF document" : "PDF-Dokument", + "PostScript document" : "PostScript-Dokument", + "RSS summary" : "RSS-Zusammenfassung", + "Android package" : "Android-Paket", + "KML geographic data" : "KML-Geodaten", + "KML geographic compressed data" : "Komprimierte KML-Geodaten", + "Lotus Word Pro document" : "Lotus Word Pro-Dokument", + "Excel spreadsheet" : "Excel-Tabelle", + "Excel add-in" : "Excel-Add-in", + "Excel 2007 binary spreadsheet" : "Excel 2007 Binärtabelle", + "Excel spreadsheet template" : "Excel-Tabellenvorlage", + "Outlook Message" : "Outlook-Nachricht", + "PowerPoint presentation" : "PowerPoint-Präsentation", + "PowerPoint add-in" : "PowerPoint Add-in", + "PowerPoint presentation template" : "PowerPoint-Präsentationsvorlage", + "Word document" : "Word Dokument", + "ODF formula" : "ODF-Formel", + "ODG drawing" : "ODG-Zeichnung", + "ODG drawing (Flat XML)" : "ODG-Zeichnung (Flat XML)", + "ODG template" : "ODG-Vorlage", + "ODP presentation" : "ODP-Präsentation", + "ODP presentation (Flat XML)" : "ODP-Präsentation (Flat XML)", + "ODP template" : "ODP-Vorlage", + "ODS spreadsheet" : "ODS-Tabelle", + "ODS spreadsheet (Flat XML)" : "ODS-Tabelle (Flat XML)", + "ODS template" : "ODS-Vorlage", + "ODT document" : "ODT-Dokument", + "ODT document (Flat XML)" : "ODT-Dokument (Flat XML)", + "ODT template" : "ODT-Vorlage", + "PowerPoint 2007 presentation" : "PowerPoint 2007-Präsentation", + "PowerPoint 2007 show" : "PowerPoint 2007-Schau", + "PowerPoint 2007 presentation template" : "PowerPoint 2007-Präsentationsvorlage", + "Excel 2007 spreadsheet" : "Excel 2007-Tabelle", + "Excel 2007 spreadsheet template" : "Excel 2007-Tabellenvorlage", + "Word 2007 document" : "Word 2007-Dokument", + "Word 2007 document template" : "Word 2007-Dokumentenvorlage", + "Microsoft Visio document" : "Microsoft Visio-Dokument", + "WordPerfect document" : "WordPerfect-Dokument", + "7-zip archive" : "7-zip-Archiv", + "Blender scene" : "Blender-Szene", + "Bzip2 archive" : "Bzip2-Archiv", + "Debian package" : "Debian-Paket", + "FictionBook document" : "FictionBook-Dokument", + "Unknown font" : "Unbekannte Schriftart", + "Krita document" : "Krita-Dokument", + "Mobipocket e-book" : "Mobipocket E-Book", + "Windows Installer package" : "Windows-Installationspaket", + "Perl script" : "Perl-Skript", + "PHP script" : "PHP-Skript", + "Tar archive" : "Tar-Archiv", + "XML document" : "XML-Dokument", + "YAML document" : "YAML-Dokument", + "Zip archive" : "Zip-Archiv", + "Zstandard archive" : "Zstandard-Archiv", + "AAC audio" : "AAC-Audio", + "FLAC audio" : "FLAC-Audio", + "MPEG-4 audio" : "MPEG-4-Audio", + "MP3 audio" : "MP3-Audio", + "Ogg audio" : "Ogg-Audio", + "RIFF/WAVe standard Audio" : "RIFF/WAVe Standard-Audio", + "WebM audio" : "WebM-Audio", + "MP3 ShoutCast playlist" : "MP3 ShoutCast-Wiedergabeliste", + "Windows BMP image" : "Windows BMP-Bild", + "Better Portable Graphics image" : "Better Portable Graphics-Bild", + "EMF image" : "EMF-Bild", + "GIF image" : "GIF-Bild", + "HEIC image" : "HEIC-Bild", + "HEIF image" : "HEIF-Bild", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2-Bild", + "JPEG image" : "JPEG-Bild", "PNG image" : "PNG-Bild", + "SVG image" : "SVG-Bild", + "Truevision Targa image" : "Truevision Targa-Bild", + "TIFF image" : "TIFF-Bild", + "WebP image" : "WebP-Bild", + "Digital raw image" : "Digitales raw-Bild", + "Windows Icon" : "Windows-Symbol", + "Email message" : "E-Mail-Nachricht", + "VCS/ICS calendar" : "VCS/ICS-Kalender", + "CSS stylesheet" : "CSS-Stylesheet", + "CSV document" : "CSV-Dokument", + "HTML document" : "HTML-Dokument", + "Markdown document" : "Markdown-Dokument", + "Org-mode file" : "Org-mode-Datei", + "Plain text document" : "Rohtext-Dokument", + "Rich Text document" : "Rich Text-Dokument", + "Electronic business card" : "Elektronische Visitenkarte", + "C++ source code" : "C++-Quellcode", + "LDIF address book" : "LDIF-Adressbuch", + "NFO document" : "NFO-Dokument", + "PHP source" : "PHP-Quelltext", + "Python script" : "Python-Skript", + "ReStructuredText document" : "ReStructuredText-Dokument", + "3GPP multimedia file" : "3GPP Multimedia-Datei", + "MPEG video" : "MPEG-Video", + "DV video" : "DV-Video", + "MPEG-2 transport stream" : "MPEG-2-Transportstrom", + "MPEG-4 video" : "MPEG-4-Video", + "Ogg video" : "Ogg-Video", + "QuickTime video" : "QuickTime-Video", + "WebM video" : "WebM-Video", + "Flash video" : "Flash-Video", + "Matroska video" : "Matroska-Video", + "Windows Media video" : "Windows Media-Video", + "AVI video" : "AVI-Video", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "For more details see the {linkstart}documentation ↗{linkend}." : "Weitere Informationen findest du in der {linkstart}Dokumentation ↗{linkend}.", "unknown text" : "Unbekannter Text", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 69fe565f20e..4bf8bdf1649 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -80,8 +80,125 @@ OC.L10N.register( "%s (incompatible)" : "%s (inkompatibel)", "The following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", + "Windows Command Script" : "Windows-Befehlsskript", + "Electronic book document" : "E-Book-Dokument", + "TrueType Font Collection" : "TrueType-Schriftartensammlung", + "Web Open Font Format" : "Web Open Font Format", + "GPX geographic data" : "GPX-Geodaten", + "Gzip archive" : "Gzip-Archiv", + "Adobe Illustrator document" : "Adobe Illustrator-Dokument", + "Java source code" : "Java Quellcode", + "JavaScript source code" : "JavaScript Quellcode", + "JSON document" : "JSON-Dokument", + "Microsoft Access database" : "Microsoft Access-Datenbank", + "Microsoft OneNote document" : "Microsoft OneNote-Dokument", + "Microsoft Word document" : "Microsoft Word-Dokument", "Unknown" : "Unbekannt", + "PDF document" : "PDF-Dokument", + "PostScript document" : "PostScript-Dokument", + "RSS summary" : "RSS-Zusammenfassung", + "Android package" : "Android-Paket", + "KML geographic data" : "KML-Geodaten", + "KML geographic compressed data" : "Komprimierte KML-Geodaten", + "Lotus Word Pro document" : "Lotus Word Pro-Dokument", + "Excel spreadsheet" : "Excel-Tabelle", + "Excel add-in" : "Excel-Add-in", + "Excel 2007 binary spreadsheet" : "Excel 2007 Binärtabelle", + "Excel spreadsheet template" : "Excel-Tabellenvorlage", + "Outlook Message" : "Outlook-Nachricht", + "PowerPoint presentation" : "PowerPoint-Präsentation", + "PowerPoint add-in" : "PowerPoint Add-in", + "PowerPoint presentation template" : "PowerPoint-Präsentationsvorlage", + "Word document" : "Word Dokument", + "ODF formula" : "ODF-Formel", + "ODG drawing" : "ODG-Zeichnung", + "ODG drawing (Flat XML)" : "ODG-Zeichnung (Flat XML)", + "ODG template" : "ODG-Vorlage", + "ODP presentation" : "ODP-Präsentation", + "ODP presentation (Flat XML)" : "ODP-Präsentation (Flat XML)", + "ODP template" : "ODP-Vorlage", + "ODS spreadsheet" : "ODS-Tabelle", + "ODS spreadsheet (Flat XML)" : "ODS-Tabelle (Flat XML)", + "ODS template" : "ODS-Vorlage", + "ODT document" : "ODT-Dokument", + "ODT document (Flat XML)" : "ODT-Dokument (Flat XML)", + "ODT template" : "ODT-Vorlage", + "PowerPoint 2007 presentation" : "PowerPoint 2007-Präsentation", + "PowerPoint 2007 show" : "PowerPoint 2007-Schau", + "PowerPoint 2007 presentation template" : "PowerPoint 2007-Präsentationsvorlage", + "Excel 2007 spreadsheet" : "Excel 2007-Tabelle", + "Excel 2007 spreadsheet template" : "Excel 2007-Tabellenvorlage", + "Word 2007 document" : "Word 2007-Dokument", + "Word 2007 document template" : "Word 2007-Dokumentenvorlage", + "Microsoft Visio document" : "Microsoft Visio-Dokument", + "WordPerfect document" : "WordPerfect-Dokument", + "7-zip archive" : "7-zip-Archiv", + "Blender scene" : "Blender-Szene", + "Bzip2 archive" : "Bzip2-Archiv", + "Debian package" : "Debian-Paket", + "FictionBook document" : "FictionBook-Dokument", + "Unknown font" : "Unbekannte Schriftart", + "Krita document" : "Krita-Dokument", + "Mobipocket e-book" : "Mobipocket E-Book", + "Windows Installer package" : "Windows-Installationspaket", + "Perl script" : "Perl-Skript", + "PHP script" : "PHP-Skript", + "Tar archive" : "Tar-Archiv", + "XML document" : "XML-Dokument", + "YAML document" : "YAML-Dokument", + "Zip archive" : "Zip-Archiv", + "Zstandard archive" : "Zstandard-Archiv", + "AAC audio" : "AAC-Audio", + "FLAC audio" : "FLAC-Audio", + "MPEG-4 audio" : "MPEG-4-Audio", + "MP3 audio" : "MP3-Audio", + "Ogg audio" : "Ogg-Audio", + "RIFF/WAVe standard Audio" : "RIFF/WAVe Standard-Audio", + "WebM audio" : "WebM-Audio", + "MP3 ShoutCast playlist" : "MP3 ShoutCast-Wiedergabeliste", + "Windows BMP image" : "Windows BMP-Bild", + "Better Portable Graphics image" : "Better Portable Graphics-Bild", + "EMF image" : "EMF-Bild", + "GIF image" : "GIF-Bild", + "HEIC image" : "HEIC-Bild", + "HEIF image" : "HEIF-Bild", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2-Bild", + "JPEG image" : "JPEG-Bild", "PNG image" : "PNG-Bild", + "SVG image" : "SVG-Bild", + "Truevision Targa image" : "Truevision Targa-Bild", + "TIFF image" : "TIFF-Bild", + "WebP image" : "WebP-Bild", + "Digital raw image" : "Digitales raw-Bild", + "Windows Icon" : "Windows-Symbol", + "Email message" : "E-Mail-Nachricht", + "VCS/ICS calendar" : "VCS/ICS-Kalender", + "CSS stylesheet" : "CSS-Stylesheet", + "CSV document" : "CSV-Dokument", + "HTML document" : "HTML-Dokument", + "Markdown document" : "Markdown-Dokument", + "Org-mode file" : "Org-mode-Datei", + "Plain text document" : "Rohtext-Dokument", + "Rich Text document" : "Rich Text-Dokument", + "Electronic business card" : "Elektronische Visitenkarte", + "C++ source code" : "C++-Quellcode", + "LDIF address book" : "LDIF-Adressbuch", + "NFO document" : "NFO-Dokument", + "PHP source" : "PHP-Quelle", + "Python script" : "Python-Skript", + "ReStructuredText document" : "ReStructuredText-Dokument", + "3GPP multimedia file" : "3GPP Multimedia-Datei", + "MPEG video" : "MPEG-Video", + "DV video" : "DV-Video", + "MPEG-2 transport stream" : "MPEG-2-Transportstrom", + "MPEG-4 video" : "MPEG-4-Video", + "Ogg video" : "Ogg-Video", + "QuickTime video" : "QuickTime-Video", + "WebM video" : "WebM-Video", + "Flash video" : "Flash-Video", + "Matroska video" : "Matroska-Video", + "Windows Media video" : "Windows Media-Video", + "AVI video" : "AVI-Video", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "For more details see the {linkstart}documentation ↗{linkend}." : "Weitere Informationen finden Sie in der {linkstart}Dokumentation ↗{linkend}.", "unknown text" : "Unbekannter Text", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index 703f5cfdf60..755fb0536c7 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -78,8 +78,125 @@ "%s (incompatible)" : "%s (inkompatibel)", "The following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", + "Windows Command Script" : "Windows-Befehlsskript", + "Electronic book document" : "E-Book-Dokument", + "TrueType Font Collection" : "TrueType-Schriftartensammlung", + "Web Open Font Format" : "Web Open Font Format", + "GPX geographic data" : "GPX-Geodaten", + "Gzip archive" : "Gzip-Archiv", + "Adobe Illustrator document" : "Adobe Illustrator-Dokument", + "Java source code" : "Java Quellcode", + "JavaScript source code" : "JavaScript Quellcode", + "JSON document" : "JSON-Dokument", + "Microsoft Access database" : "Microsoft Access-Datenbank", + "Microsoft OneNote document" : "Microsoft OneNote-Dokument", + "Microsoft Word document" : "Microsoft Word-Dokument", "Unknown" : "Unbekannt", + "PDF document" : "PDF-Dokument", + "PostScript document" : "PostScript-Dokument", + "RSS summary" : "RSS-Zusammenfassung", + "Android package" : "Android-Paket", + "KML geographic data" : "KML-Geodaten", + "KML geographic compressed data" : "Komprimierte KML-Geodaten", + "Lotus Word Pro document" : "Lotus Word Pro-Dokument", + "Excel spreadsheet" : "Excel-Tabelle", + "Excel add-in" : "Excel-Add-in", + "Excel 2007 binary spreadsheet" : "Excel 2007 Binärtabelle", + "Excel spreadsheet template" : "Excel-Tabellenvorlage", + "Outlook Message" : "Outlook-Nachricht", + "PowerPoint presentation" : "PowerPoint-Präsentation", + "PowerPoint add-in" : "PowerPoint Add-in", + "PowerPoint presentation template" : "PowerPoint-Präsentationsvorlage", + "Word document" : "Word Dokument", + "ODF formula" : "ODF-Formel", + "ODG drawing" : "ODG-Zeichnung", + "ODG drawing (Flat XML)" : "ODG-Zeichnung (Flat XML)", + "ODG template" : "ODG-Vorlage", + "ODP presentation" : "ODP-Präsentation", + "ODP presentation (Flat XML)" : "ODP-Präsentation (Flat XML)", + "ODP template" : "ODP-Vorlage", + "ODS spreadsheet" : "ODS-Tabelle", + "ODS spreadsheet (Flat XML)" : "ODS-Tabelle (Flat XML)", + "ODS template" : "ODS-Vorlage", + "ODT document" : "ODT-Dokument", + "ODT document (Flat XML)" : "ODT-Dokument (Flat XML)", + "ODT template" : "ODT-Vorlage", + "PowerPoint 2007 presentation" : "PowerPoint 2007-Präsentation", + "PowerPoint 2007 show" : "PowerPoint 2007-Schau", + "PowerPoint 2007 presentation template" : "PowerPoint 2007-Präsentationsvorlage", + "Excel 2007 spreadsheet" : "Excel 2007-Tabelle", + "Excel 2007 spreadsheet template" : "Excel 2007-Tabellenvorlage", + "Word 2007 document" : "Word 2007-Dokument", + "Word 2007 document template" : "Word 2007-Dokumentenvorlage", + "Microsoft Visio document" : "Microsoft Visio-Dokument", + "WordPerfect document" : "WordPerfect-Dokument", + "7-zip archive" : "7-zip-Archiv", + "Blender scene" : "Blender-Szene", + "Bzip2 archive" : "Bzip2-Archiv", + "Debian package" : "Debian-Paket", + "FictionBook document" : "FictionBook-Dokument", + "Unknown font" : "Unbekannte Schriftart", + "Krita document" : "Krita-Dokument", + "Mobipocket e-book" : "Mobipocket E-Book", + "Windows Installer package" : "Windows-Installationspaket", + "Perl script" : "Perl-Skript", + "PHP script" : "PHP-Skript", + "Tar archive" : "Tar-Archiv", + "XML document" : "XML-Dokument", + "YAML document" : "YAML-Dokument", + "Zip archive" : "Zip-Archiv", + "Zstandard archive" : "Zstandard-Archiv", + "AAC audio" : "AAC-Audio", + "FLAC audio" : "FLAC-Audio", + "MPEG-4 audio" : "MPEG-4-Audio", + "MP3 audio" : "MP3-Audio", + "Ogg audio" : "Ogg-Audio", + "RIFF/WAVe standard Audio" : "RIFF/WAVe Standard-Audio", + "WebM audio" : "WebM-Audio", + "MP3 ShoutCast playlist" : "MP3 ShoutCast-Wiedergabeliste", + "Windows BMP image" : "Windows BMP-Bild", + "Better Portable Graphics image" : "Better Portable Graphics-Bild", + "EMF image" : "EMF-Bild", + "GIF image" : "GIF-Bild", + "HEIC image" : "HEIC-Bild", + "HEIF image" : "HEIF-Bild", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2-Bild", + "JPEG image" : "JPEG-Bild", "PNG image" : "PNG-Bild", + "SVG image" : "SVG-Bild", + "Truevision Targa image" : "Truevision Targa-Bild", + "TIFF image" : "TIFF-Bild", + "WebP image" : "WebP-Bild", + "Digital raw image" : "Digitales raw-Bild", + "Windows Icon" : "Windows-Symbol", + "Email message" : "E-Mail-Nachricht", + "VCS/ICS calendar" : "VCS/ICS-Kalender", + "CSS stylesheet" : "CSS-Stylesheet", + "CSV document" : "CSV-Dokument", + "HTML document" : "HTML-Dokument", + "Markdown document" : "Markdown-Dokument", + "Org-mode file" : "Org-mode-Datei", + "Plain text document" : "Rohtext-Dokument", + "Rich Text document" : "Rich Text-Dokument", + "Electronic business card" : "Elektronische Visitenkarte", + "C++ source code" : "C++-Quellcode", + "LDIF address book" : "LDIF-Adressbuch", + "NFO document" : "NFO-Dokument", + "PHP source" : "PHP-Quelle", + "Python script" : "Python-Skript", + "ReStructuredText document" : "ReStructuredText-Dokument", + "3GPP multimedia file" : "3GPP Multimedia-Datei", + "MPEG video" : "MPEG-Video", + "DV video" : "DV-Video", + "MPEG-2 transport stream" : "MPEG-2-Transportstrom", + "MPEG-4 video" : "MPEG-4-Video", + "Ogg video" : "Ogg-Video", + "QuickTime video" : "QuickTime-Video", + "WebM video" : "WebM-Video", + "Flash video" : "Flash-Video", + "Matroska video" : "Matroska-Video", + "Windows Media video" : "Windows Media-Video", + "AVI video" : "AVI-Video", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "For more details see the {linkstart}documentation ↗{linkend}." : "Weitere Informationen finden Sie in der {linkstart}Dokumentation ↗{linkend}.", "unknown text" : "Unbekannter Text", diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js index 67067611564..59587290fd1 100644 --- a/core/l10n/et_EE.js +++ b/core/l10n/et_EE.js @@ -80,7 +80,125 @@ OC.L10N.register( "%s (incompatible)" : "%s (pole ühilduv)", "The following apps have been disabled: %s" : "Järgmised rakendused lülitati välja: %s", "Already up to date" : "On juba ajakohane", + "Windows Command Script" : "Windows Commandi skript", + "Electronic book document" : "E-raamatu dokument", + "TrueType Font Collection" : "TrueType'i kirjatüüpide kogumik", + "Web Open Font Format" : "Web Open Font vorming", + "GPX geographic data" : "GPX-i geoandmed", + "Gzip archive" : "Gzipi arhiivifail", + "Adobe Illustrator document" : "Adobe Illustratori dokument", + "Java source code" : "Java lähtekood", + "JavaScript source code" : "JavaScripti lähtekood", + "JSON document" : "JSON-dokument", + "Microsoft Access database" : "Microsoft Accessi andmebaas", + "Microsoft OneNote document" : "Microsoft OneNote'i dokument", + "Microsoft Word document" : "Microsoft Wordi dokument", "Unknown" : "Teadmata", + "PDF document" : "PDF-dokument", + "PostScript document" : "PostScripti dokument", + "RSS summary" : "RSS-i kokkuvõte", + "Android package" : "Androidi pakett", + "KML geographic data" : "KML-i geoandmed", + "KML geographic compressed data" : "KML-i pakitud geoandmed", + "Lotus Word Pro document" : "Lotus Word Pro dokument", + "Excel spreadsheet" : "Exceli arvutustabel", + "Excel add-in" : "Exceli lisamoodul", + "Excel 2007 binary spreadsheet" : "Excel 2007 kompileeritud arvutustabel", + "Excel spreadsheet template" : "Exceli arvutustabeli mall", + "Outlook Message" : "Outlooki e-kiri", + "PowerPoint presentation" : "PowerPointi esitlus", + "PowerPoint add-in" : "PowerPointi lisamoodul", + "PowerPoint presentation template" : "PowerPointi esitluse mall", + "Word document" : "Wordi dokument", + "ODF formula" : "ODF-i valem", + "ODG drawing" : "ODG joonistus", + "ODG drawing (Flat XML)" : "ODG joonistus (Flat XML)", + "ODG template" : "ODG joonistuse mall", + "ODP presentation" : "ODP esitlus", + "ODP presentation (Flat XML)" : "ODP esitlus (Flat XML)", + "ODP template" : "ODP esitluse mall", + "ODS spreadsheet" : "ODS-i arvutustabel", + "ODS spreadsheet (Flat XML)" : "ODS-i arvutustabel (Flat XML)", + "ODS template" : "ODS-i arvutustabeli mall", + "ODT document" : "ODT dokument", + "ODT document (Flat XML)" : "ODT dokument (Flat XML)", + "ODT template" : "ODT dokumendi mall", + "PowerPoint 2007 presentation" : "PowerPoint 2007 esitlus", + "PowerPoint 2007 show" : "PowerPoint 2007 slaidiesitlus", + "PowerPoint 2007 presentation template" : "PowerPoint 2007 esitluse mall", + "Excel 2007 spreadsheet" : "Excel 2007 arvutustabel", + "Excel 2007 spreadsheet template" : "Excel 2007 arvutustabeli mall", + "Word 2007 document" : "Word 2007 dokument", + "Word 2007 document template" : "Word 2007 dokumendimall", + "Microsoft Visio document" : "Microsoft Visio dokument", + "WordPerfect document" : "WordPerfecti dokument", + "7-zip archive" : "7-zip arhiivifail", + "Blender scene" : "Blenderi stseen", + "Bzip2 archive" : "Bzip2 arhiivifail", + "Debian package" : "Debian pakett", + "FictionBook document" : "FictionBooki dokument", + "Unknown font" : "Tundmatu kirjatüüp", + "Krita document" : "Krita dokument", + "Mobipocket e-book" : "Mobipocketi e-raamat", + "Windows Installer package" : "Windows Installeri pakett", + "Perl script" : "Perli skript", + "PHP script" : "PHP skript", + "Tar archive" : "Tari arhiivifail", + "XML document" : "XML-dokument", + "YAML document" : "YAML-dokument", + "Zip archive" : "Zipi arhiivifail", + "Zstandard archive" : "Zstandardi arhiivifail", + "AAC audio" : "AAC helifail", + "FLAC audio" : "FLAC helifail", + "MPEG-4 audio" : "MPEG-4 helifail", + "MP3 audio" : "MP3 helifail", + "Ogg audio" : "Ogg helifail", + "RIFF/WAVe standard Audio" : "RIFF/WAVe standardne helifail", + "WebM audio" : "WebM helifail", + "MP3 ShoutCast playlist" : "MP3 ShoutCasti esitusloend", + "Windows BMP image" : "Windows BMP pilt", + "Better Portable Graphics image" : "Better Portable Graphicsi pilt", + "EMF image" : "EMF pilt", + "GIF image" : "GIF pilt", + "HEIC image" : "HEIC pilt", + "HEIF image" : "HEIF pilt", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2 pilt", + "JPEG image" : "JPEG pilt", + "PNG image" : "PNG pilt", + "SVG image" : "SVG pilt", + "Truevision Targa image" : "Truevision Targa pilt", + "TIFF image" : "TIFF pilt", + "WebP image" : "WebP pilt", + "Digital raw image" : "Digitaalne töötlemata pilt", + "Windows Icon" : "Windowsi ikoon", + "Email message" : "E-kiri", + "VCS/ICS calendar" : "VCS/ICS-i kalender", + "CSS stylesheet" : "CSS-i laaditabel", + "CSV document" : "CSV-dokument", + "HTML document" : "HTML-dokument", + "Markdown document" : "Markdowni dokument", + "Org-mode file" : "Org-mode'i fail", + "Plain text document" : "Vormindamata tekstidokument", + "Rich Text document" : "Vormindatud tekstidokument", + "Electronic business card" : "Elektrooniline visiitkaart", + "C++ source code" : "C++ lähtekood", + "LDIF address book" : "LDIF-i aaddressiraamat", + "NFO document" : "NFO-dokument", + "PHP source" : "PHP lähtekood", + "Python script" : "Pythoni skript", + "ReStructuredText document" : "ReStructuredTexti dokument", + "3GPP multimedia file" : "3GPP multimeediafail", + "MPEG video" : "MPEG video", + "DV video" : "DV video", + "MPEG-2 transport stream" : "MPEG-2 transport stream", + "MPEG-4 video" : "MPEG-4 video", + "Ogg video" : "Ogg video", + "QuickTime video" : "QuickTime video", + "WebM video" : "WebM video", + "Flash video" : "Flash video", + "Matroska video" : "Matroska video", + "Windows Media video" : "Windows Media video", + "AVI video" : "AVI video", "Error occurred while checking server setup" : "Serveri seadete kontrolimisel tekkis viga", "For more details see the {linkstart}documentation ↗{linkend}." : "Lisateavet leiad {linkstart}dokumentatsioonist ↗{linkend}.", "unknown text" : "tundmatu tekst", diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json index 20f8d914eec..a796bd741c3 100644 --- a/core/l10n/et_EE.json +++ b/core/l10n/et_EE.json @@ -78,7 +78,125 @@ "%s (incompatible)" : "%s (pole ühilduv)", "The following apps have been disabled: %s" : "Järgmised rakendused lülitati välja: %s", "Already up to date" : "On juba ajakohane", + "Windows Command Script" : "Windows Commandi skript", + "Electronic book document" : "E-raamatu dokument", + "TrueType Font Collection" : "TrueType'i kirjatüüpide kogumik", + "Web Open Font Format" : "Web Open Font vorming", + "GPX geographic data" : "GPX-i geoandmed", + "Gzip archive" : "Gzipi arhiivifail", + "Adobe Illustrator document" : "Adobe Illustratori dokument", + "Java source code" : "Java lähtekood", + "JavaScript source code" : "JavaScripti lähtekood", + "JSON document" : "JSON-dokument", + "Microsoft Access database" : "Microsoft Accessi andmebaas", + "Microsoft OneNote document" : "Microsoft OneNote'i dokument", + "Microsoft Word document" : "Microsoft Wordi dokument", "Unknown" : "Teadmata", + "PDF document" : "PDF-dokument", + "PostScript document" : "PostScripti dokument", + "RSS summary" : "RSS-i kokkuvõte", + "Android package" : "Androidi pakett", + "KML geographic data" : "KML-i geoandmed", + "KML geographic compressed data" : "KML-i pakitud geoandmed", + "Lotus Word Pro document" : "Lotus Word Pro dokument", + "Excel spreadsheet" : "Exceli arvutustabel", + "Excel add-in" : "Exceli lisamoodul", + "Excel 2007 binary spreadsheet" : "Excel 2007 kompileeritud arvutustabel", + "Excel spreadsheet template" : "Exceli arvutustabeli mall", + "Outlook Message" : "Outlooki e-kiri", + "PowerPoint presentation" : "PowerPointi esitlus", + "PowerPoint add-in" : "PowerPointi lisamoodul", + "PowerPoint presentation template" : "PowerPointi esitluse mall", + "Word document" : "Wordi dokument", + "ODF formula" : "ODF-i valem", + "ODG drawing" : "ODG joonistus", + "ODG drawing (Flat XML)" : "ODG joonistus (Flat XML)", + "ODG template" : "ODG joonistuse mall", + "ODP presentation" : "ODP esitlus", + "ODP presentation (Flat XML)" : "ODP esitlus (Flat XML)", + "ODP template" : "ODP esitluse mall", + "ODS spreadsheet" : "ODS-i arvutustabel", + "ODS spreadsheet (Flat XML)" : "ODS-i arvutustabel (Flat XML)", + "ODS template" : "ODS-i arvutustabeli mall", + "ODT document" : "ODT dokument", + "ODT document (Flat XML)" : "ODT dokument (Flat XML)", + "ODT template" : "ODT dokumendi mall", + "PowerPoint 2007 presentation" : "PowerPoint 2007 esitlus", + "PowerPoint 2007 show" : "PowerPoint 2007 slaidiesitlus", + "PowerPoint 2007 presentation template" : "PowerPoint 2007 esitluse mall", + "Excel 2007 spreadsheet" : "Excel 2007 arvutustabel", + "Excel 2007 spreadsheet template" : "Excel 2007 arvutustabeli mall", + "Word 2007 document" : "Word 2007 dokument", + "Word 2007 document template" : "Word 2007 dokumendimall", + "Microsoft Visio document" : "Microsoft Visio dokument", + "WordPerfect document" : "WordPerfecti dokument", + "7-zip archive" : "7-zip arhiivifail", + "Blender scene" : "Blenderi stseen", + "Bzip2 archive" : "Bzip2 arhiivifail", + "Debian package" : "Debian pakett", + "FictionBook document" : "FictionBooki dokument", + "Unknown font" : "Tundmatu kirjatüüp", + "Krita document" : "Krita dokument", + "Mobipocket e-book" : "Mobipocketi e-raamat", + "Windows Installer package" : "Windows Installeri pakett", + "Perl script" : "Perli skript", + "PHP script" : "PHP skript", + "Tar archive" : "Tari arhiivifail", + "XML document" : "XML-dokument", + "YAML document" : "YAML-dokument", + "Zip archive" : "Zipi arhiivifail", + "Zstandard archive" : "Zstandardi arhiivifail", + "AAC audio" : "AAC helifail", + "FLAC audio" : "FLAC helifail", + "MPEG-4 audio" : "MPEG-4 helifail", + "MP3 audio" : "MP3 helifail", + "Ogg audio" : "Ogg helifail", + "RIFF/WAVe standard Audio" : "RIFF/WAVe standardne helifail", + "WebM audio" : "WebM helifail", + "MP3 ShoutCast playlist" : "MP3 ShoutCasti esitusloend", + "Windows BMP image" : "Windows BMP pilt", + "Better Portable Graphics image" : "Better Portable Graphicsi pilt", + "EMF image" : "EMF pilt", + "GIF image" : "GIF pilt", + "HEIC image" : "HEIC pilt", + "HEIF image" : "HEIF pilt", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2 pilt", + "JPEG image" : "JPEG pilt", + "PNG image" : "PNG pilt", + "SVG image" : "SVG pilt", + "Truevision Targa image" : "Truevision Targa pilt", + "TIFF image" : "TIFF pilt", + "WebP image" : "WebP pilt", + "Digital raw image" : "Digitaalne töötlemata pilt", + "Windows Icon" : "Windowsi ikoon", + "Email message" : "E-kiri", + "VCS/ICS calendar" : "VCS/ICS-i kalender", + "CSS stylesheet" : "CSS-i laaditabel", + "CSV document" : "CSV-dokument", + "HTML document" : "HTML-dokument", + "Markdown document" : "Markdowni dokument", + "Org-mode file" : "Org-mode'i fail", + "Plain text document" : "Vormindamata tekstidokument", + "Rich Text document" : "Vormindatud tekstidokument", + "Electronic business card" : "Elektrooniline visiitkaart", + "C++ source code" : "C++ lähtekood", + "LDIF address book" : "LDIF-i aaddressiraamat", + "NFO document" : "NFO-dokument", + "PHP source" : "PHP lähtekood", + "Python script" : "Pythoni skript", + "ReStructuredText document" : "ReStructuredTexti dokument", + "3GPP multimedia file" : "3GPP multimeediafail", + "MPEG video" : "MPEG video", + "DV video" : "DV video", + "MPEG-2 transport stream" : "MPEG-2 transport stream", + "MPEG-4 video" : "MPEG-4 video", + "Ogg video" : "Ogg video", + "QuickTime video" : "QuickTime video", + "WebM video" : "WebM video", + "Flash video" : "Flash video", + "Matroska video" : "Matroska video", + "Windows Media video" : "Windows Media video", + "AVI video" : "AVI video", "Error occurred while checking server setup" : "Serveri seadete kontrolimisel tekkis viga", "For more details see the {linkstart}documentation ↗{linkend}." : "Lisateavet leiad {linkstart}dokumentatsioonist ↗{linkend}.", "unknown text" : "tundmatu tekst", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index 4e4a74837fa..d14ee4e5ec1 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -80,7 +80,125 @@ OC.L10N.register( "%s (incompatible)" : "%s (非互換)", "The following apps have been disabled: %s" : "次のアプリが無効になりました: %s ", "Already up to date" : "すべて更新済", + "Windows Command Script" : "Windowsコマンドスクリプト", + "Electronic book document" : "電子書籍ドキュメント", + "TrueType Font Collection" : "TrueTypeフォントコレクション", + "Web Open Font Format" : "Webオープンフォント形式", + "GPX geographic data" : "GPX地理データ", + "Gzip archive" : "Gzipアーカイブ", + "Adobe Illustrator document" : "Adobe Illustratorドキュメント", + "Java source code" : "Javaソースコード", + "JavaScript source code" : "JavaScriptソースコード", + "JSON document" : "JSONドキュメント", + "Microsoft Access database" : "Microsoft Accessデータベース", + "Microsoft OneNote document" : "Microsoft OneNoteドキュメント", + "Microsoft Word document" : "Microsoft Wordドキュメント", "Unknown" : "不明", + "PDF document" : "PDFドキュメント", + "PostScript document" : "PostScriptドキュメント", + "RSS summary" : "RSS概要", + "Android package" : "Androidパッケージ", + "KML geographic data" : "KML地理データ", + "KML geographic compressed data" : "KML地理圧縮データ", + "Lotus Word Pro document" : "Lotus Word Proドキュメント", + "Excel spreadsheet" : "Excelスプレッドシート", + "Excel add-in" : "Excelアドイン", + "Excel 2007 binary spreadsheet" : "Excel 2007バイナリスプレッドシート", + "Excel spreadsheet template" : "Excelスプレッドシートテンプレート", + "Outlook Message" : "Outlookメッセージ", + "PowerPoint presentation" : "PowerPointプレゼンテーション", + "PowerPoint add-in" : "PowerPointアドイン", + "PowerPoint presentation template" : "PowerPointプレゼンテーションテンプレート", + "Word document" : "Wordドキュメント", + "ODF formula" : "ODFフォーミュラ", + "ODG drawing" : "ODG図面", + "ODG drawing (Flat XML)" : "ODG 図面 (フラット XML)", + "ODG template" : "ODGテンプレート", + "ODP presentation" : "ODPプレゼンテーション", + "ODP presentation (Flat XML)" : "ODPプレゼンテーション (フラット XML)", + "ODP template" : "ODPテンプレート", + "ODS spreadsheet" : "ODSスプレッドシート", + "ODS spreadsheet (Flat XML)" : "ODSスプレッドシート (フラット XML)", + "ODS template" : "ODSテンプレート", + "ODT document" : "ODTドキュメント", + "ODT document (Flat XML)" : "ODTドキュメント (フラット XML)", + "ODT template" : "ODTテンプレート", + "PowerPoint 2007 presentation" : "PowerPoint 2007プレゼンテーション", + "PowerPoint 2007 show" : "PowerPoint 2007 表示", + "PowerPoint 2007 presentation template" : "PowerPoint 2007プレゼンテーションテンプレート", + "Excel 2007 spreadsheet" : "Excel 2007スプレッドシート", + "Excel 2007 spreadsheet template" : "Excel 2007スプレッドシートテンプレート", + "Word 2007 document" : "Word 2007ドキュメント", + "Word 2007 document template" : "Word 2007ドキュメントテンプレート", + "Microsoft Visio document" : "Microsoft Visioドキュメント", + "WordPerfect document" : "WordPerfectドキュメント", + "7-zip archive" : "7-zipアーカイブ", + "Blender scene" : "Blenderシーン", + "Bzip2 archive" : "Bzip2アーカイブ", + "Debian package" : "Debianパッケージ", + "FictionBook document" : "FictionBookドキュメント", + "Unknown font" : "不明なフォント", + "Krita document" : "Kritaドキュメント", + "Mobipocket e-book" : "Mobipocket 電子書籍", + "Windows Installer package" : "Windowsインストーラーパッケージ", + "Perl script" : "Perlスクリプト", + "PHP script" : "PHPスクリプト", + "Tar archive" : "Tarアーカイブ", + "XML document" : "XMLドキュメント", + "YAML document" : "YAMLドキュメント", + "Zip archive" : "Zipアーカイブ", + "Zstandard archive" : "Zstandardアーカイブ", + "AAC audio" : "AAC音声", + "FLAC audio" : "FLAC音声", + "MPEG-4 audio" : "MPEG-4音声", + "MP3 audio" : "MP3音声", + "Ogg audio" : "Ogg音声", + "RIFF/WAVe standard Audio" : "RIFF/WAVeスタンダード音声", + "WebM audio" : "WebM音声", + "MP3 ShoutCast playlist" : "MP3 ShoutCastプレイリスト", + "Windows BMP image" : "Windows BMP画像", + "Better Portable Graphics image" : "Better Portable Graphics画像", + "EMF image" : "EMF画像", + "GIF image" : "GIF画像", + "HEIC image" : "HEIC画像", + "HEIF image" : "HEIF画像", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2画像", + "JPEG image" : "JPEG画像", + "PNG image" : "PNG画像", + "SVG image" : "SVG画像", + "Truevision Targa image" : "Truevision Targa画像", + "TIFF image" : "TIFF画像", + "WebP image" : "WebP画像", + "Digital raw image" : "Digital raw画像", + "Windows Icon" : "Windowsアイコン", + "Email message" : "メールメッセージ", + "VCS/ICS calendar" : "VCS/ICSカレンダー", + "CSS stylesheet" : "CSSスタイルシート", + "CSV document" : "CSVドキュメント", + "HTML document" : "HTMLドキュメント", + "Markdown document" : "Markdownドキュメント", + "Org-mode file" : "Org-modeファイル", + "Plain text document" : "プレーンテキストドキュメント", + "Rich Text document" : "リッチテキストドキュメント", + "Electronic business card" : "電子ビジネスカード", + "C++ source code" : "C++ソースコード", + "LDIF address book" : "LDIFアドレス帳", + "NFO document" : "NFOドキュメント", + "PHP source" : "PHPソース", + "Python script" : "Pythonスクリプト", + "ReStructuredText document" : "ReStructuredTextドキュメント", + "3GPP multimedia file" : "3GPPマルチメディアファイル", + "MPEG video" : "MPEGビデオ", + "DV video" : "DVビデオ", + "MPEG-2 transport stream" : "MPEG-2トランスポートストリーム", + "MPEG-4 video" : "MPEG-4ビデオ", + "Ogg video" : "Oggビデオ", + "QuickTime video" : "QuickTimeビデオ", + "WebM video" : "WebMビデオ", + "Flash video" : "Flashビデオ", + "Matroska video" : "Matroskaビデオ", + "Windows Media video" : "Windows Mediaビデオ", + "AVI video" : "AVI ビデオ", "Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました", "For more details see the {linkstart}documentation ↗{linkend}." : "詳細については、{linkstart}ドキュメント↗{linkend}を参照してください。", "unknown text" : "不明なテキスト", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index be0d6b0b8f4..a3aba7d42f5 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -78,7 +78,125 @@ "%s (incompatible)" : "%s (非互換)", "The following apps have been disabled: %s" : "次のアプリが無効になりました: %s ", "Already up to date" : "すべて更新済", + "Windows Command Script" : "Windowsコマンドスクリプト", + "Electronic book document" : "電子書籍ドキュメント", + "TrueType Font Collection" : "TrueTypeフォントコレクション", + "Web Open Font Format" : "Webオープンフォント形式", + "GPX geographic data" : "GPX地理データ", + "Gzip archive" : "Gzipアーカイブ", + "Adobe Illustrator document" : "Adobe Illustratorドキュメント", + "Java source code" : "Javaソースコード", + "JavaScript source code" : "JavaScriptソースコード", + "JSON document" : "JSONドキュメント", + "Microsoft Access database" : "Microsoft Accessデータベース", + "Microsoft OneNote document" : "Microsoft OneNoteドキュメント", + "Microsoft Word document" : "Microsoft Wordドキュメント", "Unknown" : "不明", + "PDF document" : "PDFドキュメント", + "PostScript document" : "PostScriptドキュメント", + "RSS summary" : "RSS概要", + "Android package" : "Androidパッケージ", + "KML geographic data" : "KML地理データ", + "KML geographic compressed data" : "KML地理圧縮データ", + "Lotus Word Pro document" : "Lotus Word Proドキュメント", + "Excel spreadsheet" : "Excelスプレッドシート", + "Excel add-in" : "Excelアドイン", + "Excel 2007 binary spreadsheet" : "Excel 2007バイナリスプレッドシート", + "Excel spreadsheet template" : "Excelスプレッドシートテンプレート", + "Outlook Message" : "Outlookメッセージ", + "PowerPoint presentation" : "PowerPointプレゼンテーション", + "PowerPoint add-in" : "PowerPointアドイン", + "PowerPoint presentation template" : "PowerPointプレゼンテーションテンプレート", + "Word document" : "Wordドキュメント", + "ODF formula" : "ODFフォーミュラ", + "ODG drawing" : "ODG図面", + "ODG drawing (Flat XML)" : "ODG 図面 (フラット XML)", + "ODG template" : "ODGテンプレート", + "ODP presentation" : "ODPプレゼンテーション", + "ODP presentation (Flat XML)" : "ODPプレゼンテーション (フラット XML)", + "ODP template" : "ODPテンプレート", + "ODS spreadsheet" : "ODSスプレッドシート", + "ODS spreadsheet (Flat XML)" : "ODSスプレッドシート (フラット XML)", + "ODS template" : "ODSテンプレート", + "ODT document" : "ODTドキュメント", + "ODT document (Flat XML)" : "ODTドキュメント (フラット XML)", + "ODT template" : "ODTテンプレート", + "PowerPoint 2007 presentation" : "PowerPoint 2007プレゼンテーション", + "PowerPoint 2007 show" : "PowerPoint 2007 表示", + "PowerPoint 2007 presentation template" : "PowerPoint 2007プレゼンテーションテンプレート", + "Excel 2007 spreadsheet" : "Excel 2007スプレッドシート", + "Excel 2007 spreadsheet template" : "Excel 2007スプレッドシートテンプレート", + "Word 2007 document" : "Word 2007ドキュメント", + "Word 2007 document template" : "Word 2007ドキュメントテンプレート", + "Microsoft Visio document" : "Microsoft Visioドキュメント", + "WordPerfect document" : "WordPerfectドキュメント", + "7-zip archive" : "7-zipアーカイブ", + "Blender scene" : "Blenderシーン", + "Bzip2 archive" : "Bzip2アーカイブ", + "Debian package" : "Debianパッケージ", + "FictionBook document" : "FictionBookドキュメント", + "Unknown font" : "不明なフォント", + "Krita document" : "Kritaドキュメント", + "Mobipocket e-book" : "Mobipocket 電子書籍", + "Windows Installer package" : "Windowsインストーラーパッケージ", + "Perl script" : "Perlスクリプト", + "PHP script" : "PHPスクリプト", + "Tar archive" : "Tarアーカイブ", + "XML document" : "XMLドキュメント", + "YAML document" : "YAMLドキュメント", + "Zip archive" : "Zipアーカイブ", + "Zstandard archive" : "Zstandardアーカイブ", + "AAC audio" : "AAC音声", + "FLAC audio" : "FLAC音声", + "MPEG-4 audio" : "MPEG-4音声", + "MP3 audio" : "MP3音声", + "Ogg audio" : "Ogg音声", + "RIFF/WAVe standard Audio" : "RIFF/WAVeスタンダード音声", + "WebM audio" : "WebM音声", + "MP3 ShoutCast playlist" : "MP3 ShoutCastプレイリスト", + "Windows BMP image" : "Windows BMP画像", + "Better Portable Graphics image" : "Better Portable Graphics画像", + "EMF image" : "EMF画像", + "GIF image" : "GIF画像", + "HEIC image" : "HEIC画像", + "HEIF image" : "HEIF画像", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2画像", + "JPEG image" : "JPEG画像", + "PNG image" : "PNG画像", + "SVG image" : "SVG画像", + "Truevision Targa image" : "Truevision Targa画像", + "TIFF image" : "TIFF画像", + "WebP image" : "WebP画像", + "Digital raw image" : "Digital raw画像", + "Windows Icon" : "Windowsアイコン", + "Email message" : "メールメッセージ", + "VCS/ICS calendar" : "VCS/ICSカレンダー", + "CSS stylesheet" : "CSSスタイルシート", + "CSV document" : "CSVドキュメント", + "HTML document" : "HTMLドキュメント", + "Markdown document" : "Markdownドキュメント", + "Org-mode file" : "Org-modeファイル", + "Plain text document" : "プレーンテキストドキュメント", + "Rich Text document" : "リッチテキストドキュメント", + "Electronic business card" : "電子ビジネスカード", + "C++ source code" : "C++ソースコード", + "LDIF address book" : "LDIFアドレス帳", + "NFO document" : "NFOドキュメント", + "PHP source" : "PHPソース", + "Python script" : "Pythonスクリプト", + "ReStructuredText document" : "ReStructuredTextドキュメント", + "3GPP multimedia file" : "3GPPマルチメディアファイル", + "MPEG video" : "MPEGビデオ", + "DV video" : "DVビデオ", + "MPEG-2 transport stream" : "MPEG-2トランスポートストリーム", + "MPEG-4 video" : "MPEG-4ビデオ", + "Ogg video" : "Oggビデオ", + "QuickTime video" : "QuickTimeビデオ", + "WebM video" : "WebMビデオ", + "Flash video" : "Flashビデオ", + "Matroska video" : "Matroskaビデオ", + "Windows Media video" : "Windows Mediaビデオ", + "AVI video" : "AVI ビデオ", "Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました", "For more details see the {linkstart}documentation ↗{linkend}." : "詳細については、{linkstart}ドキュメント↗{linkend}を参照してください。", "unknown text" : "不明なテキスト", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index 73879f8d07c..97590c13b40 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -80,8 +80,124 @@ OC.L10N.register( "%s (incompatible)" : "%s (incompatível)", "The following apps have been disabled: %s" : "Os seguintes aplicativos foram desativados: %s", "Already up to date" : "Já está atualizado", + "Windows Command Script" : "Script de Comando do Windows", + "Electronic book document" : "Documento de livro eletrônico", + "TrueType Font Collection" : "Coleção de Fontes TrueType", + "Web Open Font Format" : "Formato de Fonte Aberta da Web", + "GPX geographic data" : "Dados geográficos GPX", + "Gzip archive" : "Arquivo gzip", + "Adobe Illustrator document" : "Documento do Adobe Illustrator", + "Java source code" : "Código-fonte Java", + "JavaScript source code" : "Código-fonte JavaScript", + "JSON document" : "Documento JSON", + "Microsoft Access database" : "Banco de dados do Microsoft Access", + "Microsoft OneNote document" : "Documento do Microsoft OneNote", + "Microsoft Word document" : "Documento do Microsoft Word", "Unknown" : "Desconhecida", + "PDF document" : "Documento PDF", + "PostScript document" : "Documento PostScript", + "RSS summary" : "Resumo RSS", + "Android package" : "Pacote para Android", + "KML geographic data" : "Dados geográficos KML", + "KML geographic compressed data" : "Dados comprimidos geográficos KML", + "Lotus Word Pro document" : "Documento do Lotus Word Pro", + "Excel spreadsheet" : "Planilha do Excel", + "Excel add-in" : "Suplemento do Excel", + "Excel 2007 binary spreadsheet" : "Planilha binária do Excel 2007", + "Excel spreadsheet template" : "Modelo de planilha do Excel", + "Outlook Message" : "Mensagem do Outlook", + "PowerPoint presentation" : "Apresentação do PowerPoint", + "PowerPoint add-in" : "Suplemento do PowerPoint", + "PowerPoint presentation template" : "Modelo de apresentação do PowerPoint", + "Word document" : "Documento do Word", + "ODF formula" : "Fórmula ODF", + "ODG drawing" : "Desenho ODG", + "ODG drawing (Flat XML)" : "Desenho ODG (XML plano)", + "ODG template" : "Modelo ODG", + "ODP presentation" : "Apresentação ODP", + "ODP presentation (Flat XML)" : "Apresentação ODP (XML plano)", + "ODP template" : "Modelo ODP", + "ODS spreadsheet" : "Planilha ODS", + "ODS spreadsheet (Flat XML)" : "Planilha ODS (XML plano)", + "ODS template" : "Modelo ODS", + "ODT document" : "Documento ODT", + "ODT document (Flat XML)" : "Documento ODT (XML plano)", + "ODT template" : "Modelo ODT", + "PowerPoint 2007 presentation" : "Apresentação do Powerpoint 2007", + "PowerPoint 2007 show" : "Show do PowerPoint 2007", + "PowerPoint 2007 presentation template" : "Modelo de apresentação do PowerPoint 2007", + "Excel 2007 spreadsheet" : "Planilha do Excel 2007", + "Excel 2007 spreadsheet template" : "Modelo de planilha do Excel 2007", + "Word 2007 document" : "Documento do Word 2007", + "Word 2007 document template" : "Modelo de documento do Word 2007", + "Microsoft Visio document" : "Documento do Microsoft Visio", + "WordPerfect document" : "Documento do WordPerfect", + "7-zip archive" : "Arquivo 7-zip", + "Blender scene" : "Cena do Blender", + "Bzip2 archive" : "Arquivo bzip2", + "Debian package" : "Pacote do Debian", + "FictionBook document" : "Documento do FictionBook", + "Unknown font" : "Fonte desconhecida", + "Krita document" : "Documento do Krita", + "Mobipocket e-book" : "Livro eletrônico Mobipocket", + "Windows Installer package" : "Pacote do Windows Installer", + "Perl script" : "Script Perl", + "PHP script" : "Script PHP", + "Tar archive" : "Arquivo tar", + "XML document" : "Documento XML", + "YAML document" : "Documento YAML", + "Zip archive" : "Arquivo zip", + "Zstandard archive" : "Arquivo zstandard", + "AAC audio" : "Áudio AAC", + "FLAC audio" : "Áudio FLAC", + "MPEG-4 audio" : "Áudio MPEG-4", + "MP3 audio" : "Áudio MP3", + "Ogg audio" : "Áudio ogg", + "RIFF/WAVe standard Audio" : "Áudio padrão RIFF/WAVe", + "WebM audio" : "Áudio WebM", + "MP3 ShoutCast playlist" : "Lista de reprodução do MP3 ShoutCast", + "Windows BMP image" : "Imagem BMP do Windows", + "Better Portable Graphics image" : "Imagem Better Portable Graphics", + "EMF image" : "Imagem EMF", + "GIF image" : "Imagem GIF", + "HEIC image" : "Imagem HEIC", + "HEIF image" : "Imagem HEIF", + "JPEG-2000 JP2 image" : "Imagem JPEG-2000 JP2", + "JPEG image" : "Imagem JPEG", "PNG image" : "Imagem PNG", + "SVG image" : "Imagem SVG", + "Truevision Targa image" : "Imagem Truevision Targa", + "TIFF image" : "Imagem TIFF", + "WebP image" : "Imagem WebP", + "Digital raw image" : "Imagem digital bruta", + "Windows Icon" : "Ícone do Windows", + "Email message" : "Mensagem de e-mail", + "VCS/ICS calendar" : "Calendário VCS/ICS", + "CSS stylesheet" : "Folha de estilo CSS", + "CSV document" : "Documento CSV", + "HTML document" : "Documento HTML", + "Markdown document" : "Documento Markdown", + "Plain text document" : "Documento de texto simples", + "Rich Text document" : "Documento Rich Text", + "Electronic business card" : "Cartão de visita eletrônico", + "C++ source code" : "Código-fonte C++", + "LDIF address book" : "Catálogo de endereços LDIF", + "NFO document" : "Documento NFO", + "PHP source" : "Código-fonte PHP", + "Python script" : "Script Python", + "ReStructuredText document" : "Documento ReStructuredText", + "3GPP multimedia file" : "Arquivo multimídia 3GPP", + "MPEG video" : "Vídeo MPEG", + "DV video" : "Vídeo DV", + "MPEG-2 transport stream" : "Fluxo de transporte MPEG-2", + "MPEG-4 video" : "Vídeo MPEG-4", + "Ogg video" : "Vídeo ogg", + "QuickTime video" : "Vídeo QuickTime", + "WebM video" : "Vídeo WebM", + "Flash video" : "Vídeo Flash", + "Matroska video" : "Vídeo Matroska", + "Windows Media video" : "Vídeo Windows Media", + "AVI video" : "Vídeo AVI", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", "For more details see the {linkstart}documentation ↗{linkend}." : "Para obter mais detalhes, consulte a {linkstart}documentação ↗{linkend}.", "unknown text" : "texto desconhecido", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index a8bf2767a55..3b573b0a9d9 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -78,8 +78,124 @@ "%s (incompatible)" : "%s (incompatível)", "The following apps have been disabled: %s" : "Os seguintes aplicativos foram desativados: %s", "Already up to date" : "Já está atualizado", + "Windows Command Script" : "Script de Comando do Windows", + "Electronic book document" : "Documento de livro eletrônico", + "TrueType Font Collection" : "Coleção de Fontes TrueType", + "Web Open Font Format" : "Formato de Fonte Aberta da Web", + "GPX geographic data" : "Dados geográficos GPX", + "Gzip archive" : "Arquivo gzip", + "Adobe Illustrator document" : "Documento do Adobe Illustrator", + "Java source code" : "Código-fonte Java", + "JavaScript source code" : "Código-fonte JavaScript", + "JSON document" : "Documento JSON", + "Microsoft Access database" : "Banco de dados do Microsoft Access", + "Microsoft OneNote document" : "Documento do Microsoft OneNote", + "Microsoft Word document" : "Documento do Microsoft Word", "Unknown" : "Desconhecida", + "PDF document" : "Documento PDF", + "PostScript document" : "Documento PostScript", + "RSS summary" : "Resumo RSS", + "Android package" : "Pacote para Android", + "KML geographic data" : "Dados geográficos KML", + "KML geographic compressed data" : "Dados comprimidos geográficos KML", + "Lotus Word Pro document" : "Documento do Lotus Word Pro", + "Excel spreadsheet" : "Planilha do Excel", + "Excel add-in" : "Suplemento do Excel", + "Excel 2007 binary spreadsheet" : "Planilha binária do Excel 2007", + "Excel spreadsheet template" : "Modelo de planilha do Excel", + "Outlook Message" : "Mensagem do Outlook", + "PowerPoint presentation" : "Apresentação do PowerPoint", + "PowerPoint add-in" : "Suplemento do PowerPoint", + "PowerPoint presentation template" : "Modelo de apresentação do PowerPoint", + "Word document" : "Documento do Word", + "ODF formula" : "Fórmula ODF", + "ODG drawing" : "Desenho ODG", + "ODG drawing (Flat XML)" : "Desenho ODG (XML plano)", + "ODG template" : "Modelo ODG", + "ODP presentation" : "Apresentação ODP", + "ODP presentation (Flat XML)" : "Apresentação ODP (XML plano)", + "ODP template" : "Modelo ODP", + "ODS spreadsheet" : "Planilha ODS", + "ODS spreadsheet (Flat XML)" : "Planilha ODS (XML plano)", + "ODS template" : "Modelo ODS", + "ODT document" : "Documento ODT", + "ODT document (Flat XML)" : "Documento ODT (XML plano)", + "ODT template" : "Modelo ODT", + "PowerPoint 2007 presentation" : "Apresentação do Powerpoint 2007", + "PowerPoint 2007 show" : "Show do PowerPoint 2007", + "PowerPoint 2007 presentation template" : "Modelo de apresentação do PowerPoint 2007", + "Excel 2007 spreadsheet" : "Planilha do Excel 2007", + "Excel 2007 spreadsheet template" : "Modelo de planilha do Excel 2007", + "Word 2007 document" : "Documento do Word 2007", + "Word 2007 document template" : "Modelo de documento do Word 2007", + "Microsoft Visio document" : "Documento do Microsoft Visio", + "WordPerfect document" : "Documento do WordPerfect", + "7-zip archive" : "Arquivo 7-zip", + "Blender scene" : "Cena do Blender", + "Bzip2 archive" : "Arquivo bzip2", + "Debian package" : "Pacote do Debian", + "FictionBook document" : "Documento do FictionBook", + "Unknown font" : "Fonte desconhecida", + "Krita document" : "Documento do Krita", + "Mobipocket e-book" : "Livro eletrônico Mobipocket", + "Windows Installer package" : "Pacote do Windows Installer", + "Perl script" : "Script Perl", + "PHP script" : "Script PHP", + "Tar archive" : "Arquivo tar", + "XML document" : "Documento XML", + "YAML document" : "Documento YAML", + "Zip archive" : "Arquivo zip", + "Zstandard archive" : "Arquivo zstandard", + "AAC audio" : "Áudio AAC", + "FLAC audio" : "Áudio FLAC", + "MPEG-4 audio" : "Áudio MPEG-4", + "MP3 audio" : "Áudio MP3", + "Ogg audio" : "Áudio ogg", + "RIFF/WAVe standard Audio" : "Áudio padrão RIFF/WAVe", + "WebM audio" : "Áudio WebM", + "MP3 ShoutCast playlist" : "Lista de reprodução do MP3 ShoutCast", + "Windows BMP image" : "Imagem BMP do Windows", + "Better Portable Graphics image" : "Imagem Better Portable Graphics", + "EMF image" : "Imagem EMF", + "GIF image" : "Imagem GIF", + "HEIC image" : "Imagem HEIC", + "HEIF image" : "Imagem HEIF", + "JPEG-2000 JP2 image" : "Imagem JPEG-2000 JP2", + "JPEG image" : "Imagem JPEG", "PNG image" : "Imagem PNG", + "SVG image" : "Imagem SVG", + "Truevision Targa image" : "Imagem Truevision Targa", + "TIFF image" : "Imagem TIFF", + "WebP image" : "Imagem WebP", + "Digital raw image" : "Imagem digital bruta", + "Windows Icon" : "Ícone do Windows", + "Email message" : "Mensagem de e-mail", + "VCS/ICS calendar" : "Calendário VCS/ICS", + "CSS stylesheet" : "Folha de estilo CSS", + "CSV document" : "Documento CSV", + "HTML document" : "Documento HTML", + "Markdown document" : "Documento Markdown", + "Plain text document" : "Documento de texto simples", + "Rich Text document" : "Documento Rich Text", + "Electronic business card" : "Cartão de visita eletrônico", + "C++ source code" : "Código-fonte C++", + "LDIF address book" : "Catálogo de endereços LDIF", + "NFO document" : "Documento NFO", + "PHP source" : "Código-fonte PHP", + "Python script" : "Script Python", + "ReStructuredText document" : "Documento ReStructuredText", + "3GPP multimedia file" : "Arquivo multimídia 3GPP", + "MPEG video" : "Vídeo MPEG", + "DV video" : "Vídeo DV", + "MPEG-2 transport stream" : "Fluxo de transporte MPEG-2", + "MPEG-4 video" : "Vídeo MPEG-4", + "Ogg video" : "Vídeo ogg", + "QuickTime video" : "Vídeo QuickTime", + "WebM video" : "Vídeo WebM", + "Flash video" : "Vídeo Flash", + "Matroska video" : "Vídeo Matroska", + "Windows Media video" : "Vídeo Windows Media", + "AVI video" : "Vídeo AVI", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", "For more details see the {linkstart}documentation ↗{linkend}." : "Para obter mais detalhes, consulte a {linkstart}documentação ↗{linkend}.", "unknown text" : "texto desconhecido", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index 16ce12acafd..9755d0fe1ae 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -17,7 +17,7 @@ OC.L10N.register( "No image or file provided" : "没有提供图片或文件", "Unknown filetype" : "未知的文件类型", "An error occurred. Please contact your admin." : "发生了错误,请联系管理员。", - "Invalid image" : "无效的图像", + "Invalid image" : "无效的图片", "No temporary profile picture available, try again" : "没有临时个人页图片可用,请重试", "No crop data provided" : "没有提供剪裁数据", "No valid crop data provided" : "没有提供有效的裁剪数据", @@ -47,8 +47,8 @@ OC.L10N.register( "Bad request" : "请求错误", "Requested task type does not exist" : "请求的任务类型不存在", "Necessary language model provider is not available" : "无必要的语言模型提供程序", - "No text to image provider is available" : "没有可用的文字转图像提供者", - "Image not found" : "未找到图像", + "No text to image provider is available" : "没有可用的文字转图片提供者", + "Image not found" : "未找到图片", "No translation provider available" : "没有可用的翻译提供程序", "Could not detect language" : "无法检测语言", "Unable to translate" : "无法翻译", @@ -80,8 +80,125 @@ OC.L10N.register( "%s (incompatible)" : "%s (不兼容)", "The following apps have been disabled: %s" : "以下应用已被禁用:%s", "Already up to date" : "已经是最新版本", + "Windows Command Script" : "Windows 命令脚本", + "Electronic book document" : "电子书文档", + "TrueType Font Collection" : "TrueType 字体集", + "Web Open Font Format" : "Web 开放字体格式", + "GPX geographic data" : "GPX 地理数据", + "Gzip archive" : "Gzip 归档文件", + "Adobe Illustrator document" : "Adobe Illustrator 文档", + "Java source code" : "Java 源代码", + "JavaScript source code" : "JavaScript 源代码", + "JSON document" : "JSON 文档", + "Microsoft Access database" : "Microsoft Access 数据库", + "Microsoft OneNote document" : "Microsoft OneNote 文档", + "Microsoft Word document" : "Microsoft Word 文档", "Unknown" : "未知", + "PDF document" : "PDF 文档", + "PostScript document" : "PostScript 文档", + "RSS summary" : "RSS 摘要", + "Android package" : "Android 软件包", + "KML geographic data" : "KML 地理数据", + "KML geographic compressed data" : "KML 地理压缩数据", + "Lotus Word Pro document" : "Lotus Word Pro document文档", + "Excel spreadsheet" : "Excel 电子表格", + "Excel add-in" : "Excel 插件", + "Excel 2007 binary spreadsheet" : "Excel 2007 二进制电子表格", + "Excel spreadsheet template" : "Excel 电子表格模板", + "Outlook Message" : "Outlook 邮件", + "PowerPoint presentation" : "PowerPoint 演示文稿", + "PowerPoint add-in" : "PowerPoint 插件", + "PowerPoint presentation template" : "PowerPoint 演示文稿模板", + "Word document" : "Word 文档", + "ODF formula" : "ODF 公式", + "ODG drawing" : "ODG 绘图", + "ODG drawing (Flat XML)" : "ODG 绘图(Flat XML)", + "ODG template" : "ODG 模板", + "ODP presentation" : "ODP 演示文稿", + "ODP presentation (Flat XML)" : "ODP 演示文稿(Flat XML)", + "ODP template" : "ODP 模板", + "ODS spreadsheet" : "ODS 电子表格", + "ODS spreadsheet (Flat XML)" : "ODS 电子表格(Flat XML)", + "ODS template" : "ODS 模板", + "ODT document" : "ODT 文档", + "ODT document (Flat XML)" : "ODT 文档(Flat XML)", + "ODT template" : "ODT 模板", + "PowerPoint 2007 presentation" : "PowerPoint 2007 演示文稿", + "PowerPoint 2007 show" : "PowerPoint 2007 放映", + "PowerPoint 2007 presentation template" : "PowerPoint 2007 演示文稿模板", + "Excel 2007 spreadsheet" : "Excel 2007 电子表格", + "Excel 2007 spreadsheet template" : "Excel 2007 电子表格模板", + "Word 2007 document" : "Word 2007 文档", + "Word 2007 document template" : "Word 2007 文档模板", + "Microsoft Visio document" : "Microsoft Visio 文档", + "WordPerfect document" : "WordPerfect 文档", + "7-zip archive" : "7-zip 归档文件", + "Blender scene" : "Blender 场景", + "Bzip2 archive" : "Bzip2 归档文件", + "Debian package" : "Debian 软件包", + "FictionBook document" : "FictionBook 文档", + "Unknown font" : "未知字体", + "Krita document" : "Krita 文档", + "Mobipocket e-book" : "Mobipocket 电子书", + "Windows Installer package" : "Windows Installer 安装包", + "Perl script" : "Perl 脚本", + "PHP script" : "PHP 脚本", + "Tar archive" : "Tar 归档文件", + "XML document" : "XML 文档", + "YAML document" : "YAML 文档", + "Zip archive" : "Zip 归档文件", + "Zstandard archive" : "Zstandard 归档文件", + "AAC audio" : "AAC 音频", + "FLAC audio" : "FLAC 音频", + "MPEG-4 audio" : "MPEG-4 音频", + "MP3 audio" : "MP3 音频", + "Ogg audio" : "Ogg 音频", + "RIFF/WAVe standard Audio" : "RIFF/WAVe 标准音频", + "WebM audio" : "WebM 音频", + "MP3 ShoutCast playlist" : "MP3 ShoutCast 播放列表", + "Windows BMP image" : "Windows BMP 图片", + "Better Portable Graphics image" : "Better Portable Graphics 图片", + "EMF image" : "EMF 图片", + "GIF image" : "GIF 图片", + "HEIC image" : "HEIC 图片", + "HEIF image" : "HEIF 图片", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2 图片", + "JPEG image" : "JPEG 图片", "PNG image" : "PNG 图片", + "SVG image" : "SVG 图片", + "Truevision Targa image" : "Truevision Targa 图片", + "TIFF image" : "TIFF 图片", + "WebP image" : "WebP 图片", + "Digital raw image" : "数字原始图像", + "Windows Icon" : "Windows 图标", + "Email message" : "电子邮件消息", + "VCS/ICS calendar" : "VCS/ICS 日历", + "CSS stylesheet" : "CSS 样式表", + "CSV document" : "CSV 文档", + "HTML document" : "HTML 文档", + "Markdown document" : "Markdown 文档", + "Org-mode file" : "Org-mode 文件", + "Plain text document" : "纯文本文档", + "Rich Text document" : "富文本文档", + "Electronic business card" : "电子名片", + "C++ source code" : "C++ 源代码", + "LDIF address book" : "LDIF 通讯录", + "NFO document" : "NFO 文档", + "PHP source" : "PHP 源代码", + "Python script" : "Python 脚本", + "ReStructuredText document" : "ReStructuredText 文档", + "3GPP multimedia file" : "3GPP 多媒体文件", + "MPEG video" : "MPEG 视频", + "DV video" : "DV 视频", + "MPEG-2 transport stream" : "MPEG-2 传输流", + "MPEG-4 video" : "MPEG-4 视频", + "Ogg video" : "Ogg 视频", + "QuickTime video" : "QuickTime 视频", + "WebM video" : "WebM 视频", + "Flash video" : "Flash 视频", + "Matroska video" : "Matroska 视频", + "Windows Media video" : "Windows 媒体视频", + "AVI video" : "AVI 视频", "Error occurred while checking server setup" : "检查服务器设置时出错", "For more details see the {linkstart}documentation ↗{linkend}." : "了解更多详情,请参见{linkstart}文档 ↗{linkend}。", "unknown text" : "未知文字", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index aba6c5c4c4a..6a2df414bae 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -15,7 +15,7 @@ "No image or file provided" : "没有提供图片或文件", "Unknown filetype" : "未知的文件类型", "An error occurred. Please contact your admin." : "发生了错误,请联系管理员。", - "Invalid image" : "无效的图像", + "Invalid image" : "无效的图片", "No temporary profile picture available, try again" : "没有临时个人页图片可用,请重试", "No crop data provided" : "没有提供剪裁数据", "No valid crop data provided" : "没有提供有效的裁剪数据", @@ -45,8 +45,8 @@ "Bad request" : "请求错误", "Requested task type does not exist" : "请求的任务类型不存在", "Necessary language model provider is not available" : "无必要的语言模型提供程序", - "No text to image provider is available" : "没有可用的文字转图像提供者", - "Image not found" : "未找到图像", + "No text to image provider is available" : "没有可用的文字转图片提供者", + "Image not found" : "未找到图片", "No translation provider available" : "没有可用的翻译提供程序", "Could not detect language" : "无法检测语言", "Unable to translate" : "无法翻译", @@ -78,8 +78,125 @@ "%s (incompatible)" : "%s (不兼容)", "The following apps have been disabled: %s" : "以下应用已被禁用:%s", "Already up to date" : "已经是最新版本", + "Windows Command Script" : "Windows 命令脚本", + "Electronic book document" : "电子书文档", + "TrueType Font Collection" : "TrueType 字体集", + "Web Open Font Format" : "Web 开放字体格式", + "GPX geographic data" : "GPX 地理数据", + "Gzip archive" : "Gzip 归档文件", + "Adobe Illustrator document" : "Adobe Illustrator 文档", + "Java source code" : "Java 源代码", + "JavaScript source code" : "JavaScript 源代码", + "JSON document" : "JSON 文档", + "Microsoft Access database" : "Microsoft Access 数据库", + "Microsoft OneNote document" : "Microsoft OneNote 文档", + "Microsoft Word document" : "Microsoft Word 文档", "Unknown" : "未知", + "PDF document" : "PDF 文档", + "PostScript document" : "PostScript 文档", + "RSS summary" : "RSS 摘要", + "Android package" : "Android 软件包", + "KML geographic data" : "KML 地理数据", + "KML geographic compressed data" : "KML 地理压缩数据", + "Lotus Word Pro document" : "Lotus Word Pro document文档", + "Excel spreadsheet" : "Excel 电子表格", + "Excel add-in" : "Excel 插件", + "Excel 2007 binary spreadsheet" : "Excel 2007 二进制电子表格", + "Excel spreadsheet template" : "Excel 电子表格模板", + "Outlook Message" : "Outlook 邮件", + "PowerPoint presentation" : "PowerPoint 演示文稿", + "PowerPoint add-in" : "PowerPoint 插件", + "PowerPoint presentation template" : "PowerPoint 演示文稿模板", + "Word document" : "Word 文档", + "ODF formula" : "ODF 公式", + "ODG drawing" : "ODG 绘图", + "ODG drawing (Flat XML)" : "ODG 绘图(Flat XML)", + "ODG template" : "ODG 模板", + "ODP presentation" : "ODP 演示文稿", + "ODP presentation (Flat XML)" : "ODP 演示文稿(Flat XML)", + "ODP template" : "ODP 模板", + "ODS spreadsheet" : "ODS 电子表格", + "ODS spreadsheet (Flat XML)" : "ODS 电子表格(Flat XML)", + "ODS template" : "ODS 模板", + "ODT document" : "ODT 文档", + "ODT document (Flat XML)" : "ODT 文档(Flat XML)", + "ODT template" : "ODT 模板", + "PowerPoint 2007 presentation" : "PowerPoint 2007 演示文稿", + "PowerPoint 2007 show" : "PowerPoint 2007 放映", + "PowerPoint 2007 presentation template" : "PowerPoint 2007 演示文稿模板", + "Excel 2007 spreadsheet" : "Excel 2007 电子表格", + "Excel 2007 spreadsheet template" : "Excel 2007 电子表格模板", + "Word 2007 document" : "Word 2007 文档", + "Word 2007 document template" : "Word 2007 文档模板", + "Microsoft Visio document" : "Microsoft Visio 文档", + "WordPerfect document" : "WordPerfect 文档", + "7-zip archive" : "7-zip 归档文件", + "Blender scene" : "Blender 场景", + "Bzip2 archive" : "Bzip2 归档文件", + "Debian package" : "Debian 软件包", + "FictionBook document" : "FictionBook 文档", + "Unknown font" : "未知字体", + "Krita document" : "Krita 文档", + "Mobipocket e-book" : "Mobipocket 电子书", + "Windows Installer package" : "Windows Installer 安装包", + "Perl script" : "Perl 脚本", + "PHP script" : "PHP 脚本", + "Tar archive" : "Tar 归档文件", + "XML document" : "XML 文档", + "YAML document" : "YAML 文档", + "Zip archive" : "Zip 归档文件", + "Zstandard archive" : "Zstandard 归档文件", + "AAC audio" : "AAC 音频", + "FLAC audio" : "FLAC 音频", + "MPEG-4 audio" : "MPEG-4 音频", + "MP3 audio" : "MP3 音频", + "Ogg audio" : "Ogg 音频", + "RIFF/WAVe standard Audio" : "RIFF/WAVe 标准音频", + "WebM audio" : "WebM 音频", + "MP3 ShoutCast playlist" : "MP3 ShoutCast 播放列表", + "Windows BMP image" : "Windows BMP 图片", + "Better Portable Graphics image" : "Better Portable Graphics 图片", + "EMF image" : "EMF 图片", + "GIF image" : "GIF 图片", + "HEIC image" : "HEIC 图片", + "HEIF image" : "HEIF 图片", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2 图片", + "JPEG image" : "JPEG 图片", "PNG image" : "PNG 图片", + "SVG image" : "SVG 图片", + "Truevision Targa image" : "Truevision Targa 图片", + "TIFF image" : "TIFF 图片", + "WebP image" : "WebP 图片", + "Digital raw image" : "数字原始图像", + "Windows Icon" : "Windows 图标", + "Email message" : "电子邮件消息", + "VCS/ICS calendar" : "VCS/ICS 日历", + "CSS stylesheet" : "CSS 样式表", + "CSV document" : "CSV 文档", + "HTML document" : "HTML 文档", + "Markdown document" : "Markdown 文档", + "Org-mode file" : "Org-mode 文件", + "Plain text document" : "纯文本文档", + "Rich Text document" : "富文本文档", + "Electronic business card" : "电子名片", + "C++ source code" : "C++ 源代码", + "LDIF address book" : "LDIF 通讯录", + "NFO document" : "NFO 文档", + "PHP source" : "PHP 源代码", + "Python script" : "Python 脚本", + "ReStructuredText document" : "ReStructuredText 文档", + "3GPP multimedia file" : "3GPP 多媒体文件", + "MPEG video" : "MPEG 视频", + "DV video" : "DV 视频", + "MPEG-2 transport stream" : "MPEG-2 传输流", + "MPEG-4 video" : "MPEG-4 视频", + "Ogg video" : "Ogg 视频", + "QuickTime video" : "QuickTime 视频", + "WebM video" : "WebM 视频", + "Flash video" : "Flash 视频", + "Matroska video" : "Matroska 视频", + "Windows Media video" : "Windows 媒体视频", + "AVI video" : "AVI 视频", "Error occurred while checking server setup" : "检查服务器设置时出错", "For more details see the {linkstart}documentation ↗{linkend}." : "了解更多详情,请参见{linkstart}文档 ↗{linkend}。", "unknown text" : "未知文字", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index ebdf0f011f0..ae5eb155760 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -80,8 +80,125 @@ OC.L10N.register( "%s (incompatible)" : "%s(不相容)", "The following apps have been disabled: %s" : "以下應用程式已被停用:%s", "Already up to date" : "已是最新版本", + "Windows Command Script" : "Windows 命令稿", + "Electronic book document" : "電子書文件", + "TrueType Font Collection" : "TrueType 字型集合", + "Web Open Font Format" : "Web 開放字型格式", + "GPX geographic data" : "GPX 地理資料", + "Gzip archive" : "Gzip 封存檔", + "Adobe Illustrator document" : "Adobe Illustrator 文件", + "Java source code" : "Java 原始碼", + "JavaScript source code" : "JavaScript 原始碼", + "JSON document" : "JSON 文件", + "Microsoft Access database" : "Microsoft Access 資料庫", + "Microsoft OneNote document" : "Microsoft OneNote 文件", + "Microsoft Word document" : "Microsoft Word 文件", "Unknown" : "未知", + "PDF document" : "PDF 文件", + "PostScript document" : "PostScript 文件", + "RSS summary" : "RSS 摘要", + "Android package" : "Android 軟體包", + "KML geographic data" : "KML 地理資料", + "KML geographic compressed data" : "KML 地理壓縮資料", + "Lotus Word Pro document" : "Lotus Word Pro 文件", + "Excel spreadsheet" : "Excel 試算表", + "Excel add-in" : "Excel 增益集", + "Excel 2007 binary spreadsheet" : "Excel 2007 二進位試算表", + "Excel spreadsheet template" : "Excel 試算表範本", + "Outlook Message" : "Outlook 訊息", + "PowerPoint presentation" : "PowerPoint 簡報", + "PowerPoint add-in" : "PowerPoint 增益集", + "PowerPoint presentation template" : "PowerPoint 簡報範本", + "Word document" : "Word 文件", + "ODF formula" : "ODF 公式", + "ODG drawing" : "ODG 繪圖", + "ODG drawing (Flat XML)" : "ODG 繪圖 (Flat XML)", + "ODG template" : "ODG 範本", + "ODP presentation" : "ODP 簡報", + "ODP presentation (Flat XML)" : "ODP 簡報 (Flat XML)", + "ODP template" : "ODP 範本", + "ODS spreadsheet" : "ODS 試算表", + "ODS spreadsheet (Flat XML)" : "ODS 試算表 (Flat XML)", + "ODS template" : "ODS 範本", + "ODT document" : "ODT 文件", + "ODT document (Flat XML)" : "ODT 文件 (Flat XML)", + "ODT template" : "ODT 範本", + "PowerPoint 2007 presentation" : "PowerPoint 2007 簡報", + "PowerPoint 2007 show" : "PowerPoint 2007 自動放映", + "PowerPoint 2007 presentation template" : "PowerPoint 2007 簡報範本", + "Excel 2007 spreadsheet" : "Excel 2007 試算表", + "Excel 2007 spreadsheet template" : "Excel 2007 試算表範本", + "Word 2007 document" : "Word 2007 文件", + "Word 2007 document template" : "Word 2007 文件範本", + "Microsoft Visio document" : "Microsoft Visio 文件", + "WordPerfect document" : "WordPerfect 文件", + "7-zip archive" : "7-zip 封存檔", + "Blender scene" : "Blender 場景", + "Bzip2 archive" : "Bzip2 封存檔", + "Debian package" : "Debian 軟體包", + "FictionBook document" : "FictionBook 文件", + "Unknown font" : "未知字型", + "Krita document" : "Krita 文件", + "Mobipocket e-book" : "Mobipocket 電子書", + "Windows Installer package" : "Windows 安裝程式包", + "Perl script" : "Perl 命令稿", + "PHP script" : "PHP 命令稿", + "Tar archive" : "Tar 封存檔", + "XML document" : "XML 文件", + "YAML document" : "YAML 文件", + "Zip archive" : "Zip 封存檔", + "Zstandard archive" : "Zstandard 封存檔", + "AAC audio" : "AAC 音訊", + "FLAC audio" : "FLAC 音訊", + "MPEG-4 audio" : "MPEG-4 音訊", + "MP3 audio" : "MP3 音訊", + "Ogg audio" : "Ogg 音訊", + "RIFF/WAVe standard Audio" : "RIFF/WAVe 標準音訊", + "WebM audio" : "WebM 音訊", + "MP3 ShoutCast playlist" : "MP3 ShoutCast 播放清單", + "Windows BMP image" : "Windows BMP 影像", + "Better Portable Graphics image" : "BPG 影像", + "EMF image" : "EMF 影像", + "GIF image" : "GIF 影像", + "HEIC image" : "HEIC 影像", + "HEIF image" : "HEIF 影像", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2 影像", + "JPEG image" : "JPEG 影像", "PNG image" : "PNG 圖檔", + "SVG image" : "SVG 影像", + "Truevision Targa image" : "Truevision Targa 影像", + "TIFF image" : "TIFF 影像", + "WebP image" : "WebP 影像", + "Digital raw image" : "數位原始影像", + "Windows Icon" : "Windows 圖示", + "Email message" : "電子郵件訊息", + "VCS/ICS calendar" : "VCS/ICS 行事曆", + "CSS stylesheet" : "CSS 樣式表", + "CSV document" : "CSV 文件", + "HTML document" : "HTML 文件", + "Markdown document" : "Markdown 文件", + "Org-mode file" : "Org-mode 檔案", + "Plain text document" : "純文字文件", + "Rich Text document" : "RTF 文件", + "Electronic business card" : "電子名片", + "C++ source code" : "C++ 原始碼", + "LDIF address book" : "LDIF 通訊錄", + "NFO document" : "NFO 文件", + "PHP source" : "PHP 原始碼", + "Python script" : "Python 命令稿", + "ReStructuredText document" : "ReStructuredText 文件", + "3GPP multimedia file" : "3GPP 多媒體檔案", + "MPEG video" : "MPEG 視訊", + "DV video" : "DV 視訊", + "MPEG-2 transport stream" : "MPEG2 傳輸串流", + "MPEG-4 video" : "MPEG-4 視訊", + "Ogg video" : "Ogg 視訊", + "QuickTime video" : "QuickTime 視訊", + "WebM video" : "WebM 視訊", + "Flash video" : "Flash 視訊", + "Matroska video" : "Matroska 視訊", + "Windows Media video" : "Windows 媒體視訊", + "AVI video" : "AVI 視訊", "Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤", "For more details see the {linkstart}documentation ↗{linkend}." : "詳細資訊請參閱 {linkstart} 文件 ↗{linkend}。", "unknown text" : "未知的文字", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 269980d9d82..186b88ad878 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -78,8 +78,125 @@ "%s (incompatible)" : "%s(不相容)", "The following apps have been disabled: %s" : "以下應用程式已被停用:%s", "Already up to date" : "已是最新版本", + "Windows Command Script" : "Windows 命令稿", + "Electronic book document" : "電子書文件", + "TrueType Font Collection" : "TrueType 字型集合", + "Web Open Font Format" : "Web 開放字型格式", + "GPX geographic data" : "GPX 地理資料", + "Gzip archive" : "Gzip 封存檔", + "Adobe Illustrator document" : "Adobe Illustrator 文件", + "Java source code" : "Java 原始碼", + "JavaScript source code" : "JavaScript 原始碼", + "JSON document" : "JSON 文件", + "Microsoft Access database" : "Microsoft Access 資料庫", + "Microsoft OneNote document" : "Microsoft OneNote 文件", + "Microsoft Word document" : "Microsoft Word 文件", "Unknown" : "未知", + "PDF document" : "PDF 文件", + "PostScript document" : "PostScript 文件", + "RSS summary" : "RSS 摘要", + "Android package" : "Android 軟體包", + "KML geographic data" : "KML 地理資料", + "KML geographic compressed data" : "KML 地理壓縮資料", + "Lotus Word Pro document" : "Lotus Word Pro 文件", + "Excel spreadsheet" : "Excel 試算表", + "Excel add-in" : "Excel 增益集", + "Excel 2007 binary spreadsheet" : "Excel 2007 二進位試算表", + "Excel spreadsheet template" : "Excel 試算表範本", + "Outlook Message" : "Outlook 訊息", + "PowerPoint presentation" : "PowerPoint 簡報", + "PowerPoint add-in" : "PowerPoint 增益集", + "PowerPoint presentation template" : "PowerPoint 簡報範本", + "Word document" : "Word 文件", + "ODF formula" : "ODF 公式", + "ODG drawing" : "ODG 繪圖", + "ODG drawing (Flat XML)" : "ODG 繪圖 (Flat XML)", + "ODG template" : "ODG 範本", + "ODP presentation" : "ODP 簡報", + "ODP presentation (Flat XML)" : "ODP 簡報 (Flat XML)", + "ODP template" : "ODP 範本", + "ODS spreadsheet" : "ODS 試算表", + "ODS spreadsheet (Flat XML)" : "ODS 試算表 (Flat XML)", + "ODS template" : "ODS 範本", + "ODT document" : "ODT 文件", + "ODT document (Flat XML)" : "ODT 文件 (Flat XML)", + "ODT template" : "ODT 範本", + "PowerPoint 2007 presentation" : "PowerPoint 2007 簡報", + "PowerPoint 2007 show" : "PowerPoint 2007 自動放映", + "PowerPoint 2007 presentation template" : "PowerPoint 2007 簡報範本", + "Excel 2007 spreadsheet" : "Excel 2007 試算表", + "Excel 2007 spreadsheet template" : "Excel 2007 試算表範本", + "Word 2007 document" : "Word 2007 文件", + "Word 2007 document template" : "Word 2007 文件範本", + "Microsoft Visio document" : "Microsoft Visio 文件", + "WordPerfect document" : "WordPerfect 文件", + "7-zip archive" : "7-zip 封存檔", + "Blender scene" : "Blender 場景", + "Bzip2 archive" : "Bzip2 封存檔", + "Debian package" : "Debian 軟體包", + "FictionBook document" : "FictionBook 文件", + "Unknown font" : "未知字型", + "Krita document" : "Krita 文件", + "Mobipocket e-book" : "Mobipocket 電子書", + "Windows Installer package" : "Windows 安裝程式包", + "Perl script" : "Perl 命令稿", + "PHP script" : "PHP 命令稿", + "Tar archive" : "Tar 封存檔", + "XML document" : "XML 文件", + "YAML document" : "YAML 文件", + "Zip archive" : "Zip 封存檔", + "Zstandard archive" : "Zstandard 封存檔", + "AAC audio" : "AAC 音訊", + "FLAC audio" : "FLAC 音訊", + "MPEG-4 audio" : "MPEG-4 音訊", + "MP3 audio" : "MP3 音訊", + "Ogg audio" : "Ogg 音訊", + "RIFF/WAVe standard Audio" : "RIFF/WAVe 標準音訊", + "WebM audio" : "WebM 音訊", + "MP3 ShoutCast playlist" : "MP3 ShoutCast 播放清單", + "Windows BMP image" : "Windows BMP 影像", + "Better Portable Graphics image" : "BPG 影像", + "EMF image" : "EMF 影像", + "GIF image" : "GIF 影像", + "HEIC image" : "HEIC 影像", + "HEIF image" : "HEIF 影像", + "JPEG-2000 JP2 image" : "JPEG-2000 JP2 影像", + "JPEG image" : "JPEG 影像", "PNG image" : "PNG 圖檔", + "SVG image" : "SVG 影像", + "Truevision Targa image" : "Truevision Targa 影像", + "TIFF image" : "TIFF 影像", + "WebP image" : "WebP 影像", + "Digital raw image" : "數位原始影像", + "Windows Icon" : "Windows 圖示", + "Email message" : "電子郵件訊息", + "VCS/ICS calendar" : "VCS/ICS 行事曆", + "CSS stylesheet" : "CSS 樣式表", + "CSV document" : "CSV 文件", + "HTML document" : "HTML 文件", + "Markdown document" : "Markdown 文件", + "Org-mode file" : "Org-mode 檔案", + "Plain text document" : "純文字文件", + "Rich Text document" : "RTF 文件", + "Electronic business card" : "電子名片", + "C++ source code" : "C++ 原始碼", + "LDIF address book" : "LDIF 通訊錄", + "NFO document" : "NFO 文件", + "PHP source" : "PHP 原始碼", + "Python script" : "Python 命令稿", + "ReStructuredText document" : "ReStructuredText 文件", + "3GPP multimedia file" : "3GPP 多媒體檔案", + "MPEG video" : "MPEG 視訊", + "DV video" : "DV 視訊", + "MPEG-2 transport stream" : "MPEG2 傳輸串流", + "MPEG-4 video" : "MPEG-4 視訊", + "Ogg video" : "Ogg 視訊", + "QuickTime video" : "QuickTime 視訊", + "WebM video" : "WebM 視訊", + "Flash video" : "Flash 視訊", + "Matroska video" : "Matroska 視訊", + "Windows Media video" : "Windows 媒體視訊", + "AVI video" : "AVI 視訊", "Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤", "For more details see the {linkstart}documentation ↗{linkend}." : "詳細資訊請參閱 {linkstart} 文件 ↗{linkend}。", "unknown text" : "未知的文字", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 820aec1a2ba..06aad919ff3 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -93,6 +93,8 @@ OC.L10N.register( "Destination does not exist" : "宛先が存在しません", "Destination is not creatable" : "宛先は作成できません", "Dot files are not allowed" : "隠しファイルは許可されていません", + "%1$s (renamed)" : "%1$s (リネーム済み)", + "renamed file" : "リネーム済みファイル", "\"%1$s\" is a forbidden file or folder name." : "\"%1$s\"は禁止されているファイル名またはフォルダー名です。", "\"%1$s\" is a forbidden prefix for file or folder names." : "\"%1$s\"は、ファイル名やフォルダー名には使用できない接頭辞です。", "\"%1$s\" is not allowed inside a file or folder name." : "\"%1$s\"はファイル名やフォルダー名の中に入れることはできません。", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index 04f6e2ee13d..f0328f6d484 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -91,6 +91,8 @@ "Destination does not exist" : "宛先が存在しません", "Destination is not creatable" : "宛先は作成できません", "Dot files are not allowed" : "隠しファイルは許可されていません", + "%1$s (renamed)" : "%1$s (リネーム済み)", + "renamed file" : "リネーム済みファイル", "\"%1$s\" is a forbidden file or folder name." : "\"%1$s\"は禁止されているファイル名またはフォルダー名です。", "\"%1$s\" is a forbidden prefix for file or folder names." : "\"%1$s\"は、ファイル名やフォルダー名には使用できない接頭辞です。", "\"%1$s\" is not allowed inside a file or folder name." : "\"%1$s\"はファイル名やフォルダー名の中に入れることはできません。", diff --git a/lib/private/Installer.php b/lib/private/Installer.php index a1d27c9255b..f32b0e5919a 100644 --- a/lib/private/Installer.php +++ b/lib/private/Installer.php @@ -16,8 +16,8 @@ use OC\AppFramework\Bootstrap\Coordinator; use OC\Archive\TAR; use OC\DB\Connection; use OC\DB\MigrationService; +use OC\Files\FilenameValidator; use OC_App; -use OC_Helper; use OCP\App\IAppManager; use OCP\Files; use OCP\HintException; @@ -25,6 +25,7 @@ use OCP\Http\Client\IClientService; use OCP\IConfig; use OCP\ITempManager; use OCP\Migration\IOutput; +use OCP\Server; use phpseclib\File\X509; use Psr\Log\LoggerInterface; @@ -242,6 +243,10 @@ class Installer { // Download the release $tempFile = $this->tempManager->getTemporaryFile('.tar.gz'); + if ($tempFile === false) { + throw new \RuntimeException('Could not create temporary file for downloading app archive.'); + } + $timeout = $this->isCLI ? 0 : 120; $client = $this->clientService->newClient(); $client->get($app['releases'][0]['download'], ['sink' => $tempFile, 'timeout' => $timeout]); @@ -253,8 +258,11 @@ class Installer { if ($verified === true) { // Seems to match, let's proceed $extractDir = $this->tempManager->getTemporaryFolder(); - $archive = new TAR($tempFile); + if ($extractDir === false) { + throw new \RuntimeException('Could not create temporary directory for unpacking app.'); + } + $archive = new TAR($tempFile); if (!$archive->extract($extractDir)) { $errorMessage = 'Could not extract app ' . $appId; @@ -329,9 +337,9 @@ class Installer { // Move to app folder if (@mkdir($baseDir)) { $extractDir .= '/' . $folders[0]; - OC_Helper::copyr($extractDir, $baseDir); } - OC_Helper::copyr($extractDir, $baseDir); + // otherwise we just copy the outer directory + $this->copyRecursive($extractDir, $baseDir); Files::rmdirr($extractDir); return; } @@ -588,4 +596,33 @@ class Installer { include $script; } } + + /** + * Recursive copying of local folders. + * + * @param string $src source folder + * @param string $dest target folder + */ + private function copyRecursive(string $src, string $dest): void { + if (!file_exists($src)) { + return; + } + + if (is_dir($src)) { + if (!is_dir($dest)) { + mkdir($dest); + } + $files = scandir($src); + foreach ($files as $file) { + if ($file != '.' && $file != '..') { + $this->copyRecursive("$src/$file", "$dest/$file"); + } + } + } else { + $validator = Server::get(FilenameValidator::class); + if (!$validator->isForbidden($src)) { + copy($src, $dest); + } + } + } } diff --git a/lib/private/legacy/OC_Helper.php b/lib/private/legacy/OC_Helper.php index 841433c6ea1..6caab38b784 100644 --- a/lib/private/legacy/OC_Helper.php +++ b/lib/private/legacy/OC_Helper.php @@ -66,6 +66,7 @@ class OC_Helper { * @param string $src source folder * @param string $dest target folder * @return void + * @deprecated 32.0.0 - use \OCP\Files\Folder::copy */ public static function copyr($src, $dest) { if (!file_exists($src)) { @@ -131,7 +132,7 @@ class OC_Helper { $exts = ['']; $check_fn = 'is_executable'; // Default check will be done with $path directories : - $dirs = explode(PATH_SEPARATOR, $path); + $dirs = explode(PATH_SEPARATOR, (string)$path); // WARNING : We have to check if open_basedir is enabled : $obd = OC::$server->get(IniGetWrapper::class)->getString('open_basedir'); if ($obd != 'none') { |