Compare commits

..

108 Commits

Author SHA1 Message Date
stax76
ef45baecbd Japanese translation was updated 2026-02-09 14:11:50 +01:00
stax76
30e75b2100 Merge pull request #759 from tsubasanouta/patch-2
Update ja.po
2026-02-09 14:07:32 +01:00
tsubasanouta
563472b489 Update ja.po 2026-02-07 22:25:46 +09:00
stax76
724a9adab8 Refactoring 2026-01-09 09:14:02 +01:00
stax76
9686c28f6a Support back and forward slashes as path seperator 2026-01-09 07:35:09 +01:00
stax76
03d0aeb879 Convert extension method to extension property 2026-01-09 07:29:19 +01:00
stax76
96afc62165 v7.1.2.0 2026-01-09 06:16:51 +01:00
stax76
fd3ea9afe9 Misc 2026-01-09 06:03:08 +01:00
stax76
853d38a427 PS script documentation 2026-01-09 05:21:30 +01:00
stax76
76a2f64fa6 adjust to mpv v.0.41 2026-01-08 17:14:31 +01:00
stax76
6c0e116918 Update readme 2025-11-26 13:51:47 +01:00
stax76
c1abf90559 Update outdated requirements in manual 2025-11-25 06:07:35 +01:00
stax76
eb085a6534 Changelog and version updated 2025-11-23 21:26:51 +01:00
stax76
78b85d59aa Merge pull request #751 from DogancanYr/patch-5
Revise Turkish translations.
2025-11-23 21:21:16 +01:00
stax76
0f900e01fa Merge pull request #752 from tsubasanouta/patch-1
Update ja.po
2025-11-23 21:20:54 +01:00
tsubasanouta
f754d4d865 Update ja.po 2025-11-24 04:47:20 +09:00
DogancanYr
474c4e888d Revise Turkish translations. 2025-11-23 16:10:49 +03:00
stax76
8f8ca453da Fix #748 2025-11-20 01:51:23 +01:00
stax76
8bd00fd2f1 Changelog update 2025-11-20 01:23:09 +01:00
stax76
61958aba2c v7.1.1.5 Beta 2025-11-20 01:11:02 +01:00
stax76
3fa6f44828 Changelog update 2025-11-20 01:07:16 +01:00
stax76
31be72efb2 Update Changelog 2025-11-20 01:00:27 +01:00
stax76
405c20f056 Merge pull request #749 from DogancanYr/patch-4
Update Turkish translations in tr.po file
2025-11-20 00:56:45 +01:00
stax76
5f0fb4ebc3 Update to .NET 10 LTS 2025-11-20 00:56:03 +01:00
DogancanYr
c6a2b06fdf Update Turkish translations in tr.po file 2025-10-29 19:58:56 +03:00
stax76
8f38eba23e Chinese and Japanese translations update 2025-10-14 02:41:25 +02:00
stax76
79164aae72 The German translation was updated 2025-10-06 00:43:18 +02:00
stax76
e5d3ac0d92 Changed default keys and menu items 2025-10-05 16:53:55 +02:00
stax76
f7c8c16344 v7.1.1.4 Beta 2025-10-05 01:12:04 +02:00
stax76
b1fccbf175 misc 2025-10-04 15:07:56 +02:00
stax76
cc1e4bc9f8 misc 2025-09-12 05:11:55 +02:00
stax76
3812f3031c Improved support for select.lua 2025-05-05 17:42:50 +02:00
stax76
837f97d491 Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2025-05-05 14:38:20 +02:00
stax76
2dab825af4 Update changelog 2025-05-05 14:37:58 +02:00
stax76
a78c1ba50d Merge pull request #725 from benomine/main
feat: dotnet 9, CPM, etc
2025-05-05 14:30:44 +02:00
stax76
50aea3b5ba Update changelog 2025-05-05 14:28:45 +02:00
stax76
6a971595f7 attempted actions/workflow fix 2025-05-04 05:03:17 +02:00
stax76
a1d944a9a0 translation update 2025-05-04 04:51:40 +02:00
stax76
8b49312bad Turkish translation update 2025-05-04 04:26:25 +02:00
stax76
95b279b0e9 Merge pull request #718 from DogancanYr/patch-3
Update tr.po
2025-05-04 04:10:30 +02:00
Benjamin Nomine
01477d8b25 feat: dotnet 9, CPM, etc 2025-01-11 14:05:54 -05:00
DogancanYr
4e5182eb73 Update tr.po 2024-11-28 19:43:56 +02:00
stax76
8d0b70a5dc manual improvements and fixes 2024-11-06 01:50:07 +01:00
stax76
37a241f136 Use MPV_CONFIG_DIR env var for command palette installer script 2024-11-03 11:30:19 +01:00
stax76
ace7566c2a v7.1.1.3 Beta 2024-10-20 09:15:34 +02:00
stax76
0b646cedb5 New command Video > Stream Quality (Alt+q) 2024-10-14 15:18:11 +02:00
stax76
a0d2fb6a4e command palette support 2024-10-13 14:18:04 +02:00
stax76
59a556794f support for autocreate-playlist, video-exts, audio-exts, image-exts 2024-10-12 21:50:46 +02:00
stax76
cca474a5a5 Merge pull request #710 from emmanuel-ferdman/main
update manual guide reference
2024-10-10 19:25:14 +02:00
Emmanuel Ferdman
ae05b997c7 update manual guide reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-10-10 06:52:50 -07:00
stax76
88a6e18e78 v7.1.1.2 2024-10-10 14:08:21 +02:00
stax76
3de72df806 use autocreate-playlist instead of auto-load-folder 2024-10-10 13:32:19 +02:00
stax76
da176085cd Action fix 2024-10-10 06:27:24 +02:00
stax76
2b0ac7c087 cursor-autohide support #702 2024-10-10 05:44:02 +02:00
stax76
94ecf4a069 try fixing #662 2024-09-05 23:33:13 +02:00
stax76
9355e2f50c Set media-controls=yes 2024-09-05 05:15:00 +02:00
stax76
058ae3d185 auto build fix 2024-08-19 11:37:50 +02:00
stax76
3c1e6395a4 changelog update 2024-08-19 09:59:08 +02:00
stax76
236d10c14a changelog update 2024-08-19 09:56:02 +02:00
stax76
53f350da9a Polish translation fixed 2024-08-19 09:45:56 +02:00
stax76
bb6819f240 translation update 2024-08-19 09:27:18 +02:00
stax76
8f53254dbc Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2024-08-19 08:58:10 +02:00
stax76
8ed73f6ae0 changelog update 2024-08-19 08:57:54 +02:00
stax76
d59ccd7beb Merge pull request #704 from Ilithy/main
French translation
2024-08-19 08:55:19 +02:00
stax76
aeb11c9be1 changelog update 2024-08-19 08:53:06 +02:00
Ilithy
a1c8e93034 Update fr.po 2024-08-18 12:10:25 +02:00
Ilithy
00a11ea076 Update fr.po 2024-08-18 12:08:43 +02:00
Ilithy
9115f707dc Update fr.po 2024-08-18 12:02:59 +02:00
Ilithy
a2ec8de976 Update fr.po 2024-08-18 11:59:08 +02:00
Ilithy
be7e5aa7d2 Update fr.po 2024-08-18 11:52:03 +02:00
Ilithy
27124c9cdd Update fr.po 2024-08-18 01:57:02 +02:00
Ilithy
44079ed69c first commit for french translation 2024-08-16 01:36:00 +02:00
stax76
07749cb2cc title-bar fix 2024-08-10 11:19:23 +02:00
stax76
9d30acaba6 Japanese translation updated 2024-07-26 00:36:07 +02:00
stax76
f3fdef780d Support relative folders from command line 2024-07-26 00:14:44 +02:00
stax76
1243d1381b Updated changelog 2024-07-25 11:42:01 +02:00
stax76
3602f627e8 manual 2024-07-25 11:06:09 +02:00
stax76
97fab64d32 manual 2024-07-25 11:01:37 +02:00
stax76
e7b7f33b1b translation 2024-07-25 10:53:30 +02:00
stax76
01c2171a62 translation update 2024-07-25 10:34:09 +02:00
stax76
321dc13531 Merge pull request #699 from DogancanYr/patch-2
Update tr.po
2024-07-25 10:13:32 +02:00
DogancanYr
4032e8be7b Update tr.po 2024-07-20 21:21:24 +03:00
stax76
e52de1d1a7 v7.1.1.1 2024-07-20 03:03:42 +02:00
stax76
7c38e823c1 fix #676 2024-07-17 02:44:48 +02:00
stax76
e6defd3e55 #696 2024-07-16 00:04:15 +02:00
stax76
3caf4f2cb3 Bindings and menu item fix 2024-07-15 08:01:21 +02:00
stax76
3f897b12cf Yet another try to fix actions/workflow/auto build 2024-07-15 07:41:47 +02:00
stax76
12d0126dd5 Again try to fix actions/workflow/auto build 2024-07-15 07:32:30 +02:00
stax76
b218619b2b Try fixing auto/action/workflow build 2024-07-15 06:39:02 +02:00
stax76
ae80076f36 Full support for select.lua
select.lua is a new simple command palette script
embedded into mpv/libmpv.

In the context menu select.lua features can be found under 'View > On Screen Menu'.

https://github.com/mpv-player/mpv/blob/master/player/lua/select.lua
2024-07-15 02:10:30 +02:00
stax76
ae9c69e469 Turkish translation added 2024-05-21 13:58:35 +02:00
stax76
cfd2919e88 Merge pull request #683 from DogancanYr/patch-1
Turkish translation.
2024-05-21 13:04:56 +02:00
DogancanYr
985460d98e Update tr.po 2024-05-07 23:56:36 +03:00
DogancanYr
7596d988b9 Update tr.po 2024-05-07 16:51:21 +03:00
DogancanYr
50cad04b47 Update tr.po 2024-05-07 00:16:42 +03:00
DogancanYr
457d93b5c4 Update tr.po 2024-05-06 19:59:09 +03:00
DogancanYr
bb2af95344 Turkish translation. 2024-05-06 19:50:53 +03:00
stax76
34e76946f3 Russian translation added 2024-04-23 06:57:08 +02:00
stax76
3f52c1255e Korean translation added and auto build update 2024-04-03 13:10:19 +02:00
stax76
924e32f027 typo 2024-02-03 06:11:28 +01:00
stax76
2f735215e0 v7.1.1.0 2024-02-03 06:03:54 +01:00
stax76
23ed1457d5 Japanese translation updated 2024-01-20 22:06:15 +01:00
stax76
52214c1e15 new screenshots 2024-01-20 01:10:18 +01:00
stax76
09de4a5e05 Chinese translation updated 2024-01-19 09:05:32 +01:00
stax76
69a6754483 Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2024-01-13 14:05:59 +01:00
stax76
078756600e misc 2024-01-13 14:05:55 +01:00
stax76
5e2c7055d4 Merge pull request #648 from andywowws/patch-1
Update changelog.md
2024-01-13 14:05:37 +01:00
Andywoww
eb265be0a4 Update changelog.md
Wrong date
2024-01-13 19:33:38 +08:00
71 changed files with 8867 additions and 3022 deletions

View File

@@ -50,17 +50,17 @@ jobs:
msbuild MpvNet.sln /m /p:Configuration=Debug msbuild MpvNet.sln /m /p:Configuration=Debug
- name: Create .mo files for localization - name: Create .mo files for localization
shell: pwsh shell: pwsh
run: Install-Package Gettext.Tools -Force; .\lang\create-mo-files.ps1 run: Install-Package Gettext.Tools -Force; $env:Path = ((Get-Package Gettext.Tools).Source | Split-Path) + '\tools\bin;' + $env:Path; .\lang\create-mo-files.ps1
- name: Download libmpv # In principle, only update this binary file when significant feature changes occur in mpv/mpv.net - name: Download libmpv # In principle, only update this binary file when significant feature changes occur in mpv/mpv.net
shell: msys2 {0} shell: msys2 {0}
run: | run: |
wget -nv -O libmpv.7z https://github.com/zhongfly/mpv-winbuild/releases/download/2024-01-02-ab5b250/mpv-dev-x86_64-20240102-git-ab5b250.7z wget -nv -O libmpv.7z https://github.com/zhongfly/mpv-winbuild/releases/download/2025-05-03-e663cbc/mpv-dev-x86_64-20250503-git-e663cbc.7z
7z x -y libmpv.7z -olibmpv 7z x -y libmpv.7z -olibmpv
cp -f libmpv/libmpv-2.dll src/MpvNet.Windows/bin/Debug/ || true cp -f libmpv/libmpv-2.dll src/MpvNet.Windows/bin/Debug/ || true
- name: Download MediaInfo - name: Download MediaInfo
shell: msys2 {0} shell: msys2 {0}
run: | run: |
wget -nv -O MediaInfo.7z https://mediaarea.net/download/binary/libmediainfo0/23.11/MediaInfo_DLL_23.11_Windows_x64_WithoutInstaller.7z wget -nv -O MediaInfo.7z https://mediaarea.net/download/binary/libmediainfo0/24.03/MediaInfo_DLL_24.03_Windows_x64_WithoutInstaller.7z
7z x -y MediaInfo.7z -oMediaInfo 7z x -y MediaInfo.7z -oMediaInfo
cp -f MediaInfo/MediaInfo.dll src/MpvNet.Windows/bin/Debug/ || true cp -f MediaInfo/MediaInfo.dll src/MpvNet.Windows/bin/Debug/ || true
- name: Download mpvnet.com file - name: Download mpvnet.com file
@@ -69,7 +69,7 @@ jobs:
wget -nv -O mpvnet.com https://github.com/mpvnet-player/file-host/releases/download/tag/mpvnet.com.txt wget -nv -O mpvnet.com https://github.com/mpvnet-player/file-host/releases/download/tag/mpvnet.com.txt
cp -f mpvnet.com src/MpvNet.Windows/bin/Debug/ || true cp -f mpvnet.com src/MpvNet.Windows/bin/Debug/ || true
- name: Upload - name: Upload
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: "mpv.net-win64" name: "mpv.net-win64"
path: src/MpvNet.Windows/bin/Debug/ path: src/MpvNet.Windows/bin/Debug/

View File

@@ -6,7 +6,7 @@
🎞 mpv.net 🎞 mpv.net
========== ==========
mpv.net is a media player for Windows that has a modern GUI. mpv.net is a media player for Windows with a modern GUI.
The player is based on the popular [mpv](https://mpv.io) media player. The player is based on the popular [mpv](https://mpv.io) media player.
mpv.net is designed to be mpv compatible, almost all mpv features are available, mpv.net is designed to be mpv compatible, almost all mpv features are available,
@@ -56,6 +56,7 @@ Table of contents
- [Download](#download) - [Download](#download)
- [Manual](#manual) - [Manual](#manual)
- [Screenshots](#screenshots) - [Screenshots](#screenshots)
- [Contributing](#contributing)
Features that mpv and mpv.net have in common Features that mpv and mpv.net have in common
@@ -66,7 +67,7 @@ Features that mpv and mpv.net have in common
- JSON IPC to control the player with a external programs - JSON IPC to control the player with a external programs
- On Screen Controller (OSC, play control buttons) with modern flat design - On Screen Controller (OSC, play control buttons) with modern flat design
- Command Line Interface - Command Line Interface
- Started from a terminal status, error and debug output is printed on the terminal - Started from a terminal, status, error and debug output is printed on the terminal
- DXVA2 video decoding acceleration - DXVA2 video decoding acceleration
- Video output capable of features loved by videophiles, such as video scaling with popular high quality algorithms, color management, frame timing, interpolation, HDR, and more - Video output capable of features loved by videophiles, such as video scaling with popular high quality algorithms, color management, frame timing, interpolation, HDR, and more
- Browser extensions to start mpv.net from the browser - Browser extensions to start mpv.net from the browser
@@ -85,14 +86,11 @@ Features exclusive to mpv.net
- Very high degree of mpv compatibility, almost all mpv features are available - Very high degree of mpv compatibility, almost all mpv features are available
- Modern graphical user interface with customizable color themes - Modern graphical user interface with customizable color themes
- Customizable context menu defined in the same file as the key bindings - Customizable context menu
- Searchable config editor - Searchable config editor
- Searchable input (shorcut keys) editor - Searchable input (shorcut keys) editor
- C# and PowerShell Scripting
- Global keyboard shortcuts - Global keyboard shortcuts
- Extension API for .NET languages (C#, VB.NET and F#) - Extension API for .NET languages (C#, VB.NET and F#)
- Portable, MS Store or WinGet download and installation
- File history feature to log time and filename
- Files can be enqueued from File Explorer - Files can be enqueued from File Explorer
@@ -111,6 +109,11 @@ Features exclusive to mpv.net
[The mpv.net documentation.](docs/manual.md) [The mpv.net documentation.](docs/manual.md)
## [Contributing](docs/contributing.md)
[Contributing section of the manual.](docs/manual.md#contributing)
Screenshots Screenshots
----------- -----------
@@ -121,27 +124,24 @@ Screenshots
#### Context Menu #### Context Menu
Context menu using dark mode. ![Context Menu](docs/img/Menu.webp)
![Context Menu](docs/img/Menu.jpg)
#### Config Editor #### Config Editor
Searchable config editor as alternative to edit the conf file manually. Searchable config editor as alternative to edit the conf file manually.
![](docs/img/ConfEditor.png) ![](docs/img/ConfEditor.webp)
#### Terminal #### Terminal
OSD console and status printed on the terminal. ![](docs/img/Terminal.webp)
![](docs/img/Terminal.png)
#### Input Editor Other projects from me
----------------------
Searchable key and mouse binding editor. A list of my other projects can be found here:
![Input Editor](docs/img/InputEditor.webp) https://stax76.github.io/software-list

View File

@@ -1,5 +1,103 @@
# v7.1.0.0 Beta (2023-01-12) - The Japanese translation was updated. Thanks to the translators!
# v7.1.2.0 (2026-01-09)
- libmpv updated to v0.41 2026-01-09.
- Some adjustments to recent mpv changes.
- The Japanese and Turkish translations were updated. Thanks to the translators!
# v7.1.1.5 Beta (2025-11-20)
- Same as in mpv the `?` and `t-4` keys can be used to show the active
key bindings on-screen, it supports scrolling and searching.
In the context menu it's located at:
`View > More > Show Active Bindings On-Screen`
- Bindings of select.lua menus have changed:
`F1` On-Screen menu
`F2` Bindings
`F3` Properties
`F4` Commands
- The German, Chinese, Japanese and Turkish translations were updated. Thanks to the translators!
- Users need to install .NET 10 LTS (Long Term Support), it should run on Windows 10.
It was requested by users to prefer LTS over STS (Short Term Support).
- libmpv and MediaInfo was updated.
# v7.1.1.4 Beta (2025-10-05)
- Support for select.lua has been added. It's a new Lua script built
directly into mpv like the osc or console script. It's similar to command_palete.lua.
- Fix --script-opt not working.
- The mpv.net manual was updated.
- The Turkish translation was updated. A Bulgarian translation was added.
Thanks to the translators!
- The required Dotnet version changed from 6.0 to 9.0. This drops Win 7 support
unfortunately. It was done to use new C# language features and make
the mpv.net project more attractive for new developers to contribute.
Also most users prefer having the newest runtime.
- auto build has been disabled because it requires updating libmpv and
mediainfo all the time which is too much manual work.
- The script src/Tools/update-mpv.ps1 has been improved. It's the easiest way
update mpv and libmpv (x64 and ARM64). Shinshiro has a update script too,
but it's a lot longer and more complex.
- mediainfo and libmpv have been updated.
# v7.1.1.3 Beta (2024-10-20)
- Support for autocreate-playlist, video-exts, audio-exts, image-exts.
Windows 7 support should still work, but needs auto-load-folder to be enabled
or autoload.lua.
- The command palette user script is installable from the context menu under
`Settings > Setup > Install Command Palette`. The command palette features
are shown in the menu under 'View > Command Palette'.
- New command to select the stream quality `Video > Stream Quality (Alt+q)`,
this calls the Stream Quality feature of the command palette.
- The Command Palette interacts with mpv.net to enable the Recent Files
feature in the Command Palette.
- New zhongfly libmpv x64 build.
- New Andarwinux libmpv ARM64 build.
# v7.1.1.2 Beta (2024-10-10)
- Polish translation fixed. German, Turkish and Japanese translation updated.
French translation added! Thanks to the translation team!
- Support of relative folders from command line.
- Support for the mpv option `cursor-autohide`.
- A issue with the support of the mpv property `title-bar` has been fixed,
at the moment this is most useful for users of the popular uosc user script,
the mpv built-in OSC doesn't fully support it yet.
- `media-controls=yes` is now enabled by default, this enables play controls
in the `KDE Connect` android app.
- The mpv.net option `auto-load-folder` by default is now disabled and the
option is deprecated. The reason for this is mpv has new native support
for it using `autocreate-playlist`, which mpv.net uses now instead by default.
- New zhongfly libmpv x64 build.
- New Andarwinux libmpv ARM64 build.
# v7.1.1.1 Beta (2024-07-20)
- Korean, Russian and Turkish translation added, Japanese translation fixed. Thanks to the translation team!
- Action/Workflow/Auto build fix and update.
- New default bindings and menu items for select.lua which is a new simple mpv built-in command palette script.
In the context menu select.lua features can be found under `View > On Screen Menu`.
https://github.com/mpv-player/mpv/blob/master/player/lua/select.lua
- New PowerShell script 'Tools\release-mpv.net.ps1' used to releases mpv.net on GitHub.
- Fix DVD ISO file support.
- MediaInfo updated to version v24.6.
- New ARM64 support.
- New zhongfly libmpv x64 build.
- New Andarwinux libmpv ARM64 build.
# v7.1.1.0 (2024-02-03)
- Chinese and Japanese translation updated. Thanks to the translation team!
- Fix command line arguments being ignored in some situations.
# v7.1.0.0 (2024-01-12)
- The menu item that shows profiles was moved into the menu item that lists profiles. - The menu item that shows profiles was moved into the menu item that lists profiles.
- Fix geometry not working when used from mpv.conf and the conf editor. - Fix geometry not working when used from mpv.conf and the conf editor.
@@ -11,7 +109,7 @@
- New zhongfly libmpv build. - New zhongfly libmpv build.
# v7.0.0.6 Beta (2023-01-02) # v7.0.0.6 Beta (2024-01-02)
- Improved backward compatibility with input.conf files created by old versions. - Improved backward compatibility with input.conf files created by old versions.
@@ -1076,4 +1174,4 @@ stable release, no changes since the last beta
- new feature added to manage file associations from within the app. It can be found in the menu at: Tools > Manage... [Default Binding](https://github.com/mpvnet-player/mpv.net/blob/main/mpv.net/Resources/input.conf.txt#L149) - new feature added to manage file associations from within the app. It can be found in the menu at: Tools > Manage... [Default Binding](https://github.com/mpvnet-player/mpv.net/blob/main/mpv.net/Resources/input.conf.txt#L149)
- new zip download option added - new zip download option added
- new x86 download option added - new x86 download option added

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

BIN
docs/img/ConfEditor.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 KiB

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 KiB

BIN
docs/img/Menu.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

BIN
docs/img/Terminal.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -4,28 +4,13 @@ $ErrorActionPreference = 'Stop'
$PoFiles = Get-ChildItem $PSScriptRoot/po $PoFiles = Get-ChildItem $PSScriptRoot/po
$ExeFolder = "$PSScriptRoot/../src/MpvNet.Windows/bin/Debug" $ExeFolder = "$PSScriptRoot/../src/MpvNet.Windows/bin/Debug"
function CreateFolder
{
param($path)
if (-not (Test-Path $path))
{
mkdir $path
}
if (-not (Test-Path $path))
{
throw
}
}
foreach ($it in $PoFiles) foreach ($it in $PoFiles)
{ {
$folder = "$ExeFolder/Locale/$($it.BaseName)/LC_MESSAGES" $folder = "$ExeFolder/Locale/$($it.BaseName)/LC_MESSAGES"
if (-not (Test-Path $folder)) if (-not (Test-Path $folder))
{ {
New-Item -ItemType Directory -Path $folder New-Item -ItemType Directory -Path $folder | Out-Null
} }
$moPath = "$folder/mpvnet.mo" $moPath = "$folder/mpvnet.mo"

View File

@@ -43,8 +43,6 @@ D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\StockIcon.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\Taskbar.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\Taskbar.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\WinApi.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\WinApi.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\CommandPalette.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\CommandPaletteItem.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\GlobalHotkey.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\GlobalHotkey.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\Theme.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\Theme.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\TreeNode.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\TreeNode.cs
@@ -62,7 +60,6 @@ D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Msg.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\WpfApplication.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\WpfApplication.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\WpfTranslator.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\WpfTranslator.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\ComboBoxSettingControl.xaml.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\ComboBoxSettingControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\CommandPaletteControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\HyperlinkEx.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\HyperlinkEx.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\OptionSettingControl.xaml.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\OptionSettingControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\SearchControl.xaml.cs D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\SearchControl.xaml.cs

1013
lang/po/bg.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,16 +4,16 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
# Translators: # Translators:
# Frank Skare, 2024 # Frank Skare, 2025
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-04 02:51+0100\n" "POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n" "PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: Frank Skare, 2024\n" "Last-Translator: Frank Skare, 2025\n"
"Language-Team: German (https://app.transifex.com/stax76/teams/179964/de/)\n" "Language-Team: German (https://app.transifex.com/stax76/teams/179964/de/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -65,13 +65,13 @@ msgid "Add files/URLs to playlist from clipboard"
msgstr "Dateien/URLs zur Wiedergabeliste aus der Zwischenablage hinzufügen" msgstr "Dateien/URLs zur Wiedergabeliste aus der Zwischenablage hinzufügen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:379 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:372
msgid "Recent Files" msgid "Recent Files"
msgstr "Zuletzt geöffnete Dateien" msgstr "Zuletzt geöffnete Dateien"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
msgid "Exit" msgid "Exit"
msgstr "Beenden" msgstr "Beenden"
@@ -81,15 +81,15 @@ msgid "Playback"
msgstr "Wiedergabe" msgstr "Wiedergabe"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause" msgid "Play/Pause"
msgstr "Wiedergabe/Pause" msgstr "Wiedergabe/Pause"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
msgid "Stop" msgid "Stop"
msgstr "Stopp" msgstr "Stopp"
@@ -120,16 +120,16 @@ msgid "Navigate"
msgstr "Navigieren" msgstr "Navigieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:200 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File" msgid "Previous File"
msgstr "Vorherige Datei" msgstr "Vorherige Datei"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
msgid "Next File" msgid "Next File"
msgstr "Nächste Datei" msgstr "Nächste Datei"
@@ -182,12 +182,12 @@ msgid "Jump 5 min backward"
msgstr "5 Minuten rückwärts springen" msgstr "5 Minuten rückwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:393
msgid "Title" msgid "Title"
msgstr "Titel" msgstr "Titel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
msgid "Chapter" msgid "Chapter"
msgstr "Kapitel" msgstr "Kapitel"
@@ -327,7 +327,7 @@ msgid "Audio"
msgstr "Audio" msgstr "Audio"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:446 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:453
msgid "Audio Device" msgid "Audio Device"
msgstr "Audiogerät" msgstr "Audiogerät"
@@ -375,15 +375,14 @@ msgid "Increase Font Size"
msgstr "Schriftgröße erhöhen" msgstr "Schriftgröße erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "More" msgid "More"
msgstr "Mehr" msgstr "Mehr"
@@ -392,7 +391,7 @@ msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr "Überschreiben von SSA/ASS-Stilen mit normalen Stilen umschalten" msgstr "Überschreiben von SSA/ASS-Stilen mit normalen Stilen umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:296 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:289
msgid "Track" msgid "Track"
msgstr "Spur" msgstr "Spur"
@@ -404,12 +403,12 @@ msgid "Volume"
msgstr "Lautstärke" msgstr "Lautstärke"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 msgctxt "Volume"
msgid "Up" msgid "Up"
msgstr "Hoch" msgstr "Hoch"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 msgctxt "Volume"
msgid "Down" msgid "Down"
msgstr "Runter" msgstr "Runter"
@@ -459,164 +458,169 @@ msgstr "Doppelt"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "View" msgid "View"
msgstr "Ansicht" msgstr "Ansicht"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
msgid "Show Playlist" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgstr "Wiedergabeliste anzeigen" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "Wiedergabeliste"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Show Profiles"
msgstr "Profile anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle Statistics" msgid "Toggle Statistics"
msgstr "Statistiken umschalten" msgstr "Statistiken umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility" msgid "Toggle OSC Visibility"
msgstr "Bildschirmschaltflächen-Sichtbarkeit umschalten" msgstr "Bildschirmschaltflächen-Sichtbarkeit umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr "Media Info Bildschirm"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Show Media Info On-Screen" msgid "Media Info Message Box"
msgstr "Medieninformationen auf dem Bildschirm anzeigen" msgstr "Media Info Message Box"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "Show Media Info Message Box" msgid "Progress"
msgstr "Medieninformation in Nachrichtenbox anzeigen" msgstr "Fortschritt"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
msgid "Show Progress"
msgstr "Fortschritt anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgid "Show Console" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgstr "Konsole anzeigen" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "Bildschirmmenü"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgid "Show Audio Devices" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgstr "Audio-Geräte anzeigen" msgid "Bindings"
msgstr "Tastaturkurzbefehle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
msgid "Show Commands" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgstr "Befehle anzeigen" msgid "Properties"
msgstr "Eigenschaften"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
msgid "Show Bindings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgstr "Tastenkombinationen anzeigen" msgid "Chapters"
msgstr "Kapitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
msgid "Show Properties" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgstr "Eigenschaften anzeigen" msgid "Tracks"
msgstr "Spuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
msgid "Show Keys" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgstr "Tastenkombinationen anzeigen" msgid "Audio Tracks"
msgstr "Audiospuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Show Protocols" msgid "Subtitle Tracks"
msgstr "Protokolle anzeigen" msgstr "Untertitelspuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Show Decoders" msgid "Secondary Subtitle"
msgstr "Decoder anzeigen" msgstr "Sekundärer Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "Show Demuxers" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgstr "Demuxer anzeigen" msgid "Video Tracks"
msgstr "Videospuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "Editionen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr "Untertitellinien"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr "Audiogeräte"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr "Anschauverlauf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr "Später Anschauen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr "Konsole"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr "Befehle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr "Aktive Tastaturkombinationen Im Texteditor"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr "Aktive Tastaturkombinationen Auf Bildschirm"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr "Tastaturkombinationen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr "Protokolle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 msgid "Decoders"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150 msgstr "Dekoder"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Window"
msgstr "Fenster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Fullscreen"
msgstr "Vollbild"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Zoom"
msgstr "Zoom"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
msgid "Enlarge"
msgstr "Vergrößern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
msgid "Shrink"
msgstr "Verkleinern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
msgid "50 %"
msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "100 %"
msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "300 %"
msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Move"
msgstr "Verschieben"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Left"
msgstr "Links"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Right"
msgstr "Rechts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Center" msgid "Demuxers"
msgstr "Mitte" msgstr "Demuxer"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
msgid "Toggle Border"
msgstr "Rahmen umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Toggle On Top" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgstr "Fenster im Vordergrund umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:427 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
msgid "Profile"
msgstr "Profil"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
@@ -628,239 +632,344 @@ msgstr "Profil"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166 msgid "Window"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 msgstr "Fenster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Settings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgstr "Einstellungen" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr "Vollbild"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Zoom"
msgstr "Zoom"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr "Vergrößern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "Verkleinern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "Show Config Editor" msgid "50 %"
msgstr "Konfigurationseditor anzeigen" msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "Show Input Editor" msgid "100 %"
msgstr "Tastenkombinationeneditor anzeigen" msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Edit mpv.conf" msgid "300 %"
msgstr "mpv.conf bearbeiten" msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgid "Edit input.conf" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgstr "input.conf bearbeiten" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr "Verschieben"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr "Links"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "Rechts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgid "Open Config Folder" msgctxt "Move"
msgstr "Konfigurationsordner öffnen" msgid "Up"
msgstr "Hoch"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 msgctxt "Move"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 msgid "Down"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 msgstr "Runter"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Setup"
msgstr "Einrichten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgid "Register video file associations"
msgstr "Video-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Register audio file associations" msgctxt "Move"
msgstr "Audio-Dateizuordnungen registrieren" msgid "Center"
msgstr "Mitte"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Register image file associations" msgid "Toggle Border"
msgstr "Bild-Dateizuordnungen registrieren" msgstr "Rahmen umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Unregister file associations" msgid "Toggle On Top"
msgstr "Dateizuordnungen entfernen" msgstr "Fenster im Vordergrund umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
msgid "Add mpv.net to Path environment variable" #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgstr "mpv.net zur Umgebungsvariable Path hinzufügen" msgid "Profile"
msgstr "Profil"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Remove mpv.net from Path environment variable"
msgstr "mpv.net aus der Umgebungsvariablen 'Path' entfernen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Tools" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgstr "Werkzeuge"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Set/clear A-B loop points"
msgstr "Setzen/Löschen von A-B Schleifenpunkten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
msgid "Toggle infinite file looping"
msgstr "Unendliche Dateischleife umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Shuffle Playlist"
msgstr "Wiedergabeliste mischen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Toggle Hardware Decoding"
msgstr "Hardware-Decodierung umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Exit Watch Later"
msgstr "Beenden und später anschauen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:466 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Custom"
msgstr "Benutzerdefiniert"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:183 msgid "Config"
msgstr "Konfiguration"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr "Konfigurationseditor anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr "Tastenkombinationeneditor anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr "mpv.conf bearbeiten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr "input.conf bearbeiten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr "Konfigurationsordner öffnen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Setup"
msgstr "Einrichten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr "Video-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "Audio-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr "Bild-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr "Dateizuordnungen entfernen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr "mpv.net zur Umgebungsvariable Path hinzufügen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr "mpv.net aus der Umgebungsvariablen 'Path' entfernen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr "Werkzeuge"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "Setzen/Löschen von A-B Schleifenpunkten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr "Unendliche Dateischleife umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr "Wiedergabeliste mischen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "Hardware-Decodierung umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr "Beenden und später anschauen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr "Benutzerdefiniert"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help" msgid "Help"
msgstr "Hilfe" msgstr "Hilfe"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv" msgid "Website mpv"
msgstr "Webseite mpv" msgstr "Webseite mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net" msgid "Website mpv.net"
msgstr "Webseite mpv.net" msgstr "Webseite mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv" msgid "Manual mpv"
msgstr "Handbuch mpv" msgstr "Handbuch mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net" msgid "Manual mpv.net"
msgstr "Handbuch mpv.net" msgstr "Handbuch mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv" msgid "awesome-mpv"
msgstr "awesome-mpv" msgstr "awesome-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net" msgid "About mpv.net"
msgstr "Über mpv.net" msgstr "Über mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu" msgid "Show Menu"
msgstr "Menü anzeigen" msgstr "Menü anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward" msgid "Forward"
msgstr "Vorwärts" msgstr "Vorwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
msgid "Backward" msgid "Backward"
msgstr "Rückwärts" msgstr "Rückwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
msgid "Volume Up" msgid "Volume Up"
msgstr "Lautstärke erhöhen" msgstr "Lautstärke erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down" msgid "Volume Down"
msgstr "Lautstärke verringern" msgstr "Lautstärke verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten" msgid "Ignore left mouse butten"
msgstr "Ignoriere die linke Maustaste" msgstr "Ignoriere die linke Maustaste"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward" msgid "Seek Forward"
msgstr "Suchen vorwärts" msgstr "Suchen vorwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward" msgid "Seek Backward"
msgstr "Suchen rückwärts" msgstr "Suchen rückwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek" msgid "Undo previous (or marked) seek"
msgstr "Rückgängig machen vorherige (oder markierte) Suche" msgstr "Rückgängig machen vorherige (oder markierte) Suche"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek" msgid "Mark position for revert-seek"
msgstr "Markieren der Position für die Rückwärtssuche" msgstr "Markieren der Position für die Rückwärtssuche"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle" msgid "Seek to previous subtitle"
msgstr "Zum vorherigen Untertitel springen" msgstr "Zum vorherigen Untertitel springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle" msgid "Seek to next subtitle"
msgstr "Zum nächsten Untertitel springen" msgstr "Zum nächsten Untertitel springen"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:209 msgid "Subtitles"
msgstr "Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr "Zweite Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist" msgid "Files/URLs were added to the playlist"
msgstr "Dateien/URLs wurden zur Wiedergabeliste hinzugefügt" msgstr "Dateien/URLs wurden zur Wiedergabeliste hinzugefügt"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file." msgid "The clipboard does not contain a valid URL or file."
msgstr "Die Zwischenablage enthält keine gültige URL oder Datei." msgstr "Die Zwischenablage enthält keine gültige URL oder Datei."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:253 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart." msgid "File Explorer icons will refresh after process restart."
msgstr "" msgstr ""
"Datei-Explorer-Symbole werden nach dem Neustart des Prozesses aktualisiert." "Datei-Explorer-Symbole werden nach dem Neustart des Prozesses aktualisiert."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:256 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed." msgid "File associations were successfully removed."
msgstr "Dateizuordnungen wurden erfolgreich entfernt." msgstr "Dateizuordnungen wurden erfolgreich entfernt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:258 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created." msgid "File associations were successfully created."
msgstr "Dateizuordnungen wurden erfolgreich erstellt." msgstr "Dateizuordnungen wurden erfolgreich erstellt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:261 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations." msgid "Error creating file associations."
msgstr "Fehler beim Erstellen von Dateizuordnungen." msgstr "Fehler beim Erstellen von Dateizuordnungen."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable." msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net ist bereits in der 'Path' Umgebungsvariable enthalten." msgstr "mpv.net ist bereits in der 'Path' Umgebungsvariable enthalten."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:366 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable." msgid "mpv.net was successfully added to the Path environment variable."
msgstr "mpv.net wurde erfolgreich zur 'Path' Umgebungsvariable hinzugefügt." msgstr "mpv.net wurde erfolgreich zur 'Path' Umgebungsvariable hinzugefügt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:375 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable." msgid "mpv.net was not found in the Path environment variable."
msgstr "mpv.net wurde nicht in der 'Path' Umgebungsvariable gefunden." msgstr "mpv.net wurde nicht in der 'Path' Umgebungsvariable gefunden."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:384 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable." msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "mpv.net wurde erfolgreich aus der 'Path' Umgebungsvariable entfernt." msgstr "mpv.net wurde erfolgreich aus der 'Path' Umgebungsvariable entfernt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:389 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:396 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:411
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:416
msgid "This feature was removed, but there are user scripts:" msgid "This feature was removed, but there are user scripts:"
msgstr "Diese Funktion wurde entfernt, aber es gibt Benutzerskripte:" msgstr "Diese Funktion wurde entfernt, aber es gibt Benutzerskripte:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:420 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
msgid "This feature was removed." msgid "This feature was removed."
msgstr "Diese Funktion wurde entfernt." msgstr "Diese Funktion wurde entfernt."
@@ -872,7 +981,15 @@ msgstr "editor_conf"
msgid "theme" msgid "theme"
msgstr "theme" msgstr "theme"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:388
msgid "Clear List"
msgstr "Liste löschen"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr "Profile anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
msgid "Shutdown thread failed to complete within 10 seconds." msgid "Shutdown thread failed to complete within 10 seconds."
msgstr "" msgstr ""
"Shutdown-Thread konnte nicht innerhalb von 10 Sekunden abgeschlossen werden." "Shutdown-Thread konnte nicht innerhalb von 10 Sekunden abgeschlossen werden."

1028
lang/po/fr.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,16 +4,16 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
# Translators: # Translators:
# ever_green, 2024 # ever_green, 2025
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-04 02:51+0100\n" "POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n" "PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: ever_green, 2024\n" "Last-Translator: ever_green, 2025\n"
"Language-Team: Japanese (https://app.transifex.com/stax76/teams/179964/ja/)\n" "Language-Team: Japanese (https://app.transifex.com/stax76/teams/179964/ja/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -58,20 +58,20 @@ msgstr "外部字幕ファイルを追加..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:19 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:19
msgid "Add files to playlist..." msgid "Add files to playlist..."
msgstr "プレイリストファイルを追加..." msgstr "プレイリストファイルを追加..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:20 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:20
msgid "Add files/URLs to playlist from clipboard" msgid "Add files/URLs to playlist from clipboard"
msgstr "クリップボードからプレイリストファイル/URL を追加" msgstr "クリップボードからプレイリストファイル/URL を追加"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:379 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:372
msgid "Recent Files" msgid "Recent Files"
msgstr "最近のファイル" msgstr "最近のファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
msgid "Exit" msgid "Exit"
msgstr "終了" msgstr "終了"
@@ -81,15 +81,15 @@ msgid "Playback"
msgstr "再生" msgstr "再生"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause" msgid "Play/Pause"
msgstr "再生/一時停止" msgstr "再生/一時停止"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
msgid "Stop" msgid "Stop"
msgstr "停止" msgstr "停止"
@@ -120,16 +120,16 @@ msgid "Navigate"
msgstr "操作" msgstr "操作"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:200 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File" msgid "Previous File"
msgstr "前のファイル" msgstr "前のファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
msgid "Next File" msgid "Next File"
msgstr "次のファイル" msgstr "次のファイル"
@@ -151,43 +151,43 @@ msgstr "前のチャプター"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:38 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:38
msgid "Jump To Next Frame" msgid "Jump To Next Frame"
msgstr "次のフレームにジャンプ" msgstr "次のフレームへ進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:39 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:39
msgid "Jump To Previous Frame" msgid "Jump To Previous Frame"
msgstr "前のフレームにジャンプ" msgstr "前のフレームへ戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:41 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:41
msgid "Jump 5 sec forward" msgid "Jump 5 sec forward"
msgstr "5 秒前方にジャンプ" msgstr "5 秒進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42
msgid "Jump 5 sec backward" msgid "Jump 5 sec backward"
msgstr "5 秒後方にジャンプ" msgstr "5 秒戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44
msgid "Jump 30 sec forward" msgid "Jump 30 sec forward"
msgstr "30 秒前方にジャンプ" msgstr "30 秒進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:45 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:45
msgid "Jump 30 sec backward" msgid "Jump 30 sec backward"
msgstr "30 秒後方にジャンプ" msgstr "30 秒戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:47 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:47
msgid "Jump 5 min forward" msgid "Jump 5 min forward"
msgstr "5 分前方にジャンプ" msgstr "5 分進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:48 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:48
msgid "Jump 5 min backward" msgid "Jump 5 min backward"
msgstr "5 分後方にジャンプ" msgstr "5 分戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:393
msgid "Title" msgid "Title"
msgstr "タイトル" msgstr "タイトル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
msgid "Chapter" msgid "Chapter"
msgstr "チャプター" msgstr "チャプター"
@@ -217,21 +217,21 @@ msgstr "サイズを拡大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:56 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:56
msgid "Move Left" msgid "Move Left"
msgstr "左移動" msgstr "左移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:57 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:57
msgid "Move Right" msgid "Move Right"
msgstr "右移動" msgstr "右移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:59 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:59
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:97 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:97
msgid "Move Up" msgid "Move Up"
msgstr "上移動" msgstr "上移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:60 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:60
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:98 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:98
msgid "Move Down" msgid "Move Down"
msgstr "下移動" msgstr "下移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:62 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:62
msgid "Decrease Height" msgid "Decrease Height"
@@ -327,7 +327,7 @@ msgid "Audio"
msgstr "オーディオ" msgstr "オーディオ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:446 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:453
msgid "Audio Device" msgid "Audio Device"
msgstr "オーディオデバイス" msgstr "オーディオデバイス"
@@ -368,31 +368,30 @@ msgstr "表示の切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:100 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:100
msgid "Decrease Font Size" msgid "Decrease Font Size"
msgstr "フォントサイズを小さくする" msgstr "フォントサイズを小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:101 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:101
msgid "Increase Font Size" msgid "Increase Font Size"
msgstr "フォントサイズを大きくする" msgstr "フォントサイズを大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "More" msgid "More"
msgstr "詳細" msgstr "その他"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
msgid "Toggle overriding SSA/ASS styles with normal styles" msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr "SSA/ASS スタイルを通常のスタイルで上書きする" msgstr "SSA/ASS スタイルを通常のスタイルで上書きする"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:296 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:289
msgid "Track" msgid "Track"
msgstr "トラック" msgstr "トラック"
@@ -404,12 +403,12 @@ msgid "Volume"
msgstr "音量" msgstr "音量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 msgctxt "Volume"
msgid "Up" msgid "Up"
msgstr "上げる" msgstr "上げる"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 msgctxt "Volume"
msgid "Down" msgid "Down"
msgstr "下げる" msgstr "下げる"
@@ -459,164 +458,169 @@ msgstr "2 倍"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "View" msgid "View"
msgstr "表示" msgstr "表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
msgid "Show Playlist" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgstr "プレイリストを表示" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "プレイリスト"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Show Profiles"
msgstr "プロファイルを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle Statistics" msgid "Toggle Statistics"
msgstr "統計情報の切り替え" msgstr "統計情報の切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility" msgid "Toggle OSC Visibility"
msgstr "OSC 表示の切り替え" msgstr "OSC 表示の切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr "画面メディア情報"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Show Media Info On-Screen" msgid "Media Info Message Box"
msgstr "画面上にメディア情報を表示" msgstr "メッセージメディア情報"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "Show Media Info Message Box" msgid "Progress"
msgstr "メディア情報メッセージボックスを表示" msgstr "再生位置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
msgid "Show Progress"
msgstr "進行状況を表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgid "Show Console" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgstr "コンソールを表示" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "画面メニュー"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgid "Show Audio Devices" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgstr "オーディオデバイスを表示" msgid "Bindings"
msgstr "バインディング"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
msgid "Show Commands" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgstr "コマンドを表示" msgid "Properties"
msgstr "プロパティ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
msgid "Show Bindings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgstr "バインディングを表示" msgid "Chapters"
msgstr "チャプター"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
msgid "Show Properties" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgstr "プロパティを表示" msgid "Tracks"
msgstr "トラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
msgid "Show Keys" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgstr "キーを表示" msgid "Audio Tracks"
msgstr "オーディオトラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Show Protocols" msgid "Subtitle Tracks"
msgstr "プロトコルを表示" msgstr "字幕トラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Show Decoders" msgid "Secondary Subtitle"
msgstr "デコーダを表示" msgstr "セカンダリ字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "Show Demuxers" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgstr "デマルチプレクサを表示" msgid "Video Tracks"
msgstr "ビデオトラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "エディション"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr "字幕ライン"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr "オーディオデバイス"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr "再生履歴"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr "再生位置を保存"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr "コンソール"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr "コマンド"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr "キーバインドをエディタで編集"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr "キーバインドを画面に表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr "キー"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr "プロトコル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 msgid "Decoders"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150 msgstr "デコーダー"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Window"
msgstr "ウィンドウ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Fullscreen"
msgstr "フルスクリーン"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Zoom"
msgstr "ズーム"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
msgid "Enlarge"
msgstr "拡大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
msgid "Shrink"
msgstr "縮小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
msgid "50 %"
msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "100 %"
msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "300 %"
msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Move"
msgstr "移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Left"
msgstr "左"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Right"
msgstr "右"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Center" msgid "Demuxers"
msgstr "中央" msgstr "デマルチプレクサ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
msgid "Toggle Border"
msgstr "ボーダーの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Toggle On Top" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgstr "常に手前に表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:427 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
msgid "Profile"
msgstr "プロファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
@@ -628,250 +632,363 @@ msgstr "プロファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166 msgid "Window"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 msgstr "ウィンドウ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Settings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgstr "設定" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr "フルスクリーン"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Zoom"
msgstr "ズーム"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr "拡大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "縮小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "Show Config Editor" msgid "50 %"
msgstr "構成エディターを表示" msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "Show Input Editor" msgid "100 %"
msgstr "入力エディターを表示" msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Edit mpv.conf" msgid "300 %"
msgstr "mpv.conf の編集" msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgid "Edit input.conf" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgstr "input.conf の編集" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr "移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr "左へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "右へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgid "Open Config Folder" msgctxt "Move"
msgstr "構成フォルダを開く" msgid "Up"
msgstr "上へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 msgctxt "Move"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 msgid "Down"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 msgstr "下へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Setup"
msgstr "セットアップ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgid "Register video file associations"
msgstr "ビデオファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Register audio file associations" msgctxt "Move"
msgstr "オーディオファイルの関連付けを登録" msgid "Center"
msgstr "中央"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Register image file associations" msgid "Toggle Border"
msgstr "画像ファイルの関連付けを登録" msgstr "ボーダーの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Unregister file associations" msgid "Toggle On Top"
msgstr "ファイルの関連付けの登録解除" msgstr "常に手前に表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
msgid "Add mpv.net to Path environment variable" #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgstr "mpv.net を Path 環境変数に追加" msgid "Profile"
msgstr "プロファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Remove mpv.net from Path environment variable"
msgstr "mpv.net を Path 環境変数から削除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Tools" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgstr "ツール"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Set/clear A-B loop points"
msgstr "A-B 区間ループの設定/解除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
msgid "Toggle infinite file looping"
msgstr "無限ファイルループの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Shuffle Playlist"
msgstr "プレイリストをシャッフル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Toggle Hardware Decoding"
msgstr "ハードウェアデコードの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Exit Watch Later"
msgstr "後で見るから終了"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:466 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Custom"
msgstr "カスタム"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:183 msgid "Config"
msgstr "設定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr "構成エディターを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr "入力エディターを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr "mpv.conf の編集"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr "input.conf の編集"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr "構成フォルダを開く"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Setup"
msgstr "セットアップ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr "ビデオファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "オーディオファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr "画像ファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr "ファイルの関連付けの登録解除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr "mpv.net を Path 環境変数へ追加"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr "mpv.net を Path 環境変数から削除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr "ツール"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "A-B 区間ループの設定/解除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr "無限ファイルループの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr "プレイリストをシャッフル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "ハードウェアデコードの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr "再生位置を保存して終了"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr "カスタム"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help" msgid "Help"
msgstr "ヘルプ" msgstr "ヘルプ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv" msgid "Website mpv"
msgstr "mpv ウェブサイト" msgstr "mpv ウェブサイト"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net" msgid "Website mpv.net"
msgstr "mpv.net ウェブサイト" msgstr "mpv.net ウェブサイト"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv" msgid "Manual mpv"
msgstr "mpv マニュアル" msgstr "mpv マニュアル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net" msgid "Manual mpv.net"
msgstr "mpv.net マニュアル" msgstr "mpv.net マニュアル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv" msgid "awesome-mpv"
msgstr "awesome-mpv" msgstr "awesome-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net" msgid "About mpv.net"
msgstr "mpv.net のバージョン情報" msgstr "mpv.net のバージョン情報"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu" msgid "Show Menu"
msgstr "メニューを表示" msgstr "メニューを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward" msgid "Forward"
msgstr "" msgstr "進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Backward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "Volume Up"
msgstr "音量を上げる"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Volume Down"
msgstr "音量を下げる"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Ignore left mouse butten"
msgstr "マウスの左ボタンを無視"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211 msgid "Backward"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217 msgstr "戻る"
msgid "Seek Forward"
msgstr "前方にシーク"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218 msgid "Volume Up"
msgid "Seek Backward" msgstr "音量を上げる"
msgstr "後方にシーク"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down"
msgstr "音量を下げる"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten"
msgstr "マウスの左ボタンを無視"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward"
msgstr "早送り"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward"
msgstr "早戻し"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek" msgid "Undo previous (or marked) seek"
msgstr "" msgstr "直前の (またはマークした) シークを元に戻す"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek" msgid "Mark position for revert-seek"
msgstr "" msgstr "戻り位置をマーク"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle" msgid "Seek to previous subtitle"
msgstr "前の字幕にシーク" msgstr "前の字幕へ戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle" msgid "Seek to next subtitle"
msgstr "次の字幕にシーク" msgstr "次の字幕へ進む"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:209 msgid "Subtitles"
msgstr "字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr "セカンダリ字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist" msgid "Files/URLs were added to the playlist"
msgstr "ファイル/URL がプレイリスト追加されました" msgstr "ファイル/URL がプレイリスト追加されました"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file." msgid "The clipboard does not contain a valid URL or file."
msgstr "クリップボードに有効な URL またはファイルが含まれていません。" msgstr "クリップボードに有効な URL またはファイルが含まれていません。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:253 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart." msgid "File Explorer icons will refresh after process restart."
msgstr "ファイルエクスプローラーのアイコンは、プロセスの再起動後に更新されます。" msgstr "ファイルエクスプローラーのアイコンは、プロセスの再起動後に更新されます。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:256 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed." msgid "File associations were successfully removed."
msgstr "ファイルの関連付けは正常に削除されました。" msgstr "ファイルの関連付けは正常に削除されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:258 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created." msgid "File associations were successfully created."
msgstr "ファイルの関連付けが正常に作成されました。" msgstr "ファイルの関連付けが正常に作成されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:261 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations." msgid "Error creating file associations."
msgstr "ファイルの関連付けの作成中にエラーが発生しました。" msgstr "ファイルの関連付けの作成中にエラーが発生しました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable." msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net は既に Path 環境変数にあります。" msgstr "mpv.net は既に Path 環境変数にあります。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:366 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable." msgid "mpv.net was successfully added to the Path environment variable."
msgstr "mpv.net が Path 環境変数正常に追加されました。" msgstr "mpv.net が Path 環境変数正常に追加されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:375 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable." msgid "mpv.net was not found in the Path environment variable."
msgstr "mpv.net が Path 環境変数に見つかりませんでした。" msgstr "mpv.net が Path 環境変数に見つかりませんでした。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:384 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable." msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "mpv.net は Path 環境変数から正常に削除されました。" msgstr "mpv.net は Path 環境変数から正常に削除されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:389 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:396 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:411
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:416
msgid "This feature was removed, but there are user scripts:" msgid "This feature was removed, but there are user scripts:"
msgstr "この機能は削除されましたが、ユーザースクリプトがあります:" msgstr "この機能は削除されましたが、ユーザースクリプトがあります:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:420 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
msgid "This feature was removed." msgid "This feature was removed."
msgstr "この機能は削除されました。" msgstr "この機能は削除されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:79 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:79
msgid "editor_conf" msgid "editor_conf"
msgstr "" msgstr "editor_conf"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:114 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:114
msgid "theme" msgid "theme"
msgstr "テーマ" msgstr "テーマ"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:388
msgid "Clear List"
msgstr "リストをクリア"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr "プロファイルを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
msgid "Shutdown thread failed to complete within 10 seconds." msgid "Shutdown thread failed to complete within 10 seconds."
msgstr "シャットダウン スレッドが 10 秒以内に完了しませんでした。" msgstr "シャットダウン スレッドが 10 秒以内に完了しませんでした。"

1020
lang/po/ko.po Normal file

File diff suppressed because it is too large Load Diff

1022
lang/po/pl.po Normal file

File diff suppressed because it is too large Load Diff

1022
lang/po/ru.po Normal file

File diff suppressed because it is too large Load Diff

1009
lang/po/tr.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -5,16 +5,16 @@
# #
# Translators: # Translators:
# dyphire, 2023 # dyphire, 2023
# nkh0472 <nkh0472@hotmail.com>, 2024 # nkh0472 <nkh0472@hotmail.com>, 2025
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-04 02:51+0100\n" "POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n" "PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: nkh0472 <nkh0472@hotmail.com>, 2024\n" "Last-Translator: nkh0472 <nkh0472@hotmail.com>, 2025\n"
"Language-Team: Chinese (China) (https://app.transifex.com/stax76/teams/179964/zh_CN/)\n" "Language-Team: Chinese (China) (https://app.transifex.com/stax76/teams/179964/zh_CN/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -66,13 +66,13 @@ msgid "Add files/URLs to playlist from clipboard"
msgstr "将 文件/URL 从剪贴板添加到播放列表" msgstr "将 文件/URL 从剪贴板添加到播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:379 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:372
msgid "Recent Files" msgid "Recent Files"
msgstr "近期文件" msgstr "近期文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
msgid "Exit" msgid "Exit"
msgstr "退出" msgstr "退出"
@@ -82,15 +82,15 @@ msgid "Playback"
msgstr "回放" msgstr "回放"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause" msgid "Play/Pause"
msgstr "播放/暂停" msgstr "播放/暂停"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
msgid "Stop" msgid "Stop"
msgstr "停止" msgstr "停止"
@@ -121,16 +121,16 @@ msgid "Navigate"
msgstr "导航" msgstr "导航"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:200 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File" msgid "Previous File"
msgstr "上一个文件" msgstr "上一个文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
msgid "Next File" msgid "Next File"
msgstr "下一个文件" msgstr "下一个文件"
@@ -183,12 +183,12 @@ msgid "Jump 5 min backward"
msgstr "快退 5 分钟" msgstr "快退 5 分钟"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:393
msgid "Title" msgid "Title"
msgstr "标题" msgstr "标题"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
msgid "Chapter" msgid "Chapter"
msgstr "章节" msgstr "章节"
@@ -328,7 +328,7 @@ msgid "Audio"
msgstr "音频" msgstr "音频"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:446 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:453
msgid "Audio Device" msgid "Audio Device"
msgstr "音频设备" msgstr "音频设备"
@@ -376,15 +376,14 @@ msgid "Increase Font Size"
msgstr "增加字体大小" msgstr "增加字体大小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "More" msgid "More"
msgstr "更多" msgstr "更多"
@@ -393,7 +392,7 @@ msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr "切换 使用常规样式覆盖 SSA/ASS 样式" msgstr "切换 使用常规样式覆盖 SSA/ASS 样式"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:296 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:289
msgid "Track" msgid "Track"
msgstr "轨道" msgstr "轨道"
@@ -405,14 +404,14 @@ msgid "Volume"
msgstr "音量" msgstr "音量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 msgctxt "Volume"
msgid "Up" msgid "Up"
msgstr "上移" msgstr "增大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 msgctxt "Volume"
msgid "Down" msgid "Down"
msgstr "下移" msgstr "减小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110
msgid "Mute" msgid "Mute"
@@ -460,164 +459,169 @@ msgstr "翻倍"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "View" msgid "View"
msgstr "查看" msgstr "查看"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
msgid "Show Playlist" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgstr "显示播放列表" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Show Profiles"
msgstr "显示配置文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle Statistics" msgid "Toggle Statistics"
msgstr "切换 统计信息" msgstr "切换 统计信息"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility" msgid "Toggle OSC Visibility"
msgstr "切换 OSC 可见性" msgstr "切换 OSC 可见性"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr "显示媒体信息"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Show Media Info On-Screen" msgid "Media Info Message Box"
msgstr "在 OSD 上显示媒体信息" msgstr "媒体信息消息框"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "Show Media Info Message Box" msgid "Progress"
msgstr "显示媒体信息消息框" msgstr "进度"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
msgid "Show Progress"
msgstr "显示进度"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgid "Show Console" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgstr "显示控制台" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "屏幕菜单"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgid "Show Audio Devices" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgstr "显示音频设备" msgid "Bindings"
msgstr "键位绑定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
msgid "Show Commands" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgstr "显示命令" msgid "Properties"
msgstr "属性"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
msgid "Show Bindings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgstr "显示键位绑定" msgid "Chapters"
msgstr "章节"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
msgid "Show Properties" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgstr "显示属性" msgid "Tracks"
msgstr "轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
msgid "Show Keys" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgstr "显示按键" msgid "Audio Tracks"
msgstr "音频轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Show Protocols" msgid "Subtitle Tracks"
msgstr "显示协议" msgstr "字幕轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Show Decoders" msgid "Secondary Subtitle"
msgstr "显示解码器" msgstr "第二字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "Show Demuxers" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgstr "显示解复用器" msgid "Video Tracks"
msgstr "视频轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "版本"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr "字幕行"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr "音频设备"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr "观看历史"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr "稍后观看"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr "控制台"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr "命令"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr "文本编辑器中的活动绑定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr "屏幕上的活动绑定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr "键"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr "协议"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 msgid "Decoders"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150 msgstr "解码器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Window"
msgstr "窗口"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Fullscreen"
msgstr "全屏"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Zoom"
msgstr "缩放"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
msgid "Enlarge"
msgstr "放大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
msgid "Shrink"
msgstr "缩小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
msgid "50 %"
msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "100 %"
msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "300 %"
msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Move"
msgstr "移动"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Left"
msgstr "左移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Right"
msgstr "右移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Center" msgid "Demuxers"
msgstr "居中" msgstr "解复用器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
msgid "Toggle Border"
msgstr "切换 边框"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Toggle On Top" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgstr "切换 置顶"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:427 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
msgid "Profile"
msgstr "配置文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
@@ -629,238 +633,343 @@ msgstr "配置文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166 msgid "Window"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 msgstr "窗口"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Settings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgstr "设置" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr "全屏"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Zoom"
msgstr "缩放"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr "放大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "缩小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "Show Config Editor" msgid "50 %"
msgstr "显示配置编辑器" msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "Show Input Editor" msgid "100 %"
msgstr "显示输入编辑器" msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Edit mpv.conf" msgid "300 %"
msgstr "编辑 mpv.conf" msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgid "Edit input.conf" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgstr "编辑 input.conf" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr "移动"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr "左移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "右移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgid "Open Config Folder" msgctxt "Move"
msgstr "打开配置文件夹" msgid "Up"
msgstr "上移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 msgctxt "Move"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 msgid "Down"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 msgstr "下移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Setup"
msgstr "设置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgid "Register video file associations"
msgstr "注册视频文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Register audio file associations" msgctxt "Move"
msgstr "注册音频文件关联" msgid "Center"
msgstr "居中"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Register image file associations" msgid "Toggle Border"
msgstr "注册图像文件关联" msgstr "切换 边框"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Unregister file associations" msgid "Toggle On Top"
msgstr "注销文件关联" msgstr "切换 置顶"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
msgid "Add mpv.net to Path environment variable" #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgstr "将 mpv.net 添加到环境变量" msgid "Profile"
msgstr "配置文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Remove mpv.net from Path environment variable"
msgstr "将 mpv.net 从环境变量中移除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Tools" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgstr "工具"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Set/clear A-B loop points"
msgstr "设置/清除 A-B 循环点"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
msgid "Toggle infinite file looping"
msgstr "切换 无限文件循环"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Shuffle Playlist"
msgstr "随机播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Toggle Hardware Decoding"
msgstr "切换 硬件解码"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Exit Watch Later"
msgstr "退出(稍后观看)"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:466 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Custom"
msgstr "自定义"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:183 msgid "Config"
msgstr "配置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr "显示配置编辑器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr "显示输入编辑器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr "编辑 mpv.conf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr "编辑 input.conf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr "打开配置文件夹"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Setup"
msgstr "设置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr "注册视频文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "注册音频文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr "注册图像文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr "注销文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr "将 mpv.net 添加到环境变量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr "将 mpv.net 从环境变量中移除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr "工具"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "设置/清除 A-B 循环点"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr "切换 无限文件循环"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr "随机播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "切换 硬件解码"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr "退出(稍后观看)"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr "自定义"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help" msgid "Help"
msgstr "帮助" msgstr "帮助"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv" msgid "Website mpv"
msgstr "mpv 网址" msgstr "mpv 网址"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net" msgid "Website mpv.net"
msgstr "mpv.net 网址" msgstr "mpv.net 网址"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv" msgid "Manual mpv"
msgstr "mpv 手册" msgstr "mpv 手册"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net" msgid "Manual mpv.net"
msgstr "mpv.net 手册" msgstr "mpv.net 手册"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv" msgid "awesome-mpv"
msgstr "awesome-mpv" msgstr "awesome-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net" msgid "About mpv.net"
msgstr "关于 mpv.net" msgstr "关于 mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu" msgid "Show Menu"
msgstr "显示菜单" msgstr "显示菜单"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward" msgid "Forward"
msgstr "前进" msgstr "前进"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
msgid "Backward" msgid "Backward"
msgstr "后退" msgstr "后退"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
msgid "Volume Up" msgid "Volume Up"
msgstr "增加 音量" msgstr "增加 音量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down" msgid "Volume Down"
msgstr "降低 音量" msgstr "降低 音量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten" msgid "Ignore left mouse butten"
msgstr "忽略左键" msgstr "忽略左键"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward" msgid "Seek Forward"
msgstr "向前跳转" msgstr "向前跳转"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward" msgid "Seek Backward"
msgstr "向后跳转" msgstr "向后跳转"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek" msgid "Undo previous (or marked) seek"
msgstr "撤销之前(或标记的)跳转" msgstr "撤销之前(或标记的)跳转"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek" msgid "Mark position for revert-seek"
msgstr "标记回退查找的位置" msgstr "标记回退查找的位置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle" msgid "Seek to previous subtitle"
msgstr "跳至上一条字幕" msgstr "跳至上一条字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle" msgid "Seek to next subtitle"
msgstr "跳至下一条字幕" msgstr "跳至下一条字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:209 msgid "Subtitles"
msgstr "字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr "第二字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist" msgid "Files/URLs were added to the playlist"
msgstr "已添加 文件/URL 到播放列表" msgstr "已添加 文件/URL 到播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file." msgid "The clipboard does not contain a valid URL or file."
msgstr "剪贴板中未包含有效的 URL 或文件。" msgstr "剪贴板中未包含有效的 URL 或文件。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:253 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart." msgid "File Explorer icons will refresh after process restart."
msgstr "文件资源管理器图标将在进程重新启动后刷新" msgstr "文件资源管理器图标将在进程重新启动后刷新"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:256 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed." msgid "File associations were successfully removed."
msgstr "文件关联已成功删除" msgstr "文件关联已成功删除"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:258 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created." msgid "File associations were successfully created."
msgstr "文件关联已成功创建" msgstr "文件关联已成功创建"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:261 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations." msgid "Error creating file associations."
msgstr "创建文件关联时出错" msgstr "创建文件关联时出错"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable." msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net 已存在于环境变量。" msgstr "mpv.net 已存在于环境变量。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:366 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable." msgid "mpv.net was successfully added to the Path environment variable."
msgstr "成功添加 mpv.net 至环境变量。" msgstr "成功添加 mpv.net 至环境变量。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:375 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable." msgid "mpv.net was not found in the Path environment variable."
msgstr "环境变量中不存在 mpv.net。" msgstr "环境变量中不存在 mpv.net。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:384 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable." msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "成功从环境变量中移除 mpv.net 。" msgstr "成功从环境变量中移除 mpv.net 。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:389 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:396 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:411
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:416
msgid "This feature was removed, but there are user scripts:" msgid "This feature was removed, but there are user scripts:"
msgstr "该功能已被移除,但有用户脚本:" msgstr "该功能已被移除,但有用户脚本:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:420 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
msgid "This feature was removed." msgid "This feature was removed."
msgstr "该功能已被移除。" msgstr "该功能已被移除。"
@@ -872,7 +981,15 @@ msgstr "editor_conf"
msgid "theme" msgid "theme"
msgstr "主题" msgstr "主题"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:388
msgid "Clear List"
msgstr "清空列表"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr "显示配置文件"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
msgid "Shutdown thread failed to complete within 10 seconds." msgid "Shutdown thread failed to complete within 10 seconds."
msgstr "线程关闭未能在 10 秒内完成" msgstr "线程关闭未能在 10 秒内完成"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-04 02:51+0100\n" "POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -61,13 +61,13 @@ msgid "Add files/URLs to playlist from clipboard"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:379 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:372
msgid "Recent Files" msgid "Recent Files"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@@ -77,15 +77,15 @@ msgid "Playback"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause" msgid "Play/Pause"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
msgid "Stop" msgid "Stop"
msgstr "" msgstr ""
@@ -116,16 +116,16 @@ msgid "Navigate"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:200 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File" msgid "Previous File"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
msgid "Next File" msgid "Next File"
msgstr "" msgstr ""
@@ -178,12 +178,12 @@ msgid "Jump 5 min backward"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:393
msgid "Title" msgid "Title"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
msgid "Chapter" msgid "Chapter"
msgstr "" msgstr ""
@@ -323,7 +323,7 @@ msgid "Audio"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:446 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:453
msgid "Audio Device" msgid "Audio Device"
msgstr "" msgstr ""
@@ -371,15 +371,14 @@ msgid "Increase Font Size"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "More" msgid "More"
msgstr "" msgstr ""
@@ -388,7 +387,7 @@ msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:296 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:289
msgid "Track" msgid "Track"
msgstr "" msgstr ""
@@ -400,12 +399,12 @@ msgid "Volume"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 msgctxt "Volume"
msgid "Up" msgid "Up"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 msgctxt "Volume"
msgid "Down" msgid "Down"
msgstr "" msgstr ""
@@ -455,164 +454,169 @@ msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "View" msgid "View"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
msgid "Show Playlist" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Show Profiles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle Statistics" msgid "Toggle Statistics"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility" msgid "Toggle OSC Visibility"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Show Media Info On-Screen" msgid "Media Info Message Box"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "Show Media Info Message Box" msgid "Progress"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
msgid "Show Progress"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgid "Show Console" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgid "Show Audio Devices" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgid "Bindings"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
msgid "Show Commands" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgid "Properties"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
msgid "Show Bindings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgid "Chapters"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
msgid "Show Properties" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgid "Tracks"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
msgid "Show Keys" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgid "Audio Tracks"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Show Protocols" msgid "Subtitle Tracks"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Show Decoders" msgid "Secondary Subtitle"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "Show Demuxers" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgid "Video Tracks"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 msgid "Decoders"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Window"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Fullscreen"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Zoom"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
msgid "Enlarge"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
msgid "Shrink"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
msgid "50 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "100 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "200 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "300 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Move"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Left"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Right"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Center" msgid "Demuxers"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
msgid "Toggle Border"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "Toggle On Top" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:427 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
msgid "Profile"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
@@ -624,238 +628,343 @@ msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166 msgid "Window"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Settings" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Zoom"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "Show Config Editor" msgid "50 %"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "Show Input Editor" msgid "100 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Edit mpv.conf" msgid "300 %"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgid "Edit input.conf" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgid "Open Config Folder" msgctxt "Move"
msgid "Up"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 msgctxt "Move"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 msgid "Down"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Setup"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgid "Register video file associations"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Register audio file associations" msgctxt "Move"
msgid "Center"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Register image file associations" msgid "Toggle Border"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Unregister file associations" msgid "Toggle On Top"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
msgid "Add mpv.net to Path environment variable" #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgstr "" msgid "Profile"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Remove mpv.net from Path environment variable"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Tools" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Set/clear A-B loop points"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
msgid "Toggle infinite file looping"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Shuffle Playlist"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Toggle Hardware Decoding"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Exit Watch Later"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:466 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Custom"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:183 msgid "Config"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Help" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Setup"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Website mpv" msgid "Register image file associations"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Website mpv.net" msgid "Unregister file associations"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Manual mpv" msgid "Add mpv.net to Path environment variable"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Manual mpv.net" msgid "Remove mpv.net from Path environment variable"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "awesome-mpv" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "About mpv.net" msgid "Toggle infinite file looping"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Show Menu" msgid "Exit Watch Later"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
msgid "Forward" #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Backward" msgid "Manual mpv"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "Volume Up" msgid "awesome-mpv"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Volume Down" msgid "About mpv.net"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Ignore left mouse butten" msgid "Show Menu"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211 msgid "Backward"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
msgid "Seek Forward"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218 msgid "Volume Up"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward" msgid "Seek Backward"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek" msgid "Undo previous (or marked) seek"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek" msgid "Mark position for revert-seek"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle" msgid "Seek to previous subtitle"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle" msgid "Seek to next subtitle"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:189 #: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:209 msgid "Subtitles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist" msgid "Files/URLs were added to the playlist"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:202 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file." msgid "The clipboard does not contain a valid URL or file."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:253 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart." msgid "File Explorer icons will refresh after process restart."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:256 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed." msgid "File associations were successfully removed."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:258 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created." msgid "File associations were successfully created."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:261 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations." msgid "Error creating file associations."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:358 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable." msgid "mpv.net is already in the Path environment variable."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:366 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable." msgid "mpv.net was successfully added to the Path environment variable."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:375 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable." msgid "mpv.net was not found in the Path environment variable."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:384 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable." msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:389 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:396 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:411
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:416
msgid "This feature was removed, but there are user scripts:" msgid "This feature was removed, but there are user scripts:"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:420 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
msgid "This feature was removed." msgid "This feature was removed."
msgstr "" msgstr ""
@@ -867,7 +976,15 @@ msgstr ""
msgid "theme" msgid "theme"
msgstr "" msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1398 #: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:388
msgid "Clear List"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
msgid "Shutdown thread failed to complete within 10 seconds." msgid "Shutdown thread failed to complete within 10 seconds."
msgstr "" msgstr ""

View File

@@ -8,7 +8,7 @@ Get-ChildItem $PSScriptRoot/.. -Recurse -File -Filter '*.cs' |
Out-File $PSScriptRoot/cs-files.txt Out-File $PSScriptRoot/cs-files.txt
# Create .pot file # Create .pot file
xgettext --force-po --from-code=UTF-8 '--language=c#' -o $PSScriptRoot/source.pot --files-from=$PSScriptRoot/cs-files.txt --keyword=_ xgettext -k_ -k_n:1,2 -k_p:1c,2 -k_pn:1c,2,3 --force-po --from-code=UTF-8 '--language=c#' -o $PSScriptRoot/source.pot --files-from=$PSScriptRoot/cs-files.txt --keyword=_
if ($LastExitCode) { throw $LastExitCode } if ($LastExitCode) { throw $LastExitCode }
# Backup .po files # Backup .po files

View File

@@ -5,3 +5,6 @@ csharp_style_implicit_object_creation_when_type_is_apparent = true
# IDE0090: Use 'new(...)' # IDE0090: Use 'new(...)'
dotnet_diagnostic.IDE0090.severity = silent dotnet_diagnostic.IDE0090.severity = silent
# WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method
dotnet_diagnostic.WFO1000.severity = silent

View File

@@ -0,0 +1,6 @@
<Project>
<PropertyGroup>
<Product>mpv.net</Product>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,10 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
<PackageVersion Include="NGettext" Version="0.6.7" />
<PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.135" />
</ItemGroup>
</Project>

View File

@@ -1,5 +1,5 @@
 
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
namespace MpvNet.Windows; namespace MpvNet.Windows;
@@ -101,8 +101,8 @@ public class ConfParser
} }
else if (line.Contains('=')) else if (line.Contains('='))
{ {
string name = line[..line.IndexOf("=")].Trim(); string name = line[..line.IndexOf('=')].Trim();
string value = line[(line.IndexOf("=") + 1)..].Trim(); string value = line[(line.IndexOf('=') + 1)..].Trim();
currentGroup?.Items.Add(new StringPair(name, value)); currentGroup?.Items.Add(new StringPair(name, value));
} }

View File

@@ -13,7 +13,7 @@ public static class FileAssociation
string exeFilename = Path.GetFileName(exePath); string exeFilename = Path.GetFileName(exePath);
string exeFilenameNoExt = Path.GetFileNameWithoutExtension(exePath); string exeFilenameNoExt = Path.GetFileNameWithoutExtension(exePath);
string[] protocols = { "ytdl", "rtsp", "srt", "srtp" }; string[] protocols = ["ytdl", "rtsp", "srt", "srtp"];
if (perceivedType != "unreg") if (perceivedType != "unreg")
{ {

View File

@@ -7,14 +7,13 @@ using System.Windows.Forms;
using System.Windows.Interop; using System.Windows.Interop;
using System.Windows; using System.Windows;
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
using MpvNet.Windows.WinForms; using MpvNet.Windows.WinForms;
using MpvNet.Windows.WPF.Views; using MpvNet.Windows.WPF.Views;
using MpvNet.Windows.WPF; using MpvNet.Windows.WPF;
using MpvNet.Windows.WPF.MsgBox; using MpvNet.Windows.WPF.MsgBox;
using MpvNet.Windows.Help; using MpvNet.Windows.Help;
using MpvNet.Help; using MpvNet.Help;
using System;
namespace MpvNet; namespace MpvNet;
@@ -43,7 +42,6 @@ public class GuiCommand
["remove-from-path"] = args => RemoveFromPath(), ["remove-from-path"] = args => RemoveFromPath(),
["scale-window"] = args => ScaleWindow?.Invoke(float.Parse(args[0], CultureInfo.InvariantCulture)), ["scale-window"] = args => ScaleWindow?.Invoke(float.Parse(args[0], CultureInfo.InvariantCulture)),
["show-about"] = args => ShowDialog(typeof(AboutWindow)), ["show-about"] = args => ShowDialog(typeof(AboutWindow)),
["show-audio-devices"] = args => Msg.ShowInfo(Player.GetPropertyOsdString("audio-device-list")),
["show-bindings"] = args => ShowBindings(), ["show-bindings"] = args => ShowBindings(),
["show-commands"] = args => ShowCommands(), ["show-commands"] = args => ShowCommands(),
["show-conf-editor"] = args => ShowDialog(typeof(ConfWindow)), ["show-conf-editor"] = args => ShowDialog(typeof(ConfWindow)),
@@ -55,19 +53,20 @@ public class GuiCommand
["show-media-info"] = ShowMediaInfo, ["show-media-info"] = ShowMediaInfo,
["show-menu"] = args => ShowMenu?.Invoke(), ["show-menu"] = args => ShowMenu?.Invoke(),
["show-profiles"] = args => Msg.ShowInfo(Player.GetProfiles()), ["show-profiles"] = args => Msg.ShowInfo(Player.GetProfiles()),
["show-properties"] = args => ShowProperties(), ["show-properties"] = args => Player.Command("script-binding select/show-properties"),
["show-protocols"] = args => ShowProtocols(), ["show-protocols"] = args => ShowProtocols(),
["window-scale"] = args => WindowScaleNet?.Invoke(float.Parse(args[0], CultureInfo.InvariantCulture)), ["window-scale"] = args => WindowScaleNet?.Invoke(float.Parse(args[0], CultureInfo.InvariantCulture)),
// deprecated // deprecated
["show-recent"] = args => ShowRemoved(), // deprecated ["show-recent"] = args => ShowRemoved(), // deprecated
["show-playlist"] = args => ShowPlaylist(), // deprecated
["quick-bookmark"] = args => QuickBookmark(), // deprecated ["quick-bookmark"] = args => QuickBookmark(), // deprecated
["show-history"] = args => ShowHistory(), // deprecated ["show-history"] = args => ShowHistory(), // deprecated
["show-command-palette"] = args => ShowCommandPalette(), // deprecated ["show-playlist"] = args => Player.Command("script-binding select/select-playlist"), // deprecated
["show-audio-tracks"] = args => ShowTracks(), // deprecated ["show-command-palette"] = args => Player.Command("script-binding select/select-binding"), // deprecated
["show-subtitle-tracks"] = args => ShowTracks(), // deprecated ["show-audio-tracks"] = args => Player.Command("script-binding select/select-aid"), // deprecated
["show-subtitle-tracks"] = args => Player.Command("script-binding select/select-sid"), // deprecated
["show-audio-devices"] = args => Player.Command("script-binding select/select-audio-device"), // deprecated
}; };
void ShowDialog(Type winType) void ShowDialog(Type winType)
@@ -118,6 +117,14 @@ public class GuiCommand
{ {
string file = Player.ConfigFolder + args[0]; string file = Player.ConfigFolder + args[0];
if (!File.Exists(file))
{
string msg = $"{args[0]} does not exist. Would you like to create it?";
if (Msg.ShowQuestion(msg) == MessageBoxResult.OK)
File.WriteAllText(file, "");
}
if (File.Exists(file)) if (File.Exists(file))
ProcessHelp.ShellExecute(WinApiHelp.GetAppPathForExtension("txt"), "\"" + file + "\""); ProcessHelp.ShellExecute(WinApiHelp.GetAppPathForExtension("txt"), "\"" + file + "\"");
} }
@@ -155,15 +162,11 @@ public class GuiCommand
} }
string header = BR + string header = BR +
"https://mpv.io/manual/master/#list-of-input-commands" + BR2 + "https://mpv.io/manual/master/#list-of-input-commands" + BR;
"https://github.com/stax76/mpv-scripts#command_palette" + BR;
ShowTextWithEditor("Input Commands", header + sb.ToString()); ShowTextWithEditor("Input Commands", header + sb.ToString());
} }
void ShowProperties() =>
ShowTextWithEditor("Properties", Core.GetPropertyString("property-list").Replace(",", BR));
void ShowKeys() => void ShowKeys() =>
ShowTextWithEditor("Keys", Core.GetPropertyString("input-key-list").Replace(",", BR)); ShowTextWithEditor("Keys", Core.GetPropertyString("input-key-list").Replace(",", BR));
@@ -191,11 +194,13 @@ public class GuiCommand
else else
{ {
string clipboard = System.Windows.Forms.Clipboard.GetText(); string clipboard = System.Windows.Forms.Clipboard.GetText();
List<string> files = new List<string>(); List<string> files = [];
foreach (string i in clipboard.Split(BR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)) foreach (string i in clipboard.Split(BR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
{
if (i.Contains("://") || File.Exists(i)) if (i.Contains("://") || File.Exists(i))
files.Add(i); files.Add(i);
}
if (files.Count == 0) if (files.Count == 0)
{ {
@@ -220,9 +225,13 @@ public class GuiCommand
dialog.Multiselect = true; dialog.Multiselect = true;
if (dialog.ShowDialog() == DialogResult.OK) if (dialog.ShowDialog() != DialogResult.OK)
foreach (string i in dialog.FileNames) return;
Player.CommandV("audio-add", i);
foreach (string i in dialog.FileNames)
{
Player.CommandV("audio-add", i);
}
} }
void RegisterFileAssociations(IList<string> args) void RegisterFileAssociations(IList<string> args)
@@ -232,9 +241,9 @@ public class GuiCommand
switch (perceivedType) switch (perceivedType)
{ {
case "video": extensions = FileTypes.Video; break; case "video": extensions = FileTypes.GetVideoExts(); break;
case "audio": extensions = FileTypes.Audio; break; case "audio": extensions = FileTypes.GetAudioExts(); break;
case "image": extensions = FileTypes.Image; break; case "image": extensions = FileTypes.GetImgExts(); break;
} }
try try
@@ -263,6 +272,20 @@ public class GuiCommand
catch { } catch { }
} }
class Obj
{
public string title { get; set; } = "";
public int selected_index { get; set; } = 0;
public Item[] items { get; set; } = [];
}
class Item
{
public string[] value { get; set; } = [];
public string title { get; set; } = "";
public string hint { get; set; } = "";
}
void ShowMediaInfo(IList<string> args) void ShowMediaInfo(IList<string> args)
{ {
if (Player.PlaylistPos == -1) if (Player.PlaylistPos == -1)
@@ -280,20 +303,20 @@ public class GuiCommand
if (File.Exists(path) && osd) if (File.Exists(path) && osd)
{ {
if (FileTypes.Audio.Contains(path.Ext())) if (FileTypes.IsAudio(path.Ext))
{ {
text = Player.GetPropertyOsdString("filtered-metadata"); text = Player.GetPropertyOsdString("filtered-metadata");
Player.CommandV("show-text", text, "5000"); Player.CommandV("show-text", text, "5000");
return; return;
} }
else if (FileTypes.Image.Contains(path.Ext())) else if (FileTypes.IsImage(path.Ext))
{ {
fileSize = new FileInfo(path).Length; fileSize = new FileInfo(path).Length;
text = "Width: " + Player.GetPropertyInt("width") + "\n" + text = "Width: " + Player.GetPropertyInt("width") + "\n" +
"Height: " + Player.GetPropertyInt("height") + "\n" + "Height: " + Player.GetPropertyInt("height") + "\n" +
"Size: " + Convert.ToInt32(fileSize / 1024.0) + " KB\n" + "Size: " + Convert.ToInt32(fileSize / 1024.0) + " KB\n" +
"Type: " + path.Ext().ToUpper(); "Type: " + path.Ext.ToUpper();
Player.CommandV("show-text", text, "5000"); Player.CommandV("show-text", text, "5000");
return; return;
@@ -309,7 +332,7 @@ public class GuiCommand
int width = Player.GetPropertyInt("video-params/w"); int width = Player.GetPropertyInt("video-params/w");
int height = Player.GetPropertyInt("video-params/h"); int height = Player.GetPropertyInt("video-params/h");
TimeSpan len = TimeSpan.FromSeconds(Player.GetPropertyDouble("duration")); TimeSpan len = TimeSpan.FromSeconds(Player.GetPropertyDouble("duration"));
text = path.FileName() + "\n"; text = path.FileName + "\n";
text += FormatTime(len.TotalMinutes) + ":" + FormatTime(len.Seconds) + "\n"; text += FormatTime(len.TotalMinutes) + ":" + FormatTime(len.Seconds) + "\n";
if (fileSize > 0) if (fileSize > 0)
text += Convert.ToInt32(fileSize / 1024.0 / 1024.0) + " MB\n"; text += Convert.ToInt32(fileSize / 1024.0 / 1024.0) + " MB\n";
@@ -320,15 +343,21 @@ public class GuiCommand
} }
if (App.MediaInfo && !osd && File.Exists(path) && !path.Contains(@"\\.\pipe\")) if (App.MediaInfo && !osd && File.Exists(path) && !path.Contains(@"\\.\pipe\"))
using (MediaInfo mediaInfo = new MediaInfo(path)) {
text = Regex.Replace(mediaInfo.GetSummary(full, raw), "Unique ID.+", ""); using MediaInfo mediaInfo = new MediaInfo(path);
text = Regex.Replace(mediaInfo.GetSummary(full, raw), "Unique ID.+", "");
}
else else
{ {
Player.UpdateExternalTracks(); Player.UpdateExternalTracks();
text = "N: " + Player.GetPropertyString("filename") + BR; text = "N: " + Player.GetPropertyString("filename") + BR;
lock (Player.MediaTracksLock) lock (Player.MediaTracksLock)
{
foreach (MediaTrack track in Player.MediaTracks) foreach (MediaTrack track in Player.MediaTracks)
{
text += track.Text + BR; text += track.Text + BR;
}
}
} }
text = text.TrimEx(); text = text.TrimEx();
@@ -353,7 +382,7 @@ public class GuiCommand
{ {
string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.User)!; string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.User)!;
if (path.ToLower().Contains(Folder.Startup.TrimEnd(Path.DirectorySeparatorChar).ToLower())) if (path.Contains(Folder.Startup.TrimEnd(Path.DirectorySeparatorChar), StringComparison.CurrentCultureIgnoreCase))
{ {
Msg.ShowWarning(_("mpv.net is already in the Path environment variable.")); Msg.ShowWarning(_("mpv.net is already in the Path environment variable."));
return; return;
@@ -384,28 +413,6 @@ public class GuiCommand
Msg.ShowInfo(_("mpv.net was successfully removed from the Path environment variable.")); Msg.ShowInfo(_("mpv.net was successfully removed from the Path environment variable."));
} }
// deprecated
void ShowTracks() =>
Msg.ShowInfo(_("This feature was removed, but there are user scripts:") + BR2 +
"https://github.com/stax76/mpv-scripts#command_palette" + BR +
"https://github.com/stax76/mpv-scripts#search_menu" + BR +
"https://github.com/tomasklaen/uosc");
// deprecated
void ShowPlaylist() =>
Msg.ShowInfo(_("This feature was removed, but there are user scripts:") + BR2 +
"https://github.com/stax76/mpv-scripts#command_palette" + BR +
"https://github.com/stax76/mpv-scripts#search_menu" + BR +
"https://github.com/tomasklaen/uosc" + BR +
"https://github.com/jonniek/mpv-playlistmanager");
// deprecated
void ShowCommandPalette() =>
Msg.ShowInfo(_("This feature was removed, but there are user scripts:") + BR2 +
"https://github.com/stax76/mpv-scripts#command_palette" + BR +
"https://github.com/stax76/mpv-scripts#search_menu" + BR +
"https://github.com/tomasklaen/uosc");
// deprecated // deprecated
void QuickBookmark() => void QuickBookmark() =>
Msg.ShowInfo(_("This feature was removed, but there are user scripts:") + BR2 + Msg.ShowInfo(_("This feature was removed, but there are user scripts:") + BR2 +
@@ -419,13 +426,3 @@ public class GuiCommand
// deprecated // deprecated
void ShowRemoved() => Msg.ShowInfo(_("This feature was removed.")); void ShowRemoved() => Msg.ShowInfo(_("This feature was removed."));
} }
//public void ShowCommandPalette()
//{
// MainForm.Instance?.BeginInvoke(() => {
// CommandPalette.Instance.SetItems(CommandPalette.GetItems());
// MainForm.Instance.ShowCommandPalette();
// CommandPalette.Instance.SelectFirst();
// });
//}

View File

@@ -27,7 +27,7 @@ public static class WinApiHelp
} }
} }
public static void AdjustWindowRect(IntPtr hwnd, ref RECT rc, int dpi) public static void AdjustWindowRectangle(IntPtr hwnd, ref RECT rc, int dpi)
{ {
uint style = (uint)GetWindowLongPtr(hwnd, -16); // GWL_STYLE uint style = (uint)GetWindowLongPtr(hwnd, -16); // GWL_STYLE
uint styleEx = (uint)GetWindowLongPtr(hwnd, -20); // GWL_EXSTYLE uint styleEx = (uint)GetWindowLongPtr(hwnd, -20); // GWL_EXSTYLE
@@ -35,13 +35,13 @@ public static class WinApiHelp
if (Environment.OSVersion.Version >= WindowsTen1607) if (Environment.OSVersion.Version >= WindowsTen1607)
AdjustWindowRectExForDpi(ref rc, style, false, styleEx, (uint)dpi); AdjustWindowRectExForDpi(ref rc, style, false, styleEx, (uint)dpi);
else else
Native.WinApi.AdjustWindowRect(ref rc, style, false); AdjustWindowRect(ref rc, style, false);
} }
public static void AddWindowBorders(IntPtr hwnd, ref RECT rc, int dpi, bool changeTop) public static void AddWindowBorders(IntPtr hwnd, ref RECT rc, int dpi, bool changeTop)
{ {
RECT win = rc; RECT win = rc;
AdjustWindowRect(hwnd, ref rc, dpi); AdjustWindowRectangle(hwnd, ref rc, dpi);
if (changeTop) if (changeTop)
{ {
@@ -64,7 +64,7 @@ public static class WinApiHelp
public static int GetTitleBarHeight(IntPtr hwnd, int dpi) public static int GetTitleBarHeight(IntPtr hwnd, int dpi)
{ {
RECT rect = new RECT(); RECT rect = new RECT();
AdjustWindowRect(hwnd, ref rect, dpi); AdjustWindowRectangle(hwnd, ref rect, dpi);
return -rect.Top; return -rect.Top;
} }

View File

@@ -1,49 +1,47 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework> <TargetFramework>net10.0-windows7.0</TargetFramework>
<RootNamespace>MpvNet.Windows</RootNamespace> <RootNamespace>MpvNet.Windows</RootNamespace>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<PublishSingleFile>true</PublishSingleFile> <PublishSingleFile>true</PublishSingleFile>
<AssemblyName>mpvnet</AssemblyName> <AssemblyName>mpvnet</AssemblyName>
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon>mpv-icon.ico</ApplicationIcon> <ApplicationIcon>mpv-icon.ico</ApplicationIcon>
<Product>mpv.net</Product> <FileVersion>7.1.2.0</FileVersion>
<FileVersion>7.1.0.0</FileVersion> <AssemblyVersion>7.1.2.0</AssemblyVersion>
<AssemblyVersion>7.1.0.0</AssemblyVersion> <InformationalVersion>7.1.2.0</InformationalVersion>
<InformationalVersion>7.1.0.0</InformationalVersion> </PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="Misc\**" /> <Compile Remove="Misc\**" />
<EmbeddedResource Remove="Misc\**" /> <EmbeddedResource Remove="Misc\**" />
<None Remove="Misc\**" /> <None Remove="Misc\**" />
<Page Remove="Misc\**" /> <Page Remove="Misc\**" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="mpv-icon.ico" /> <Content Include="mpv-icon.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\MpvNet\MpvNet.csproj" /> <ProjectReference Include="..\MpvNet\MpvNet.csproj" />
<ProjectReference Include="..\NGettext.Wpf\NGettext.Wpf.csproj" /> <ProjectReference Include="..\NGettext.Wpf\NGettext.Wpf.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Page Update="WPF\Views\AboutWindow.xaml"> <Page Update="WPF\Views\AboutWindow.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<XamlRuntime>Wpf</XamlRuntime> <XamlRuntime>Wpf</XamlRuntime>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /> <PackageReference Include="CommunityToolkit.Mvvm" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" /> <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -101,9 +101,9 @@ static class Program
else if (App.CommandLine.Contains("--o=")) else if (App.CommandLine.Contains("--o="))
{ {
App.AutoLoadFolder = false; App.AutoLoadFolder = false;
Player.Init(IntPtr.Zero); Player.Init(IntPtr.Zero, true);
Player.ProcessCommandLineArgsPost(); CommandLine.ProcessCommandLineArgsPostInit();
Player.ProcessCommandLineFiles(); CommandLine.ProcessCommandLineFiles();
Player.SetPropertyString("idle", "no"); Player.SetPropertyString("idle", "no");
Player.EventLoop(); Player.EventLoop();
Player.Destroy(); Player.Destroy();

View File

@@ -21,23 +21,11 @@ default = yes
option = yes option = yes
option = no option = no
name = video-file-extensions name = image-exts
file = mpvnet file = mpv
directory = General directory = General
width = 500 width = 500
help = Video file extensions used to create file associations and used by the auto-load-folder feature. (mpv.net option) help = Image file extentions to try to match when using --cover-art-auto, --autocreate-playlist or --directory-filter-types. By mpv.net used to create file associations and used by the auto-load-folder feature. Default: avif,bmp,gif,j2k,jp2,jpeg,jpg,jxl,png,svg,tga,tif,tiff,webp
name = audio-file-extensions
file = mpvnet
directory = General
width = 500
help = Audio file extensions used to create file associations and used by the auto-load-folder feature. (mpv.net option)
name = image-file-extensions
file = mpvnet
directory = General
width = 500
help = Image file extensions used to create file associations and used by the auto-load-folder feature. (mpv.net option)
name = menu-syntax name = menu-syntax
file = mpvnet file = mpvnet
@@ -72,7 +60,8 @@ file = mpv
directory = Video directory = Video
help = Video output drivers to be used.\n\nFor more information visit: help = Video output drivers to be used.\n\nFor more information visit:
url = https://mpv.io/manual/master/#video-output-drivers-vo url = https://mpv.io/manual/master/#video-output-drivers-vo
default = gpu default = info
option = info Choose the best mode automatically.
option = gpu General purpose, customizable, GPU-accelerated video output driver. It supports extended scaling methods, dithering, color management, custom shaders, HDR, and more. option = gpu General purpose, customizable, GPU-accelerated video output driver. It supports extended scaling methods, dithering, color management, custom shaders, HDR, and more.
option = gpu-next Experimental video renderer based on libplacebo. This supports almost the same set of features as --vo=gpu. option = gpu-next Experimental video renderer based on libplacebo. This supports almost the same set of features as --vo=gpu.
option = direct3d Video output driver that uses the Direct3D interface. option = direct3d Video output driver that uses the Direct3D interface.
@@ -100,9 +89,9 @@ option = nvdec-copy copies video back to system RAM
name = gpu-api name = gpu-api
file = mpv file = mpv
directory = Video/Render Options directory = Video/Render Options
help = Controls which type of graphics APIs will be accepted. On Windows this defaults to d3d11 and should not be changed without a good reason. help = Controls which type of graphics APIs will be accepted.
default = auto default = auto
option = auto Use any available API option = auto Use any available API. Note that the default GPU API used for this value is subject to change, and must not be relied upon. If a certain GPU API needs to be used, it must be explicitly specified
option = d3d11 Allow only gpu-context=d3d11 option = d3d11 Allow only gpu-context=d3d11
option = opengl Allow only OpenGL (requires OpenGL 2.1+ or GLES 2.0+) option = opengl Allow only OpenGL (requires OpenGL 2.1+ or GLES 2.0+)
option = vulkan Allow only Vulkan option = vulkan Allow only Vulkan
@@ -790,6 +779,12 @@ file = mpv
directory = Video/Screenshot directory = Video/Screenshot
help = <0-5> Set the filter applied prior to PNG compression. 0 is none, 1 is 'sub', 2 is 'up', 3 is 'average', 4 is 'Paeth', and 5 is 'mixed'. This affects the level of compression that can be achieved. For most images, 'mixed' achieves the best compression ratio, hence it is the default. help = <0-5> Set the filter applied prior to PNG compression. 0 is none, 1 is 'sub', 2 is 'up', 3 is 'average', 4 is 'Paeth', and 5 is 'mixed'. This affects the level of compression that can be achieved. For most images, 'mixed' achieves the best compression ratio, hence it is the default.
name = video-exts
file = mpv
directory = Video
width = 500
help = Video file extentions to try to match when using --autocreate-playlist or --directory-filter-types. By mpv.net used to create file associations and used by the auto-load-folder feature. Default: 3g2,3gp,avi,flv,m2ts,m4v,mj2,mkv,mov,mp4,mpeg,mpg,ogv,rmvb,ts,webm,wmv,y4m
name = volume name = volume
file = mpv file = mpv
directory = Audio directory = Audio
@@ -833,6 +828,12 @@ default = yes
option = yes option = yes
option = no option = no
name = audio-exts
file = mpv
directory = Audio
width = 500
help = Audio file extentions to try to match when using --audio-file-auto, --autocreate-playlist or --directory-filter-types. By mpv.net used to create file associations and used by the auto-load-folder feature. Default: aac,ac3,aiff,ape,au,dts,eac3,flac,m4a,mka,mp3,oga,ogg,ogm,opus,thd,wav,wav,wma,wv
name = slang name = slang
file = mpv file = mpv
directory = Subtitle directory = Subtitle
@@ -1097,10 +1098,19 @@ file = mpv
directory = Playback directory = Playback
help = <N|inf|force|no> Loops playback N times. A value of 1 plays it one time (default), 2 two times, etc. inf means forever. no is the same as 1 and disables looping. If several files are specified on command line, the entire playlist is looped. The force mode is like inf, but does not skip playlist entries which have been marked as failing. This means the player might waste CPU time trying to loop a file that doesn't exist. But it might be useful for playing webradios under very bad network conditions. help = <N|inf|force|no> Loops playback N times. A value of 1 plays it one time (default), 2 two times, etc. inf means forever. no is the same as 1 and disables looping. If several files are specified on command line, the entire playlist is looped. The force mode is like inf, but does not skip playlist entries which have been marked as failing. This means the player might waste CPU time trying to loop a file that doesn't exist. But it might be useful for playing webradios under very bad network conditions.
name = autocreate-playlist
file = mpv
directory = Playback
help = When opening a local file, act as if the parent directory is opened and create a playlist automatically.\n\nno: Load a single file (mpv default).\n\nFilter: Create a playlist from the parent directory with files matching --directory-filter-types. (mpv.net default)\n\nsame: Create a playlist from the parent directory with files matching the same category as the currently loaded file. One of the *-exts is selected based on the input file and only files with matching extensions are added to the playlist. If the input file itself is not matched to any extension list, the playlist is not autogenerated.
default = filter
option = no
option = filter
option = same
name = auto-load-folder name = auto-load-folder
file = mpvnet file = mpvnet
directory = Playback directory = Playback
help = For single files automatically load the entire directory into the playlist. (mpv.net option) help = For single files automatically load the entire directory into the playlist. (deprecated mpv.net option, autocreate-playlist can be used instead)
default = yes default = yes
option = yes option = yes
option = no option = no
@@ -1108,7 +1118,7 @@ option = no
name = reset-on-next-file name = reset-on-next-file
file = mpv file = mpv
directory = Program Behavior directory = Program Behavior
help = Normally, mpv will try to keep all settings when playing the next file on the playlist, even if they were changed by the user during playback. This can be changed with this option. It accepts a list of options, and mpv will reset the value of these options on playback start to the initial value. help = Normally, mpv will try to keep all options when playing the next file on the playlist, even if they were changed by the user during playback. This can be changed with this option. It accepts a list of options, and mpv will reset the value of these options on playback start to the initial value.
width = 400 width = 400
name = input-ar-delay name = input-ar-delay
@@ -1133,9 +1143,16 @@ directory = Appearance
help = User interface display language.\nmpv.net must be restarted after a change. help = User interface display language.\nmpv.net must be restarted after a change.
default = system default = system
option = system option = system
option = english option = bulgarian
option = chinese-china option = chinese-china
option = english
option = french
option = german option = german
option = japanese
option = korean
option = polish
option = russian
option = turkish
name = dark-mode name = dark-mode
file = mpvnet file = mpvnet

View File

@@ -1,22 +0,0 @@

using MpvNet.Windows.WPF.Controls;
namespace MpvNet.Windows.UI;
public class CommandPalette
{
public static CommandPaletteControl Instance { get; } = new CommandPaletteControl();
public static IEnumerable<CommandPaletteItem> GetItems()
{
return InputHelp.GetBindingsFromContent(App.InputConf.GetContent())
.Where(i => i.Command != "")
.Select(i => new CommandPaletteItem()
{
Text = i.Comment,
SecondaryText = i.Input,
Action = () => Core.Command(i.Command),
Binding = i
});
}
}

View File

@@ -1,25 +0,0 @@

namespace MpvNet.Windows.UI;
public class CommandPaletteItem
{
public CommandPaletteItem() { }
public CommandPaletteItem(string text, Action action)
{
Text = text;
Action = action;
}
public CommandPaletteItem(string text, string secondaryText, Action action)
{
Text = text;
Action = action;
SecondaryText = secondaryText;
}
public string Text { get; set; } = "";
public string SecondaryText { get; set; } = "";
public Action? Action { get; set; }
public Binding? Binding { get; set; }
}

View File

@@ -2,7 +2,7 @@
using System.ComponentModel; using System.ComponentModel;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
namespace MpvNet.Windows.UI; namespace MpvNet.Windows.UI;

View File

@@ -1,127 +0,0 @@
<UserControl
x:Class="MpvNet.Windows.WPF.Controls.CommandPaletteControl"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:controls="clr-namespace:MpvNet.Windows.WPF.Controls"
mc:Ignorable="d"
FontSize="13"
Loaded="OnLoaded"
Background="#111111"
>
<UserControl.InputBindings>
<KeyBinding Gesture="Esc" Command="{Binding EscapeCommand}"/>
<KeyBinding Gesture="Enter" Command="{Binding ExecuteCommand}"/>
</UserControl.InputBindings>
<Border Name="MainBorder"
BorderThickness="1,0,1,1"
CornerRadius="0,0,5,5"
Padding="0,0,0,5"
BorderBrush="{Binding Theme.MenuHighlight}"
Background="{Binding Theme.Background}"
SnapsToDevicePixels="True"
>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Border BorderBrush="{Binding Theme.Heading}"
BorderThickness="1"
CornerRadius="3"
Margin="7"
>
<controls:SearchControl
HintText="Search"
x:Name="SearchControl"
Grid.ColumnSpan="2"
Padding="1,1,1,0"
/>
</Border>
<ListView
Name="MainListView"
Grid.Row="1"
Foreground="{Binding Theme.Foreground}"
Background="{Binding Theme.Background}"
BorderThickness="0"
MaxHeight="202"
SizeChanged="MainListView_SizeChanged"
MouseUp="MainListView_MouseUp"
>
<ListView.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="Height" Value="25"></Setter>
<Setter Property="BorderThickness" Value="0"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="BD"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="BD" Value="{DynamicResource HighlightBrush}" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Selector.IsSelectionActive" Value="False" />
<Condition Property="IsSelected" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="BD" Value="{DynamicResource BorderBrush}" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Resources>
<Style TargetType="Border">
<Setter Property="CornerRadius" Value="3"/>
</Style>
</Style.Resources>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Text}"></TextBlock>
<TextBlock
Grid.Column="1"
Text="{Binding SecondaryText}"
HorizontalAlignment="Right"
/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Border>
</UserControl>

View File

@@ -1,150 +0,0 @@

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using CommunityToolkit.Mvvm.Input;
using MpvNet.Windows.UI;
using MpvNet.Windows.WinForms;
namespace MpvNet.Windows.WPF.Controls;
public partial class CommandPaletteControl : UserControl
{
public ICollectionView CollectionView { get; set; }
public CollectionViewSource CollectionViewSource { get; }
public ObservableCollection<CommandPaletteItem> Items { get; } = new ObservableCollection<CommandPaletteItem>();
public CommandPaletteControl()
{
InitializeComponent();
DataContext = this;
CollectionViewSource = new CollectionViewSource() { Source = Items };
CollectionView = CollectionViewSource.View;
CollectionView.Filter = new Predicate<object>(item => Filter((CommandPaletteItem)item));
MainListView.ItemsSource = CollectionView;
SearchControl.SearchTextBox.PreviewKeyDown += SearchTextBox_PreviewKeyDown;
SearchControl.SearchTextBox.TextChanged += SearchTextBox_TextChanged;
SearchControl.HideClearButton = true;
if (Environment.OSVersion.Version < new Version(10, 0))
MainBorder.CornerRadius = new CornerRadius(0);
}
void SearchTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
CollectionView.Refresh();
SelectFirst();
}
void SearchTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Up:
{
int index = MainListView.SelectedIndex;
index -= 1;
if (index < 0)
index = 0;
MainListView.SelectedIndex = index;
MainListView.ScrollIntoView(MainListView.SelectedItem);
}
break;
case Key.Down:
{
int index = MainListView.SelectedIndex;
if (++index > MainListView.Items.Count - 1)
index = MainListView.Items.Count - 1;
MainListView.SelectedIndex = index;
MainListView.ScrollIntoView(MainListView.SelectedItem);
}
break;
}
}
void MainListView_SizeChanged(object sender, SizeChangedEventArgs e) => AdjustHeight();
void MainListView_MouseUp(object sender, MouseButtonEventArgs e) => ExecuteInternal();
[RelayCommand]
void Escape(object param) => MainForm.Instance?.HideCommandPalette();
[RelayCommand]
void Execute() => ExecuteInternal();
void OnLoaded(object sender, RoutedEventArgs e) => Keyboard.Focus(SearchControl.SearchTextBox);
public Theme Theme => Theme.Current!;
bool Filter(CommandPaletteItem item)
{
string filter = SearchControl.SearchTextBox.Text.ToLower();
if (item.Binding != null)
{
//if (item.CommandItem.Alias.ContainsEx(filter))
// return true;
if (filter.Length == 1)
return item.Binding.Input.ToLower()
.Replace("ctrl+", "")
.Replace("shift+", "")
.Replace("alt+", "") == filter.ToLower();
if (item.Binding.Command.ToLower().Contains(filter))
return true;
}
if (filter == "" || item.Text.ToLower().Contains(filter) ||
item.SecondaryText.ToLower().Contains(filter))
return true;
return false;
}
public void SelectFirst()
{
if (MainListView.Items.Count > 0)
{
MainListView.SelectedIndex = 0;
MainListView.ScrollIntoView(MainListView.SelectedItem);
}
}
void ExecuteInternal()
{
if (MainListView.SelectedItem != null)
{
CommandPaletteItem? item = MainListView.SelectedItem as CommandPaletteItem;
MainForm.Instance?.HideCommandPalette();
item?.Action?.Invoke();
//MainForm.Instance.Voodoo(); //TODO: Voodoo
}
}
public void SetItems(IEnumerable<CommandPaletteItem> items)
{
Items.Clear();
foreach (var i in items)
Items.Add(i);
}
public void AdjustHeight()
{
double actualHeight = SearchControl.ActualHeight + MainListView.ActualHeight + 5 + 16;
int dpi = MainForm.GetDpi(MainForm.Instance!.Handle);
MainForm.Instance.CommandPaletteHost.Height = (int)(actualHeight / 96.0 * dpi);
}
}

View File

@@ -10,10 +10,16 @@ public class WpfTranslator : ITranslator
string _localizerLangauge = ""; string _localizerLangauge = "";
static Language[] Languages { get; } = new Language[] { static Language[] Languages { get; } = new Language[] {
new("english", "en", "en"), new("bulgarian", "bg", "bg"),
new("chinese-china", "zh-CN", "zh"), // Chinese (Simplified) new("chinese-china", "zh-CN", "zh"), // Chinese (Simplified)
new("english", "en", "en"),
new("french", "fr", "fr"),
new("german", "de", "de"), new("german", "de", "de"),
new("japanese", "ja", "ja"), new("japanese", "ja", "ja"),
new("korean", "ko", "ko"),
new("polish", "pl", "pl"),
new("russian", "ru", "ru"),
new("turkish", "tr", "tr"),
}; };
public string Gettext(string msgId) public string Gettext(string msgId)
@@ -22,6 +28,12 @@ public class WpfTranslator : ITranslator
return Translation._(msgId); return Translation._(msgId);
} }
public string GetParticularString(string context, string text)
{
InitNGettextWpf();
return Translation.GetParticularString(context, text);
}
void InitNGettextWpf() void InitNGettextWpf()
{ {
if (Translation.Localizer == null || _localizerLangauge != App.Language) if (Translation.Localizer == null || _localizerLangauge != App.Language)

View File

@@ -38,7 +38,7 @@ partial class MainForm
// CursorTimer // CursorTimer
// //
CursorTimer.Enabled = true; CursorTimer.Enabled = true;
CursorTimer.Interval = 1000; CursorTimer.Interval = 500;
CursorTimer.Tick += CursorTimer_Tick; CursorTimer.Tick += CursorTimer_Tick;
// //
// ProgressTimer // ProgressTimer

View File

@@ -5,13 +5,12 @@ using System.Runtime.InteropServices;
using System.Threading; using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
using System.Windows.Threading; using System.Windows.Threading;
using System.Windows.Forms.Integration;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using MpvNet.Windows.WPF; using MpvNet.Windows.WPF;
using MpvNet.Windows.UI; using MpvNet.Windows.UI;
using MpvNet.Help; using MpvNet.Help;
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
using MpvNet.MVVM; using MpvNet.MVVM;
using MpvNet.Windows.WPF.MsgBox; using MpvNet.Windows.WPF.MsgBox;
@@ -27,7 +26,6 @@ public partial class MainForm : Form
{ {
public SnapManager SnapManager = new SnapManager(); public SnapManager SnapManager = new SnapManager();
public IntPtr MpvWindowHandle { get; set; } public IntPtr MpvWindowHandle { get; set; }
public ElementHost? CommandPaletteHost { get; set; }
public bool WasShown { get; set; } public bool WasShown { get; set; }
public static MainForm? Instance { get; set; } public static MainForm? Instance { get; set; }
WpfControls.ContextMenu ContextMenu { get; } = new WpfControls.ContextMenu(); WpfControls.ContextMenu ContextMenu { get; } = new WpfControls.ContextMenu();
@@ -40,10 +38,12 @@ public partial class MainForm : Form
int _lastCursorChanged; int _lastCursorChanged;
int _lastCycleFullscreen; int _lastCycleFullscreen;
int _taskbarButtonCreatedMessage; int _taskbarButtonCreatedMessage;
int _cursorAutohide = 1000;
bool _contextMenuIsReady; bool _contextMenuIsReady;
bool _wasMaximized; bool _wasMaximized;
bool _maxSizeSet; bool _maxSizeSet;
bool _isCursorVisible = true;
public MainForm() public MainForm()
{ {
@@ -68,7 +68,30 @@ public partial class MainForm : Form
GuiCommand.Current.WindowScaleNet += GuiCommand_WindowScaleNet; GuiCommand.Current.WindowScaleNet += GuiCommand_WindowScaleNet;
GuiCommand.Current.ShowMenu += GuiCommand_ShowMenu; GuiCommand.Current.ShowMenu += GuiCommand_ShowMenu;
Init(); Player.Init(Handle, true);
Player.ObserveProperty("window-maximized", PropChangeWindowMaximized); // bool methods not working correctly
Player.ObserveProperty("window-minimized", PropChangeWindowMinimized); // bool methods not working correctly
Player.ObserveProperty("cursor-autohide", PropChangeCursorAutohide);
Player.ObservePropertyBool("border", PropChangeBorder);
Player.ObservePropertyBool("fullscreen", PropChangeFullscreen);
Player.ObservePropertyBool("keepaspect-window", value => Player.KeepaspectWindow = value);
Player.ObservePropertyBool("ontop", PropChangeOnTop);
Player.ObservePropertyBool("title-bar", PropChangeTitleBar);
Player.ObservePropertyString("sid", PropChangeSid);
Player.ObservePropertyString("aid", PropChangeAid);
Player.ObservePropertyString("vid", PropChangeVid);
Player.ObservePropertyString("title", PropChangeTitle);
Player.ObservePropertyInt("edition", PropChangeEdition);
Player.ObservePropertyDouble("window-scale", PropChangeWindowScale);
CommandLine.ProcessCommandLineArgsPostInit();
CommandLine.ProcessCommandLineFiles();
_taskbarButtonCreatedMessage = RegisterWindowMessage("TaskbarButtonCreated"); _taskbarButtonCreatedMessage = RegisterWindowMessage("TaskbarButtonCreated");
@@ -145,34 +168,6 @@ public partial class MainForm : Form
SetTitle(); SetTitle();
} }
void Init()
{
Player.Init(Handle);
// bool methods not working correctly
Player.ObserveProperty("window-maximized", PropChangeWindowMaximized);
Player.ObserveProperty("window-minimized", PropChangeWindowMinimized);
Player.ObservePropertyBool("border", PropChangeBorder);
Player.ObservePropertyBool("fullscreen", PropChangeFullscreen);
Player.ObservePropertyBool("keepaspect-window", value => Player.KeepaspectWindow = value);
Player.ObservePropertyBool("ontop", PropChangeOnTop);
Player.ObservePropertyBool("title-bar", PropChangeTitleBar);
Player.ObservePropertyString("sid", PropChangeSid);
Player.ObservePropertyString("aid", PropChangeAid);
Player.ObservePropertyString("vid", PropChangeVid);
Player.ObservePropertyString("title", PropChangeTitle);
Player.ObservePropertyInt("edition", PropChangeEdition);
Player.ObservePropertyDouble("window-scale", PropChangeWindowScale);
Player.ProcessCommandLineArgsPost();
Player.ProcessCommandLineFiles();
}
void PropChangeWindowScale(double scale) void PropChangeWindowScale(double scale)
{ {
if (!WasShown) if (!WasShown)
@@ -285,8 +280,6 @@ public partial class MainForm : Form
pos.Y > ClientSize.Height * 0.78; pos.Y > ClientSize.Height * 0.78;
} }
bool IsCommandPaletteVissible() => CommandPaletteHost != null && CommandPaletteHost.Visible;
void UpdateMenu() void UpdateMenu()
{ {
Player.UpdateExternalTracks(); Player.UpdateExternalTracks();
@@ -563,12 +556,12 @@ public partial class MainForm : Form
if (App.AutofitImage > 1) if (App.AutofitImage > 1)
App.AutofitImage = 1; App.AutofitImage = 1;
bool isAudio = FileTypes.IsAudio(Player.Path.Ext()); bool isAudio = FileTypes.IsAudio(Player.Path.Ext);
if (isAudio) if (isAudio)
autoFitHeight = Convert.ToInt32(workingArea.Height * App.AutofitAudio); autoFitHeight = Convert.ToInt32(workingArea.Height * App.AutofitAudio);
if (FileTypes.IsImage(Player.Path.Ext())) if (FileTypes.IsImage(Player.Path.Ext))
autoFitHeight = Convert.ToInt32(workingArea.Height * App.AutofitImage); autoFitHeight = Convert.ToInt32(workingArea.Height * App.AutofitImage);
if (Player.VideoSize.Height == 0 || Player.VideoSize.Width == 0) if (Player.VideoSize.Height == 0 || Player.VideoSize.Width == 0)
@@ -686,14 +679,17 @@ public partial class MainForm : Form
Point middlePos = new Point(Left + Width / 2, Top + Height / 2); Point middlePos = new Point(Left + Width / 2, Top + Height / 2);
var rect = new RECT(new Rectangle(screen.Bounds.X, screen.Bounds.Y, width, height)); var rect = new RECT(new Rectangle(screen.Bounds.X, screen.Bounds.Y, width, height));
AddWindowBorders(Handle, ref rect, GetDpi(Handle), !Player.TitleBar); AddWindowBorders(Handle, ref rect, GetDpi(Handle), !Player.TitleBar);
width = rect.Width; width = rect.Width;
height = rect.Height; height = rect.Height;
int left = middlePos.X - width / 2; int left = Convert.ToInt32(middlePos.X - width / 2.0);
int top = middlePos.Y - height / 2; int top = Convert.ToInt32(middlePos.Y - height / 2.0);
if (!Player.TitleBar)
top -= Convert.ToInt32(GetTitleBarHeight(Handle, GetDpi(Handle)) / 2.0);
Rectangle currentRect = new Rectangle(Left, Top, Width, Height); Rectangle currentRect = new Rectangle(Left, Top, Width, Height);
@@ -793,7 +789,7 @@ public partial class MainForm : Form
else else
{ {
WindowState = FormWindowState.Normal; WindowState = FormWindowState.Normal;
if (!Player.WasInitialSizeSet) if (!Player.WasInitialSizeSet)
SetFormPosAndSize(); SetFormPosAndSize();
} }
@@ -1052,11 +1048,12 @@ public partial class MainForm : Form
break; break;
case 0x319: // WM_APPCOMMAND case 0x319: // WM_APPCOMMAND
{ {
string? value = MpvHelp.WM_APPCOMMAND_to_mpv_key((int)(m.LParam.ToInt64() >> 16 & ~0xf000)); string? key = MpvHelp.WM_APPCOMMAND_to_mpv_key((int)(m.LParam.ToInt64() >> 16 & ~0xf000));
bool inputMediaKeys = Player.GetPropertyBool("input-media-keys");
if (value != null) if (key != null && inputMediaKeys)
{ {
Player.Command("keypress " + value); Player.Command("keypress " + key);
m.Result = new IntPtr(1); m.Result = new IntPtr(1);
return; return;
} }
@@ -1110,7 +1107,8 @@ public partial class MainForm : Form
{ {
var nccalcsize_params = Marshal.PtrToStructure<NCCALCSIZE_PARAMS>(m.LParam); var nccalcsize_params = Marshal.PtrToStructure<NCCALCSIZE_PARAMS>(m.LParam);
RECT[] rects = nccalcsize_params.rgrc; RECT[] rects = nccalcsize_params.rgrc;
rects[0].Top = rects[0].Top - GetTitleBarHeight(Handle, GetDpi(Handle)); int h = GetTitleBarHeight(Handle, GetDpi(Handle));
rects[0].Top = rects[0].Top - h;
Marshal.StructureToPtr(nccalcsize_params, m.LParam, false); Marshal.StructureToPtr(nccalcsize_params, m.LParam, false);
} }
break; break;
@@ -1256,11 +1254,9 @@ public partial class MainForm : Form
_lastCursorPosition = MousePosition; _lastCursorPosition = MousePosition;
_lastCursorChanged = Environment.TickCount; _lastCursorChanged = Environment.TickCount;
} }
else if ((Environment.TickCount - _lastCursorChanged > 1500 || else if ((Environment.TickCount - _lastCursorChanged > _cursorAutohide) &&
Environment.TickCount - _lastCursorChanged > 5000) &&
ClientRectangle.Contains(PointToClient(MousePosition)) && ClientRectangle.Contains(PointToClient(MousePosition)) &&
ActiveForm == this && !ContextMenu.IsVisible && !IsMouseInOsc() && ActiveForm == this && !ContextMenu.IsVisible && !IsMouseInOsc())
!IsCommandPaletteVissible())
HideCursor(); HideCursor();
} }
@@ -1317,6 +1313,18 @@ public partial class MainForm : Form
}); });
} }
void PropChangeCursorAutohide()
{
string strValue = Player.GetPropertyString("cursor-autohide");
if (strValue == "no")
_cursorAutohide = 0;
else if (strValue == "always")
_cursorAutohide = -1;
else if (int.TryParse(strValue, out var intValue))
_cursorAutohide = intValue;
}
void PropChangeBorder(bool enabled) { void PropChangeBorder(bool enabled) {
Player.Border = enabled; Player.Border = enabled;
@@ -1483,20 +1491,18 @@ public partial class MainForm : Form
base.OnKeyDown(e); base.OnKeyDown(e);
} }
static bool _isCursorVisible = true; void ShowCursor()
static void ShowCursor()
{ {
if (!_isCursorVisible) if (!_isCursorVisible && _cursorAutohide != -1)
{ {
Cursor.Show(); Cursor.Show();
_isCursorVisible = true; _isCursorVisible = true;
} }
} }
static void HideCursor() void HideCursor()
{ {
if (_isCursorVisible) if (_isCursorVisible && _cursorAutohide != 0)
{ {
Cursor.Hide(); Cursor.Hide();
_isCursorVisible = false; _isCursorVisible = false;
@@ -1520,103 +1526,4 @@ public partial class MainForm : Form
[DllImport("DwmApi")] [DllImport("DwmApi")]
static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, int[] attrValue, int attrSize); static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, int[] attrValue, int attrSize);
//protected override void OnLayout(LayoutEventArgs args)
//{
// base.OnLayout(args);
// AdjustCommandPaletteLeftAndWidth();
//}
//class ElementHostEx : ElementHost
//{
// protected override void OnHandleCreated(EventArgs e)
// {
// base.OnHandleCreated(e);
// const int LWA_ColorKey = 1;
// if (Environment.OSVersion.Version > new Version(10, 0))
// SetLayeredWindowAttributes(Handle, 0x111111, 255, LWA_ColorKey);
// }
// protected override CreateParams CreateParams
// {
// get
// {
// CreateParams cp = base.CreateParams;
// if (Environment.OSVersion.Version > new Version(10, 0))
// cp.ExStyle |= 0x00080000; // WS_EX_LAYERED
// cp.ExStyle |= 0x00000008; // WS_EX_TOPMOST
// cp.Style |= 0x04000000; //WS_CLIPSIBLINGS
// cp.Style |= 0x02000000; //WS_CLIPCHILDREN
// return cp;
// }
// }
// protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
// {
// try
// {
// return base.ProcessCmdKey(ref msg, keyData);
// }
// catch (Exception)
// {
// return true;
// }
// }
// [DllImport("user32.dll")]
// public static extern bool SetLayeredWindowAttributes(IntPtr hWnd, int crKey, byte alpha, int dwFlags);
//}
//public void ShowCommandPalette()
//{
// if (CommandPaletteHost == null)
// {
// CommandPaletteHost = new ElementHostEx();
// CommandPaletteHost.Dock = DockStyle.Fill;
// CommandPaletteHost.BackColor = Color.FromArgb(0x111111);
// AdjustCommandPaletteLeftAndWidth();
// CommandPaletteHost.Child = CommandPalette.Instance;
// CommandPalette.Instance.AdjustHeight();
// Controls.Add(CommandPaletteHost);
// CommandPaletteHost.BringToFront();
// }
//}
public void HideCommandPalette()
{
if (CommandPaletteHost != null)
{
CommandPaletteHost.Visible = false;
CommandPalette.Instance.Items.Clear();
CommandPalette.Instance.SearchControl.SearchTextBox.Text = "";
CommandPalette.Instance.UpdateLayout();
ActiveControl = null;
Controls.Remove(CommandPaletteHost);
CommandPaletteHost.Child = null;
CommandPaletteHost.Dispose();
CommandPaletteHost = null;
}
}
//void AdjustCommandPaletteLeftAndWidth()
//{
// if (CommandPaletteHost == null)
// return;
// CommandPaletteHost.Width = FontHeight * 26;
// if (CommandPaletteHost.Width > ClientSize.Width)
// CommandPaletteHost.Width = ClientSize.Width;
// CommandPaletteHost.Left = (ClientSize.Width - CommandPaletteHost.Size.Width) / 2;
//}
} }

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.PowerShell.5.ReferenceAssemblies" version="1.1.0" targetFramework="net472" />
</packages>

View File

@@ -13,6 +13,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2F97C77E-32E3-46FA-8D7C-3940FD9AA384}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2F97C77E-32E3-46FA-8D7C-3940FD9AA384}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig .editorconfig = .editorconfig
Directory.Build.props = Directory.Build.props
EndProjectSection EndProjectSection
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NGettext.Wpf", "NGettext.Wpf\NGettext.Wpf.csproj", "{0B7958FD-2138-482A-A21B-481AE7A0F851}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NGettext.Wpf", "NGettext.Wpf\NGettext.Wpf.csproj", "{0B7958FD-2138-482A-A21B-481AE7A0F851}"

View File

@@ -1,7 +1,7 @@
 
using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging;
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
using MpvNet.Help; using MpvNet.Help;
using MpvNet.MVVM; using MpvNet.MVVM;
@@ -21,7 +21,7 @@ public class AppClass
public string CommandLine { get; set; } = Environment.CommandLine; public string CommandLine { get; set; } = Environment.CommandLine;
public string MenuSyntax { get; set; } = "#menu:"; public string MenuSyntax { get; set; } = "#menu:";
public bool AutoLoadFolder { get; set; } = true; public bool AutoLoadFolder { get; set; }
public bool DebugMode { get; set; } public bool DebugMode { get; set; }
public bool Exit { get; set; } public bool Exit { get; set; }
public bool IsTerminalAttached { get; } = Environment.GetEnvironmentVariable("_started_from_console") == "yes"; public bool IsTerminalAttached { get; } = Environment.GetEnvironmentVariable("_started_from_console") == "yes";
@@ -77,20 +77,14 @@ public class AppClass
Player.Initialized += Player_Initialized; Player.Initialized += Player_Initialized;
} }
public static string About => "Copyright (C) 2000-2023 mpv.net/mpv/mplayer\n" + public static string About => "Copyright (C) 2000-2024 mpv.net/mpv/mplayer\n" +
$"{AppInfo.Product} {AppInfo.Version}" + GetLastWriteTime(Environment.ProcessPath!) + "\n" + $"{AppInfo.Product} v{AppInfo.Version}" + GetLastWriteTime(Environment.ProcessPath!) + "\n" +
$"{Player.GetPropertyString("mpv-version")}" + GetLastWriteTime(Folder.Startup + "libmpv-2.dll") + "\n" + $"{Player.GetPropertyString("mpv-version")}" + GetLastWriteTime(Folder.Startup + "libmpv-2.dll") + "\n" +
$"ffmpeg {Player.GetPropertyString("ffmpeg-version")}\n" + "GPL v2 License"; $"ffmpeg {Player.GetPropertyString("ffmpeg-version")}\n" +
$"MediaInfo v{FileVersionInfo.GetVersionInfo(Folder.Startup + "MediaInfo.dll").FileVersion}" +
$"{GetLastWriteTime(Folder.Startup + "MediaInfo.dll")}" + "\n" + "GPL v2 License";
static string GetLastWriteTime(string path) static string GetLastWriteTime(string path) => $" ({File.GetLastWriteTime(path).ToShortDateString()})";
{
if (IsStoreVersion)
return "";
return $" ({File.GetLastWriteTime(path).ToShortDateString()})";
}
static bool IsStoreVersion => Folder.Startup.Contains("FrankSkare.mpvnet");
void Player_Initialized() void Player_Initialized()
{ {
@@ -137,14 +131,12 @@ public class AppClass
{ {
switch (name) switch (name)
{ {
case "audio-file-extensions": FileTypes.Audio = value.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); return true;
case "auto-load-folder": AutoLoadFolder = value == "yes"; return true; case "auto-load-folder": AutoLoadFolder = value == "yes"; return true;
case "autofit-audio": AutofitAudio = value.Trim('%').ToInt(70) / 100f; return true; case "autofit-audio": AutofitAudio = value.Trim('%').ToInt(70) / 100f; return true;
case "autofit-image": AutofitImage = value.Trim('%').ToInt(80) / 100f; return true; case "autofit-image": AutofitImage = value.Trim('%').ToInt(80) / 100f; return true;
case "dark-mode": DarkMode = value; return true; case "dark-mode": DarkMode = value; return true;
case "dark-theme": DarkTheme = value.Trim('\'', '"'); return true; case "dark-theme": DarkTheme = value.Trim('\'', '"'); return true;
case "debug-mode": DebugMode = value == "yes"; return true; case "debug-mode": DebugMode = value == "yes"; return true;
case "image-file-extensions": FileTypes.Image = value.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); return true;
case "language": Language = value; return true; case "language": Language = value; return true;
case "light-theme": LightTheme = value.Trim('\'', '"'); return true; case "light-theme": LightTheme = value.Trim('\'', '"'); return true;
case "media-info": MediaInfo = value == "yes"; return true; case "media-info": MediaInfo = value == "yes"; return true;
@@ -158,7 +150,6 @@ public class AppClass
case "remember-volume": RememberVolume = value == "yes"; return true; case "remember-volume": RememberVolume = value == "yes"; return true;
case "remember-window-position": RememberWindowPosition = value == "yes"; return true; case "remember-window-position": RememberWindowPosition = value == "yes"; return true;
case "start-size": StartSize = value; return true; case "start-size": StartSize = value; return true;
case "video-file-extensions": FileTypes.Video = value.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); return true;
default: default:
if (writeError) if (writeError)

View File

@@ -1,5 +1,5 @@
 
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
namespace MpvNet; namespace MpvNet;
@@ -19,7 +19,7 @@ public class Chapter
_timeDisplay = TimeSpan.FromSeconds(Time).ToString(); _timeDisplay = TimeSpan.FromSeconds(Time).ToString();
if (_timeDisplay.ContainsEx(".")) if (_timeDisplay.ContainsEx("."))
_timeDisplay = _timeDisplay[.._timeDisplay.LastIndexOf(".")]; _timeDisplay = _timeDisplay[.._timeDisplay.LastIndexOf('.')];
} }
return _timeDisplay; return _timeDisplay;

View File

@@ -28,7 +28,7 @@ public class Command
["playlist-random"] = args => PlaylistRandom(), // deprecated ["playlist-random"] = args => PlaylistRandom(), // deprecated
}; };
string FormatTime(double value) => ((int)value).ToString("00"); static string FormatTime(double value) => ((int)value).ToString("00");
void PlayPause(IList<string> args) void PlayPause(IList<string> args)
{ {
@@ -42,7 +42,7 @@ public class Command
{ {
if (i.Contains("://") || File.Exists(i)) if (i.Contains("://") || File.Exists(i))
{ {
Player.LoadFiles(new[] { i }, true, false); Player.LoadFiles([i], true, false);
break; break;
} }
} }

View File

@@ -5,6 +5,11 @@ public class CommandLine
{ {
static List<StringPair>? _arguments; static List<StringPair>? _arguments;
static string[] _preInitProperties { get; } = {
"input-terminal", "terminal", "input-file", "config", "o", "config-dir", "input-conf",
"load-scripts", "scripts", "script-opts", "player-operation-mode", "idle", "log-file",
"msg-color", "dump-stats", "msg-level", "really-quiet" };
public static List<StringPair> Arguments public static List<StringPair> Arguments
{ {
get get
@@ -12,7 +17,7 @@ public class CommandLine
if (_arguments != null) if (_arguments != null)
return _arguments; return _arguments;
_arguments = new(); _arguments = [];
foreach (string i in Environment.GetCommandLineArgs().Skip(1)) foreach (string i in Environment.GetCommandLineArgs().Skip(1))
{ {
@@ -32,7 +37,7 @@ public class CommandLine
arg += "=yes"; arg += "=yes";
} }
string left = arg[2..arg.IndexOf("=")]; string left = arg[2..arg.IndexOf('=')];
string right = arg[(left.Length + 3)..]; string right = arg[(left.Length + 3)..];
if (string.IsNullOrEmpty(left)) if (string.IsNullOrEmpty(left))
@@ -41,6 +46,7 @@ public class CommandLine
switch (left) switch (left)
{ {
case "script": left = "scripts"; break; case "script": left = "scripts"; break;
case "script-opt": left = "script-opts"; break;
case "audio-file": left = "audio-files"; break; case "audio-file": left = "audio-files"; break;
case "sub-file": left = "sub-files"; break; case "sub-file": left = "sub-files"; break;
case "external-file": left = "external-files"; break; case "external-file": left = "external-files"; break;
@@ -53,11 +59,89 @@ public class CommandLine
} }
} }
public static void ProcessCommandLineArgsPreInit()
{
foreach (var pair in Arguments)
{
if (pair.Name.EndsWith("-add") ||
pair.Name.EndsWith("-set") ||
pair.Name.EndsWith("-pre") ||
pair.Name.EndsWith("-clr") ||
pair.Name.EndsWith("-append") ||
pair.Name.EndsWith("-remove") ||
pair.Name.EndsWith("-toggle"))
{
continue;
}
Player.ProcessProperty(pair.Name, pair.Value);
if (!App.ProcessProperty(pair.Name, pair.Value))
Player.SetPropertyString(pair.Name, pair.Value);
}
}
public static void ProcessCommandLineArgsPostInit()
{
foreach (var pair in Arguments)
{
if (_preInitProperties.Contains(pair.Name))
continue;
if (pair.Name.EndsWith("-add"))
Player.CommandV("change-list", pair.Name[..^4], "add", pair.Value);
else if (pair.Name.EndsWith("-set"))
Player.CommandV("change-list", pair.Name[..^4], "set", pair.Value);
else if (pair.Name.EndsWith("-append"))
Player.CommandV("change-list", pair.Name[..^7], "append", pair.Value);
else if (pair.Name.EndsWith("-pre"))
Player.CommandV("change-list", pair.Name[..^4], "pre", pair.Value);
else if (pair.Name.EndsWith("-clr"))
Player.CommandV("change-list", pair.Name[..^4], "clr", "");
else if (pair.Name.EndsWith("-remove"))
Player.CommandV("change-list", pair.Name[..^7], "remove", pair.Value);
else if (pair.Name.EndsWith("-toggle"))
Player.CommandV("change-list", pair.Name[..^7], "toggle", pair.Value);
else
{
Player.ProcessProperty(pair.Name, pair.Value);
if (!App.ProcessProperty(pair.Name, pair.Value))
Player.SetPropertyString(pair.Name, pair.Value);
}
}
}
public static void ProcessCommandLineFiles()
{
List<string> files = [];
foreach (string arg in Environment.GetCommandLineArgs().Skip(1))
{
if (!arg.StartsWith("--") && (arg == "-" || arg.Contains("://") ||
arg.Contains(":\\") || arg.StartsWith("\\\\") || arg.StartsWith('.') ||
File.Exists(arg)))
{
files.Add(arg);
}
}
Player.LoadFiles([.. files], !App.Queue, App.Queue);
if (App.CommandLine.Contains("--shuffle"))
{
Player.Command("playlist-shuffle");
Player.SetPropertyInt("playlist-pos", 0);
}
}
public static bool Contains(string name) public static bool Contains(string name)
{ {
foreach (StringPair pair in Arguments) foreach (StringPair pair in Arguments)
{
if (pair.Name == name) if (pair.Name == name)
return true; return true;
}
return false; return false;
} }
@@ -65,8 +149,10 @@ public class CommandLine
public static string GetValue(string name) public static string GetValue(string name)
{ {
foreach (StringPair pair in Arguments) foreach (StringPair pair in Arguments)
{
if (pair.Name == name) if (pair.Name == name)
return pair.Value; return pair.Value;
}
return ""; return "";
} }

View File

@@ -1,7 +1,7 @@
 
using System.Reflection; using System.Reflection;
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
namespace MpvNet; namespace MpvNet;
@@ -9,7 +9,7 @@ public class ExtensionLoader
{ {
public event Action<Exception>? UnhandledException; public event Action<Exception>? UnhandledException;
readonly List<object?> _refs = new(); readonly List<object?> _refs = [];
void LoadDll(string path) void LoadDll(string path)
{ {
@@ -31,8 +31,12 @@ public class ExtensionLoader
public void LoadFolder(string path) public void LoadFolder(string path)
{ {
if (Directory.Exists(path)) if (Directory.Exists(path))
{
foreach (string dir in Directory.GetDirectories(path)) foreach (string dir in Directory.GetDirectories(path))
LoadDll(dir.AddSep() + Path.GetFileName(dir) + ".dll"); {
LoadDll(dir.Separator + Path.GetFileName(dir) + ".dll");
}
}
} }
} }

View File

@@ -1,7 +0,0 @@

namespace MpvNet.ExtensionMethod;
public static class ObjectExtension
{
public static string ToStringEx(this object instance) => instance?.ToString() ?? "";
}

View File

@@ -0,0 +1,10 @@

namespace MpvNet.Extensions;
public static class ObjectExtensions
{
extension(object instance)
{
public string ToStringEx() => instance?.ToString() ?? "";
}
}

View File

@@ -1,67 +0,0 @@

namespace MpvNet.ExtensionMethod;
public static class PathStringExtension
{
public static string Ext(this string filepath) => filepath.Ext(false);
public static string Ext(this string filepath, bool includeDot)
{
if (string.IsNullOrEmpty(filepath))
return "";
char[] chars = filepath.ToCharArray();
for (int x = filepath.Length - 1; x >= 0; x--)
{
if (chars[x] == Path.DirectorySeparatorChar)
return "";
if (chars[x] == '.')
return filepath.Substring(x + (includeDot ? 0 : 1)).ToLowerInvariant();
}
return "";
}
public static string FileName(this string instance)
{
if (string.IsNullOrEmpty(instance))
return "";
int index = instance.LastIndexOf('\\');
if (index > -1)
return instance.Substring(index + 1);
index = instance.LastIndexOf('/');
if (index > -1)
return instance.Substring(index + 1);
return instance;
}
public static string ShortPath(this string instance, int maxLength)
{
if (string.IsNullOrEmpty(instance))
return "";
if (instance.Length > maxLength && instance.Substring(1, 2) == ":\\")
instance = instance[..3] + "...\\" + instance.FileName();
return instance;
}
// Ensure trailing directory separator char
public static string AddSep(this string instance)
{
if (string.IsNullOrEmpty(instance))
return "";
if (!instance.EndsWith(Path.DirectorySeparatorChar.ToString()))
instance = instance + Path.DirectorySeparatorChar;
return instance;
}
}

View File

@@ -0,0 +1,77 @@

namespace MpvNet.Extensions;
public static class PathStringExtensions
{
extension(string filepath)
{
public string Ext => GetExt(filepath, false);
static string GetExt(string path, bool includeDot)
{
if (string.IsNullOrEmpty(path))
return "";
char[] chars = path.ToCharArray();
for (int x = path.Length - 1; x >= 0; x--)
{
if (chars[x] == '/')
return "";
if (chars[x] == '\\')
return "";
if (chars[x] == '.')
return path[(x + (includeDot ? 0 : 1))..].ToLowerInvariant();
}
return "";
}
public string FileName
{
get
{
if (string.IsNullOrEmpty(filepath))
return "";
int index = filepath.LastIndexOf('\\');
if (index > -1)
return filepath[(index + 1)..];
index = filepath.LastIndexOf('/');
if (index > -1)
return filepath[(index + 1)..];
return filepath;
}
}
public string ShortPath(int maxLength)
{
if (string.IsNullOrEmpty(filepath))
return "";
if (filepath.Length > maxLength && filepath.Substring(1, 2) == ":\\")
filepath = $"{filepath[..3]}...\\{filepath.FileName}";
return filepath;
}
// Ensure trailing directory separator char
public string Separator
{
get
{
if (string.IsNullOrEmpty(filepath))
return "";
if (!filepath.EndsWith(Path.DirectorySeparatorChar.ToString()))
filepath = filepath + Path.DirectorySeparatorChar;
return filepath;
}
}
}
}

View File

@@ -1,15 +1,15 @@
 
using System.Globalization; using System.Globalization;
namespace MpvNet.ExtensionMethod; namespace MpvNet.Extensions;
public static class StringExtension public static class StringExtensions
{ {
public static string ToUpperEx(this string instance) => (instance != null) ? instance.ToUpperInvariant() : ""; public static string ToUpperEx(this string instance) => instance?.ToUpperInvariant() ?? "";
public static string ToLowerEx(this string instance) => (instance != null) ? instance.ToLowerInvariant() : ""; public static string ToLowerEx(this string instance) => instance?.ToLowerInvariant() ?? "";
public static string TrimEx(this string? instance) => (instance == null) ? "" : instance.Trim(); public static string TrimEx(this string? instance) => instance?.Trim() ?? "";
public static int ToInt(this string instance, int defaultValue = 0) public static int ToInt(this string instance, int defaultValue = 0)
{ {

View File

@@ -1,20 +1,53 @@
 
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
namespace MpvNet; namespace MpvNet;
public static class FileTypes public static class FileTypes
{ {
public static string[] Video { get; set; } = "mkv mp4 avi mov flv mpg webm wmv ts vob 264 265 asf avc avs dav h264 h265 hevc m2t m2ts m2v m4v mpeg mpv mts vpy y4m".Split(' '); public static string[] Subtitle { get; } = ["srt", "ass", "idx", "sub", "sup", "ttxt", "txt", "ssa", "smi", "mks"];
public static string[] Audio { get; set; } = "mp3 flac m4a mka mp2 ogg opus aac ac3 dts dtshd dtshr dtsma eac3 mpa mpc thd w64 wav".Split(' ');
public static string[] Image { get; set; } = { "jpg", "bmp", "png", "gif", "webp" };
public static string[] Subtitle { get; } = { "srt", "ass", "idx", "sub", "sup", "ttxt", "txt", "ssa", "smi", "mks" };
public static bool IsImage(string extension) => Image.Contains(extension); public static bool IsVideo(string[] exts, string ext) => exts?.Contains(ext) ?? false;
public static bool IsAudio(string extension) => Audio.Contains(extension); public static bool IsAudio(string[] exts, string ext) => exts?.Contains(ext) ?? false;
public static bool IsImage(string[] exts, string ext) => exts?.Contains(ext) ?? false;
public static bool IsMedia(string extension) => public static bool IsVideo(string ext) => GetVideoExts().Contains(ext);
Video.Contains(extension) || Audio.Contains(extension) || Image.Contains(extension); public static bool IsAudio(string ext) => GetAudioExts().Contains(ext);
public static bool IsImage(string ext) => GetImgExts().Contains(ext);
public static IEnumerable<string> GetMediaFiles(IEnumerable<string> files) => files.Where(i => IsMedia(i.Ext())); public static string[] GetVideoExts()
{
string exts = Player.GetPropertyString("video-exts");
if (string.IsNullOrEmpty(exts))
return ["mkv", "mp4", "avi", "mov", "flv", "mpg", "webm", "wmv", "ts", "vob", "264", "265", "asf", "avc", "avs", "dav", "h264", "h265", "hevc", "m2t", "m2ts", "m2v", "m4v", "mpeg", "mpv", "mts", "vpy", "y4m"];
return exts.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}
public static string[] GetAudioExts()
{
string exts = Player.GetPropertyString("audio-exts");
if (string.IsNullOrEmpty(exts))
return ["mp3", "flac", "m4a", "mka", "mp2", "ogg", "opus", "aac", "ac3", "dts", "dtshd", "dtshr", "dtsma", "eac3", "mpa", "mpc", "thd", "w64", "wav"];
return exts.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}
public static string[] GetImgExts()
{
string exts = Player.GetPropertyString("image-exts");
if (string.IsNullOrEmpty(exts))
return ["jpg", "bmp", "png", "gif", "webp"];
return exts.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}
public static bool IsMedia(string[] exts, string ext) =>
IsVideo(exts, ext) || IsAudio(exts, ext) || IsImage(exts, ext);
public static IEnumerable<string> GetMediaFiles(string[] files) =>
files.Where(i => IsMedia(files, i.Ext));
} }

View File

@@ -1,10 +1,10 @@
 
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
namespace MpvNet; namespace MpvNet;
public class Folder public class Folder
{ {
public static string Startup { get; } = Path.GetDirectoryName(Environment.ProcessPath)!.AddSep(); public static string Startup { get; } = Path.GetDirectoryName(Environment.ProcessPath)!.Separator;
public static string AppData { get; } = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).AddSep(); public static string AppData { get; } = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).Separator;
} }

View File

@@ -10,4 +10,5 @@ public static class Global
public static readonly AppClass App = new AppClass(); public static readonly AppClass App = new AppClass();
public static string _(string value) => Translator.Current!.Gettext(value); public static string _(string value) => Translator.Current!.Gettext(value);
public static string _p(string context, string value) => Translator.Current!.GetParticularString(context, value);
} }

View File

@@ -8,9 +8,7 @@ public static class StringHelp
{ {
public static string GetMD5Hash(string txt) public static string GetMD5Hash(string txt)
{ {
using MD5 md5 = MD5.Create();
byte[] inputBuffer = Encoding.UTF8.GetBytes(txt); byte[] inputBuffer = Encoding.UTF8.GetBytes(txt);
byte[] hashBuffer = md5.ComputeHash(inputBuffer); return Convert.ToHexString(MD5.HashData(inputBuffer));
return BitConverter.ToString(md5.ComputeHash(inputBuffer)).Replace("-", "");
} }
} }

View File

@@ -34,17 +34,25 @@ public class InputConf
var defaultBindings = InputHelp.GetDefaults(); var defaultBindings = InputHelp.GetDefaults();
foreach (Binding defaultBinding in defaultBindings) foreach (Binding defaultBinding in defaultBindings)
{
foreach (Binding confBinding in confbindings) foreach (Binding confBinding in confbindings)
{
if (defaultBinding.Input == confBinding.Input && if (defaultBinding.Input == confBinding.Input &&
defaultBinding.Command != confBinding.Command) defaultBinding.Command != confBinding.Command)
{ {
defaultBinding.Input = ""; defaultBinding.Input = "";
} }
}
}
foreach (Binding defaultBinding in defaultBindings) foreach (Binding defaultBinding in defaultBindings)
{
foreach (Binding confBinding in confbindings) foreach (Binding confBinding in confbindings)
{
if (defaultBinding.Command == confBinding.Command) if (defaultBinding.Command == confBinding.Command)
defaultBinding.Input = confBinding.Input; defaultBinding.Input = confBinding.Input;
}
}
return (defaultBindings, confbindings); return (defaultBindings, confbindings);
} }
@@ -82,16 +90,22 @@ public class InputConf
var conf = InputHelp.Parse(Content); var conf = InputHelp.Parse(Content);
foreach (Binding defaultBinding in defaults) foreach (Binding defaultBinding in defaults)
{
foreach (Binding confBinding in conf) foreach (Binding confBinding in conf)
{
if (defaultBinding.Command == confBinding.Command && if (defaultBinding.Command == confBinding.Command &&
defaultBinding.Comment == confBinding.Comment) defaultBinding.Comment == confBinding.Comment)
{ {
defaultBinding.Input = confBinding.Input; defaultBinding.Input = confBinding.Input;
removed.Add(confBinding); removed.Add(confBinding);
} }
}
}
foreach (Binding binding in removed) foreach (Binding binding in removed)
{
conf.Remove(binding); conf.Remove(binding);
}
defaults.AddRange(conf); defaults.AddRange(conf);
return InputHelp.ConvertToString(defaults); return InputHelp.ConvertToString(defaults);

View File

@@ -7,220 +7,251 @@ public static class InputHelp
{ {
public static List<Binding> GetDefaults() public static List<Binding> GetDefaults()
{ {
List<Binding> bindings = new List<Binding>() List<Binding> b = [];
{
new (_("File"), _("Open Files..."), "script-message-to mpvnet open-files", "o"),
new (_("File"), _("Open URL or file from clipboard"), "script-message-to mpvnet open-clipboard", "Ctrl+v"),
new (_("File"), _("Open DVD/Blu-ray Drive/Folder..."), "script-message-to mpvnet open-optical-media"),
new (_("File"), "-"),
new (_("File"), _("Add external audio files..."), "script-message-to mpvnet load-audio", "Alt+a"),
new (_("File"), _("Add external subtitle files..."), "script-message-to mpvnet load-sub", "Alt+s"),
new (_("File"), "-"),
new (_("File"), _("Add files to playlist..."), "script-message-to mpvnet open-files append"),
new (_("File"), _("Add files/URLs to playlist from clipboard"), "script-message-to mpvnet open-clipboard append", "Ctrl+Shift+v"),
new (_("File"), "-"),
new (_("File"), _("Recent Files")),
new (_("File"), _("Exit"), "quit", "Esc"),
new (_("Playback"), _("Play/Pause"), "script-message-to mpvnet play-pause", "Space"), Add(b, new (_("File"), _("Open Files..."), "script-message-to mpvnet open-files", "o"));
new (_("Playback"), _("Stop"), "stop", "Ctrl+s"), Add(b, new (_("File"), _("Open URL or file from clipboard"), "script-message-to mpvnet open-clipboard", "Ctrl+v"));
Add(b, new (_("File"), _("Open DVD/Blu-ray Drive/Folder..."), "script-message-to mpvnet open-optical-media"));
Add(b, new (_("File"), "-"));
Add(b, new (_("File"), _("Add external audio files..."), "script-message-to mpvnet load-audio"));
Add(b, new (_("File"), _("Add external subtitle files..."), "script-message-to mpvnet load-sub"));
Add(b, new (_("File"), "-"));
Add(b, new (_("File"), _("Add files to playlist..."), "script-message-to mpvnet open-files append"));
Add(b, new (_("File"), _("Add files/URLs to playlist from clipboard"), "script-message-to mpvnet open-clipboard append", "Ctrl+Shift+v"));
Add(b, new (_("File"), "-"));
Add(b, new (_("File"), _("Recent Files")));
Add(b, new (_("File"), _("Exit"), "quit", "Esc"));
new (_("Navigate"), _("Previous File"), "playlist-prev", "F11"), Add(b, new (_("Playback"), _("Play/Pause"), "script-message-to mpvnet play-pause", "Space"));
new (_("Navigate"), _("Next File"), "playlist-next", "F12"), Add(b, new (_("Playback"), _("Stop"), "stop", "Ctrl+s"));
new (_("Navigate"), "-"),
new (_("Navigate"), _("First File"), "script-message-to mpvnet playlist-first", "Home"),
new (_("Navigate"), _("Last File"), "script-message-to mpvnet playlist-last", "End"),
new (_("Navigate"), "-"), Add(b, new (_("Navigate"), _("Previous File"), "playlist-prev", "F11"));
new (_("Navigate"), _("Next Chapter"), "add chapter 1", "PGUP"), Add(b, new (_("Navigate"), _("Next File"), "playlist-next", "F12"));
new (_("Navigate"), _("Previous Chapter"), "add chapter -1", "PGDWN"), Add(b, new (_("Navigate"), "-"));
new (_("Navigate"), "-"), Add(b, new (_("Navigate"), _("First File"), "script-message-to mpvnet playlist-first", "Home"));
new (_("Navigate"), _("Jump To Next Frame"), "frame-step", "."), Add(b, new (_("Navigate"), _("Last File"), "script-message-to mpvnet playlist-last", "End"));
new (_("Navigate"), _("Jump To Previous Frame"), "frame-back-step", ","),
new (_("Navigate"), "-"),
new (_("Navigate"), _("Jump 5 sec forward"), "seek 5", "Right"),
new (_("Navigate"), _("Jump 5 sec backward"), "seek -5", "Left"),
new (_("Navigate"), "-"),
new (_("Navigate"), _("Jump 30 sec forward"), "seek 30", "Up"),
new (_("Navigate"), _("Jump 30 sec backward"), "seek -30", "Down"),
new (_("Navigate"), "-"),
new (_("Navigate"), _("Jump 5 min forward"), "seek 300", "Ctrl+Right"),
new (_("Navigate"), _("Jump 5 min backward"), "seek -300", "Ctrl+Left"),
new (_("Navigate"), "-"),
new (_("Navigate"), _("Title")),
new (_("Navigate"), _("Chapter")),
new (_("Pan & Scan"), _("Decrease Size"), "add video-zoom -0.1", "Ctrl+-"), Add(b, new (_("Navigate"), "-"));
new (_("Pan & Scan"), _("Increase Size"), "add video-zoom 0.1", "Ctrl++"), Add(b, new (_("Navigate"), _("Next Chapter"), "add chapter 1", "PGUP"));
new (_("Pan & Scan"), "-"), Add(b, new (_("Navigate"), _("Previous Chapter"), "add chapter -1", "PGDWN"));
new (_("Pan & Scan"), _("Move Left"), "add video-pan-x -0.01", "Ctrl+KP4"), Add(b, new (_("Navigate"), "-"));
new (_("Pan & Scan"), _("Move Right"), "add video-pan-x 0.01", "Ctrl+KP6"), Add(b, new (_("Navigate"), _("Jump To Next Frame"), "frame-step", "."));
new (_("Pan & Scan"), "-"), Add(b, new (_("Navigate"), _("Jump To Previous Frame"), "frame-back-step", ","));
new (_("Pan & Scan"), _("Move Up"), "add video-pan-y -0.01", "Ctrl+KP8"), Add(b, new (_("Navigate"), "-"));
new (_("Pan & Scan"), _("Move Down"), "add video-pan-y 0.01", "Ctrl+KP2"), Add(b, new (_("Navigate"), _("Jump 5 sec forward"), "seek 5", "Right"));
new (_("Pan & Scan"), "-"), Add(b, new (_("Navigate"), _("Jump 5 sec backward"), "seek -5", "Left"));
new (_("Pan & Scan"), _("Decrease Height"), "add panscan -0.1", "w"), Add(b, new (_("Navigate"), "-"));
new (_("Pan & Scan"), _("Increase Height"), "add panscan 0.1", "W"), Add(b, new (_("Navigate"), _("Jump 30 sec forward"), "seek 30", "Up"));
new (_("Pan & Scan"), "-"), Add(b, new (_("Navigate"), _("Jump 30 sec backward"), "seek -30", "Down"));
new (_("Pan & Scan"), _("Reset"), "set video-zoom 0; set video-pan-x 0; set video-pan-y 0", "Ctrl+BS"), Add(b, new (_("Navigate"), "-"));
Add(b, new (_("Navigate"), _("Jump 5 min forward"), "seek 300", "Ctrl+Right"));
Add(b, new (_("Navigate"), _("Jump 5 min backward"), "seek -300", "Ctrl+Left"));
Add(b, new (_("Navigate"), "-"));
Add(b, new (_("Navigate"), _("Title")));
Add(b, new (_("Navigate"), _("Chapter")));
new (_("Video"), _("Decrease Contrast"), "add contrast -1", "Ctrl+1"), Add(b, new (_("Pan & Scan"), _("Decrease Size"), "add video-zoom -0.1", "Ctrl+-"));
new (_("Video"), _("Increase Contrast"), "add contrast 1", "Ctrl+2"), Add(b, new (_("Pan & Scan"), _("Increase Size"), "add video-zoom 0.1", "Ctrl++"));
new (_("Video"), "-"), Add(b, new (_("Pan & Scan"), "-"));
new (_("Video"), _("Decrease Brightness"), "add brightness -1", "Ctrl+3"), Add(b, new (_("Pan & Scan"), _("Move Left"), "add video-pan-x -0.01", "Ctrl+KP4"));
new (_("Video"), _("Increase Brightness"), "add brightness 1", "Ctrl+4"), Add(b, new (_("Pan & Scan"), _("Move Right"), "add video-pan-x 0.01", "Ctrl+KP6"));
new (_("Video"), "-"), Add(b, new (_("Pan & Scan"), "-"));
new (_("Video"), _("Decrease Gamma"), "add gamma -1", "Ctrl+5"), Add(b, new (_("Pan & Scan"), _("Move Up"), "add video-pan-y -0.01", "Ctrl+KP8"));
new (_("Video"), _("Increase Gamma"), "add gamma 1", "Ctrl+6"), Add(b, new (_("Pan & Scan"), _("Move Down"), "add video-pan-y 0.01", "Ctrl+KP2"));
new (_("Video"), "-"), Add(b, new (_("Pan & Scan"), "-"));
new (_("Video"), _("Decrease Saturation"), "add saturation -1", "Ctrl+7"), Add(b, new (_("Pan & Scan"), _("Decrease Height"), "add panscan -0.1", "w"));
new (_("Video"), _("Increase Saturation"), "add saturation 1", "Ctrl+8"), Add(b, new (_("Pan & Scan"), _("Increase Height"), "add panscan 0.1", "W"));
new (_("Video"), "-"), Add(b, new (_("Pan & Scan"), "-"));
new (_("Video"), _("Take Screenshot"), "async screenshot", "s"), Add(b, new (_("Pan & Scan"), _("Reset"), "set video-zoom 0; set video-pan-x 0; set video-pan-y 0", "Ctrl+BS"));
new (_("Video"), _("Take Screenshot without subtitles"), "async screenshot video", "S"),
new (_("Video"), _("Toggle Deinterlace"), "cycle deinterlace", "d"),
new (_("Video"), _("Change Aspect Ratio"), "cycle-values video-aspect-override 16:9 4:3 2.35:1 -1", "a"),
new (_("Video"), _("Rotate Video"), "cycle-values video-rotate 90 180 270 0", "Ctrl+r"),
new (_("Audio"), _("Audio Device")), Add(b, new (_("Video"), _("Decrease Contrast"), "add contrast -1", "Ctrl+1"));
new (_("Audio"), _("Next Track"), "script-message-to mpvnet cycle-audio", "KP7"), Add(b, new (_("Video"), _("Increase Contrast"), "add contrast 1", "Ctrl+2"));
new (_("Audio"), "-"), Add(b, new (_("Video"), "-"));
new (_("Audio"), _("Delay +0.1"), "add audio-delay 0.1", "Ctrl+d"), Add(b, new (_("Video"), _("Decrease Brightness"), "add brightness -1", "Ctrl+3"));
new (_("Audio"), _("Delay -0.1"), "add audio-delay -0.1", "Ctrl+D"), Add(b, new (_("Video"), _("Increase Brightness"), "add brightness 1", "Ctrl+4"));
Add(b, new (_("Video"), "-"));
Add(b, new (_("Video"), _("Decrease Gamma"), "add gamma -1", "Ctrl+5"));
Add(b, new (_("Video"), _("Increase Gamma"), "add gamma 1", "Ctrl+6"));
Add(b, new (_("Video"), "-"));
Add(b, new (_("Video"), _("Decrease Saturation"), "add saturation -1", "Ctrl+7"));
Add(b, new (_("Video"), _("Increase Saturation"), "add saturation 1", "Ctrl+8"));
Add(b, new (_("Video"), "-"));
Add(b, new (_("Video"), _("Take Screenshot"), "async screenshot", "s"));
Add(b, new (_("Video"), _("Take Screenshot without subtitles"), "async screenshot video", "S"));
Add(b, new (_("Video"), _("Toggle Deinterlace"), "cycle deinterlace", "d"));
Add(b, new (_("Video"), _("Change Aspect Ratio"), "cycle-values video-aspect-override 16:9 4:3 2.35:1 0 -1", "a"));
Add(b, new (_("Video"), _("Rotate Video"), "cycle-values video-rotate 90 180 270 0", "Ctrl+r"));
new (_("Subtitle"), _("Next Track"), "script-message-to mpvnet cycle-subtitles", "KP8"), Add(b, new (_("Audio"), _("Audio Device")));
new (_("Subtitle"), _("Toggle Visibility"), "cycle sub-visibility", "v"), Add(b, new (_("Audio"), _("Next Track"), "script-message-to mpvnet cycle-audio", "KP7"));
new (_("Subtitle"), "-"), Add(b, new (_("Audio"), "-"));
new (_("Subtitle"), _("Delay -0.1"), "add sub-delay -0.1", "z"), Add(b, new (_("Audio"), _("Delay +0.1"), "add audio-delay 0.1", "Ctrl+d"));
new (_("Subtitle"), _("Delay +0.1"), "add sub-delay 0.1", "Z"), Add(b, new (_("Audio"), _("Delay -0.1"), "add audio-delay -0.1", "Ctrl+D"));
new (_("Subtitle"), "-"),
new (_("Subtitle"), _("Move Up"), "add sub-pos -1", "r"),
new (_("Subtitle"), _("Move Down"), "add sub-pos 1", "R"),
new (_("Subtitle"), "-"),
new (_("Subtitle"), _("Decrease Font Size"), "add sub-scale -0.1", "F"),
new (_("Subtitle"), _("Increase Font Size"), "add sub-scale 0.1", "G"),
new (_("Subtitle"), "-"),
new (_("Subtitle") + " > " + _("More"), _("Toggle overriding SSA/ASS styles with normal styles"), "cycle-values sub-ass-override force no", "u"),
new ("", _("Track")), Add(b, new (_("Subtitle"), _("Next Track"), "script-message-to mpvnet cycle-subtitles", "KP8"));
Add(b, new (_("Subtitle"), _("Toggle Visibility"), "cycle sub-visibility", "v"));
Add(b, new (_("Subtitle"), "-"));
Add(b, new (_("Subtitle"), _("Delay -0.1"), "add sub-delay -0.1", "z"));
Add(b, new (_("Subtitle"), _("Delay +0.1"), "add sub-delay 0.1", "Z"));
Add(b, new (_("Subtitle"), "-"));
Add(b, new (_("Subtitle"), _("Move Up"), "add sub-pos -1", "r"));
Add(b, new (_("Subtitle"), _("Move Down"), "add sub-pos 1", "R"));
Add(b, new (_("Subtitle"), "-"));
Add(b, new (_("Subtitle"), _("Decrease Font Size"), "add sub-scale -0.1", "F"));
Add(b, new (_("Subtitle"), _("Increase Font Size"), "add sub-scale 0.1", "G"));
Add(b, new (_("Subtitle"), "-"));
Add(b, new (_("Subtitle") + " > " + _("More"), _("Toggle overriding SSA/ASS styles with normal styles"), "cycle-values sub-ass-override force no", "u"));
new (_("Volume"), _("Up"), "add volume 2", "+"), Add(b, new ("", _("Track")));
new (_("Volume"), _("Down"), "add volume -2", "-"),
new (_("Volume"), "-"),
new (_("Volume"), _("Mute"), "cycle mute", "m"),
new (_("Speed"), _("-10%"), "multiply speed 1/1.1", "["), Add(b, new (_("Volume"), _p("Volume", "Up"), "add volume 2", "+"));
new (_("Speed"), _("+10%"), "multiply speed 1.1", "]"), Add(b, new (_("Volume"), _p("Volume", "Down"), "add volume -2", "-"));
new (_("Speed"), "-"), Add(b, new (_("Volume"), "-"));
new (_("Speed"), _("Half"), "multiply speed 0.5", "{"), Add(b, new (_("Volume"), _("Mute"), "cycle mute", "m"));
new (_("Speed"), _("Double"), "multiply speed 2.0", "}"),
new (_("Speed"), "-"),
new (_("Speed"), _("Reset"), "set speed 1", "BS"),
new (_("View"), _("Show Playlist"), "script-message-to mpvnet show-playlist", "F8"), Add(b, new (_("Speed"), _("-10%"), "multiply speed 1/1.1", "["));
new (_("View"), _("Toggle Statistics"), "script-binding stats/display-stats-toggle", "t"), Add(b, new (_("Speed"), _("+10%"), "multiply speed 1.1", "]"));
new (_("View"), _("Toggle OSC Visibility"), "script-binding osc/visibility", "Del"), Add(b, new (_("Speed"), "-"));
new (_("View"), _("Show Media Info On-Screen"), "script-message-to mpvnet show-media-info osd", "i"), Add(b, new (_("Speed"), _("Half"), "multiply speed 0.5", "{"));
new (_("View"), _("Show Media Info Message Box"), "script-message-to mpvnet show-media-info msgbox", "Ctrl+m"), Add(b, new (_("Speed"), _("Double"), "multiply speed 2.0", "}"));
new (_("View"), _("Show Progress"), "show-progress", "p"), Add(b, new (_("Speed"), "-"));
new (_("View") + " > " + _("More"), _("Show Console"), "script-binding console/enable", "`"), Add(b, new (_("Speed"), _("Reset"), "set speed 1", "BS"));
new (_("View") + " > " + _("More"), _("Show Audio Devices"), "script-message-to mpvnet show-audio-devices"),
new (_("View") + " > " + _("More"), _("Show Commands"), "script-message-to mpvnet show-commands", "F2"),
new (_("View") + " > " + _("More"), _("Show Bindings"), "script-message-to mpvnet show-bindings"),
new (_("View") + " > " + _("More"), _("Show Properties"), "script-message-to mpvnet show-properties", "F3"),
new (_("View") + " > " + _("More"), _("Show Keys"), "script-message-to mpvnet show-keys", "Alt+k"),
new (_("View") + " > " + _("More"), _("Show Protocols"), "script-message-to mpvnet show-protocols", "Alt+p"),
new (_("View") + " > " + _("More"), _("Show Decoders"), "script-message-to mpvnet show-decoders", "Alt+d"),
new (_("View") + " > " + _("More"), _("Show Demuxers"), "script-message-to mpvnet show-demuxers"),
new (_("Window"), _("Fullscreen"), "cycle fullscreen", "Enter"), Add(b, new (_("View"), _("Playlist"), "script-binding select/select-playlist", "F8"));
new (_("Window") + " > " + _("Zoom"), _("Enlarge"), "script-message-to mpvnet scale-window 1.2", "Alt++"), Add(b, new (_("View"), _("Toggle Statistics"), "script-binding stats/display-stats-toggle", "t"));
new (_("Window") + " > " + _("Zoom"), _("Shrink"), "script-message-to mpvnet scale-window 0.8", "Alt+-"), Add(b, new (_("View"), _("Toggle OSC Visibility"), "script-binding osc/visibility", "Del"));
new (_("Window") + " > " + _("Zoom"), "-"), Add(b, new (_("View"), _("Media Info On-Screen"), "script-message-to mpvnet show-media-info osd", "i"));
new (_("Window") + " > " + _("Zoom"), _("50 %"), "script-message-to mpvnet window-scale 0.5", "Alt+0"), Add(b, new (_("View"), _("Media Info Message Box"), "script-message-to mpvnet show-media-info msgbox", "Ctrl+m"));
new (_("Window") + " > " + _("Zoom"), _("100 %"), "script-message-to mpvnet window-scale 1.0", "Alt+1"), Add(b, new (_("View"), _("Progress"), "show-progress", "p"));
new (_("Window") + " > " + _("Zoom"), _("200 %"), "script-message-to mpvnet window-scale 2.0", "Alt+2"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("On-Screen Menu"), "script-binding select/menu", "F1"));
new (_("Window") + " > " + _("Zoom"), _("300 %"), "script-message-to mpvnet window-scale 3.0", "Alt+3"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Playlist"), "script-binding select/select-playlist", "F8"));
new (_("Window") + " > " + _("Move"), _("Left"), "script-message-to mpvnet move-window left", "Alt+Left"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Bindings"), "script-binding select/select-binding", "F2"));
new (_("Window") + " > " + _("Move"), _("Right"), "script-message-to mpvnet move-window right", "Alt+Right"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Properties"), "script-binding select/show-properties", "F3"));
new (_("Window") + " > " + _("Move"), _("Up"), "script-message-to mpvnet move-window top", "Alt+Up"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Chapters"), "script-binding select/select-chapter", "Alt+c"));
new (_("Window") + " > " + _("Move"), _("Down"), "script-message-to mpvnet move-window bottom", "Alt+Down"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Tracks"), "script-binding select/select-track", "F9"));
new (_("Window") + " > " + _("Move"), _("Center"), "script-message-to mpvnet move-window center", "Alt+BS"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Audio Tracks"), "script-binding select/select-aid", "Alt+a"));
new (_("Window"), _("Toggle Border"), "cycle border", "b"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Subtitle Tracks"), "script-binding select/select-sid", "Alt+s"));
new (_("Window"), _("Toggle On Top"), "cycle ontop", "Ctrl+t"), Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Secondary Subtitle"), "script-binding select/select-secondary-sid", "Alt+b"));
Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Video Tracks"), "script-binding select/select-vid", "Alt+v"));
Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Editions"), "script-binding select/select-edition", "Alt+e"));
Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Subtitle Lines"), "script-binding select/select-subtitle-line", "Alt+l"));
Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Audio Devices"), "script-binding select/select-audio-device", "Alt+d"));
Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Watch History"), "script-binding select/select-watch-history", "Alt+h"));
Add(b, new (_("View") + " > " + _("On-Screen Menu"), _("Watch Later"), "script-binding select/select-watch-later"));
Add(b, new (_("View"), "-"));
Add(b, new (_("View") + " > " + _("More"), _("Console"), "script-binding console/enable", "`"));
Add(b, new (_("View") + " > " + _("More"), _("Commands"), "script-message-to mpvnet show-commands", "F4"));
Add(b, new (_("View") + " > " + _("More"), _("Active Bindings In Text Editor"), "script-message-to mpvnet show-bindings"));
Add(b, new (_("View") + " > " + _("More"), _("Active Bindings On-Screen"), "script-binding stats/display-page-4-toggle", "?"));
Add(b, new (_("View") + " > " + _("More"), _("Keys"), "script-message-to mpvnet show-keys", "Alt+k"));
Add(b, new (_("View") + " > " + _("More"), _("Protocols"), "script-message-to mpvnet show-protocols", "Alt+p"));
Add(b, new (_("View") + " > " + _("More"), _("Decoders"), "script-message-to mpvnet show-decoders"));
Add(b, new (_("View") + " > " + _("More"), _("Demuxers"), "script-message-to mpvnet show-demuxers"));
new ("", _("Profile")), Add(b, new (_("Window"), _("Fullscreen"), "cycle fullscreen", "Enter"));
Add(b, new (_("Window") + " > " + _("Zoom"), _("Enlarge"), "script-message-to mpvnet scale-window 1.2", "Alt++"));
new (_("Settings"), _("Show Config Editor"), "script-message-to mpvnet show-conf-editor", "Ctrl+,"), Add(b, new (_("Window") + " > " + _("Zoom"), _("Shrink"), "script-message-to mpvnet scale-window 0.8", "Alt+-"));
new (_("Settings"), _("Show Input Editor"), "script-message-to mpvnet show-input-editor", "Ctrl+i"), Add(b, new (_("Window") + " > " + _("Zoom"), "-"));
new (_("Settings"), "-"), Add(b, new (_("Window") + " > " + _("Zoom"), _("50 %"), "script-message-to mpvnet window-scale 0.5", "Alt+0"));
new (_("Settings"), _("Edit mpv.conf"), "script-message-to mpvnet edit-conf-file mpv.conf", "c"), Add(b, new (_("Window") + " > " + _("Zoom"), _("100 %"), "script-message-to mpvnet window-scale 1.0", "Alt+1"));
new (_("Settings"), _("Edit input.conf"), "script-message-to mpvnet edit-conf-file input.conf", "k"), Add(b, new (_("Window") + " > " + _("Zoom"), _("200 %"), "script-message-to mpvnet window-scale 2.0", "Alt+2"));
new (_("Settings"), "-"), Add(b, new (_("Window") + " > " + _("Zoom"), _("300 %"), "script-message-to mpvnet window-scale 3.0", "Alt+3"));
new (_("Settings"), _("Open Config Folder"), "script-message-to mpvnet open-conf-folder", "Ctrl+f"), Add(b, new (_("Window") + " > " + _("Move"), _p("Move", "Left"), "script-message-to mpvnet move-window left", "Alt+Left"));
new (_("Settings") + " > " + _("Setup"), _("Register video file associations"), "script-message-to mpvnet reg-file-assoc video"), Add(b, new (_("Window") + " > " + _("Move"), _p("Move", "Right"), "script-message-to mpvnet move-window right", "Alt+Right"));
new (_("Settings") + " > " + _("Setup"), _("Register audio file associations"), "script-message-to mpvnet reg-file-assoc audio"), Add(b, new (_("Window") + " > " + _("Move"), _p("Move", "Up"), "script-message-to mpvnet move-window top", "Alt+Up"));
new (_("Settings") + " > " + _("Setup"), _("Register image file associations"), "script-message-to mpvnet reg-file-assoc image"), Add(b, new (_("Window") + " > " + _("Move"), _p("Move", "Down"), "script-message-to mpvnet move-window bottom", "Alt+Down"));
new (_("Settings") + " > " + _("Setup"), _("Unregister file associations"), "script-message-to mpvnet reg-file-assoc unreg"), Add(b, new (_("Window") + " > " + _("Move"), _p("Move", "Center"), "script-message-to mpvnet move-window center", "Alt+BS"));
new (_("Settings") + " > " + _("Setup"), "-"), Add(b, new (_("Window"), _("Toggle Border"), "cycle border", "b"));
new (_("Settings") + " > " + _("Setup"), _("Add mpv.net to Path environment variable"), "script-message-to mpvnet add-to-path"), Add(b, new (_("Window"), _("Toggle On Top"), "cycle ontop", "Ctrl+t"));
new (_("Settings") + " > " + _("Setup"), _("Remove mpv.net from Path environment variable"), "script-message-to mpvnet remove-from-path"),
new (_("Tools"), _("Set/clear A-B loop points"), "ab-loop", "l"),
new (_("Tools"), _("Toggle infinite file looping"), "cycle-values loop-file inf no", "L"),
new (_("Tools"), _("Shuffle Playlist"), "playlist-shuffle"),
new (_("Tools"), _("Toggle Hardware Decoding"), "cycle-values hwdec auto no", "Ctrl+h"),
new (_("Tools"), _("Exit Watch Later"), "quit-watch-later", "Q"),
new ("", _("Custom")),
new (_("Help"), _("Website mpv"), "script-message-to mpvnet shell-execute https://mpv.io", "Ctrl+Home"), Add(b, new ("", _("Profile")));
new (_("Help"), _("Website mpv.net"), "script-message-to mpvnet shell-execute https://github.com/mpvnet-player/mpv.net"),
new (_("Help"), "-"),
new (_("Help"), _("Manual mpv"), "script-message-to mpvnet shell-execute https://mpv.io/manual/stable", "Ctrl+F1"),
new (_("Help"), _("Manual mpv.net"), "script-message-to mpvnet shell-execute https://github.com/mpvnet-player/mpv.net/blob/main/docs/manual.md", "Ctrl+F2"),
new (_("Help"), "-"),
new (_("Help"), _("awesome-mpv"), "script-message-to mpvnet shell-execute https://github.com/stax76/awesome-mpv", "Ctrl+a"),
new (_("Help"), _("About mpv.net"), "script-message-to mpvnet show-about"),
new ("", "", "quit", "q", _("Exit")), Add(b, new (_("Config"), _("Show Config Editor"), "script-message-to mpvnet show-conf-editor", "Ctrl+,"));
new ("", "", "script-message-to mpvnet show-menu", "MBTN_Right", _("Show Menu")), Add(b, new (_("Config"), _("Show Input Editor"), "script-message-to mpvnet show-input-editor", "Ctrl+i"));
new ("", "", "script-message-to mpvnet play-pause", "Play", _("Play/Pause")), Add(b, new (_("Config"), "-"));
new ("", "", "script-message-to mpvnet play-pause", "Pause", _("Play/Pause")), Add(b, new (_("Config"), _("Edit mpv.conf"), "script-message-to mpvnet edit-conf-file mpv.conf", "c"));
new ("", "", "script-message-to mpvnet play-pause", "PlayPause", _("Play/Pause")), Add(b, new (_("Config"), _("Edit input.conf"), "script-message-to mpvnet edit-conf-file input.conf", "k"));
new ("", "", "script-message-to mpvnet play-pause", "MBTN_Mid", _("Play/Pause")), Add(b, new (_("Config"), "-"));
new ("", "", "stop", "Stop", _("Stop")), Add(b, new (_("Config"), _("Open Config Folder"), "script-message-to mpvnet open-conf-folder", "Ctrl+f"));
new ("", "", "seek 60", "Forward", _("Forward")), Add(b, new (_("Config") + " > " + _("Setup"), _("Register video file associations"), "script-message-to mpvnet reg-file-assoc video"));
new ("", "", "seek -60", "Rewind", _("Backward")), Add(b, new (_("Config") + " > " + _("Setup"), _("Register audio file associations"), "script-message-to mpvnet reg-file-assoc audio"));
new ("", "", "add volume 2", "Wheel_Up", _("Volume Up")), Add(b, new (_("Config") + " > " + _("Setup"), _("Register image file associations"), "script-message-to mpvnet reg-file-assoc image"));
new ("", "", "add volume -2", "Wheel_Down", _("Volume Down")), Add(b, new (_("Config") + " > " + _("Setup"), _("Unregister file associations"), "script-message-to mpvnet reg-file-assoc unreg"));
new ("", "", "add volume 2", "Wheel_Right", _("Volume Up")), Add(b, new (_("Config") + " > " + _("Setup"), "-"));
new ("", "", "add volume -2", "Wheel_Left", _("Volume Down")), Add(b, new (_("Config") + " > " + _("Setup"), _("Add mpv.net to Path environment variable"), "script-message-to mpvnet add-to-path"));
new ("", "", "playlist-prev", "Prev", _("Previous File")), Add(b, new (_("Config") + " > " + _("Setup"), _("Remove mpv.net from Path environment variable"), "script-message-to mpvnet remove-from-path"));
new ("", "", "playlist-next", "Next", _("Next File")),
new ("", "", "playlist-prev", "MBTN_Back", _("Previous File")),
new ("", "", "playlist-next", "MBTN_Forward", _("Next File")),
new ("", "", "playlist-prev", "<", _("Previous File")),
new ("", "", "playlist-next", ">", _("Next File")),
new ("", "", "ignore", "MBTN_Left", _("Ignore left mouse butten")),
new ("", "", "cycle fullscreen", "f", _("Fullscreen")),
new ("", "", "cycle fullscreen", "MBTN_Left_DBL", _("Fullscreen")),
new ("", "", "no-osd seek 1 exact", "Shift+Right", _("Seek Forward")),
new ("", "", "no-osd seek -1 exact", "Shift+Left", _("Seek Backward")),
new ("", "", "no-osd seek 5 exact", "Shift+Up", _("Seek Forward")),
new ("", "", "no-osd seek -5 exact", "Shift+Down", _("Seek Backward")),
new ("", "", "revert-seek", "Shift+BS", _("Undo previous (or marked) seek")),
new ("", "", "revert-seek mark", "Shift+Ctrl+BS", _("Mark position for revert-seek")),
new ("", "", "no-osd sub-seek -1", "Ctrl+Shift+Left", _("Seek to previous subtitle")),
new ("", "", "no-osd sub-seek 1", "Ctrl+Shift+Right", _("Seek to next subtitle")),
new ("", "", "no-osd seek 5", "Ctrl+Wheel_Up", _("Seek Forward")),
new ("", "", "no-osd seek -5", "Ctrl+Wheel_Down", _("Seek Backward")),
new ("", "", "quit", "Power", _("Exit")),
//new (_("Command Palette"), _("Commands"), "script-message-to mpvnet show-command-palette", "F1"), Add(b, new (_("Tools"), _("Set/clear A-B loop points"), "ab-loop", "l"));
}; Add(b, new (_("Tools"), _("Toggle infinite file looping"), "cycle-values loop-file inf no", "L"));
Add(b, new (_("Tools"), _("Shuffle Playlist"), "playlist-shuffle"));
Add(b, new (_("Tools"), _("Toggle Hardware Decoding"), "cycle-values hwdec auto no", "Ctrl+h"));
Add(b, new (_("Tools"), _("Exit Watch Later"), "quit-watch-later", "Q"));
return bindings; Add(b, new ("", _("Custom")));
Add(b, new (_("Help"), _("Website mpv"), "script-message-to mpvnet shell-execute https://mpv.io", "Ctrl+Home"));
Add(b, new (_("Help"), _("Website mpv.net"), "script-message-to mpvnet shell-execute https://github.com/mpvnet-player/mpv.net"));
Add(b, new (_("Help"), "-"));
Add(b, new (_("Help"), _("Manual mpv"), "script-message-to mpvnet shell-execute https://mpv.io/manual/stable", "Ctrl+F1"));
Add(b, new (_("Help"), _("Manual mpv.net"), "script-message-to mpvnet shell-execute https://github.com/mpvnet-player/mpv.net/blob/main/docs/manual.md", "Ctrl+F2"));
Add(b, new (_("Help"), "-"));
Add(b, new (_("Help"), _("awesome-mpv"), "script-message-to mpvnet shell-execute https://github.com/stax76/awesome-mpv", "Ctrl+a"));
Add(b, new (_("Help"), _("About mpv.net"), "script-message-to mpvnet show-about"));
Add(b, new ("", "", "quit", "q", _("Exit")));
Add(b, new ("", "", "script-message-to mpvnet show-menu", "MBTN_Right", _("Show Menu")));
Add(b, new("", "", "script-message-to mpvnet play-pause", "Play", _("Play/Pause")));
Add(b, new("", "", "script-message-to mpvnet play-pause", "Pause", _("Play/Pause")));
Add(b, new("", "", "script-message-to mpvnet play-pause", "PlayPause", _("Play/Pause")));
Add(b, new("", "", "script-message-to mpvnet play-pause", "MBTN_Mid", _("Play/Pause")));
Add(b, new ("", "", "stop", "Stop", _("Stop")));
Add(b, new ("", "", "seek 60", "Forward", _("Forward")));
Add(b, new ("", "", "seek -60", "Rewind", _("Backward")));
Add(b, new ("", "", "add volume 2", "Wheel_Up", _("Volume Up")));
Add(b, new ("", "", "add volume -2", "Wheel_Down", _("Volume Down")));
Add(b, new ("", "", "add volume 2", "Wheel_Right", _("Volume Up")));
Add(b, new ("", "", "add volume -2", "Wheel_Left", _("Volume Down")));
Add(b, new ("", "", "playlist-prev", "Prev", _("Previous File")));
Add(b, new ("", "", "playlist-next", "Next", _("Next File")));
Add(b, new ("", "", "playlist-prev", "MBTN_Back", _("Previous File")));
Add(b, new ("", "", "playlist-next", "MBTN_Forward", _("Next File")));
Add(b, new ("", "", "playlist-prev", "<", _("Previous File")));
Add(b, new ("", "", "playlist-next", ">", _("Next File")));
Add(b, new ("", "", "ignore", "MBTN_Left", _("Ignore left mouse button")));
Add(b, new ("", "", "cycle fullscreen", "f", _("Fullscreen")));
Add(b, new ("", "", "cycle fullscreen", "MBTN_Left_DBL", _("Fullscreen")));
Add(b, new ("", "", "no-osd seek 1 exact", "Shift+Right", _("Seek Forward")));
Add(b, new ("", "", "no-osd seek -1 exact", "Shift+Left", _("Seek Backward")));
Add(b, new ("", "", "no-osd seek 5 exact", "Shift+Up", _("Seek Forward")));
Add(b, new ("", "", "no-osd seek -5 exact", "Shift+Down", _("Seek Backward")));
Add(b, new ("", "", "revert-seek", "Shift+BS", _("Undo previous (or marked) seek")));
Add(b, new ("", "", "revert-seek mark", "Shift+Ctrl+BS", _("Mark position for revert-seek")));
Add(b, new ("", "", "no-osd sub-seek -1", "Ctrl+Shift+Left", _("Seek to previous subtitle")));
Add(b, new ("", "", "no-osd sub-seek 1", "Ctrl+Shift+Right", _("Seek to next subtitle")));
Add(b, new ("", "", "no-osd seek 5", "Ctrl+Wheel_Up", _("Seek Forward")));
Add(b, new ("", "", "no-osd seek -5", "Ctrl+Wheel_Down", _("Seek Backward")));
Add(b, new ("", "", "quit", "Power", _("Exit")));
Add(b, new ("", "", "script-binding select/select-playlist", "g-p", _("Playlist")));
Add(b, new ("", "", "script-binding select/select-sid", "g-s", _("Subtitles")));
Add(b, new ("", "", "script-binding select/select-secondary-sid", "g-S", _("Secondary Subtitles")));
Add(b, new ("", "", "script-binding select/select-aid", "g-a", _("Audio Tracks")));
Add(b, new ("", "", "script-binding select/select-vid", "g-v", _("Video Tracks")));
Add(b, new ("", "", "script-binding select/select-track", "g-t", _("Tracks")));
Add(b, new ("", "", "script-binding select/select-chapter", "g-c", _("Chapters")));
Add(b, new ("", "", "script-binding select/select-edition", "g-e", _("Editions")));
Add(b, new ("", "", "script-binding select/select-subtitle-line", "g-l", _("Subtitle Lines")));
Add(b, new ("", "", "script-binding select/select-audio-device", "g-d", _("Audio Devices")));
Add(b, new ("", "", "script-binding select/select-watch-history", "g-h", _("Watch History")));
Add(b, new ("", "", "script-binding select/select-watch-later", "g-w", _("Watch Later")));
Add(b, new ("", "", "script-binding select/select-binding", "g-b", _("Bindings")));
Add(b, new ("", "", "script-binding select/show-properties", "g-r", _("Properties")));
Add(b, new ("", "", "script-binding select/menu", "g-m", _("On-Screen Menu")));
Add(b, new ("", "", "script-binding select/menu", "MENU", _("On-Screen Menu")));
Add(b, new ("", "", "script-binding select/menu", "Ctrl+p", _("On-Screen Menu")));
return b;
static void Add(List<Binding> bindings, Binding b) => bindings.Add(b);
} }
public static string ConvertToString(List<Binding> bindings) public static string ConvertToString(List<Binding> bindings)
@@ -332,7 +363,7 @@ public static class InputHelp
if (binding.Input.Contains("alt+")) if (binding.Input.Contains("alt+"))
binding.Input = binding.Input.Replace("alt+", "Alt+"); binding.Input = binding.Input.Replace("alt+", "Alt+");
line = line[(line.IndexOf(" ") + 1)..]; line = line[(line.IndexOf(' ') + 1)..];
if (line.Contains(App.MenuSyntax)) if (line.Contains(App.MenuSyntax))
{ {
@@ -348,8 +379,8 @@ public static class InputHelp
} }
else if (line.Contains('#')) else if (line.Contains('#'))
{ {
binding.Comment = line[(line.IndexOf("#") + 1)..].Trim(); binding.Comment = line[(line.IndexOf('#') + 1)..].Trim();
line = line[..line.IndexOf("#")]; line = line[..line.IndexOf('#')];
} }
binding.Command = line.Trim(); binding.Command = line.Trim();
@@ -413,57 +444,9 @@ public static class InputHelp
return defaults; return defaults;
} }
// only used by dead command palette
public static List<Binding> GetBindingsFromContent(string content)
{
var bindings = new List<Binding>();
if (!string.IsNullOrEmpty(content))
{
foreach (string line in content.Split('\r', '\n'))
{
string value = line.Trim();
if (value.StartsWith("#"))
continue;
if (!value.Contains(' '))
continue;
Binding binding = new Binding();
binding.Input = value[..value.IndexOf(" ")];
if (binding.Input == "_")
binding.Input = "";
value = value[(value.IndexOf(" ") + 1)..];
if (value.Contains(App.MenuSyntax))
{
binding.Comment = value[(value.IndexOf(App.MenuSyntax) + App.MenuSyntax.Length)..].Trim();
value = value[..value.IndexOf(App.MenuSyntax)];
if (binding.Comment.Contains(';'))
binding.Comment = binding.Comment[(binding.Comment.IndexOf(";") + 1)..].Trim();
}
binding.Command = value.Trim();
if (binding.Command == "")
continue;
if (binding.Command.ToLower() == "ignore")
binding.Command = "";
bindings.Add(binding);
}
}
return bindings;
}
public static Dictionary<string, Binding> GetActiveBindings(List<Binding> bindings) public static Dictionary<string, Binding> GetActiveBindings(List<Binding> bindings)
{ {
Dictionary<string, Binding> ret = new(); Dictionary<string, Binding> ret = [];
foreach (Binding binding in bindings) foreach (Binding binding in bindings)
{ {
@@ -488,7 +471,7 @@ public static class InputHelp
Binding binding = it.Value; Binding binding = it.Value;
if (!keys.Contains(binding.Input) && (charCount + binding.Input.Length) < 15) if (!keys.Contains(binding.Input) && (charCount + binding.Input.Length) < 30)
{ {
keys.Add(binding.Input); keys.Add(binding.Input);
charCount += binding.Input.Length; charCount += binding.Input.Length;

View File

@@ -1,13 +1,4 @@
 
using CommunityToolkit.Mvvm.Messaging.Messages;
namespace MpvNet.MVVM; namespace MpvNet.MVVM;
public class MainWindowIsLoadedMessage { } public class MainWindowIsLoadedMessage { }
//public class ScaleWindowMessage : ValueChangedMessage<float>
//{
// public ScaleWindowMessage(float value) : base(value)
// {
// }
//}

View File

@@ -21,11 +21,11 @@ public class MpvClient
public event Action? Seek; // seek MPV_EVENT_SEEK public event Action? Seek; // seek MPV_EVENT_SEEK
public event Action? PlaybackRestart; // playback-restart MPV_EVENT_PLAYBACK_RESTART public event Action? PlaybackRestart; // playback-restart MPV_EVENT_PLAYBACK_RESTART
public Dictionary<string, List<Action>> PropChangeActions { get; set; } = new Dictionary<string, List<Action>>(); public Dictionary<string, List<Action>> PropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<int>>> IntPropChangeActions { get; set; } = new Dictionary<string, List<Action<int>>>(); public Dictionary<string, List<Action<int>>> IntPropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<bool>>> BoolPropChangeActions { get; set; } = new Dictionary<string, List<Action<bool>>>(); public Dictionary<string, List<Action<bool>>> BoolPropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<double>>> DoublePropChangeActions { get; set; } = new Dictionary<string, List<Action<double>>>(); public Dictionary<string, List<Action<double>>> DoublePropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<string>>> StringPropChangeActions { get; set; } = new Dictionary<string, List<Action<string>>>(); public Dictionary<string, List<Action<string>>> StringPropChangeActions { get; set; } = [];
public nint Handle { get; set; } public nint Handle { get; set; }
@@ -132,46 +132,72 @@ public class MpvClient
else if (data.format == mpv_format.MPV_FORMAT_STRING) else if (data.format == mpv_format.MPV_FORMAT_STRING)
{ {
lock (StringPropChangeActions) lock (StringPropChangeActions)
{
foreach (var pair in StringPropChangeActions) foreach (var pair in StringPropChangeActions)
{
if (pair.Key == data.name) if (pair.Key == data.name)
{ {
string value = ConvertFromUtf8(Marshal.PtrToStructure<IntPtr>(data.data)); string value = ConvertFromUtf8(Marshal.PtrToStructure<IntPtr>(data.data));
foreach (var action in pair.Value) foreach (var action in pair.Value)
{
action.Invoke(value); action.Invoke(value);
}
} }
}
}
} }
else if (data.format == mpv_format.MPV_FORMAT_INT64) else if (data.format == mpv_format.MPV_FORMAT_INT64)
{ {
lock (IntPropChangeActions) lock (IntPropChangeActions)
{
foreach (var pair in IntPropChangeActions) foreach (var pair in IntPropChangeActions)
{
if (pair.Key == data.name) if (pair.Key == data.name)
{ {
int value = Marshal.PtrToStructure<int>(data.data); int value = Marshal.PtrToStructure<int>(data.data);
foreach (var action in pair.Value) foreach (var action in pair.Value)
{
action.Invoke(value); action.Invoke(value);
}
} }
}
}
} }
else if (data.format == mpv_format.MPV_FORMAT_NONE) else if (data.format == mpv_format.MPV_FORMAT_NONE)
{ {
lock (PropChangeActions) lock (PropChangeActions)
{
foreach (var pair in PropChangeActions) foreach (var pair in PropChangeActions)
{
if (pair.Key == data.name) if (pair.Key == data.name)
{
foreach (var action in pair.Value) foreach (var action in pair.Value)
{
action.Invoke(); action.Invoke();
}
}
}
}
} }
else if (data.format == mpv_format.MPV_FORMAT_DOUBLE) else if (data.format == mpv_format.MPV_FORMAT_DOUBLE)
{ {
lock (DoublePropChangeActions) lock (DoublePropChangeActions)
{
foreach (var pair in DoublePropChangeActions) foreach (var pair in DoublePropChangeActions)
{
if (pair.Key == data.name) if (pair.Key == data.name)
{ {
double value = Marshal.PtrToStructure<double>(data.data); double value = Marshal.PtrToStructure<double>(data.data);
foreach (var action in pair.Value) foreach (var action in pair.Value)
{
action.Invoke(value); action.Invoke(value);
}
} }
}
}
} }
} }
@@ -247,7 +273,9 @@ public class MpvClient
mpv_error err = mpv_command_ret(Handle, rootPtr, resultNodePtr); mpv_error err = mpv_command_ret(Handle, rootPtr, resultNodePtr);
foreach (IntPtr ptr in pointers) foreach (IntPtr ptr in pointers)
{
Marshal.FreeHGlobal(ptr); Marshal.FreeHGlobal(ptr);
}
Marshal.FreeHGlobal(rootPtr); Marshal.FreeHGlobal(rootPtr);
@@ -346,6 +374,9 @@ public class MpvClient
public string GetPropertyString(string name) public string GetPropertyString(string name)
{ {
if (Handle == IntPtr.Zero)
return "";
mpv_error err = mpv_get_property(Handle, GetUtf8Bytes(name), mpv_error err = mpv_get_property(Handle, GetUtf8Bytes(name),
mpv_format.MPV_FORMAT_STRING, out IntPtr lpBuffer); mpv_format.MPV_FORMAT_STRING, out IntPtr lpBuffer);
@@ -364,6 +395,12 @@ public class MpvClient
public void SetPropertyString(string name, string value) public void SetPropertyString(string name, string value)
{ {
if (Handle == IntPtr.Zero)
{
Terminal.WriteError($"error setting property: {name} = {value}");
return;
}
byte[] bytes = GetUtf8Bytes(value); byte[] bytes = GetUtf8Bytes(value);
mpv_error err = mpv_set_property(Handle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_STRING, ref bytes); mpv_error err = mpv_set_property(Handle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_STRING, ref bytes);
@@ -400,7 +437,7 @@ public class MpvClient
if (err < 0) if (err < 0)
HandleError(err, "error observing property: " + name); HandleError(err, "error observing property: " + name);
else else
IntPropChangeActions[name] = new List<Action<int>>(); IntPropChangeActions[name] = [];
} }
if (IntPropChangeActions.ContainsKey(name)) if (IntPropChangeActions.ContainsKey(name))
@@ -419,7 +456,7 @@ public class MpvClient
if (err < 0) if (err < 0)
HandleError(err, "error observing property: " + name); HandleError(err, "error observing property: " + name);
else else
DoublePropChangeActions[name] = new List<Action<double>>(); DoublePropChangeActions[name] = [];
} }
if (DoublePropChangeActions.ContainsKey(name)) if (DoublePropChangeActions.ContainsKey(name))
@@ -438,7 +475,7 @@ public class MpvClient
if (err < 0) if (err < 0)
HandleError(err, "error observing property: " + name); HandleError(err, "error observing property: " + name);
else else
BoolPropChangeActions[name] = new List<Action<bool>>(); BoolPropChangeActions[name] = [];
} }
if (BoolPropChangeActions.ContainsKey(name)) if (BoolPropChangeActions.ContainsKey(name))
@@ -457,7 +494,7 @@ public class MpvClient
if (err < 0) if (err < 0)
HandleError(err, "error observing property: " + name); HandleError(err, "error observing property: " + name);
else else
StringPropChangeActions[name] = new List<Action<string>>(); StringPropChangeActions[name] = [];
} }
if (StringPropChangeActions.ContainsKey(name)) if (StringPropChangeActions.ContainsKey(name))
@@ -476,7 +513,7 @@ public class MpvClient
if (err < 0) if (err < 0)
HandleError(err, "error observing property: " + name); HandleError(err, "error observing property: " + name);
else else
PropChangeActions[name] = new List<Action>(); PropChangeActions[name] = [];
} }
if (PropChangeActions.ContainsKey(name)) if (PropChangeActions.ContainsKey(name))

View File

@@ -1,29 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net10.0</TargetFramework>
<AssemblyName>libmpvnet</AssemblyName> <AssemblyName>libmpvnet</AssemblyName>
<Product>mpv.net</Product>
<Nullable>enable</Nullable>
<RootNamespace>MpvNet</RootNamespace> <RootNamespace>MpvNet</RootNamespace>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\docs\changelog.md" Link="Docs\changelog.md" /> <None Include="..\..\docs\changelog.md" Link="Docs\changelog.md" />
<None Include="..\..\docs\manual.md" Link="Docs\manual.md" /> <None Include="..\..\docs\manual.md" Link="Docs\manual.md" />
<None Include="..\..\README.md" Link="Docs\README.md" /> <None Include="..\..\README.md" Link="Docs\README.md" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Extension\" /> <Folder Include="Docs\" />
<Folder Include="Input\" /> </ItemGroup>
<Folder Include="Docs\" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /> <PackageReference Include="CommunityToolkit.Mvvm" />
<PackageReference Include="NGettext" Version="0.6.7" /> <PackageReference Include="NGettext" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -8,7 +8,7 @@ using System.Text.Json;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using MpvNet.ExtensionMethod; using MpvNet.Extensions;
using MpvNet.Help; using MpvNet.Help;
using MpvNet.Native; using MpvNet.Native;
@@ -66,17 +66,19 @@ public class MainPlayer : MpvClient
public event Action<int>? PlaylistPosChanged; public event Action<int>? PlaylistPosChanged;
public event Action<Size>? VideoSizeChanged; public event Action<Size>? VideoSizeChanged;
public void Init(IntPtr formHandle, bool processCommandLineArguments = true) public void Init(IntPtr formHandle, bool processCommandLine)
{ {
App.ApplyShowMenuFix(); App.ApplyShowMenuFix();
MainHandle = mpv_create(); MainHandle = mpv_create();
Handle = MainHandle; Handle = MainHandle;
var events = Enum.GetValues(typeof(mpv_event_id)).Cast<mpv_event_id>(); var events = Enum.GetValues<mpv_event_id>().Cast<mpv_event_id>();
foreach (mpv_event_id i in events) foreach (mpv_event_id i in events)
{
mpv_request_event(MainHandle, i, 0); mpv_request_event(MainHandle, i, 0);
}
mpv_request_log_messages(MainHandle, "no"); mpv_request_log_messages(MainHandle, "no");
@@ -93,18 +95,23 @@ public class MainPlayer : MpvClient
} }
if (formHandle != IntPtr.Zero) if (formHandle != IntPtr.Zero)
{
SetPropertyString("force-window", "yes");
SetPropertyLong("wid", formHandle.ToInt64()); SetPropertyLong("wid", formHandle.ToInt64());
}
SetPropertyInt("osd-duration", 2000); SetPropertyInt("osd-duration", 2000);
SetPropertyBool("input-default-bindings", true); SetPropertyBool("input-default-bindings", true);
SetPropertyBool("input-builtin-bindings", false); SetPropertyBool("input-builtin-bindings", false);
SetPropertyBool("input-media-keys", true);
SetPropertyString("autocreate-playlist", "filter");
SetPropertyString("media-controls", "yes");
SetPropertyString("idle", "yes"); SetPropertyString("idle", "yes");
SetPropertyString("screenshot-directory", "~~desktop/"); SetPropertyString("screenshot-directory", "~~desktop/");
SetPropertyString("osd-playing-msg", "${media-title}"); SetPropertyString("osd-playing-msg", "${media-title}");
SetPropertyString("osc", "yes"); SetPropertyString("osc", "yes");
SetPropertyString("force-window", "yes");
SetPropertyString("config-dir", ConfigFolder); SetPropertyString("config-dir", ConfigFolder);
SetPropertyString("config", "yes"); SetPropertyString("config", "yes");
@@ -113,14 +120,14 @@ public class MainPlayer : MpvClient
if (!string.IsNullOrEmpty(UsedInputConfContent)) if (!string.IsNullOrEmpty(UsedInputConfContent))
SetPropertyString("input-conf", @"memory://" + UsedInputConfContent); SetPropertyString("input-conf", @"memory://" + UsedInputConfContent);
if (processCommandLineArguments) if (processCommandLine)
ProcessCommandLineArgs(); CommandLine.ProcessCommandLineArgsPreInit();
if (CommandLine.Contains("config-dir")) if (CommandLine.Contains("config-dir"))
{ {
string configDir = CommandLine.GetValue("config-dir"); string configDir = CommandLine.GetValue("config-dir");
string fullPath = System.IO.Path.GetFullPath(configDir); string fullPath = System.IO.Path.GetFullPath(configDir);
App.InputConf.Path = fullPath.AddSep() + "input.conf"; App.InputConf.Path = fullPath.Separator + "input.conf";
string content = App.InputConf.GetContent(); string content = App.InputConf.GetContent();
if (!string.IsNullOrEmpty(content)) if (!string.IsNullOrEmpty(content))
@@ -189,7 +196,9 @@ public class MainPlayer : MpvClient
mpv_destroy(Handle); mpv_destroy(Handle);
foreach (var client in Clients) foreach (var client in Clients)
{
mpv_destroy(client.Handle); mpv_destroy(client.Handle);
}
} }
public void ProcessProperty(string? name, string? value) public void ProcessProperty(string? name, string? value)
@@ -241,7 +250,7 @@ public class MainPlayer : MpvClient
string? mpvnet_home = Environment.GetEnvironmentVariable("MPVNET_HOME"); string? mpvnet_home = Environment.GetEnvironmentVariable("MPVNET_HOME");
if (Directory.Exists(mpvnet_home)) if (Directory.Exists(mpvnet_home))
return _configFolder = mpvnet_home.AddSep(); return _configFolder = mpvnet_home.Separator;
_configFolder = Folder.Startup + "portable_config"; _configFolder = Folder.Startup + "portable_config";
@@ -249,28 +258,17 @@ public class MainPlayer : MpvClient
_configFolder = Folder.AppData + "mpv.net"; _configFolder = Folder.AppData + "mpv.net";
if (!Directory.Exists(_configFolder)) if (!Directory.Exists(_configFolder))
{ Directory.CreateDirectory(_configFolder);
try {
using Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = "powershell.exe";
proc.StartInfo.Arguments = $@"-Command New-Item -Path '{_configFolder}' -ItemType Directory";
proc.Start();
proc.WaitForExit();
} catch (Exception) {}
if (!Directory.Exists(_configFolder)) _configFolder = _configFolder.Separator;
Directory.CreateDirectory(_configFolder);
}
_configFolder = _configFolder.AddSep();
} }
return _configFolder; return _configFolder;
} }
} }
private readonly Regex ConfRegex = new Regex("^[\\w-]+$", RegexOptions.Compiled);
Dictionary<string, string>? _Conf; Dictionary<string, string>? _Conf;
public Dictionary<string, string> Conf { public Dictionary<string, string> Conf {
@@ -281,7 +279,7 @@ public class MainPlayer : MpvClient
App.ApplyInputDefaultBindingsFix(); App.ApplyInputDefaultBindingsFix();
_Conf = new Dictionary<string, string>(); _Conf = [];
if (File.Exists(ConfPath)) if (File.Exists(ConfPath))
{ {
@@ -289,12 +287,12 @@ public class MainPlayer : MpvClient
{ {
string line = it.TrimStart(' ', '-').TrimEnd(); string line = it.TrimStart(' ', '-').TrimEnd();
if (line.StartsWith("#")) if (line.StartsWith('#'))
continue; continue;
if (!line.Contains('=')) if (!line.Contains('='))
{ {
if (Regex.Match(line, "^[\\w-]+$").Success) if (ConfRegex.Match(line).Success)
line += "=yes"; line += "=yes";
else else
continue; continue;
@@ -313,7 +311,9 @@ public class MainPlayer : MpvClient
} }
foreach (var i in _Conf) foreach (var i in _Conf)
{
ProcessProperty(i.Key, i.Value); ProcessProperty(i.Key, i.Value);
}
return _Conf; return _Conf;
} }
@@ -339,7 +339,9 @@ public class MainPlayer : MpvClient
public void MainEventLoop() public void MainEventLoop()
{ {
while (true) while (true)
{
mpv_wait_event(MainHandle, -1); mpv_wait_event(MainHandle, -1);
}
} }
protected override void OnShutdown() protected override void OnShutdown()
@@ -415,67 +417,6 @@ public class MainPlayer : MpvClient
public void SetBluRayTitle(int id) => LoadFiles(new[] { @"bd://" + id }, false, false); public void SetBluRayTitle(int id) => LoadFiles(new[] { @"bd://" + id }, false, false);
public void ProcessCommandLineArgs()
{
foreach (var pair in CommandLine.Arguments)
{
if (pair.Name.EndsWith("-add") ||
pair.Name.EndsWith("-set") ||
pair.Name.EndsWith("-pre") ||
pair.Name.EndsWith("-clr") ||
pair.Name.EndsWith("-append") ||
pair.Name.EndsWith("-remove") ||
pair.Name.EndsWith("-toggle"))
continue;
ProcessProperty(pair.Name, pair.Value);
if (!App.ProcessProperty(pair.Name, pair.Value))
SetPropertyString(pair.Name, pair.Value);
}
}
public void ProcessCommandLineArgsPost()
{
foreach (var pair in CommandLine.Arguments)
{
if (pair.Name.EndsWith("-add"))
CommandV("change-list", pair.Name[..^4], "add", pair.Value);
else if (pair.Name.EndsWith("-set"))
CommandV("change-list", pair.Name[..^4], "set", pair.Value);
else if (pair.Name.EndsWith("-append"))
CommandV("change-list", pair.Name[..^7], "append", pair.Value);
else if (pair.Name.EndsWith("-pre"))
CommandV("change-list", pair.Name[..^4], "pre", pair.Value);
else if (pair.Name.EndsWith("-clr"))
CommandV("change-list", pair.Name[..^4], "clr", "");
else if (pair.Name.EndsWith("-remove"))
CommandV("change-list", pair.Name[..^7], "remove", pair.Value);
else if (pair.Name.EndsWith("-toggle"))
CommandV("change-list", pair.Name[..^7], "toggle", pair.Value);
}
}
public void ProcessCommandLineFiles()
{
List<string> files = new List<string>();
foreach (string arg in Environment.GetCommandLineArgs().Skip(1))
if (!arg.StartsWith("--") && (arg == "-" || arg.Contains("://") ||
arg.Contains(":\\") || arg.StartsWith("\\\\") || File.Exists(arg)))
files.Add(arg);
LoadFiles(files.ToArray(), !App.Queue, App.Queue);
if (App.CommandLine.Contains("--shuffle"))
{
Command("playlist-shuffle");
SetPropertyInt("playlist-pos", 0);
}
}
public DateTime LastLoad; public DateTime LastLoad;
public void LoadFiles(string[]? files, bool loadFolder, bool append) public void LoadFiles(string[]? files, bool loadFolder, bool append)
@@ -500,7 +441,7 @@ public class MainPlayer : MpvClient
file = ConvertFilePath(file); file = ConvertFilePath(file);
string ext = file.Ext(); string ext = file.Ext;
if (OperatingSystem.IsWindows()) if (OperatingSystem.IsWindows())
{ {
@@ -512,17 +453,9 @@ public class MainPlayer : MpvClient
} }
if (ext == "iso") if (ext == "iso")
LoadBluRayISO(file); LoadISO(file);
else if(FileTypes.Subtitle.Contains(ext)) else if(FileTypes.Subtitle.Contains(ext))
CommandV("sub-add", file); CommandV("sub-add", file);
else if (!FileTypes.IsMedia(ext) && !file.Contains("://") && Directory.Exists(file) &&
File.Exists(System.IO.Path.Combine(file, "BDMV\\index.bdmv")))
{
Command("stop");
Thread.Sleep(500);
SetPropertyString("bluray-device", file);
CommandV("loadfile", @"bd://");
}
else else
{ {
if (i == 0 && !append) if (i == 0 && !append)
@@ -547,12 +480,24 @@ public class MainPlayer : MpvClient
return path; return path;
} }
public void LoadBluRayISO(string path) public void LoadISO(string path)
{ {
Command("stop"); using var mi = new MediaInfo(path);
Thread.Sleep(500);
SetPropertyString("bluray-device", path); if (mi.GetGeneral("Format") == "ISO 9660 / DVD Video")
LoadFiles(new[] { @"bd://" }, false, false); {
Command("stop");
Thread.Sleep(500);
SetPropertyString("dvd-device", path);
LoadFiles([@"dvd://"], false, false);
}
else
{
Command("stop");
Thread.Sleep(500);
SetPropertyString("bluray-device", path);
LoadFiles([@"bd://"], false, false);
}
} }
public void LoadDiskFolder(string path) public void LoadDiskFolder(string path)
@@ -563,12 +508,12 @@ public class MainPlayer : MpvClient
if (Directory.Exists(path + "\\BDMV")) if (Directory.Exists(path + "\\BDMV"))
{ {
SetPropertyString("bluray-device", path); SetPropertyString("bluray-device", path);
LoadFiles(new[] { @"bd://" }, false, false); LoadFiles([@"bd://"], false, false);
} }
else else
{ {
SetPropertyString("dvd-device", path); SetPropertyString("dvd-device", path);
LoadFiles(new[] { @"dvd://" }, false, false); LoadFiles([@"dvd://"], false, false);
} }
} }
@@ -666,8 +611,10 @@ public class MainPlayer : MpvClient
static string GetNativeLanguage(string name) static string GetNativeLanguage(string name)
{ {
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.NeutralCultures)) foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
if (ci.EnglishName == name) if (ci.EnglishName == name)
return ci.NativeName; return ci.NativeName;
}
return name; return name;
} }
@@ -694,7 +641,7 @@ public class MainPlayer : MpvClient
if (_audioDevices != null) if (_audioDevices != null)
return _audioDevices; return _audioDevices;
_audioDevices = new(); _audioDevices = [];
string json = GetPropertyString("audio-device-list"); string json = GetPropertyString("audio-device-list");
var enumerator = JsonDocument.Parse(json).RootElement.EnumerateArray(); var enumerator = JsonDocument.Parse(json).RootElement.EnumerateArray();
@@ -745,6 +692,8 @@ public class MainPlayer : MpvClient
} }
} }
private readonly Regex TitleRegex = new Regex(@"^[\._\-]", RegexOptions.Compiled);
public List<MediaTrack> GetTracks(bool includeInternal = true, bool includeExternal = true) public List<MediaTrack> GetTracks(bool includeInternal = true, bool includeExternal = true)
{ {
List<MediaTrack> tracks = new List<MediaTrack>(); List<MediaTrack> tracks = new List<MediaTrack>();
@@ -762,7 +711,7 @@ public class MainPlayer : MpvClient
string filename = GetPropertyString($"filename/no-ext"); string filename = GetPropertyString($"filename/no-ext");
string title = GetPropertyString($"track-list/{i}/title").Replace(filename, ""); string title = GetPropertyString($"track-list/{i}/title").Replace(filename, "");
title = Regex.Replace(title, @"^[\._\-]", ""); title = TitleRegex.Replace(title, "");
if (type == "video") if (type == "video")
{ {
@@ -1108,7 +1057,7 @@ public class MainPlayer : MpvClient
if (_profileNames != null) if (_profileNames != null)
return _profileNames; return _profileNames;
string[] ignore = { "builtin-pseudo-gui", "encoding", "libmpv", "pseudo-gui", "default" }; string[] ignore = ["builtin-pseudo-gui", "encoding", "libmpv", "pseudo-gui", "default"];
string json = GetPropertyString("profile-list"); string json = GetPropertyString("profile-list");
return _profileNames = JsonDocument.Parse(json).RootElement.EnumerateArray() return _profileNames = JsonDocument.Parse(json).RootElement.EnumerateArray()
.Select(it => it.GetProperty("name").GetString()) .Select(it => it.GetProperty("name").GetString())

View File

@@ -9,4 +9,5 @@ public class Translator
public interface ITranslator public interface ITranslator
{ {
public string Gettext(string msgId); public string Gettext(string msgId);
public string GetParticularString(string context, string text);
} }

View File

@@ -1,16 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework> <TargetFramework>net10.0-windows7.0</TargetFramework>
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" /> <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" />
<PackageReference Include="NGettext" Version="0.6.7" /> <PackageReference Include="NGettext" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -12,7 +12,7 @@ AppPublisher=Frank Skare (stax76)
ArchitecturesInstallIn64BitMode=x64 ArchitecturesInstallIn64BitMode=x64
Compression=lzma2 Compression=lzma2
DefaultDirName={autopf}\{#MyAppName} DefaultDirName={autopf}\{#MyAppName}
OutputBaseFilename=mpv.net-v{#MyAppVersion}-setup OutputBaseFilename=mpv.net-v{#MyAppVersion}-setup-x64
OutputDir=E:\Desktop OutputDir=E:\Desktop
DefaultGroupName={#MyAppName} DefaultGroupName={#MyAppName}
SetupIconFile=..\..\MpvNet.Windows\mpv-icon.ico SetupIconFile=..\..\MpvNet.Windows\mpv-icon.ico
@@ -25,4 +25,4 @@ Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
[Files] [Files]
Source: "{#MyAppSourceDir}\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion Source: "{#MyAppSourceDir}\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppSourceDir}\*"; DestDir: "{app}"; Excludes: "win-x64"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "{#MyAppSourceDir}\*"; DestDir: "{app}"; Excludes: "win-x64,win-arm64"; Flags: ignoreversion recursesubdirs createallsubdirs;

View File

@@ -0,0 +1,119 @@
<#
Script that builds mpv.net and releases it on GitHub.
Please note that debug builds are built and released,
for release builds, scripts need to be rewritten.
Needs 2 positional CLI arguments:
1. Directory where the mpv.net source code is located (mpv.net\src)
2. Directory of the output files, for instance the desktop dir.
Dependencies:
7zip installation found at: 'C:\Program Files\7-Zip\7z.exe'.
Inno Setup compiler installation found at: 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe'.
GitHub CLI https://cli.github.com, the env var GH_TOKEN must be defined.
Notes:
Before you run the script you need to update the versions found in the file:
\mpv.net\src\MpvNet.Windows\MpvNet.Windows.csproj
#>
# Stop when the first error occurs
$ErrorActionPreference = 'Stop'
function DeleteDir($path) {
if (Test-Path $path) {
Remove-Item $path -Recurse
}
}
# Throw error if the file/dir don't exist
function Test($path) {
if (-not (Test-Path $path)) {
throw $path
}
return $path
}
# Variables
$SourceDir = Test $args[0]
$OutputRootDir = Test $args[1]
Test (Join-Path $SourceDir 'MpvNet.sln')
$7zFile = Test 'C:\Program Files\7-Zip\7z.exe'
$InnoSetupCompiler = Test 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe'
$ReleaseNotes = "- [.NET Desktop Runtime 10.0](https://dotnet.microsoft.com/en-us/download/dotnet/10.0)`n- [Changelog](https://github.com/mpvnet-player/mpv.net/blob/main/docs/changelog.md)"
$Repo = 'github.com/mpvnet-player/mpv.net'
# Dotnet Publish
$PublishDir64 = Join-Path $SourceDir 'MpvNet.Windows\bin\Debug\win-x64\publish\'
$PublishDirARM64 = Join-Path $SourceDir 'MpvNet.Windows\bin\Debug\win-arm64\publish\'
$ProjectFile = Test (Join-Path $SourceDir 'MpvNet.Windows\MpvNet.Windows.csproj')
dotnet publish $ProjectFile --self-contained false --configuration Debug --runtime win-x64
dotnet publish $ProjectFile --self-contained false --configuration Debug --runtime win-arm64
$PublishedExeFile64 = Test ($PublishDir64 + 'mpvnet.exe')
# Create OutputName
$VersionInfo = [Diagnostics.FileVersionInfo]::GetVersionInfo($PublishedExeFile64)
$IsBeta = $VersionInfo.FilePrivatePart -ne 0
$BetaString = if ($IsBeta) { '-beta' } else { '' }
$VersionName = $VersionInfo.FileVersion
$OutputName64 = 'mpv.net-v' + $VersionName + $BetaString + '-portable-x64'
$OutputNameARM64 = 'mpv.net-v' + $VersionName + $BetaString + '-portable-ARM64'
# Create OutputFolder
$OutputDir64 = Join-Path $OutputRootDir ($OutputName64 + '\')
$OutputDirARM64 = Join-Path $OutputRootDir ($OutputNameARM64 + '\')
DeleteDir $OutputDir64
DeleteDir $OutputDirARM64
mkdir $OutputDir64
mkdir $OutputDirARM64
# Copy Files
Copy-Item ($PublishDir64 + '*') $OutputDir64
Copy-Item ($PublishDirARM64 + '*') $OutputDirARM64
$BinDirX64 = Test (Join-Path $SourceDir 'MpvNet.Windows\bin\Debug\')
$BinDirARM64 = Test (Join-Path $SourceDir 'MpvNet.Windows\bin\Debug\win-arm64\')
$ExtraFiles = 'mpvnet.com', 'libmpv-2.dll', 'MediaInfo.dll'
$ExtraFiles | ForEach-Object { Copy-Item ($BinDirX64 + $_) ($OutputDir64 + $_) }
$ExtraFiles | ForEach-Object { Copy-Item ($BinDirARM64 + $_) ($OutputDirARM64 + $_) }
$LocaleDir = Test (Join-Path $SourceDir 'MpvNet.Windows\bin\Debug\Locale\')
Copy-Item $LocaleDir ($OutputDir64 + 'Locale') -Recurse
Copy-Item $LocaleDir ($OutputDirARM64 + 'Locale') -Recurse
# Pack
$ZipOutputFile64 = Join-Path $OutputRootDir ($OutputName64 + '.zip')
$ZipOutputFileARM64 = Join-Path $OutputRootDir ($OutputNameARM64 + '.zip')
& $7zFile a -tzip -mx9 $ZipOutputFile64 -r ($OutputDir64 + '*')
if ($LastExitCode) { throw $LastExitCode }
& $7zFile a -tzip -mx9 $ZipOutputFileARM64 -r ($OutputDirARM64 + '*')
if ($LastExitCode) { throw $LastExitCode }
Test $ZipOutputFile64
Test $ZipOutputFileARM64
# Inno Setup
''; ''
$InnoSetupScript = Test (Join-Path $SourceDir 'Setup\Inno\inno-setup.iss')
& $InnoSetupCompiler $InnoSetupScript
if ($LastExitCode) { throw $LastExitCode }
$SetupFile = Test (Join-Path $OutputRootDir "mpv.net-v$VersionName-setup-x64.exe")
if ($IsBeta) {
$NewSetupFile = Join-Path $OutputRootDir "mpv.net-v$VersionName-beta-setup-x64.exe"
Move-Item $SetupFile $NewSetupFile
$SetupFile = $NewSetupFile
}
# Release
$Title = 'v' + $VersionName + $BetaString
if ($BetaString) {
gh release create $Title -t $Title -n $ReleaseNotes --repo $Repo --prerelease $ZipOutputFile64 $ZipOutputFileARM64 $SetupFile
} else {
gh release create $Title -t $Title -n $ReleaseNotes --repo $Repo $ZipOutputFile64 $ZipOutputFileARM64 $SetupFile
}
if ($LastExitCode) { throw $LastExitCode }

View File

@@ -1,73 +0,0 @@
<#
This script updates mpv and libmpv using github.com/zhongfly/mpv-winbuild
Two positional command line arguments need to be passed into the script:
1. The directory containing libmpv to be updated.
2. The directory containing mpv to be updated.
To skip one of both pass 'no' instead of the path.
Requires 7zip being installed at 'C:\Program Files\7-Zip\7z.exe'
#>
$zip7Path = 'C:\Program Files\7-Zip\7z.exe'
$ScriptArgs = $args
# Stop when the first error occurs
$ErrorActionPreference = 'Stop'
# Throw exception if file or folder does not exist
function Test($path) {
if (-not (Test-Path $path)) {
throw $path
}
return $path
}
# Download file to temp dir and return file path
function Download($pattern) {
$api = "https://api.github.com/repos/zhongfly/mpv-winbuild/releases/latest"
$json = Invoke-WebRequest $api -MaximumRedirection 0 -ErrorAction Ignore -UseBasicParsing | ConvertFrom-Json
$filename = ($json.assets | Where-Object { $_.name -Match $pattern }).name
$path = Join-Path $env:TEMP $filename
$link = ($json.assets | Where-Object { $_.name -Match $pattern }).browser_download_url
Invoke-WebRequest -Uri $link -UserAgent "mpv-win-updater" -OutFile $path
return Test $path
}
function Unpack($archieveFile, $outputRootDir) {
$outputDir = Join-Path $outputRootDir $archieveFile.BaseName
if (Test-Path $outputDir) { Remove-Item $outputDir -Recurse }
$process = Start-Process (Test $zip7Path) @('x', $archieveFile.FullName, "-o$outputDir") -NoNewWindow -Wait
if ($process.ExitCode) { throw $process.ExitCode }
return Test $outputDir
}
function UpdateLibmpv {
$targetFolder = $ScriptArgs[0]
if ($targetFolder -eq 'no') { return }
$archiveFile = Get-Item (Download "mpv-dev-x86_64-[0-9]{8}")
$archiveDir = Unpack $archiveFile $env:TEMP
Copy-Item $archiveDir\libmpv-2.dll (Test $targetFolder) -Force
Remove-Item $archiveFile.FullName
Remove-Item $archiveDir -Recurse
}
function UpdateMpv() {
$targetFolder = $ScriptArgs[1]
if ($targetFolder -eq 'no') { return }
$archiveFile = Get-Item (Download "mpv-x86_64-[0-9]{8}")
$archiveDir = Unpack $archiveFile $env:TEMP
Copy-Item "$archiveDir\mpv\*" $targetFolder -Force -Recurse
Remove-Item $archiveFile.FullName
Remove-Item $archiveDir -Recurse
}
UpdateLibmpv
UpdateMpv
Write-Host 'Script finished successfully' -ForegroundColor Green

103
src/Tools/update-mpv.ps1 Normal file
View File

@@ -0,0 +1,103 @@
<#
Updates mpv (x64) and libmpv (x64 , ARM64).
Files are downloaded from:
https://github.com/shinchiro/mpv-winbuild-cmake/releases
Requires 7zip being installed at 'C:\Program Files\7-Zip\7z.exe'.
Needs 3 positional CLI arguments:
1. Directory where mpv x64 is located. To skip pass '-'.
2. Directory where libmpv x64 is located. To skip pass '-'.
3. Directory where libmpv ARM64 is located. To skip pass '-'.
#>
$7ZipPath = 'C:\Program Files\7-Zip\7z.exe'
$MpvDirX64 = $args[0]
$LibmpvDirX64 = $args[1]
$LibmpvDirARM64 = $args[2]
# Stop when the first error occurs
$ErrorActionPreference = 'Stop'
# Throw exception if file or folder does not exist
function Test($path) {
if (-not (Test-Path $path)) {
throw $path
}
return $path
}
# Download file to temp dir and return file path
function Download($apiURL, $pattern) {
$json = Invoke-WebRequest $apiURL -MaximumRedirection 0 -ErrorAction Ignore -UseBasicParsing | ConvertFrom-Json
$filename = ($json.assets | Where-Object { $_.name -Match $pattern }).name
$path = Join-Path $env:TEMP $filename
$link = ($json.assets | Where-Object { $_.name -Match $pattern }).browser_download_url
Invoke-WebRequest -Uri $link -UserAgent "mpv-win-updater" -OutFile $path
return Test $path
}
# Unpack archive
function Unpack($archieveFile, $outputRootDir) {
$outputDir = Join-Path $outputRootDir $archieveFile.BaseName
if (Test-Path $outputDir) { Remove-Item $outputDir -Recurse }
$process = Start-Process (Test $7ZipPath) @('x', $archieveFile.FullName, "-o$outputDir") -NoNewWindow -Wait
if ($process.ExitCode) { throw $process.ExitCode }
return Test $outputDir
}
# Update mpv x64
if (Test-Path (Join-Path $MpvDirX64 'mpv.exe')) {
$apiURL = "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-x86_64-[0-9]{8}-git-[0-9a-z]+\.7z")
$archiveDir = Unpack $archiveFile $env:TEMP
Remove-Item "$MpvDirX64\*" -Force -Recurse
Copy-Item "$archiveDir\*" $MpvDirX64 -Force -Recurse
Remove-Item $archiveFile.FullName
Remove-Item $archiveDir -Recurse
} else {
"mpv x64 location not found:`n$MpvDirX64"
}
# Update libmpv x64
if (Test-Path (Join-Path $LibmpvDirX64 'libmpv-2.dll')) {
$apiURL = "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-dev-x86_64-[0-9]{8}-git-[0-9a-z]+\.7z")
$archiveDir = Unpack $archiveFile $env:TEMP
Copy-Item $archiveDir\libmpv-2.dll $LibmpvDirX64 -Force
Remove-Item $archiveFile.FullName
Remove-Item $archiveDir -Recurse
} else {
"libmpv x64 location not found:`n$LibmpvDirX64"
}
# Update libmpv ARM64
if (Test-Path (Join-Path $LibmpvDirARM64 'libmpv-2.dll')) {
$apiURL = "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-dev-aarch64-[0-9]{8}-git-[0-9a-z]+\.7z")
$archiveDir = Unpack $archiveFile $env:TEMP
Copy-Item $archiveDir\libmpv-2.dll $LibmpvDirARM64 -Force
Remove-Item $archiveFile.FullName
Remove-Item $archiveDir -Recurse
} else {
"libmpv ARM64 location not found:`n$LibmpvDirARM64"
}
if (Test-Path (Join-Path $MpvDirX64 'mpv.exe')) {
Get-Item (Join-Path $MpvDirX64 'mpv.exe')
}
if (Test-Path (Join-Path $LibmpvDirX64 'libmpv-2.dll')) {
Get-Item (Join-Path $LibmpvDirX64 'libmpv-2.dll')
}
if (Test-Path (Join-Path $LibmpvDirARM64 'libmpv-2.dll')) {
Get-Item (Join-Path $LibmpvDirARM64 'libmpv-2.dll')
}