+ <_li>Simple and intuitive yet powerful interface for editing subtitles
+ <_li>Support for many formats and character sets
+ <_li>Powerful video mode
+ <_li>Visual typesetting tools
+ <_li>Intuitive and customizable audio timing mode
+ <_li>Fully scriptable through the Automation module
+
+
+ aegisub.desktop
+
+ HiDpiIcon
+ HighContrast
+ UserDocs
+
+
+
+ <_caption>Typesetting
+ http://static.aegisub.org/img/screenshots/unix/typesetting-efc51b7a.png
+
+
+ <_caption>Audio video
+ http://static.aegisub.org/img/screenshots/unix/audio-video-f1f81fc2.png
+
+
+ <_caption>Audio timing
+ http://static.aegisub.org/img/screenshots/unix/audio-timing-1d8fce7e.png
+
+
+ Aegisub Group
+ https://github.com/Aegisub/Aegisub/issues
+ http://docs.aegisub.org/manual/FAQ
+ http://docs.aegisub.org
+ http://www.aegisub.org
+ https://sites.google.com/site/rockytdrontransifex/aegisub
+
+ mild
+
+ aegisub
+
+ aegisub
+
+
+
+
+
diff --git a/packages/desktop/aegisub.desktop.template.in b/packages/desktop/aegisub.desktop.template.in
index b11a3e359..ce73b1417 100644
--- a/packages/desktop/aegisub.desktop.template.in
+++ b/packages/desktop/aegisub.desktop.template.in
@@ -1,13 +1,15 @@
[Desktop Entry]
Version=1.0
Type=Application
-_Name=Aegisub
-_GenericName=Subtitle Editor
-_Comment=Create and edit subtitles for film and videos.
+Name=Aegisub
+GenericName=Subtitle Editor
+Comment=Create and edit subtitles for film and videos.
Exec=@AEGISUB_COMMAND@ %f
TryExec=@AEGISUB_COMMAND@
Icon=aegisub
Terminal=false
-Categories=AudioVideo;AudioVideoEditing;
+Categories=AudioVideo;AudioVideoEditing;GTK;
+_Keywords=subtitles;subtitle;captions;captioning;video;audio;
MimeType=application/x-srt;text/plain;text/x-ass;text/x-microdvd;text/x-ssa;
StartupNotify=true
+StartupWMClass=aegisub
diff --git a/packages/desktop/scalable/aegisub.svg b/packages/desktop/scalable/aegisub.svg
new file mode 100644
index 000000000..e0dfeadb6
--- /dev/null
+++ b/packages/desktop/scalable/aegisub.svg
@@ -0,0 +1,375 @@
+
+
+
diff --git a/packages/meson.build b/packages/meson.build
new file mode 100644
index 000000000..1e13be54a
--- /dev/null
+++ b/packages/meson.build
@@ -0,0 +1,41 @@
+conf_pkg = configuration_data()
+
+if host_machine.system() == 'windows'
+ installer_setup = find_program(meson.project_source_root() / 'tools/win-installer-setup.ps1')
+ run_target('win-installer',
+ command: [installer_setup, meson.project_build_root(), meson.project_source_root()])
+ portable_setup = find_program(meson.project_source_root() / 'packages/win_installer/portable/create-portable.ps1')
+ run_target('win-portable', command: [portable_setup, meson.project_build_root(), meson.project_source_root()])
+elif host_machine.system() == 'darwin'
+ fontconfig_conf = run_command('pkg-config', '--variable=confdir', 'fontconfig').stdout().strip()
+ bundle_app_sh = find_program(meson.project_source_root() / 'tools/osx-bundle.sh')
+ run_target('osx-bundle',
+ command: [bundle_app_sh, meson.project_source_root(), meson.project_build_root(), 'wx-config', fontconfig_conf, '',
+ get_option('build_osx_bundle') ? 'TRUE' : 'FALSE'])
+ build_dmg_sh = find_program(meson.project_source_root() / 'tools/osx-dmg.sh')
+ run_target('osx-build-dmg',
+ command: [build_dmg_sh, meson.project_source_root(), meson.project_build_root(), meson.project_version()])
+else
+ conf_pkg.set('AEGISUB_COMMAND', 'aegisub')
+
+ desktop_template = configure_file(input: 'desktop/aegisub.desktop.template.in',
+ output: 'aegisub.desktop.template',
+ configuration: conf_pkg)
+
+ i18n = import('i18n')
+ i18n.merge_file(input: desktop_template,
+ output: 'aegisub.desktop',
+ type: 'desktop',
+ po_dir: '../po',
+ install: true,
+ install_dir: datadir / 'applications')
+
+ aegisub_logos = ['16x16.png', '22x22.png', '24x24.png', '32x32.png', '48x48.png', '64x64.png', 'scalable.svg']
+
+ foreach s: aegisub_logos
+ dir = s.split('.')[0]
+ ext = s.split('.')[1]
+ install_data('desktop' / dir / 'aegisub.' + ext,
+ install_dir: datadir / 'icons' / 'hicolor' / dir / 'apps')
+ endforeach
+endif
diff --git a/tools/osx-bundle.sed.in b/packages/osx_bundle/osx-bundle.sed.in
similarity index 100%
rename from tools/osx-bundle.sed.in
rename to packages/osx_bundle/osx-bundle.sed.in
diff --git a/packages/win_installer/aegisub3.iss b/packages/win_installer/aegisub3.iss
index 2683e02c1..b4361a733 100644
--- a/packages/win_installer/aegisub3.iss
+++ b/packages/win_installer/aegisub3.iss
@@ -1,37 +1,3 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
#define ARCH 64
#include "fragment_setupbase.iss"
@@ -39,7 +5,7 @@
[Setup]
AppID={{24BC8B57-716C-444F-B46B-A3349B9164C5}
-DefaultDirName={pf}\Aegisub
+DefaultDirName={commonpf}\Aegisub
PrivilegesRequired=poweruser
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64
@@ -50,9 +16,7 @@ ArchitecturesAllowed=x64
#include "fragment_automation.iss"
#include "fragment_translations.iss"
#include "fragment_spelling.iss"
-#ifdef DEPCTRL
#include "fragment_runtimes.iss"
-#endif
[Code]
#include "fragment_shell_code.iss"
@@ -77,7 +41,7 @@ begin
if CurStep = ssPostInstall then
begin
- if IsTaskSelected('checkforupdates') then
+ if WizardIsTaskSelected('checkforupdates') then
Updates := 'true'
else
Updates := 'false';
@@ -90,4 +54,3 @@ begin
False);
end;
end;
-
diff --git a/packages/win_installer/aegisub_depctrl.iss b/packages/win_installer/aegisub_depctrl.iss
index 069eac029..2222415e8 100644
--- a/packages/win_installer/aegisub_depctrl.iss
+++ b/packages/win_installer/aegisub_depctrl.iss
@@ -1,3 +1,6 @@
#define DEPCTRL
+;#define UNOFFICIAL_LANGUAGES
+#define ENABLE_AEG_TRANSLATIONS
+; #define ENABLE_WX_TRANSLATIONS
#include "aegisub3.iss"
diff --git a/packages/win_installer/dictionaries/fragment_dictbase.iss b/packages/win_installer/dictionaries/fragment_dictbase.iss
index 5d694f98c..6f07dcc37 100644
--- a/packages/win_installer/dictionaries/fragment_dictbase.iss
+++ b/packages/win_installer/dictionaries/fragment_dictbase.iss
@@ -1,37 +1,3 @@
-; Copyright (c) 2011, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
[Setup]
AppID={{24BC8B57-716C-444F-B46B-A3349B9164C5}
AppName=Aegisub
@@ -75,7 +41,6 @@ WelcomeLabel2=This will install {#LANGNAME} dictionaries for Aegisub 3.0 on your
DestDir: {tmp}; Flags: dontcopy; Source: welcome.bmp
DestDir: {tmp}; Flags: dontcopy; Source: aegisub.bmp
-
[Code]
#include "..\fragment_shell_code.iss"
#include "..\fragment_beautify_code.iss"
diff --git a/packages/win_installer/dictionaries/fragment_stddict.iss b/packages/win_installer/dictionaries/fragment_stddict.iss
index 7b7ee1924..acad697be 100644
--- a/packages/win_installer/dictionaries/fragment_stddict.iss
+++ b/packages/win_installer/dictionaries/fragment_stddict.iss
@@ -1,44 +1,9 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
#include "fragment_dictbase.iss"
[Setup]
OutputBaseFilename=Aegisub-3.0-dict-{#LANGCODE}
VersionInfoDescription=Aegisub 3.0 {#LANGNAME} dictionary
-
[Files]
Source: src\dictionaries\{#LANGCODE}.aff; DestDir: {app}\dictionaries; Flags: ignoreversion; Components: dic/{#LANGCODE}
Source: src\dictionaries\{#LANGCODE}.dic; DestDir: {app}\dictionaries; Flags: ignoreversion; Components: dic/{#LANGCODE}
@@ -54,4 +19,3 @@ Name: dic/{#LANGCODE}; Description: {#LANGNAME} dictionary; Types: full
Name: th; Description: Thesaurus; Types: full
Name: th/{#LANGCODE}; Description: {#LANGNAME} thesaurus; Types: full
#endif
-
diff --git a/packages/win_installer/fragment_associations.iss b/packages/win_installer/fragment_associations.iss
index 113b42dce..c766011da 100644
--- a/packages/win_installer/fragment_associations.iss
+++ b/packages/win_installer/fragment_associations.iss
@@ -1,157 +1,123 @@
-; Copyright (c) 2007-2011, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
[Files]
DestDir: {commontemplates}; Source: template.ass; DestName: Aegisub.ass
[Registry]
; File type registration
; Application registration for Open With dialogue
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe"; ValueType: string; ValueName: "FriendlyAppName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10000"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe"; ValueType: string; ValueName: "ApplicationCompany"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\shell"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\shell\open"; ValueType: string; ValueName: "FriendlyAppName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10000"; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%1"""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".ass"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".ssa"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".srt"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".sub"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".ttxt"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".txt"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".mkv"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".mka"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".mks"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".avi"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".mp3"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".mp4"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".aac"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".m4a"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".wav"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".ogg"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".avs"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".opus"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".h264"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".hevc"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".eac3"; ValueData: ""; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub{#ARCH}.exe\SupportedTypes"; ValueType: string; ValueName: ".webm"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe"; ValueType: none; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe"; ValueType: string; ValueName: "FriendlyAppName"; ValueData: "@{app}\aegisub.exe,-10000"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe"; ValueType: string; ValueName: "ApplicationCompany"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\shell"; ValueType: none; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Applications\aegisub.exe\shell\open"; ValueType: none; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\shell\open"; ValueType: string; ValueName: "FriendlyAppName"; ValueData: "@{app}\aegisub.exe,-10000"; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Applications\aegisub.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%1"""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: none; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".ass"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".ssa"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".srt"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".sub"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".ttxt"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".txt"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".mkv"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".mka"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".mks"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".avi"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".mp3"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".mp4"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".aac"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".m4a"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".wav"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".ogg"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".avs"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".opus"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".h264"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".hevc"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".eac3"; ValueData: ""; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Applications\aegisub.exe\SupportedTypes"; ValueType: string; ValueName: ".webm"; ValueData: ""; Flags: uninsdeletekey
; Class for general subtitle formats
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub subtitle file"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10101"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10101"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Subtitle.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Subtitle.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Subtitle.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Subtitle.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for .ass files
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub Advanced SSA subtitles"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10102"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10102"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.ASSA.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.ASSA.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.ASSA.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.ASSA.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for .ssa files
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub SubStation Alpha subtitles"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10103"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10103"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SSA.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.SSA.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.SSA.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.SSA.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for .srt files
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub SubRip text subtitles"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10104"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10104"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.SRT.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.SRT.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.SRT.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.SRT.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for .ttxt files
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub MPEG-4 timed text"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10105"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10105"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TTXT.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.TTXT.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.TTXT.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.TTXT.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for .mks files
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub Matroska subtitles"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10106"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10106"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.MKS.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.MKS.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.MKS.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.MKS.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for .txt files
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub raw text file"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10107"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10107"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.TXT.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.TXT.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.TXT.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.TXT.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for undecideable media file types
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub media file"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10108"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10108"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Media.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Media.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Media.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Media.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for audio file types
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub audio file"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10109"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10109"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Audio.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Audio.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Audio.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Audio.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Class for video file types
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1"; ValueType: string; ValueName: ""; ValueData: "Aegisub video file"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1"; ValueType: dword; ValueName: "EditFlags"; ValueData: $af0; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10110"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe,0"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1"; ValueType: string; ValueName: "FriendlyTypeName"; ValueData: "@{app}\aegisub.exe,-10110"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe,0"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Classes\Aegisub.Video.1\shell"; ValueType: string; ValueName: ""; ValueData: "open"; Flags: uninsdeletekey
Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Video.1\shell\open"; ValueType: none; Flags: uninsdeletekey
-Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Video.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub{#ARCH}.exe"" ""%L"""; Flags: uninsdeletekey
+Root: HKLM; SubKey: "SOFTWARE\Classes\Aegisub.Video.1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\aegisub.exe"" ""%L"""; Flags: uninsdeletekey
; Default Programs registration
Root: HKLM; Subkey: "SOFTWARE\Aegisub"; ValueType: none; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Aegisub\Capabilities"; ValueType: none
-Root: HKLM; Subkey: "SOFTWARE\Aegisub\Capabilities"; ValueType: string; ValueName: "ApplicationDescription"; ValueData: "@{app}\aegisub{#ARCH}.exe,-10001"
+Root: HKLM; Subkey: "SOFTWARE\Aegisub\Capabilities"; ValueType: string; ValueName: "ApplicationDescription"; ValueData: "@{app}\aegisub.exe,-10001"
Root: HKLM; Subkey: "SOFTWARE\Aegisub\Capabilities\FileAssociations"; ValueType: none
Root: HKLM; Subkey: "SOFTWARE\Aegisub\Capabilities\FileAssociations"; ValueType: string; ValueName: ".ass"; ValueData: "Aegisub.ASSA.1"
Root: HKLM; Subkey: "SOFTWARE\Aegisub\Capabilities\FileAssociations"; ValueType: string; ValueName: ".ssa"; ValueData: "Aegisub.SSA.1"
diff --git a/packages/win_installer/fragment_automation.iss b/packages/win_installer/fragment_automation.iss
index 4b224aad7..6843a3388 100644
--- a/packages/win_installer/fragment_automation.iss
+++ b/packages/win_installer/fragment_automation.iss
@@ -1,79 +1,49 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
; This file declares all installables related to Aegisub Automation
[Files]
-DestDir: {app}\automation\autoload; Source: ..\..\automation\autoload\cleantags-autoload.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
-DestDir: {app}\automation\autoload; Source: ..\..\automation\autoload\karaoke-auto-leadin.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
-DestDir: {app}\automation\autoload; Source: ..\..\automation\autoload\kara-templater.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
-DestDir: {app}\automation\autoload; Source: ..\..\automation\autoload\select-overlaps.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
-DestDir: {app}\automation\autoload; Source: ..\..\automation\autoload\strip-tags.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
+DestDir: {app}\automation\autoload; Source: {#SOURCE_ROOT}\automation\autoload\cleantags-autoload.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
+DestDir: {app}\automation\autoload; Source: {#SOURCE_ROOT}\automation\autoload\karaoke-auto-leadin.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
+DestDir: {app}\automation\autoload; Source: {#SOURCE_ROOT}\automation\autoload\kara-templater.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
+DestDir: {app}\automation\autoload; Source: {#SOURCE_ROOT}\automation\autoload\select-overlaps.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
+DestDir: {app}\automation\autoload; Source: {#SOURCE_ROOT}\automation\autoload\strip-tags.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\bundled
-DestDir: {app}\automation\demos; Source: ..\..\automation\demos\future-windy-blur.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\demos
-DestDir: {app}\automation\demos; Source: ..\..\automation\demos\raytracer.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\demos
+DestDir: {app}\automation\demos; Source: {#SOURCE_ROOT}\automation\demos\future-windy-blur.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\demos
+DestDir: {app}\automation\demos; Source: {#SOURCE_ROOT}\automation\demos\raytracer.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: macros\demos
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\argcheck.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\clipboard.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\ffi.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\lfs.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\re.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\unicode.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include\aegisub; Source: ..\..\automation\include\aegisub\util.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\argcheck.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\clipboard.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\ffi.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\lfs.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\re.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\unicode.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include\aegisub; Source: {#SOURCE_ROOT}\automation\include\aegisub\util.moon; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\cleantags.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\clipboard.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\karaskel.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\karaskel-auto4.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\lfs.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\moonscript.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\re.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\unicode.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\utils.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-DestDir: {app}\automation\include; Source: ..\..\automation\include\utils-auto4.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\cleantags.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\clipboard.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\karaskel.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\karaskel-auto4.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\lfs.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\moonscript.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\re.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\unicode.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\unicode-monkeypatch.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\utils.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
+DestDir: {app}\automation\include; Source: {#SOURCE_ROOT}\automation\include\utils-auto4.lua; Flags: ignoreversion overwritereadonly uninsremovereadonly; Attribs: readonly; Components: main
-; DepCtrl
#ifdef DEPCTRL
-DestDir: {userappdata}\Aegisub\automation\include\l0; Source: vendor\DependencyControl\modules\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
-DestDir: {userappdata}\Aegisub\automation\autoload; Source: vendor\DependencyControl\macros\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
-DestDir: {userappdata}\Aegisub\automation\include; Source: vendor\Yutils\src\Yutils.lua; Flags: ignoreversion; Components: macros\modules\yutils
-DestDir: {userappdata}\Aegisub\automation\include; Source: vendor\ffi-experiments\luajson\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\luajson
-DestDir: {userappdata}\Aegisub\automation\include\requireffi; Source: vendor\ffi-experiments\requireffi\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+; DepCtrl
+DestDir: {userappdata}\Aegisub\automation\include\l0; Source: {#DEPS_DIR}\DependencyControl\modules\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\autoload; Source: {#DEPS_DIR}\DependencyControl\macros\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include; Source: {#DEPS_DIR}\Yutils\src\Yutils.lua; Flags: ignoreversion; Components: macros\modules\yutils
+DestDir: {userappdata}\Aegisub\automation\include; Source: {#DEPS_DIR}\luajson\lua\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\luajson
-DestDir: {userappdata}\Aegisub\automation\include; Source: vendor\ffi-experiments\BadMutex\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
-DestDir: {userappdata}\Aegisub\automation\include; Source: vendor\ffi-experiments\PreciseTimer\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
-DestDir: {userappdata}\Aegisub\automation\include; Source: vendor\ffi-experiments\DownloadManager\*; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\requireffi; Source: {#DEPS_DIR}\ffi-experiments\build\requireffi\requireffi.lua; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\BM\BadMutex; Source: {#DEPS_DIR}\ffi-experiments\build\bad-mutex\BadMutex.dll; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\BM; Source: {#DEPS_DIR}\ffi-experiments\build\bad-mutex\BadMutex.lua; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\PT\PreciseTimer; Source: {#DEPS_DIR}\ffi-experiments\build\precise-timer\PreciseTimer.dll; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\PT; Source: {#DEPS_DIR}\ffi-experiments\build\precise-timer\PreciseTimer.lua; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\DM\DownloadManager; Source: {#DEPS_DIR}\ffi-experiments\build\download-manager\DownloadManager.dll; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
+DestDir: {userappdata}\Aegisub\automation\include\DM; Source: {#DEPS_DIR}\ffi-experiments\build\download-manager\DownloadManager.lua; Flags: ignoreversion recursesubdirs createallsubdirs; Components: macros\modules\depctrl
[Dirs]
Name: {userappdata}\Aegisub\automation\test\DepUnit\automation; Components: macros\modules\depctrl;
diff --git a/packages/win_installer/fragment_beautify_code.iss b/packages/win_installer/fragment_beautify_code.iss
index 25552ecdd..9e7155b91 100644
--- a/packages/win_installer/fragment_beautify_code.iss
+++ b/packages/win_installer/fragment_beautify_code.iss
@@ -1,41 +1,4 @@
[Code]
-(*
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-*)
-
-
function SHAutoComplete(hWnd: Integer; dwFlags: DWORD): Integer;
external 'SHAutoComplete@shlwapi.dll stdcall delayload';
const
@@ -81,4 +44,3 @@ begin
Log('Could not add autocomplete to dir edit box');
end;
end;
-
diff --git a/packages/win_installer/fragment_codecs.iss b/packages/win_installer/fragment_codecs.iss
index 5951f8ddd..b9d55257a 100644
--- a/packages/win_installer/fragment_codecs.iss
+++ b/packages/win_installer/fragment_codecs.iss
@@ -1,41 +1,7 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
[Files]
; Avisynth
-DestDir: {app}; Source: vendor\AvisynthPlus64\devil.dll; Flags: ignoreversion; Components: main
-DestDir: {app}; Source: vendor\AvisynthPlus64\avisynth.dll; Flags: ignoreversion; Components: main
-DestDir: {app}; Source: vendor\AvisynthPlus64\DirectShowSource.dll; Flags: ignoreversion; Components: main
+DestDir: {app}; Source: {#DEPS_DIR}\AvisynthPlus64\x86-64\DevIL.dll; Flags: ignoreversion; Components: main
+DestDir: {app}; Source: {#DEPS_DIR}\AvisynthPlus64\x86-64\AviSynth.dll; Flags: ignoreversion; Components: main
+DestDir: {app}; Source: {#DEPS_DIR}\AvisynthPlus64\x86-64\plugins\DirectShowSource.dll; Flags: ignoreversion; Components: main
; VSFilter
-DestDir: {app}\csri; Source: vendor\xy-vsfilter\xy-vsfilter-aegisub64.dll; Flags: ignoreversion; Components: main
+DestDir: {app}\csri; Source: {#DEPS_DIR}\VSFilter\x64\VSFilter.dll; Flags: ignoreversion; Components: main
diff --git a/packages/win_installer/fragment_mainprogram.iss b/packages/win_installer/fragment_mainprogram.iss
index 0eed59a86..7feeaf740 100644
--- a/packages/win_installer/fragment_mainprogram.iss
+++ b/packages/win_installer/fragment_mainprogram.iss
@@ -1,37 +1,3 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
[Components]
Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed
Name: "macros"; Description: "Automation Scripts"; Types: full
@@ -53,19 +19,19 @@ Name: "checkforupdates"; Description: "{cm:CheckForUpdates}"; GroupDescription:
[Files]
; main
-DestDir: {app}; Source: ..\..\bin\aegisub{#ARCH}.exe; Flags: ignoreversion; Components: main
-DestDir: {app}; Source: license.txt; Flags: ignoreversion; Components: main
+DestDir: {app}; Source: "{#BUILD_ROOT}\aegisub.exe"; Flags: ignoreversion; Components: main
+DestDir: {app}; Source: "{#INSTALLER_DIR}\license.txt"; Flags: ignoreversion; Components: main
[Icons]
-Name: {commonprograms}\Aegisub; Filename: {app}\aegisub{#ARCH}.exe; WorkingDir: {app}; IconIndex: 0; Tasks: startmenuicon; Comment: Create and edit subtitle files
+Name: {commonprograms}\Aegisub; Filename: {app}\aegisub.exe; WorkingDir: {app}; IconIndex: 0; Tasks: startmenuicon; Comment: Create and edit subtitle files
[Registry]
; Register in App Paths so the user can conveniently enter 'aegisub' in their Run box
-Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\aegisub{#ARCH}.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe"; Flags: uninsdeletekey
-Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\aegisub.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub{#ARCH}.exe"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\aegisub.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\aegisub.exe"; ValueType: string; ValueName: ""; ValueData: "{app}\aegisub.exe"; Flags: uninsdeletekey
[Run]
-Filename: {app}\aegisub{#ARCH}.exe; Description: {cm:LaunchProgram,Aegisub}; Flags: nowait postinstall skipifsilent
+Filename: {app}\aegisub.exe; Description: {cm:LaunchProgram,Aegisub}; Flags: nowait postinstall skipifsilent
[InstallDelete]
Type: files; Name: "{app}\ffms2_64.dll"
diff --git a/packages/win_installer/fragment_migrate_code.iss b/packages/win_installer/fragment_migrate_code.iss
index 7be07c916..2ba53ffdd 100644
--- a/packages/win_installer/fragment_migrate_code.iss
+++ b/packages/win_installer/fragment_migrate_code.iss
@@ -1,41 +1,4 @@
[Code]
-(*
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-*)
-
-
var
HasLegacyVersion: Boolean;
LegacyStartMenuFolder: string;
@@ -68,7 +31,7 @@ end;
function InitializeSetupMigration: Boolean;
begin
LegacyStartMenuFolder := 'Aegisub';
- LegacyInstallFolder := ExpandConstant('{pf}\Aegisub');
+ LegacyInstallFolder := ExpandConstant('{commonpf32}\Aegisub');
LegacyVersionNumber := '1.x';
try
@@ -390,9 +353,3 @@ begin
CleanUpOldVersion;
end;
end;
-
-
-
-
-
-
diff --git a/packages/win_installer/fragment_opengl.iss b/packages/win_installer/fragment_opengl.iss
deleted file mode 100644
index 21cb3ee14..000000000
--- a/packages/win_installer/fragment_opengl.iss
+++ /dev/null
@@ -1,68 +0,0 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
-
-; Check whether the user has a possibly redundant OPENGL32.DLL file in his program folder and offer to remove it
-
-[InstallDelete]
-Type: files; Name: {app}\opengl32.dll; Tasks: RemoveRedundantOpenGL
-Type: files; Name: {app}\opengl32.txt; Tasks: RemoveRedundantOpenGL
-Type: files; Name: {app}\opengl32.lib; Tasks: RemoveRedundantOpenGL
-
-[Tasks]
-Name: RemoveRedundantOpenGL; Description: Remove OPENGL32.DLL from Aegisub folder; Check: OpenGLdllPresent
-
-[Messages]
-WizardSelectTasks=Select Additional Tasks
-SelectTasksDesc=Which additional tasks should be performed?
-SelectTasksLabel2=You appear to have a Mesa3D OPENGL32.DLL file installed in your Aegisub directory. This file has previously helped make video display more stable, but is no longer needed because Aegisub's code has been made more robust.%nThis file will be removed by default, but if you want to keep it you can unselect the option below.
-
-[Code]
-function OpenGLdllPresent: Boolean;
-begin
- try
- Result :=
- FileExists(ExpandConstant('{app}\opengl32.dll'))
- // MD5 hash of the DLL distributed on Aegisub's forum
- and (GetMD5OfFile(ExpandConstant('{app}\opengl32.dll')) = 'f928a03f4b265658589be951cbd09a27')
- ;
- except
- Result := False;
- end;
-end;
-[/Code]
-
-
-
-
diff --git a/packages/win_installer/fragment_runtimes.iss b/packages/win_installer/fragment_runtimes.iss
index 8d7f56436..c7c69762f 100644
--- a/packages/win_installer/fragment_runtimes.iss
+++ b/packages/win_installer/fragment_runtimes.iss
@@ -1,47 +1,7 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
; This file implements checking for and installing runtime libraries for Aegisub
[Files]
-DestDir: {tmp}; Source: src\vcredist_{#ARCH}.exe; Flags: nocompression deleteafterinstall
-;Source: src\redist\{#ARCH}\Microsoft.VC140.CRT\msvcp140.dll; DestDir: {app}; Flags: ignoreversion
-;Source: src\redist\{#ARCH}\Microsoft.VC140.CRT\concrt140.dll; DestDir: {app}; Flags: ignoreversion
-;Source: src\redist\{#ARCH}\Microsoft.VC140.CRT\vccorlib140.dll; DestDir: {app}; Flags: ignoreversion
-;Source: src\redist\{#ARCH}\Microsoft.VC140.CRT\vcruntime140.dll; DestDir: {app}; Flags: ignoreversion
-;Source: src\redist\{#ARCH}\Microsoft.VC140.MFC\mfc140u.dll; DestDir: {app}; Flags: ignoreversion
-;Source: src\redist\{#ARCH}\Microsoft.VC140.MFC\mfcm140u.dll; DestDir: {app}; Flags: ignoreversion
+DestDir: {tmp}; Source: "{#DEPS_DIR}\VC_redist\VC_redist.x{#ARCH}.exe"; Flags: nocompression deleteafterinstall
[Run]
-Filename: {tmp}\vcredist_{#ARCH}.exe; StatusMsg: {cm:InstallRuntime}; Parameters: "/install /quiet /norestart"
+Filename: {tmp}\VC_redist.x{#ARCH}.exe; StatusMsg: {cm:InstallRuntime}; Parameters: "/install /quiet /norestart"
diff --git a/packages/win_installer/fragment_setupbase.iss b/packages/win_installer/fragment_setupbase.iss
index 4ab7f44ed..f6c7de493 100644
--- a/packages/win_installer/fragment_setupbase.iss
+++ b/packages/win_installer/fragment_setupbase.iss
@@ -1,38 +1,10 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
+#define CURRENT_YEAR GetDateTimeString('yyyy', '', '');
+#define BUILD_ROOT GetEnv('BUILD_ROOT')
+#define SOURCE_ROOT GetEnv('SOURCE_ROOT')
+#define INSTALLER_DIR SOURCE_ROOT + "\packages\win_installer"
+#define DEPS_DIR BUILD_ROOT + "\installer-deps"
-#include "../../build/git_version.h"
+#include BUILD_ROOT + "\git_version.h"
[Setup]
AppName=Aegisub
@@ -40,15 +12,15 @@ AppVerName=Aegisub {#BUILD_GIT_VERSION_STRING}
AppVersion={#INSTALLER_VERSION}
AppPublisher=Aegisub Team
AppPublisherURL=http://www.aegisub.org/
-AppSupportURL=https://github.com/TypesettingTools/Aegisub/issues
-AppCopyright=2005-2018 The Aegisub Team
+AppSupportURL=https://github.com/Aegsiub/Aegisub/issues
+AppCopyright=2005-{#CURRENT_YEAR} The Aegisub Team
VersionInfoVersion={#INSTALLER_VERSION}
DefaultGroupName=Aegisub
AllowNoIcons=true
-OutputDir=output
+OutputDir={#BUILD_ROOT}
Compression=lzma/ultra64
SolidCompression=true
-MinVersion=0,5.0
+MinVersion=6.1sp1
ShowLanguageDialog=yes
LanguageDetectionMethod=none
DisableProgramGroupPage=yes
@@ -56,54 +28,58 @@ UsePreviousGroup=yes
UsePreviousSetupType=no
UsePreviousAppDir=yes
UsePreviousTasks=no
-UninstallDisplayIcon={app}\aegisub{#ARCH}.exe
+UsedUserAreasWarning=no
+UninstallDisplayIcon={app}\aegisub.exe
; Default to a large welcome bitmap, suitable for large fonts
; The normal fonts version is selected by code below
-WizardImageFile=welcome-large.bmp
-WizardSmallImageFile=aegisub-large.bmp
+WizardImageFile={#INSTALLER_DIR}\welcome-large.bmp
+WizardSmallImageFile={#INSTALLER_DIR}\aegisub-large.bmp
-OutputBaseFilename=Aegisub-{#BUILD_GIT_VERSION_STRING}-{#ARCH}
-VersionInfoDescription=Aegisub {#BUILD_GIT_VERSION_STRING} {#ARCH}-bit
+OutputBaseFilename=Aegisub-{#BUILD_GIT_VERSION_STRING}
+VersionInfoDescription=Aegisub {#BUILD_GIT_VERSION_STRING}
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
-Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl"
Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "cz"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "da"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "de"; MessagesFile: "compiler:Languages\German.isl"
-Name: "el"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl"
-Name: "eu"; MessagesFile: "compiler:Languages\Basque.isl"
Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "fr_FR"; MessagesFile: "compiler:Languages\French.isl"
-Name: "gl"; MessagesFile: "compiler:Languages\Galician.isl"
-Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl"
-Name: "id"; MessagesFile: "compiler:Languages\Indonesian.isl"
Name: "it"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "ja"; MessagesFile: "compiler:Languages\Japanese.isl"
-Name: "ko"; MessagesFile: "compiler:Languages\Korean.isl"
-Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "pt_BR"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "pt_PT"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
-Name: "sr_RS"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
-Name: "sr_RS_latin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "uk_UA"; MessagesFile: "compiler:Languages\Ukrainian.isl"
-Name: "zh_CN"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
-Name: "zh_TW"; MessagesFile: "compiler:Languages\ChineseTraditional.isl"
+#ifdef UNOFFICIAL_LANGUAGES
+; These languages are not shipped with InnoSetup by default and would need to be fetched from https://jrsoftware.org/files/istrans/
+;Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl"
+;Name: "el"; MessagesFile: "compiler:Languages\Greek.isl"
+;Name: "eu"; MessagesFile: "compiler:Languages\Basque.isl"
+;Name: "gl"; MessagesFile: "compiler:Languages\Galician.isl"
+;Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl"
+;Name: "id"; MessagesFile: "compiler:Languages\Indonesian.isl"
+;Name: "ko"; MessagesFile: "compiler:Languages\Korean.isl"
+;Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
+;Name: "sr_RS"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
+;Name: "sr_RS_latin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
+;Name: "zh_CN"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
+;Name: "zh_TW"; MessagesFile: "compiler:Languages\ChineseTraditional.isl"
+#endif
[Files]
; small bitmaps (used by beautify code)
-DestDir: {tmp}; Flags: dontcopy; Source: welcome.bmp
-DestDir: {tmp}; Flags: dontcopy; Source: aegisub.bmp
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\welcome.bmp
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\aegisub.bmp
; uninstall data (used by migration code)
-DestDir: {tmp}; Flags: dontcopy; Source: legacy_filelist.txt
-DestDir: {tmp}; Flags: dontcopy; Source: legacy_dirlist.txt
-DestDir: {tmp}; Flags: dontcopy; Source: legacy_locales.txt
-DestDir: {tmp}; Flags: dontcopy; Source: legacy_shortcutlist.txt
-DestDir: {tmp}; Flags: dontcopy; Source: old_filelist.txt
-DestDir: {tmp}; Flags: dontcopy; Source: old_dirlist.txt
-DestDir: {tmp}; Flags: dontcopy; Source: old_locales.txt
-DestDir: {tmp}; Flags: dontcopy; Source: old_shortcutlist.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\legacy_filelist.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\legacy_dirlist.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\legacy_locales.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\legacy_shortcutlist.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\old_filelist.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\old_dirlist.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\old_locales.txt
+DestDir: {tmp}; Flags: dontcopy; Source: {#INSTALLER_DIR}\old_shortcutlist.txt
diff --git a/packages/win_installer/fragment_shell_code.iss b/packages/win_installer/fragment_shell_code.iss
index 259d45a06..53cea58a9 100644
--- a/packages/win_installer/fragment_shell_code.iss
+++ b/packages/win_installer/fragment_shell_code.iss
@@ -1,40 +1,4 @@
[Code]
-(*
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-*)
-
// IShellLink interface and CLSID taken from sample
const
MAX_PATH = 260;
@@ -121,4 +85,3 @@ begin
Result := '';
end;
end;
-
diff --git a/packages/win_installer/fragment_spelling.iss b/packages/win_installer/fragment_spelling.iss
index 1ce979d8f..331f3eb29 100644
--- a/packages/win_installer/fragment_spelling.iss
+++ b/packages/win_installer/fragment_spelling.iss
@@ -1,41 +1,5 @@
-; Copyright (c) 2007-2011, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
-
; This file declares all installables related to spell checking and thesaurii in Aegisub
[Files]
-Source: src\dictionaries\en_US.aff; DestDir: {app}\dictionaries; Flags: skipifsourcedoesntexist ignoreversion
-Source: src\dictionaries\en_US.dic; DestDir: {app}\dictionaries; Flags: skipifsourcedoesntexist ignoreversion
-
+Source: {#DEPS_DIR}\dictionaries\en_US.aff; DestDir: {app}\dictionaries; Flags: skipifsourcedoesntexist ignoreversion
+Source: {#DEPS_DIR}\dictionaries\en_US.dic; DestDir: {app}\dictionaries; Flags: skipifsourcedoesntexist ignoreversion
diff --git a/packages/win_installer/fragment_strings.iss b/packages/win_installer/fragment_strings.iss
index f558865da..f572d8618 100644
--- a/packages/win_installer/fragment_strings.iss
+++ b/packages/win_installer/fragment_strings.iss
@@ -1,44 +1,57 @@
[CustomMessages]
InstallRuntime=Installing runtime libraries...
+pt_PT.InstallRuntime=A instalar livrarias de runtime...
+uk_UA.InstallRuntime=Встановлюю бібліотеки реального часу...
+#ifdef UNOFFICIAL_LANGUAGES
el.InstallRuntime=Εγκατάσταση βιβλιοθηκών...
eu.InstallRuntime=Runtime liburutegiak ezartzen...
id.InstallRuntime=Memasang runtime libraries...
-pt_PT.InstallRuntime=A instalar livrarias de runtime...
-uk_UA.InstallRuntime=Встановлюю бібліотеки реального часу...
zh_CN.InstallRuntime=正在安装运行库……
zh_TW.InstallRuntime=正在安裝運行庫……
+#endif
+
StartMenuIcon=Create a start menu icon
+pt_PT.StartMenuIcon=Criar ícone no menu iniciar
+uk_UA.StartMenuIcon=Створити піктограму в меню Запустити
+#ifdef UNOFFICIAL_LANGUAGES
el.StartMenuIcon=Δημιουργία εικονιδίου στο μενού έναρξης
eu.StartMenuIcon=Sortu hasiera menuko ikur bat
id.StartMenuIcon=Buat ikon di menu awal
-pt_PT.StartMenuIcon=Criar ícone no menu iniciar
-uk_UA.StartMenuIcon=Створити піктограму в меню Запустити
zh_CN.StartMenuIcon=创建开始菜单图标
zh_TW.StartMenuIcon=創建開始功能表圖示
+#endif
+
CheckForUpdates=Automatically check for new versions of Aegisub
+pt_PT.CheckForUpdates=Verifica automaticamente a existência de novas versões do Aegisub
+uk_UA.CheckForUpdates=Автоматично перевіряти Aegisub на нові версії
+#ifdef UNOFFICIAL_LANGUAGES
el.CheckForUpdates=Αυτόματος έλεγχος για καινούριες εκδόσεις του Aegisub
eu.CheckForUpdates=Berezgaitasunez egiaztatu Aegisub-ren bertsio berririk dagoen
id.CheckForUpdates=Otomatis cek versi terbaru Aegisub
-pt_PT.CheckForUpdates=Verifica automaticamente a existência de novas versões do Aegisub
-uk_UA.CheckForUpdates=Автоматично перевіряти Aegisub на нові версії
zh_CN.CheckForUpdates=自动检查Aegisub的新版本
zh_TW.CheckForUpdates=自動檢查Aegisub的新版本
+#endif
+
UpdatesGroup=Update Checker:
+pt_PT.UpdatesGroup=Verificar Actualizações:
+uk_UA.UpdatesGroup=Модуль Перевірки на Оновлення:
+#ifdef UNOFFICIAL_LANGUAGES
el.UpdatesGroup=Έλεγχος Ενημερώσεων:
eu.UpdatesGroup=Eguneraketa Egiaztatzailea:
id.UpdatesGroup=Pemeriksa Pembaharuan
-pt_PT.UpdatesGroup=Verificar Actualizações:
-uk_UA.UpdatesGroup=Модуль Перевірки на Оновлення:
zh_CN.UpdatesGroup=自动更新:
zh_TW.UpdatesGroup=自動更新:
+#endif
; Replacement for License page, no need to bother the user with legal mumbo-jumbo
[Messages]
WelcomeLabel2=This will install Aegisub {#BUILD_GIT_VERSION_STRING} on your computer.%n%nAegisub is covered by the GNU General Public License version 2. This means you may use the application for any purpose without charge, but that no warranties of any kind are given either.%n%nSee the Aegisub website for information on obtaining the source code.
+pt_PT.WelcomeLabel2=Irá ser instalado no seu computador a versão {#BUILD_GIT_VERSION_STRING} do Aegisub.%n%nO Aegisub está protegido sob a Licença Pública Geral GNU (GPL version 2). O que significa que poderá fazer uso da aplicação para qualquer propósito, sem que seja cobrado, mas não serão dadas quaisquer tipos de garantias.%n%nVeja a página do Aegisub para mais informações sobre como obter o código-fonte.
+uk_UA.WelcomeLabel2=Зараз буде встанвлено Aegisub {#BUILD_GIT_VERSION_STRING} на ваш комп'ютер.%n%nAegisub захищено універсальною громадською ліцензією GNU, версія 2. Це означає, що ви можете використосувати цю програму для будь яких цілей безкоштовно, але, в будь-якому випадку, ми не даємо жодних гарантій.%n%nДивіться сайт Aegisub для інформації щодо отримання вихідного коду.
+#ifdef UNOFFICIAL_LANGUAGES
el.WelcomeLabel2=Αυτό θα εγκαταστήσει το Aegisub {#BUILD_GIT_VERSION_STRING} στον υπολογιστή σας.%n%nΤο Aegisub καλύπτεται από τον άδεια GNU General Public License version 2. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε την εφαρμογή για κάθε σκοπό χωρίς χρέωση, αλλά δεν υπάρχουν εγγυήσεις καμίας φύσης.%n%nΔείτε την ιστοσελίδα του Aegisub για πληροφορίες σχετικά με την απόκτηση του πηγαίου κώδικα.
eu.WelcomeLabel2=Honek Aegisub {#BUILD_GIT_VERSION_STRING} ezarriko du zure ordenagailuan.%n%nAegisub GNU Baimen Publiko Orokorra 2. bertsioa Baimenak estalia dago. Honek esanahi du aplikazio hau edozein asmotarako erabili dezakezula ordaindu behar izan gabe, baina ez da inolako berme motarik ematen.%n%nIkusi Aegisub webgunea iturburu kodea lortzeko argibideetarako.
id.WelcomeLabel2=Ini akan memasang Aegisub {#BUILD_GIT_VERSION_STRING} di komputer Anda.%n%nAegisub dilindungi oleh Lisensi Publik Umum GNU versi 2. Artinya Anda bisa menggunakan aplikasi ini untuk tujuan apa pun tanpad dipungut biaya, tapi tidak ada jaminan yang bisa diberikan.%n%nLihat laman situs Aegisub untuk memperoleh informasi sumber kode.
-pt_PT.WelcomeLabel2=Irá ser instalado no seu computador a versão {#BUILD_GIT_VERSION_STRING} do Aegisub.%n%nO Aegisub está protegido sob a Licença Pública Geral GNU (GPL version 2). O que significa que poderá fazer uso da aplicação para qualquer propósito, sem que seja cobrado, mas não serão dadas quaisquer tipos de garantias.%n%nVeja a página do Aegisub para mais informações sobre como obter o código-fonte.
-uk_UA.WelcomeLabel2=Зараз буде встанвлено Aegisub {#BUILD_GIT_VERSION_STRING} на ваш комп'ютер.%n%nAegisub захищено універсальною громадською ліцензією GNU, версія 2. Це означає, що ви можете використосувати цю програму для будь яких цілей безкоштовно, але, в будь-якому випадку, ми не даємо жодних гарантій.%n%nДивіться сайт Aegisub для інформації щодо отримання вихідного коду.
zh_CN.WelcomeLabel2=将会在您的电脑上安装Aegisub {#BUILD_GIT_VERSION_STRING} 。%n%n Aegisub适用于GNU通用公共许可证第二版(GPLv2),这意味着您可以将该应用程序用于任何目的而不需要支付费用,但同时也不会得到任何形式的担保。%n%n您可以到Aegisub官网获取源代码信息。
zh_TW.WelcomeLabel2=將會在您的電腦上安裝Aegisub {#BUILD_GIT_VERSION_STRING} 。%n%n Aegisub適用於GNU通用公共許可證第二版(GPLv2),這意味著您可以將該應用程式用於任何目的而不需要支付費用,但同時也不會得到任何形式的擔保。%n%n您可以到Aegisub官網獲取原始程式碼資訊。
+#endif
diff --git a/packages/win_installer/fragment_translations.iss b/packages/win_installer/fragment_translations.iss
index 08d6a5ca5..5817470e1 100644
--- a/packages/win_installer/fragment_translations.iss
+++ b/packages/win_installer/fragment_translations.iss
@@ -1,98 +1,71 @@
-; Copyright (c) 2007-2009, Niels Martin Hansen
-;
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-;
-; * Redistributions of source code must retain the above copyright notice,
-; this list of conditions and the following disclaimer.
-; * Redistributions in binary form must reproduce the above copyright notice,
-; this list of conditions and the following disclaimer in the documentation
-; and/or other materials provided with the distribution.
-; * Neither the name of the Aegisub Group nor the names of its contributors
-; may be used to endorse or promote products derived from this software
-; without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;
-; -----------------------------------------------------------------------------
-;
-; AEGISUB
-;
-; Website: http://www.aegisub.org/
-; Contact: mailto:nielsm@indvikleren.dk
-;
-
-
-; This file declares everything related to installable translations of Aegisub
+; This file declares everything related to installable translations of Aegisub
[Files]
-; localization (commented out ones are out of date; some don't have wxstd.mo)
-Source: ..\..\po\ar.mo; DestDir: {app}\locale\ar; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+; Aegisub localization
+#ifdef ENABLE_AEG_TRANSLATIONS
+Source: {#BUILD_ROOT}\po\ar.gmo; DestDir: {app}\locale\ar; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\bg.gmo; DestDir: {app}\locale\bg; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\ca.gmo; DestDir: {app}\locale\ca; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\cs.gmo; DestDir: {app}\locale\cs; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\da.gmo; DestDir: {app}\locale\da; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\de.gmo; DestDir: {app}\locale\de; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\el.gmo; DestDir: {app}\locale\el; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\es.gmo; DestDir: {app}\locale\es; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\eu.gmo; DestDir: {app}\locale\eu; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\fa.gmo; DestDir: {app}\locale\fa; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\fr_FR.gmo; DestDir: {app}\locale\fr_FR; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\gl.gmo; DestDir: {app}\locale\gl; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\hu.gmo; DestDir: {app}\locale\hu; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\id.gmo; DestDir: {app}\locale\id; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\it.gmo; DestDir: {app}\locale\it; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\ja.gmo; DestDir: {app}\locale\ja; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\ko.gmo; DestDir: {app}\locale\ko; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\nl.gmo; DestDir: {app}\locale\nl; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\pl.gmo; DestDir: {app}\locale\pl; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\pt_BR.gmo; DestDir: {app}\locale\pt_BR; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\pt_PT.gmo; DestDir: {app}\locale\pt_PT; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\ru.gmo; DestDir: {app}\locale\ru; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\sr_RS.gmo; DestDir: {app}\locale\sr_RS; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\sr_RS@latin.gmo; DestDir: {app}\locale\sr_RS@latin; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\uk_UA.gmo; DestDir: {app}\locale\uk_UA; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\vi.gmo; DestDir: {app}\locale\vi; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\zh_CN.gmo; DestDir: {app}\locale\zh_CN; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+Source: {#BUILD_ROOT}\po\zh_TW.gmo; DestDir: {app}\locale\zh_TW; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
+#endif
+; END ENABLE_TRANSLATIONS
+
+;; TODO: rm those lines
+;; xref: [Update and review translations · Issue #132 · TypesettingTools/Aegisub](https://github.com/TypesettingTools/Aegisub/issues/132)
+#ifdef ENABLE_WX_TRANSLATIONS
+; wxWidgets localization (commented out ones are out of date; some don't have wxstd.mo)
Source: src\mo\wxstd-ar.mo; DestDir: {app}\locale\ar; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\bg.mo; DestDir: {app}\locale\bg; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
; Missing wxstd for Bulgarian
-Source: ..\..\po\ca.mo; DestDir: {app}\locale\ca; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-ca.mo; DestDir: {app}\locale\ca; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\cs.mo; DestDir: {app}\locale\cs; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-cs.mo; DestDir: {app}\locale\cs; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\da.mo; DestDir: {app}\locale\da; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-da.mo; DestDir: {app}\locale\da; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\de.mo; DestDir: {app}\locale\de; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-de.mo; DestDir: {app}\locale\de; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\el.mo; DestDir: {app}\locale\el; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-el.mo; DestDir: {app}\locale\el; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\es.mo; DestDir: {app}\locale\es; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-es.mo; DestDir: {app}\locale\es; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\eu.mo; DestDir: {app}\locale\eu; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-eu.mo; DestDir: {app}\locale\eu; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\fa.mo; DestDir: {app}\locale\fa; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
; Farsi wxstd missing
;Source: src\mo\wxstd-fa.mo; DestDir: {app}\locale\fa; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\fi.mo; DestDir: {app}\locale\fi; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-fi.mo; DestDir: {app}\locale\fi; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\fr_FR.mo; DestDir: {app}\locale\fr_FR; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-fr.mo; DestDir: {app}\locale\fr_FR; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\gl.mo; DestDir: {app}\locale\gl; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-gl_ES.mo; DestDir: {app}\locale\gl; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\hu.mo; DestDir: {app}\locale\hu; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-hu.mo; DestDir: {app}\locale\hu; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\id.mo; DestDir: {app}\locale\id; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-id.mo; DestDir: {app}\locale\id; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\it.mo; DestDir: {app}\locale\it; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-it.mo; DestDir: {app}\locale\it; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\ja.mo; DestDir: {app}\locale\ja; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-ja.mo; DestDir: {app}\locale\ja; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\ko.mo; DestDir: {app}\locale\ko; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-ko_KR.mo; DestDir: {app}\locale\ko; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\nl.mo; DestDir: {app}\locale\nl; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-nl.mo; DestDir: {app}\locale\nl; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\pl.mo; DestDir: {app}\locale\pl; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-pl.mo; DestDir: {app}\locale\pl; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\pt_BR.mo; DestDir: {app}\locale\pt_BR; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-pt_BR.mo; DestDir: {app}\locale\pt_BR; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\pt_PT.mo; DestDir: {app}\locale\pt_PT; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-pt.mo; DestDir: {app}\locale\pt_PT; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\ru.mo; DestDir: {app}\locale\ru; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-ru.mo; DestDir: {app}\locale\ru; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\sr_RS.mo; DestDir: {app}\locale\sr_RS; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\sr_RS@latin.mo; DestDir: {app}\locale\sr_RS@latin; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
; Missing wxstd for Serbian
-Source: ..\..\po\uk_UA.mo; DestDir: {app}\locale\uk_UA; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-uk_UA.mo; DestDir: {app}\locale\uk_UA; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\vi.mo; DestDir: {app}\locale\vi; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-vi.mo; DestDir: {app}\locale\vi; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\zh_CN.mo; DestDir: {app}\locale\zh_CN; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-zh_CN.mo; DestDir: {app}\locale\zh_CN; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-Source: ..\..\po\zh_TW.mo; DestDir: {app}\locale\zh_TW; DestName: aegisub.mo; Flags: ignoreversion; Components: translations
Source: src\mo\wxstd-zh_TW.mo; DestDir: {app}\locale\zh_TW; DestName: wxstd.mo; Flags: ignoreversion; Components: translations
-
+#endif
+; END ENABLE_WX_TRANSLATIONS
diff --git a/packages/win_installer/license.txt b/packages/win_installer/license.txt
index 732874e53..d78767c5c 100644
--- a/packages/win_installer/license.txt
+++ b/packages/win_installer/license.txt
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2014, the Aegisub Team.
+Copyright (c) 2005-2020, the Aegisub Team.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
diff --git a/packages/win_installer/portable/config.json b/packages/win_installer/portable/config.json
index dfc6ea631..52192d8b6 100644
--- a/packages/win_installer/portable/config.json
+++ b/packages/win_installer/portable/config.json
@@ -1,5 +1,5 @@
{
"App" : {
- "Local Config" : true,
+ "Local Config" : true
}
}
diff --git a/packages/win_installer/portable/create-portable.bat b/packages/win_installer/portable/create-portable.bat
deleted file mode 100644
index 4d42b6c51..000000000
--- a/packages/win_installer/portable/create-portable.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-@echo off
-
-echo Gathering files
-xcopy ..\..\..\automation\autoload\*.lua aegisub-portable\automation\autoload\ > NUL
-xcopy ..\..\..\automation\demos\*.lua aegisub-portable\automation\demos\ > NUL
-xcopy ..\..\..\automation\include\*.lua aegisub-portable\automation\include\ > NUL
-xcopy ..\..\..\bin\aegisub64.exe aegisub-portable\ > NUL
-xcopy ..\..\..\bin\ffms2_64.dll aegisub-portable\ > NUL
-xcopy ..\src\ASSDraw3.chm aegisub-portable\ > NUL
-xcopy ..\src\ASSDraw3.exe aegisub-portable\ > NUL
-xcopy ..\src\dictionaries\en_US.aff aegisub-portable\dictionaries\ > NUL
-xcopy ..\src\dictionaries\en_US.dic aegisub-portable\dictionaries\ > NUL
-xcopy ..\src\vsfilter-aegisub64.dll aegisub-portable\csri\ > NUL
-xcopy ..\src\x64\Microsoft.VC90.CRT\* aegisub-portable\Microsoft.VC90.CRT\ > NUL
-xcopy config.json aegisub-portable\ > NUL
-
-echo Creating SFX
-del ..\output\aegisub-3.1.0-portable-64.exe
-WinRAR a -sfx -s -m5 -ep1 -r -zportable-comment.txt -iimgside-logo.bmp -iiconicon.ico ..\output\aegisub-3.1.0-portable-64.exe aegisub-portable\
-
-echo Removing temp dir
-rmdir /S /Q aegisub-portable > NUL
diff --git a/packages/win_installer/portable/create-portable.ps1 b/packages/win_installer/portable/create-portable.ps1
new file mode 100644
index 000000000..0b121254f
--- /dev/null
+++ b/packages/win_installer/portable/create-portable.ps1
@@ -0,0 +1,86 @@
+#!/usr/bin/env powershell
+
+param (
+ [Parameter(Position = 0)]
+ [string]$BuildRoot,
+ [Parameter(Position = 1)]
+ [string]$SourceRoot
+)
+
+function Copy-New-Item {
+ $SourceFilePath = $args[0]
+ $DestinationFilePath = $args[1]
+
+ If (-not (Test-Path $DestinationFilePath)) {
+ New-Item -ItemType Directory -Path $DestinationFilePath -Force
+ }
+ Copy-Item -Path $SourceFilePath -Destination $DestinationFilePath
+}
+
+function Copy-New-Items {
+ $SourceFilePath = $args[0]
+ $DestinationFilePath = $args[1]
+
+ If (-not (Test-Path $DestinationFilePath)) {
+ New-Item -ItemType Directory -Path $DestinationFilePath -Force
+ }
+ Copy-Item -Path $SourceFilePath -Destination $DestinationFilePath -Recurse
+}
+
+
+Write-Output BUILD_ROOT=$BuildRoot
+Write-Output SOURCE_ROOT=$SourceRoot
+$InstallerDir = Join-Path $BuildRoot "install"
+$InstallerDepsDir = Join-Path $BuildRoot "installer-deps"
+$PortableOutputDir = Join-Path $BuildRoot "aegisub-portable"
+
+
+Write-Output Goto building dir
+Set-Location $BuildRoot
+
+
+Write-Output 'Removing old temp dir'
+Remove-Item -LiteralPath "$PortableOutputDir" -Force -Recurse
+Remove-Item -LiteralPath "install" -Force -Recurse
+
+
+Write-Output 'Make install'
+meson install --no-rebuild --destdir $InstallerDir
+Write-Output 'Gathering files'
+Copy-New-Item $InstallerDir\bin\aegisub.exe $PortableOutputDir
+
+Write-Output 'Copying - translations'
+Copy-New-Items "$InstallerDir\share\locale\*" "$PortableOutputDir\locale" -Recurse
+Write-Output 'Copying - codecs'
+Write-Output 'Copying - codecs\Avisynth'
+Copy-New-Item $InstallerDepsDir\AvisynthPlus64\x86-64\DevIL.dll $PortableOutputDir
+Copy-New-Item $InstallerDepsDir\AvisynthPlus64\x86-64\AviSynth.dll $PortableOutputDir
+Copy-New-Item $InstallerDepsDir\AvisynthPlus64\x86-64\plugins\DirectShowSource.dll $PortableOutputDir
+Write-Output 'Copying - codecs\VSFilter'
+Copy-New-Item $InstallerDepsDir\VSFilter\x64\VSFilter.dll $PortableOutputDir\csri
+Write-Output 'Copying - runtimes\MS-CRT'
+Copy-New-Item $InstallerDepsDir\VC_redist\VC_redist.x64.exe $PortableOutputDir\Microsoft.CRT
+
+Write-Output 'Copying - automation'
+Copy-New-Items "$InstallerDir\share\aegisub\automation\*" "$PortableOutputDir\automation\" -Recurse
+Write-Output 'Copying - automation\DEPCTRL'
+Copy-New-Items "$InstallerDepsDir\DependencyControl\modules\*" "$PortableOutputDir\automation\include\l0\" -Recurse
+Copy-New-Items "$InstallerDepsDir\DependencyControl\macros\*" "$PortableOutputDir\automation\autoload\" -Recurse
+Copy-New-Item $InstallerDepsDir\Yutils\src\Yutils.lua $PortableOutputDir\automation\include
+Copy-New-Items "$InstallerDepsDir\luajson\lua\*" "$PortableOutputDir\automation\include\" -Recurse
+
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\requireffi\requireffi.lua $PortableOutputDir\automation\include\requireffi
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\bad-mutex\BadMutex.dll $PortableOutputDir\automation\include\BM\BadMutex
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\bad-mutex\BadMutex.lua $PortableOutputDir\automation\include\BM
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\precise-timer\PreciseTimer.dll $PortableOutputDir\automation\include\PT\PreciseTimer
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\precise-timer\PreciseTimer.lua $PortableOutputDir\automation\include\PT
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\download-manager\DownloadManager.dll $PortableOutputDir\automation\include\DM\DownloadManager
+Copy-New-Item $InstallerDepsDir\ffi-experiments\build\download-manager\DownloadManager.lua $PortableOutputDir\automation\include\DM
+
+Write-Output 'Copying - portable-config'
+Copy-New-Item $SourceRoot\packages\win_installer\portable\config.json $PortableOutputDir
+
+
+Write-Output 'Creating portable zip'
+Remove-Item aegisub-portable-64.zip
+7z a aegisub-portable-64.zip aegisub-portable\
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 000000000..7f49d7af9
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,29 @@
+ar
+bg
+ca
+cs
+da
+de
+el
+es
+eu
+fa
+fi
+fr_FR
+gl
+hu
+id
+it
+ja
+ko
+nl
+pl
+pt_BR
+pt_PT
+ru
+sr_RS@latin
+sr_RS
+uk_UA
+vi
+zh_CN
+zh_TW
diff --git a/po/Makefile b/po/Makefile
deleted file mode 100644
index 4c7832b6a..000000000
--- a/po/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-include $(dir $(lastword $(MAKEFILE_LIST)))../header.mk
-
-.SUFFIXES: .po .mo
-
-PO := $(wildcard $(d)*.po)
-MO := $(PO:po=mo)
-
-ifeq (yes, $(BUILD_DARWIN))
-MO_INSTALLED = $(DESTDIR)$(P_LOCALE)/%.lproj/$(AEGISUB_CATALOG).mo
-else
-MO_INSTALLED = $(DESTDIR)$(P_LOCALE)/%/LC_MESSAGES/$(AEGISUB_CATALOG).mo
-endif
-
-%.mo: %.po
- $(BIN_MSGFMT) -o $@ $<
-
-$(MO_INSTALLED): $(d)%.mo ; $(MKDIR_INSTALL)
-
-all: $(MO)
-install: $(patsubst %.mo, $(MO_INSTALLED), $(notdir $(MO)))
-
-CLEANFILES += $(MO)
-
-include $(TOP)Makefile.target
diff --git a/po/POTFILES b/po/POTFILES
new file mode 100644
index 000000000..233f76faf
--- /dev/null
+++ b/po/POTFILES
@@ -0,0 +1,81 @@
+src/ass_style.cpp
+src/audio_box.cpp
+src/audio_karaoke.cpp
+src/audio_renderer_waveform.cpp
+src/audio_timing_dialogue.cpp
+src/audio_timing_karaoke.cpp
+src/auto4_base.cpp
+src/auto4_lua.cpp
+src/charset_detect.cpp
+src/command/app.cpp
+src/command/audio.cpp
+src/command/automation.cpp
+src/command/command.cpp
+src/command/command.h
+src/command/edit.cpp
+src/command/grid.cpp
+src/command/keyframe.cpp
+src/command/recent.cpp
+src/command/subtitle.cpp
+src/command/timecode.cpp
+src/command/time.cpp
+src/command/tool.cpp
+src/command/video.cpp
+src/dialog_about.cpp
+src/dialog_attachments.cpp
+src/dialog_automation.cpp
+src/dialog_autosave.cpp
+src/dialog_colorpicker.cpp
+src/dialog_dummy_video.cpp
+src/dialog_export.cpp
+src/dialog_export_ebu3264.cpp
+src/dialog_fonts_collector.cpp
+src/dialog_jumpto.cpp
+src/dialog_kara_timing_copy.cpp
+src/dialog_log.cpp
+src/dialog_paste_over.cpp
+src/dialog_progress.cpp
+src/dialog_properties.cpp
+src/dialog_resample.cpp
+src/dialog_search_replace.cpp
+src/dialog_selected_choices.cpp
+src/dialog_selection.cpp
+src/dialog_shift_times.cpp
+src/dialog_spellchecker.cpp
+src/dialog_style_editor.cpp
+src/dialog_style_manager.cpp
+src/dialog_styling_assistant.cpp
+src/dialog_text_import.cpp
+src/dialog_timing_processor.cpp
+src/dialog_translation.cpp
+src/dialog_version_check.cpp
+src/dialog_video_details.cpp
+src/dialog_video_properties.cpp
+src/export_fixstyle.cpp
+src/export_framerate.cpp
+src/ffmpegsource_common.cpp
+src/font_file_lister.cpp
+src/font_file_lister_fontconfig.cpp
+src/font_file_lister_gdi.cpp
+src/grid_column.cpp
+src/hotkey.cpp
+src/main.cpp
+src/menu.cpp
+src/mkv_wrap.cpp
+src/preferences_base.cpp
+src/preferences.cpp
+src/project.cpp
+src/resolution_resampler.cpp
+src/search_replace_engine.cpp
+src/subs_controller.cpp
+src/subs_edit_box.cpp
+src/subs_edit_ctrl.cpp
+src/subtitle_format.cpp
+src/subtitle_format_ebu3264.cpp
+src/subtitles_provider_libass.cpp
+src/timeedit_ctrl.cpp
+src/video_box.cpp
+src/visual_tool.cpp
+src/visual_tool_cross.cpp
+src/visual_tool_drag.cpp
+src/visual_tool_vector_clip.cpp
diff --git a/po/be.po b/po/be.po
new file mode 100644
index 000000000..dfb04414a
--- /dev/null
+++ b/po/be.po
@@ -0,0 +1,6468 @@
+# Aegisub 3.2
+# Copyright (C) 2005-2014 Rodrigo Braz Monteiro, Niels Martin Hansen, Thomas Goyne et. al.
+# This file is distributed under the same license as the Aegisub package.
+# Niels Martin Hansen , 2005-2014.
+#
+# Translators:
+# Translators:
+# Yakauleu Uladzislau , 2019
+# Viktar Lieškievič , 2019
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Aegisub (unofficial)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-07-01 10:53-0700\n"
+"PO-Revision-Date: 2018-09-26 07:39+0000\n"
+"Last-Translator: Viktar Lieškievič , 2019\n"
+"Language-Team: Belarusian (https://www.transifex.com/byplay/teams/91944/be/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: be\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#: ../src/dialog_shift_times.cpp:92
+msgid "unsaved"
+msgstr "незахаваны"
+
+#: ../src/dialog_shift_times.cpp:96
+#, c-format
+msgid "%s frames"
+msgstr "%s кадраў"
+
+#: ../src/dialog_shift_times.cpp:98
+msgid "backward"
+msgstr "назад"
+
+#: ../src/dialog_shift_times.cpp:98
+msgid "forward"
+msgstr "наперад"
+
+#: ../src/dialog_shift_times.cpp:102
+msgid "s+e"
+msgstr "н+к"
+
+#: ../src/dialog_shift_times.cpp:103
+msgid "s"
+msgstr "н"
+
+#: ../src/dialog_shift_times.cpp:104
+msgid "e"
+msgstr "к"
+
+#: ../src/dialog_shift_times.cpp:111
+msgid "all"
+msgstr "усе"
+
+#: ../src/dialog_shift_times.cpp:113
+#, c-format
+msgid "from %d onward"
+msgstr "ад %d і далей"
+
+#: ../src/dialog_shift_times.cpp:115
+msgid "sel "
+msgstr "выб. "
+
+#: ../src/dialog_shift_times.cpp:133 ../src/command/time.cpp:153
+msgid "Shift Times"
+msgstr "Часавы зрух"
+
+#: ../src/dialog_shift_times.cpp:142
+msgid "&Time: "
+msgstr "&Час:"
+
+#: ../src/dialog_shift_times.cpp:143
+msgid "Shift by time"
+msgstr "Зрух па часу"
+
+#: ../src/dialog_shift_times.cpp:146
+msgid "&Frames: "
+msgstr "&Кадры:"
+
+#: ../src/dialog_shift_times.cpp:147
+msgid "Shift by frames"
+msgstr "Зрух па кадрах"
+
+#: ../src/dialog_shift_times.cpp:151
+msgid "Enter time in h:mm:ss.cs notation"
+msgstr "Увядзіце час у фармаце г:хх:сс.сс"
+
+#: ../src/dialog_shift_times.cpp:154
+msgid "Enter number of frames to shift by"
+msgstr "Увядзіце колькасць кадраў на зрух"
+
+#: ../src/dialog_shift_times.cpp:156
+msgid "For&ward"
+msgstr "На&перад"
+
+#: ../src/dialog_shift_times.cpp:157
+msgid ""
+"Shifts subs forward, making them appear later. Use if they are appearing too"
+" soon."
+msgstr ""
+"Зрух субтытраў наперад. Выкарыстоўвайце, калі яны паяўляюцца надта рана. "
+
+#: ../src/dialog_shift_times.cpp:159
+msgid "&Backward"
+msgstr "&Назад"
+
+#: ../src/dialog_shift_times.cpp:160
+msgid ""
+"Shifts subs backward, making them appear earlier. Use if they are appearing "
+"too late."
+msgstr ""
+"Зрух субтытраў назад. Выкарыстоўвайце, калі яны паяўляюцца надта позна. "
+
+#: ../src/dialog_shift_times.cpp:162
+msgid "&All rows"
+msgstr "&Усё радкі"
+
+#: ../src/dialog_shift_times.cpp:162 ../src/dialog_search_replace.cpp:88
+msgid "Selected &rows"
+msgstr "Вылучаныя &радкі"
+
+#: ../src/dialog_shift_times.cpp:162
+msgid "Selection &onward"
+msgstr "Вылучанае і &далей"
+
+#: ../src/dialog_shift_times.cpp:163
+msgid "Affect"
+msgstr "Задзейнічаць"
+
+#: ../src/dialog_shift_times.cpp:165
+msgid "Start a&nd End times"
+msgstr "Пачатковы &і канчатковы час"
+
+#: ../src/dialog_shift_times.cpp:165
+msgid "&Start times only"
+msgstr "Толькі &пачатковы час"
+
+#: ../src/dialog_shift_times.cpp:165
+msgid "&End times only"
+msgstr "Толькі &канчатковы час"
+
+#: ../src/dialog_shift_times.cpp:166
+msgid "Times"
+msgstr "Час"
+
+#: ../src/dialog_shift_times.cpp:170
+msgid "&Clear"
+msgstr "&Ачысціць"
+
+#: ../src/dialog_shift_times.cpp:201
+msgid "Shift by"
+msgstr "Зрух на"
+
+#: ../src/dialog_shift_times.cpp:210
+msgid "Load from history"
+msgstr "Загрузка з гісторыі"
+
+#: ../src/dialog_shift_times.cpp:405
+msgid "shifting"
+msgstr "зрух"
+
+#: ../src/export_fixstyle.cpp:46
+msgid "Fix Styles"
+msgstr "Карэкцыя стыляў"
+
+#: ../src/export_fixstyle.cpp:46
+msgid ""
+"Fixes styles by replacing any style that isn't available on file with "
+"Default."
+msgstr "Карэктуе стылі, замяняя недаступныя стылі ў файле на Default. "
+
+#: ../src/audio_karaoke.cpp:72
+msgid "Discard all uncommitted splits"
+msgstr "Выдаліць усе незахаваныя прамежкі"
+
+#: ../src/audio_karaoke.cpp:76
+msgid "Commit splits"
+msgstr "Захаваць прамежкі"
+
+#: ../src/audio_karaoke.cpp:239
+msgid "Karaoke tag"
+msgstr "Караоке тэг"
+
+#: ../src/audio_karaoke.cpp:242
+msgid "Change karaoke tag to \\k"
+msgstr "Змяніць тэг караоке на \\k"
+
+#: ../src/audio_karaoke.cpp:243
+msgid "Change karaoke tag to \\kf"
+msgstr "Змяніць тэг караоке на \\kf"
+
+#: ../src/audio_karaoke.cpp:244
+msgid "Change karaoke tag to \\ko"
+msgstr "Змяніць тэг караоке на \\ko"
+
+#: ../src/audio_karaoke.cpp:418
+msgid "karaoke split"
+msgstr "караоке прамежкі"
+
+#: ../src/timeedit_ctrl.cpp:208 ../src/dialog_style_manager.cpp:204
+#: ../src/subs_edit_ctrl.cpp:366
+msgid "&Copy"
+msgstr "&Капіяваць"
+
+#: ../src/timeedit_ctrl.cpp:209 ../src/subs_edit_ctrl.cpp:367
+msgid "&Paste"
+msgstr "У&ставіць"
+
+#: ../src/auto4_base.cpp:460
+#, c-format
+msgid ""
+"Failed to load Automation script '%s':\n"
+"%s"
+msgstr ""
+"Не атрымалася загрузіць скрыпт аўтаматызацыі '%s':\n"
+"%s"
+
+#: ../src/auto4_base.cpp:467
+#, c-format
+msgid "The file was not recognised as an Automation script: %s"
+msgstr "Файл не вызначаны як скрыпт аўтаматызацыі: %s"
+
+#: ../src/auto4_base.cpp:496 ../src/command/timecode.cpp:74
+#: ../src/command/timecode.cpp:94 ../src/command/video.cpp:568
+#: ../src/command/audio.cpp:84 ../src/command/keyframe.cpp:74
+msgid "All Files"
+msgstr "Усе файлы"
+
+#: ../src/auto4_base.cpp:502 ../src/command/timecode.cpp:74
+#: ../src/command/timecode.cpp:94 ../src/command/keyframe.cpp:74
+#: ../src/subtitle_format.cpp:312
+msgid "All Supported Formats"
+msgstr "Усе фарматы, якія падтрымліваюцца"
+
+#: ../src/auto4_base.cpp:508
+msgid "File was not recognized as a script"
+msgstr "Файл не распазнаны як скрыпт"
+
+#: ../src/search_replace_engine.cpp:247 ../src/search_replace_engine.cpp:331
+msgid "replace"
+msgstr "замяніць"
+
+#: ../src/search_replace_engine.cpp:332
+#, c-format
+msgid "One match was replaced."
+msgid_plural "%d matches were replaced."
+msgstr[0] "Адно супадзенне заменена."
+msgstr[1] "%dсупадзенні заменена."
+msgstr[2] "%dсупадзенняў заменена."
+msgstr[3] "%d супадзенняў заменена."
+
+#: ../src/search_replace_engine.cpp:335
+msgid "No matches found."
+msgstr "Супадзенні не знойдзены."
+
+#: ../src/visual_tool_drag.cpp:56
+msgid "Toggle between \\move and \\pos"
+msgstr "Пераключэнне між \\move і \\pos"
+
+#: ../src/visual_tool_drag.cpp:326 ../src/visual_tool_cross.cpp:62
+msgid "positioning"
+msgstr "размяшчэнне"
+
+#: ../src/font_file_lister_fontconfig.cpp:80
+msgid "Updating font cache\n"
+msgstr "Абнаўленне кэшу шрыфтоў\n"
+
+#: ../src/subtitle_format_ebu3264.cpp:408
+#, c-format
+msgid "Line over maximum length: %s"
+msgstr "Радок перавышае максімальную даўжыню: %s"
+
+#: ../src/dialog_video_details.cpp:44
+msgid "Video Details"
+msgstr "Звесткі пра відэа"
+
+#: ../src/dialog_video_details.cpp:58
+msgid "File name:"
+msgstr "Імя файла:"
+
+#: ../src/dialog_video_details.cpp:59
+msgid "FPS:"
+msgstr "Кадр/сек:"
+
+#: ../src/dialog_video_details.cpp:60
+msgid "Resolution:"
+msgstr "Разрозненне:"
+
+#: ../src/dialog_video_details.cpp:61
+msgid "Length:"
+msgstr "Працягласць:"
+
+#: ../src/dialog_video_details.cpp:61
+#, c-format
+msgid "1 frame"
+msgid_plural "%d frames (%s)"
+msgstr[0] "1 кадр"
+msgstr[1] "%d кадры (%s)"
+msgstr[2] "%d кадраў (%s)"
+msgstr[3] "%d кадраў (%s)"
+
+#: ../src/dialog_video_details.cpp:63
+msgid "Decoder:"
+msgstr "Дэкодар:"
+
+#: ../src/dialog_video_details.cpp:65 ../src/preferences.cpp:165
+#: ../src/preferences.cpp:417
+msgid "Video"
+msgstr "Відэа"
+
+#: ../src/dialog_timing_processor.cpp:139 ../src/command/tool.cpp:189
+msgid "Timing Post-Processor"
+msgstr "Пост-апрацоўка таймінгу"
+
+#: ../src/dialog_timing_processor.cpp:157
+msgid "Apply to styles"
+msgstr "Дастасаваць да стыляў"
+
+#: ../src/dialog_timing_processor.cpp:159
+msgid "Select styles to process. Unchecked ones will be ignored."
+msgstr "Выбраць стылі для апрацоўкі. Непазначаныя ігнаруюцца. "
+
+#: ../src/dialog_timing_processor.cpp:161 ../src/dialog_paste_over.cpp:88
+msgid "&All"
+msgstr "&Усе"
+
+#: ../src/dialog_timing_processor.cpp:162
+msgid "Select all styles"
+msgstr "Выбраць усе стылі"
+
+#: ../src/dialog_timing_processor.cpp:164 ../src/dialog_paste_over.cpp:90
+msgid "&None"
+msgstr "&Ніводны"
+
+#: ../src/dialog_timing_processor.cpp:165
+msgid "Deselect all styles"
+msgstr "Скасаваць выбраныя стылі"
+
+#: ../src/dialog_timing_processor.cpp:168 ../src/command/app.cpp:207
+#: ../src/dialog_properties.cpp:138 ../src/preferences.cpp:127
+#: ../src/preferences.cpp:167
+msgid "Options"
+msgstr "Параметры"
+
+#: ../src/dialog_timing_processor.cpp:169
+msgid "Affect &selection only"
+msgstr "Дастасаваць &толькі да вылучаных радкоў"
+
+#: ../src/dialog_timing_processor.cpp:174
+msgid "Lead-in/Lead-out"
+msgstr "Уступ/Канчатак"
+
+#: ../src/dialog_timing_processor.cpp:176
+msgid "Add lead &in:"
+msgstr "Дадаць &уступ:"
+
+#: ../src/dialog_timing_processor.cpp:178
+msgid "Enable adding of lead-ins to lines"
+msgstr "Уключыць дадаванне ўступа да радкоў"
+
+#: ../src/dialog_timing_processor.cpp:179
+msgid "Lead in to be added, in milliseconds"
+msgstr "Уступ у мілісекундах"
+
+#: ../src/dialog_timing_processor.cpp:181
+msgid "Add lead &out:"
+msgstr "Дадаць &канчатак:"
+
+#: ../src/dialog_timing_processor.cpp:183
+msgid "Enable adding of lead-outs to lines"
+msgstr "Уключыць дадаванне канчатка да радкоў"
+
+#: ../src/dialog_timing_processor.cpp:184
+msgid "Lead out to be added, in milliseconds"
+msgstr "Канчатак у мілісекундах"
+
+#: ../src/dialog_timing_processor.cpp:189
+msgid "Make adjacent subtitles continuous"
+msgstr "Зрабіць прылеглыя субтытры бесперапынымі"
+
+#: ../src/dialog_timing_processor.cpp:190
+msgid "&Enable"
+msgstr "&Уключыць"
+
+#: ../src/dialog_timing_processor.cpp:192
+msgid ""
+"Enable snapping of subtitles together if they are within a certain distance "
+"of each other"
+msgstr ""
+"Уключыць прывязванне субтытраў адзін да аднаго, калі яны ў межах пэўнай "
+"адлегласці."
+
+#: ../src/dialog_timing_processor.cpp:195
+msgid "Max gap:"
+msgstr "Максімальны прамежак:"
+
+#: ../src/dialog_timing_processor.cpp:196
+msgid ""
+"Maximum difference between start and end time for two subtitles to be made "
+"continuous, in milliseconds"
+msgstr ""
+"Максімальная розніца паміж пачаткам і канцом двух субтытраў, якія будуць "
+"ісці бесперапынна, у мілісекундах"
+
+#: ../src/dialog_timing_processor.cpp:197
+msgid "Max overlap:"
+msgstr "Максімальнае накладанне:"
+
+#: ../src/dialog_timing_processor.cpp:198
+msgid ""
+"Maximum overlap between the end and start time for two subtitles to be made "
+"continuous, in milliseconds"
+msgstr ""
+"Максімальнае накладанне паміж канцом і пачаткам двух субтытраў, якія будуць "
+"ісці бесперапынна, у мілісекундах"
+
+#: ../src/dialog_timing_processor.cpp:201
+msgid ""
+"Sets how to set the adjoining of lines. If set totally to left, it will "
+"extend or shrink start time of the second line; if totally to right, it will"
+" extend or shrink the end time of the first line."
+msgstr ""
+"Задае пазіцыю паміж двух радкоў, да якіх будуць зададзены канец папярэдняга "
+"і пачатак наступнага. Крайняя левая пазіцыя азначае, што будзе зададзены "
+"толькі пачатак толькі пачатак другога радка, крайняя правая — толькі канец "
+"першага."
+
+#: ../src/dialog_timing_processor.cpp:204
+msgid "Bias: Start <- "
+msgstr "Зрушэнне: Пач <- "
+
+#: ../src/dialog_timing_processor.cpp:206
+msgid " -> End"
+msgstr " -> Кан"
+
+#: ../src/dialog_timing_processor.cpp:214
+msgid "Keyframe snapping"
+msgstr "Прывязванне да ключкадраў"
+
+#: ../src/dialog_timing_processor.cpp:217
+msgid "E&nable"
+msgstr "У&ключыць"
+
+#: ../src/dialog_timing_processor.cpp:218
+msgid ""
+"Enable snapping of subtitles to nearest keyframe, if distance is within "
+"threshold"
+msgstr ""
+"Уключыць прывязванне субтытраў да бліжэйшага ключкадра, калі адлегасць менш "
+"за парогаваю"
+
+#: ../src/dialog_timing_processor.cpp:229
+msgid "Starts before thres.:"
+msgstr "Парог да пачатку:"
+
+#: ../src/dialog_timing_processor.cpp:230
+msgid ""
+"Threshold for 'before start' distance, that is, how many milliseconds a "
+"subtitle must start before a keyframe to snap to it"
+msgstr ""
+"Парогавая колькасць кадраў паміж пачаткам субтытра і найбліжэйшым ключкадрам"
+" злева, пры якім час пачатку субтытра будзе ссунуты да гэтага ключкадра."
+
+#: ../src/dialog_timing_processor.cpp:232
+msgid "Starts after thres.:"
+msgstr "Парог пасля пачатку:"
+
+#: ../src/dialog_timing_processor.cpp:233
+msgid ""
+"Threshold for 'after start' distance, that is, how many milliseconds a "
+"subtitle must start after a keyframe to snap to it"
+msgstr ""
+"Парогавая колькасць кадраў паміж пачаткам субтытра і найбліжэйшым ключкадрам"
+" справа, пры якім час пачатку субтытра будзе ссунуты да гэтага ключкадра."
+
+#: ../src/dialog_timing_processor.cpp:237
+msgid "Ends before thres.:"
+msgstr "Парог да канца:"
+
+#: ../src/dialog_timing_processor.cpp:238
+msgid ""
+"Threshold for 'before end' distance, that is, how many milliseconds a "
+"subtitle must end before a keyframe to snap to it"
+msgstr ""
+"Парогавая колькасць кадраў паміж канцом субтытра і найбліжэйшым ключкадрам "
+"справа, пры якім час канца субтытра будзе ссунуты да гэтага ключкадра"
+
+#: ../src/dialog_timing_processor.cpp:240
+msgid "Ends after thres.:"
+msgstr "Парог пасля канца:"
+
+#: ../src/dialog_timing_processor.cpp:241
+msgid ""
+"Threshold for 'after end' distance, that is, how many milliseconds a "
+"subtitle must end after a keyframe to snap to it"
+msgstr ""
+"Парогавая колькасць кадраў паміж канцом субтытра і найбліжэйшым ключкадрам "
+"злева, пры якім час канца субтытра будзе ссунуты да гэтага ключкадра"
+
+#: ../src/dialog_timing_processor.cpp:349
+#, c-format
+msgid "One of the lines in the file (%i) has negative duration. Aborting."
+msgstr "Адзін з радкоў у файле (%i) мае адмоўную працягласць. Перапыненне."
+
+#: ../src/dialog_timing_processor.cpp:350
+msgid "Invalid script"
+msgstr "Недапушчальны скрыпт"
+
+#: ../src/dialog_timing_processor.cpp:445
+msgid "timing processor"
+msgstr "пост-апрацоўку таймінгу"
+
+#: ../src/mkv_wrap.cpp:213
+msgid "Choose which track to read:"
+msgstr "Абярыце які трэк чытаць:"
+
+#: ../src/mkv_wrap.cpp:213
+msgid "Multiple subtitle tracks found"
+msgstr "Выяўлена некалькі трэкаў"
+
+#: ../src/mkv_wrap.cpp:251
+msgid "Parsing Matroska"
+msgstr "Аналіз Matroska"
+
+#: ../src/mkv_wrap.cpp:251
+msgid "Reading subtitles from Matroska file."
+msgstr "Счытванне субтытраў з файла Matroska. "
+
+#: ../src/dialog_styling_assistant.cpp:55 ../src/command/tool.cpp:123
+msgid "Styling Assistant"
+msgstr "Памочнік стыляў"
+
+#: ../src/dialog_styling_assistant.cpp:65
+#: ../src/dialog_styling_assistant.cpp:66
+msgid "Current line"
+msgstr "Бягучы радок"
+
+#: ../src/dialog_styling_assistant.cpp:72
+msgid "Styles available"
+msgstr "Даступныя стылі"
+
+#: ../src/dialog_styling_assistant.cpp:80
+msgid "Set style"
+msgstr "Задаць"
+
+#: ../src/dialog_styling_assistant.cpp:87 ../src/dialog_translation.cpp:108
+msgid "Keys"
+msgstr "Клавішы"
+
+#: ../src/dialog_styling_assistant.cpp:90 ../src/command/tool.cpp:142
+#: ../src/command/tool.cpp:226 ../src/dialog_translation.cpp:111
+msgid "Accept changes"
+msgstr "Ужыць змены"
+
+#: ../src/dialog_styling_assistant.cpp:91 ../src/command/tool.cpp:153
+#: ../src/command/tool.cpp:237 ../src/dialog_translation.cpp:112
+msgid "Preview changes"
+msgstr "Перадпрагляд змен"
+
+#: ../src/dialog_styling_assistant.cpp:92 ../src/dialog_translation.cpp:113
+msgid "Previous line"
+msgstr "Папярэдні радок"
+
+#: ../src/dialog_styling_assistant.cpp:93 ../src/dialog_translation.cpp:114
+msgid "Next line"
+msgstr "Наступны радок"
+
+#: ../src/dialog_styling_assistant.cpp:94 ../src/dialog_translation.cpp:116
+msgid "Play video"
+msgstr "Прайграць відэа"
+
+#: ../src/dialog_styling_assistant.cpp:95 ../src/dialog_translation.cpp:117
+msgid "Play audio"
+msgstr "Прайграць аўдыя"
+
+#: ../src/dialog_styling_assistant.cpp:96
+msgid "Click on list"
+msgstr "Клік на спіс"
+
+#: ../src/dialog_styling_assistant.cpp:97
+msgid "Select style"
+msgstr "Выбраць стыль"
+
+#: ../src/dialog_styling_assistant.cpp:101
+msgid "&Seek video to line start time"
+msgstr "&Перамотваць відэа да пачатку радка"
+
+#: ../src/dialog_styling_assistant.cpp:110 ../src/dialog_translation.cpp:129
+msgid "Actions"
+msgstr "Дзеянні"
+
+#: ../src/dialog_styling_assistant.cpp:113 ../src/dialog_translation.cpp:131
+msgid "Play &Audio"
+msgstr "Прайграць &аўдыя"
+
+#: ../src/dialog_styling_assistant.cpp:117 ../src/dialog_translation.cpp:136
+msgid "Play &Video"
+msgstr "Прайграць &відэа"
+
+#: ../src/dialog_styling_assistant.cpp:175
+msgid "styling assistant"
+msgstr "памочнік стыляў"
+
+#: ../src/audio_timing_karaoke.cpp:241
+msgid "karaoke timing"
+msgstr "таймінг караоке"
+
+#: ../src/dialog_jumpto.cpp:66 ../src/command/video.cpp:523
+msgid "Jump to"
+msgstr "Перайсці да"
+
+#: ../src/dialog_jumpto.cpp:72
+msgid "Frame: "
+msgstr "Кадр:"
+
+#: ../src/dialog_jumpto.cpp:73
+msgid "Time: "
+msgstr "Час:"
+
+#: ../src/dialog_style_manager.cpp:188
+msgid "Move style up"
+msgstr "Перамясціць стыль вышэй"
+
+#: ../src/dialog_style_manager.cpp:189
+msgid "Move style down"
+msgstr "Перамясціць стыль ніжэй"
+
+#: ../src/dialog_style_manager.cpp:190
+msgid "Move style to top"
+msgstr "Перамясціць стыль да верху"
+
+#: ../src/dialog_style_manager.cpp:191
+msgid "Move style to bottom"
+msgstr "Перамясціць стыль да нізу"
+
+#: ../src/dialog_style_manager.cpp:192
+msgid "Sort styles alphabetically"
+msgstr "Сартаваць стылі па алфавіту"
+
+#: ../src/dialog_style_manager.cpp:202 ../src/preferences.cpp:578
+msgid "&New"
+msgstr "&Новы"
+
+#: ../src/dialog_style_manager.cpp:203 ../src/preferences.cpp:579
+msgid "&Edit"
+msgstr "&Праўка"
+
+#: ../src/dialog_style_manager.cpp:205 ../src/preferences.cpp:580
+#: ../src/dialog_attachments.cpp:79
+msgid "&Delete"
+msgstr "&Выдаліць"
+
+#: ../src/dialog_style_manager.cpp:218
+#, c-format
+msgid "%s - Copy"
+msgstr "%s - Капіяваць"
+
+#: ../src/dialog_style_manager.cpp:220
+#, c-format
+msgid "%s - Copy (%d)"
+msgstr "%s - Капіяваць (%d)"
+
+#: ../src/dialog_style_manager.cpp:243
+msgid "Could not parse style"
+msgstr "Немагчыма прачытаць стыль"
+
+#: ../src/dialog_style_manager.cpp:248
+#, c-format
+msgid "Are you sure you want to delete this style?"
+msgid_plural "Are you sure you want to delete these %d styles?"
+msgstr[0] "Вы ўпэўнены, што хочаце выдаліць гэты стыль?"
+msgstr[1] "Вы ўпэўнены, што хочаце выдаліць гэтыя %d стылі?"
+msgstr[2] "Вы ўпэўнены, што хочаце выдаліць гэтыя %d стыляў?"
+msgstr[3] "Вы ўпэўнены, што хочаце выдаліць гэтыя %d стыляў?"
+
+#: ../src/dialog_style_manager.cpp:259 ../src/command/tool.cpp:165
+msgid "Styles Manager"
+msgstr "Менеджар стыляў"
+
+#: ../src/dialog_style_manager.cpp:273
+msgid "Catalog of available storages"
+msgstr "Каталог даступных сховішчаў"
+
+#: ../src/dialog_style_manager.cpp:275
+msgid "New"
+msgstr "Стварыць"
+
+#: ../src/dialog_style_manager.cpp:276
+msgid "Delete"
+msgstr "Выдаліць"
+
+#: ../src/dialog_style_manager.cpp:282
+msgid "Copy to ¤t script ->"
+msgstr "Капіяваць у &бягучы скрыпт субтытраў ->"
+
+#: ../src/dialog_style_manager.cpp:289
+msgid "Storage"
+msgstr "Сховішча"
+
+#: ../src/dialog_style_manager.cpp:295
+msgid "&Import from script..."
+msgstr "&Імпарт са скрыпта..."
+
+#: ../src/dialog_style_manager.cpp:296
+msgid "<- Copy to &storage"
+msgstr "<- Капіяваць у &сховішча"
+
+#: ../src/dialog_style_manager.cpp:307
+msgid "Current script"
+msgstr "Бягучы скрыпт"
+
+#: ../src/dialog_style_manager.cpp:314 ../src/dialog_progress.cpp:179
+msgid "Close"
+msgstr "Закрыць"
+
+#: ../src/dialog_style_manager.cpp:454
+msgid "New storage name:"
+msgstr "Назва новага сховішча:"
+
+#: ../src/dialog_style_manager.cpp:454
+msgid "New catalog entry"
+msgstr "Новы запіс у каталогу"
+
+#: ../src/dialog_style_manager.cpp:469
+msgid "A catalog with that name already exists."
+msgstr "Сховішча з такой назвай ужо існуе."
+
+#: ../src/dialog_style_manager.cpp:469
+msgid "Catalog name conflict"
+msgstr "Канфлікт назваў каталогу"
+
+#: ../src/dialog_style_manager.cpp:476
+#, c-format
+msgid ""
+"The specified catalog name contains one or more illegal characters. They have been replaced with underscores instead.\n"
+"The catalog has been renamed to \"%s\"."
+msgstr ""
+"Дадзеная назва каталогу ўтрымлівае адзін або некалькі недапушчальных сімвалаў. Яны былі заменены на падкрэсліванні.\n"
+"Каталог быў перайменаваны ў «%s»."
+
+#: ../src/dialog_style_manager.cpp:477
+msgid "Invalid characters"
+msgstr "Забароненыя сімвалы"
+
+#: ../src/dialog_style_manager.cpp:490
+#, c-format
+msgid "Are you sure you want to delete the storage \"%s\" from the catalog?"
+msgstr "Вы ўпэўнены, што хочаце выдаліць сховішча «%s» з каталогу?"
+
+#: ../src/dialog_style_manager.cpp:491
+msgid "Confirm delete"
+msgstr "Пацвярджэнне выдалення"
+
+#: ../src/dialog_style_manager.cpp:509
+#, c-format
+msgid ""
+"There is already a style with the name \"%s\" in the current storage. "
+"Overwrite?"
+msgstr "У гэтым сховішчы ўжо існуе стыль пад назвай «%s». Абнавіць яго?"
+
+#: ../src/dialog_style_manager.cpp:509 ../src/dialog_style_manager.cpp:536
+#: ../src/dialog_style_manager.cpp:714
+msgid "Style name collision"
+msgstr "Канфлікт назваў стыляў"
+
+#: ../src/dialog_style_manager.cpp:536 ../src/dialog_style_manager.cpp:713
+#, c-format
+msgid ""
+"There is already a style with the name \"%s\" in the current script. "
+"Overwrite?"
+msgstr ""
+"У гэтым скрыпце субтытраў ужо існуе стыль пад назвай «%s». Абнавіць яго?"
+
+#: ../src/dialog_style_manager.cpp:547
+msgid "style copy"
+msgstr "Капіяванне стылю"
+
+#: ../src/dialog_style_manager.cpp:576
+msgid "style paste"
+msgstr "устаўку стылю"
+
+#: ../src/dialog_style_manager.cpp:620
+msgid "Confirm delete from storage"
+msgstr "Пацвярджэнне выдалення са сховішча"
+
+#: ../src/dialog_style_manager.cpp:659
+msgid "Confirm delete from current"
+msgstr "Пацвярджэнне выдалення з бягучага файла субтытраў"
+
+#: ../src/dialog_style_manager.cpp:663
+msgid "style delete"
+msgstr "выдаленне стылю"
+
+#: ../src/dialog_style_manager.cpp:668 ../src/command/subtitle.cpp:240
+#: ../src/command/subtitle.cpp:270
+msgid "Open subtitles file"
+msgstr "Адкрыць файл субтытраў"
+
+#: ../src/dialog_style_manager.cpp:698
+msgid "The selected file has no available styles."
+msgstr "У выбраным файле няма даступных стыляў."
+
+#: ../src/dialog_style_manager.cpp:698
+msgid "Error Importing Styles"
+msgstr "Памылка імпарту стыляў"
+
+#: ../src/dialog_style_manager.cpp:704
+msgid "Choose styles to import:"
+msgstr "Выбраць стылі для імпарту:"
+
+#: ../src/dialog_style_manager.cpp:704
+msgid "Import Styles"
+msgstr "Імпарт стыляў"
+
+#: ../src/dialog_style_manager.cpp:730
+msgid "style import"
+msgstr "імпорт стыляў"
+
+#: ../src/dialog_style_manager.cpp:839
+msgid "Are you sure? This cannot be undone!"
+msgstr "Вы ўпэўнены? Гэта нельга будзе адмяніць!"
+
+#: ../src/dialog_style_manager.cpp:839
+msgid "Sort styles"
+msgstr "Сартаванне стыляў"
+
+#: ../src/dialog_style_manager.cpp:880
+msgid "style move"
+msgstr "перамяшчэнне стылю"
+
+#: ../src/command/timecode.cpp:52 ../src/command/timecode.cpp:53
+msgid "Close Timecodes File"
+msgstr "Закрыць файл таймкодаў"
+
+#: ../src/command/timecode.cpp:54
+msgid "Close the currently open timecodes file"
+msgstr "Закрыць бягучы адкрыты файл таймкодаў"
+
+#: ../src/command/timecode.cpp:69
+msgid "Open Timecodes File..."
+msgstr "Адкрыць файл таймкодаў..."
+
+#: ../src/command/timecode.cpp:70 ../src/command/timecode.cpp:75
+msgid "Open Timecodes File"
+msgstr "Адкрыць файл таймкодаў"
+
+#: ../src/command/timecode.cpp:71
+msgid "Open a VFR timecodes v1 or v2 file"
+msgstr "Адкрыць файл таймкодаў у фармаце v1 або v2"
+
+#: ../src/command/timecode.cpp:84
+msgid "Save Timecodes File..."
+msgstr "Захаваць файл таймкодаў..."
+
+#: ../src/command/timecode.cpp:85 ../src/command/timecode.cpp:95
+msgid "Save Timecodes File"
+msgstr "Захаваць файл таймкодаў"
+
+#: ../src/command/timecode.cpp:86
+msgid "Save a VFR timecodes v2 file"
+msgstr "Захаваць файл таймкодаў у фармаце v2"
+
+#: ../src/command/command.cpp:31
+#, c-format
+msgid "'%s' is not a valid command name"
+msgstr "'%s' — недапушчальнае імя каманды"
+
+#: ../src/command/video.cpp:84
+msgid "&Cinematic (2.35)"
+msgstr "&Кінематаграфічны (2.35)"
+
+#: ../src/command/video.cpp:85
+msgid "Cinematic (2.35)"
+msgstr "Кінематаграфічны (2.35)"
+
+#: ../src/command/video.cpp:86
+msgid "Force video to 2.35 aspect ratio"
+msgstr "Прымусова задаць суадносіны 2.35"
+
+#: ../src/command/video.cpp:102
+msgid "C&ustom..."
+msgstr "А&сабістае..."
+
+#: ../src/command/video.cpp:103
+msgid "Custom"
+msgstr "Асабістае"
+
+#: ../src/command/video.cpp:104
+msgid "Force video to a custom aspect ratio"
+msgstr "Прымусова задаць свае суадносіны бакоў"
+
+#: ../src/command/video.cpp:115
+msgid ""
+"Enter aspect ratio in either:\n"
+" decimal (e.g. 2.35)\n"
+" fractional (e.g. 16:9)\n"
+" specific resolution (e.g. 853x480)"
+msgstr ""
+"Увядзіце суадносіны бакоў:\n"
+" дзесятковы фармат (напрыклад 2.35)\n"
+" дробавы фармат (напрыклад 16:9)\n"
+" дакладнае разрозненне (напрыклад 853х480)"
+
+#: ../src/command/video.cpp:116
+msgid "Enter aspect ratio"
+msgstr "Задаць суадносіны бакоў"
+
+#: ../src/command/video.cpp:135
+msgid "Invalid value! Aspect ratio must be between 0.5 and 5.0."
+msgstr "Памылковае значэнне! Суадносіны бакоў павінны быць паміж 0.5 і 5.0."
+
+#: ../src/command/video.cpp:135
+msgid "Invalid Aspect Ratio"
+msgstr "Памылковыя суадносіны бакоў"
+
+#: ../src/command/video.cpp:145
+msgid "&Default"
+msgstr "Па &змаўчанні"
+
+#: ../src/command/video.cpp:146 ../src/ass_style.cpp:194
+msgid "Default"
+msgstr "Па змаўчанні"
+
+#: ../src/command/video.cpp:147
+msgid "Use video's original aspect ratio"
+msgstr "Выкарыстоўваць суадносіны бакоў па змаўчанні"
+
+#: ../src/command/video.cpp:163
+msgid "&Fullscreen (4:3)"
+msgstr "&Паўнаэкранны (4:3)"
+
+#: ../src/command/video.cpp:164
+msgid "Fullscreen (4:3)"
+msgstr "Паўнаэкранны (4:3)"
+
+#: ../src/command/video.cpp:165
+msgid "Force video to 4:3 aspect ratio"
+msgstr "Прымусова задаць суадносіны 4:3"
+
+#: ../src/command/video.cpp:181
+msgid "&Widescreen (16:9)"
+msgstr "&Шырокаэкарны (16:9)"
+
+#: ../src/command/video.cpp:182
+msgid "Widescreen (16:9)"
+msgstr "Шырокаэкранны (16:9)"
+
+#: ../src/command/video.cpp:183
+msgid "Force video to 16:9 aspect ratio"
+msgstr "Прымусова задаць суадносіны 16:9"
+
+#: ../src/command/video.cpp:200
+msgid "&Close Video"
+msgstr "&Закрыць відэа"
+
+#: ../src/command/video.cpp:201
+msgid "Close Video"
+msgstr "Закрыць відэа"
+
+#: ../src/command/video.cpp:202
+msgid "Close the currently open video file"
+msgstr "Закрыць бягучы адкрыты відэафайл"
+
+#: ../src/command/video.cpp:211 ../src/command/video.cpp:212
+msgid "Copy coordinates to Clipboard"
+msgstr "Капіяваць каардынаты ў буфер абмену"
+
+#: ../src/command/video.cpp:213
+msgid ""
+"Copy the current coordinates of the mouse over the video to the clipboard"
+msgstr "Капіяваць у буфер абмену бягучыя кардынаты мышу адносна відэа"
+
+#: ../src/command/video.cpp:222 ../src/command/video.cpp:223
+msgid "Cycle active subtitles provider"
+msgstr "Пераключыць правайдара аўдыя"
+
+#: ../src/command/video.cpp:224
+msgid "Cycle through the available subtitles providers"
+msgstr "Цыклічна пераключацца паміж даступнымі правайдарамі аўдыя"
+
+#: ../src/command/video.cpp:235
+#, c-format
+msgid "Subtitles provider set to %s"
+msgstr "Зададзены правайдар субтытраў %s"
+
+#: ../src/command/video.cpp:242
+msgid "&Detach Video"
+msgstr "&Адлучыць відэа"
+
+#: ../src/command/video.cpp:243
+msgid "Detach Video"
+msgstr "Адлучыць відэа"
+
+#: ../src/command/video.cpp:244
+msgid ""
+"Detach the video display from the main window, displaying it in a separate "
+"Window"
+msgstr "Адлучыць відэа ад галоўнага акна і паказвваць яго ў асобным акне"
+
+#: ../src/command/video.cpp:262
+msgid "Show &Video Details"
+msgstr "Звесткі пра &відэа"
+
+#: ../src/command/video.cpp:263
+msgid "Show Video Details"
+msgstr "Звесткі пра відэа"
+
+#: ../src/command/video.cpp:264
+msgid "Show video details"
+msgstr "Звесткі пра відэа"
+
+#: ../src/command/video.cpp:274 ../src/command/video.cpp:275
+msgid "Toggle video slider focus"
+msgstr "Пераключыць фокус на паўзунок відэа"
+
+#: ../src/command/video.cpp:276
+msgid ""
+"Toggle focus between the video slider and the previous thing to have focus"
+msgstr "Пераключыць фокус на паўзунок відэа з папярэдняга актыўнага элемента"
+
+#: ../src/command/video.cpp:297 ../src/command/video.cpp:298
+msgid "Copy image to Clipboard"
+msgstr "Капіяваць кадр у буферу абмену"
+
+#: ../src/command/video.cpp:299
+msgid "Copy the currently displayed frame to the clipboard"
+msgstr "Скапіяваць бягучы кадр у буфер абмену"
+
+#: ../src/command/video.cpp:308 ../src/command/video.cpp:309
+msgid "Copy image to Clipboard (no subtitles)"
+msgstr "Капіяваць кадр у буфер абмену (без субтытраў)"
+
+#: ../src/command/video.cpp:310
+msgid ""
+"Copy the currently displayed frame to the clipboard, without the subtitles"
+msgstr "Капіяваць бягучы кадр, які паказваецца без субтытраў у буфер абмену"
+
+#: ../src/command/video.cpp:319 ../src/command/video.cpp:320
+msgid "Next Frame"
+msgstr "Наступны кадр"
+
+#: ../src/command/video.cpp:321
+msgid "Seek to the next frame"
+msgstr "Перайсці на наступны кадр"
+
+#: ../src/command/video.cpp:330 ../src/command/video.cpp:331
+msgid "Next Boundary"
+msgstr "Наступная мяжа"
+
+#: ../src/command/video.cpp:332
+msgid "Seek to the next beginning or end of a subtitle"
+msgstr "Перайсці да наступнага пачатку або канца субтытраў"
+
+#: ../src/command/video.cpp:359 ../src/command/video.cpp:360
+msgid "Next Keyframe"
+msgstr "Наступны ключкадр"
+
+#: ../src/command/video.cpp:361
+msgid "Seek to the next keyframe"
+msgstr "Перайсці на наступны ключкадр"
+
+#: ../src/command/video.cpp:373 ../src/command/video.cpp:374
+#: ../src/command/video.cpp:375
+msgid "Fast jump forward"
+msgstr "Хуткі пераход наперад"
+
+#: ../src/command/video.cpp:386 ../src/command/video.cpp:387
+msgid "Previous Frame"
+msgstr "Папярэдні кадр"
+
+#: ../src/command/video.cpp:388
+msgid "Seek to the previous frame"
+msgstr "Перайсці на папярэдні кадр"
+
+#: ../src/command/video.cpp:397 ../src/command/video.cpp:398
+msgid "Previous Boundary"
+msgstr "Папярэдняя мяжа"
+
+#: ../src/command/video.cpp:399
+msgid "Seek to the previous beginning or end of a subtitle"
+msgstr "Перайсці да папярэдняга пачатку або канца субтытраў"
+
+#: ../src/command/video.cpp:426 ../src/command/video.cpp:427
+msgid "Previous Keyframe"
+msgstr "Папярэдні ключкадр"
+
+#: ../src/command/video.cpp:428
+msgid "Seek to the previous keyframe"
+msgstr "Перайсці да папярэдняга ключкадра"
+
+#: ../src/command/video.cpp:448 ../src/command/video.cpp:449
+#: ../src/command/video.cpp:450
+msgid "Fast jump backwards"
+msgstr "Хуткі пераход назад"
+
+#: ../src/command/video.cpp:499 ../src/command/video.cpp:500
+msgid "Save PNG snapshot"
+msgstr "Захаваць кадр як PNG"
+
+#: ../src/command/video.cpp:501
+msgid ""
+"Save the currently displayed frame to a PNG file in the video's directory"
+msgstr "Захаваць бягучы кадр ў PNG-файл у папку з відэа"
+
+#: ../src/command/video.cpp:510 ../src/command/video.cpp:511
+msgid "Save PNG snapshot (no subtitles)"
+msgstr "Захаваць PNG-здымак (без субтытраў)"
+
+#: ../src/command/video.cpp:512
+msgid ""
+"Save the currently displayed frame without the subtitles to a PNG file in "
+"the video's directory"
+msgstr "Захаваць бягучы кадр без субтытраў ў PNG-файл у папцы з відэа"
+
+#: ../src/command/video.cpp:522
+msgid "&Jump to..."
+msgstr "&Перайсці да..."
+
+#: ../src/command/video.cpp:524
+msgid "Jump to frame or time"
+msgstr "Перайсці да кадра або часу"
+
+#: ../src/command/video.cpp:536
+msgid "Jump Video to &End"
+msgstr "Перамотка відэа да &канца"
+
+#: ../src/command/video.cpp:537
+msgid "Jump Video to End"
+msgstr "Перамотка відэа да канца"
+
+#: ../src/command/video.cpp:538
+msgid "Jump the video to the end frame of current subtitle"
+msgstr "Перамотка відэа да канчатковага кадра бягучага радка"
+
+#: ../src/command/video.cpp:549
+msgid "Jump Video to &Start"
+msgstr "Перамотка відэа да &пачатка"
+
+#: ../src/command/video.cpp:550
+msgid "Jump Video to Start"
+msgstr "Перамотка відэа да пачатка"
+
+#: ../src/command/video.cpp:551
+msgid "Jump the video to the start frame of current subtitle"
+msgstr "Перамотка відэа да пачатковага кадра бягучага радка"
+
+#: ../src/command/video.cpp:562
+msgid "&Open Video..."
+msgstr "&Адкрыць відэа..."
+
+#: ../src/command/video.cpp:563
+msgid "Open Video"
+msgstr "Адкрыць відэа"
+
+#: ../src/command/video.cpp:564
+msgid "Open a video file"
+msgstr "Адкрыць відэафайл"
+
+#: ../src/command/video.cpp:567 ../src/command/audio.cpp:83
+msgid "Video Formats"
+msgstr "Фарматы відэа"
+
+#: ../src/command/video.cpp:569
+msgid "Open video file"
+msgstr "Адкрыць відэафайл"
+
+#: ../src/command/video.cpp:578
+msgid "&Use Dummy Video..."
+msgstr "Выкарыстоўваць &пустое відэа"
+
+#: ../src/command/video.cpp:579
+msgid "Use Dummy Video"
+msgstr "Выкарыстоўваць пустое відэа"
+
+#: ../src/command/video.cpp:580
+msgid "Open a placeholder video clip with solid color"
+msgstr "Адкрыць запаўняльнае відэа з суцэльным колерам"
+
+#: ../src/command/video.cpp:592 ../src/command/video.cpp:593
+msgid "Toggle autoscroll of video"
+msgstr "Уключыць аўтапрагортку відэа"
+
+#: ../src/command/video.cpp:594
+msgid "Toggle automatically seeking video to the start time of selected lines"
+msgstr ""
+"Уключыць аўтаматычную перамотку відэа да часу пачатку вылучаных радкоў"
+
+#: ../src/command/video.cpp:609 ../src/command/video.cpp:610
+msgid "Play"
+msgstr "Прайграць"
+
+#: ../src/command/video.cpp:611
+msgid "Play video starting on this position"
+msgstr "Прайграць відэа з бягучай пазіцыі"
+
+#: ../src/command/video.cpp:621 ../src/command/video.cpp:622
+msgid "Play line"
+msgstr "Прайграць радок"
+
+#: ../src/command/video.cpp:623 ../src/command/audio.cpp:260
+#: ../src/command/audio.cpp:261
+msgid "Play current line"
+msgstr "Прайграць бягучы радок"
+
+#: ../src/command/video.cpp:632
+msgid "Show &Overscan Mask"
+msgstr "Паказваць межы &адсячэння"
+
+#: ../src/command/video.cpp:633
+msgid "Show Overscan Mask"
+msgstr "Паказваць межы адсячэння"
+
+#: ../src/command/video.cpp:634
+msgid ""
+"Show a mask over the video, indicating areas that might get cropped off by "
+"overscan on televisions"
+msgstr ""
+"Паказваць маску паверх відэа для паказу вобласцяў, якія могуць быць абрэзаны"
+" рамкай экрана тэлевізара"
+
+#: ../src/command/video.cpp:650
+msgid "&100%"
+msgstr "&100%"
+
+#: ../src/command/video.cpp:651
+msgid "100%"
+msgstr "100%"
+
+#: ../src/command/video.cpp:652
+msgid "Set zoom to 100%"
+msgstr "Задаць маштаб у 100%"
+
+#: ../src/command/video.cpp:669 ../src/command/video.cpp:670
+msgid "Stop video"
+msgstr "Спыніць відэа"
+
+#: ../src/command/video.cpp:671
+msgid "Stop video playback"
+msgstr "Паставіць відэа на паўзу"
+
+#: ../src/command/video.cpp:681
+msgid "&200%"
+msgstr "&200%"
+
+#: ../src/command/video.cpp:682
+msgid "200%"
+msgstr "200%"
+
+#: ../src/command/video.cpp:683
+msgid "Set zoom to 200%"
+msgstr "Задаць маштаб у 200%"
+
+#: ../src/command/video.cpp:699
+msgid "&50%"
+msgstr "&50%"
+
+#: ../src/command/video.cpp:700
+msgid "50%"
+msgstr "50%"
+
+#: ../src/command/video.cpp:701
+msgid "Set zoom to 50%"
+msgstr "Задаць маштаб у 50%"
+
+#: ../src/command/video.cpp:717 ../src/command/video.cpp:718
+msgid "Zoom In"
+msgstr "Павялічыць"
+
+#: ../src/command/video.cpp:719
+msgid "Zoom video in"
+msgstr "Павялічыць маштаб відэа"
+
+#: ../src/command/video.cpp:729 ../src/command/video.cpp:730
+msgid "Zoom Out"
+msgstr "Паменшыць"
+
+#: ../src/command/video.cpp:731
+msgid "Zoom video out"
+msgstr "Паменшыць маштаб відэа"
+
+#: ../src/command/edit.cpp:131 ../src/command/edit.cpp:831
+msgid "paste"
+msgstr "уставіць"
+
+#: ../src/command/edit.cpp:369
+msgid "set color"
+msgstr "задаць колер"
+
+#: ../src/command/edit.cpp:383
+msgid "Primary Color..."
+msgstr "Першасны колер..."
+
+#: ../src/command/edit.cpp:384
+msgid "Primary Color"
+msgstr "Першасны колер"
+
+#: ../src/command/edit.cpp:385
+msgid "Set the primary fill color (\\c) at the cursor position"
+msgstr ""
+"Задаць першасны колер заліўкі (\\c) для тэксту пасля бягучай пазіцыі курсора"
+
+#: ../src/command/edit.cpp:395
+msgid "Secondary Color..."
+msgstr "Другасны колер..."
+
+#: ../src/command/edit.cpp:396
+msgid "Secondary Color"
+msgstr "Другасны колер"
+
+#: ../src/command/edit.cpp:397
+msgid "Set the secondary (karaoke) fill color (\\2c) at the cursor position"
+msgstr ""
+"Задаць другасны (караоке) колер заліўкі (\\2c) для тэксту пасля бягучай "
+"пазіцыі курсора"
+
+#: ../src/command/edit.cpp:407
+msgid "Outline Color..."
+msgstr "Колер контуру..."
+
+#: ../src/command/edit.cpp:408
+msgid "Outline Color"
+msgstr "Колер контуру"
+
+#: ../src/command/edit.cpp:409
+msgid "Set the outline color (\\3c) at the cursor position"
+msgstr "Задаць колер контуру (\\3c) для тэксту пасля бягучай пазіцыі курсора"
+
+#: ../src/command/edit.cpp:419
+msgid "Shadow Color..."
+msgstr "Колер ценю..."
+
+#: ../src/command/edit.cpp:420
+msgid "Shadow Color"
+msgstr "Колер ценю"
+
+#: ../src/command/edit.cpp:421
+msgid "Set the shadow color (\\4c) at the cursor position"
+msgstr "Задаць колер ценю (\\4c) для тэксту пасля бягучай пазіцыі курсора"
+
+#: ../src/command/edit.cpp:431 ../src/command/edit.cpp:432
+msgid "Toggle Bold"
+msgstr "Зрабіць тоўстым"
+
+#: ../src/command/edit.cpp:433
+msgid ""
+"Toggle bold (\\b) for the current selection or at the current cursor "
+"position"
+msgstr ""
+"Зрабіць тоўстым (\\b) бягучае вылучэнне або тэкст пасля бягучай пазіцыі "
+"курсора"
+
+#: ../src/command/edit.cpp:436
+msgid "toggle bold"
+msgstr "змена таўшчыні"
+
+#: ../src/command/edit.cpp:443 ../src/command/edit.cpp:444
+msgid "Toggle Italics"
+msgstr "Зрабіць курсівам"
+
+#: ../src/command/edit.cpp:445
+msgid ""
+"Toggle italics (\\i) for the current selection or at the current cursor "
+"position"
+msgstr ""
+"Зрабіць курсівам (\\i) бягучае вылучэнне або тэкст пасля бягучай пазіцыі "
+"курсора"
+
+#: ../src/command/edit.cpp:448
+msgid "toggle italic"
+msgstr "змена курсіва"
+
+#: ../src/command/edit.cpp:455 ../src/command/edit.cpp:456
+msgid "Toggle Underline"
+msgstr "Зрабіць падкрэсленым"
+
+#: ../src/command/edit.cpp:457
+msgid ""
+"Toggle underline (\\u) for the current selection or at the current cursor "
+"position"
+msgstr ""
+"Зрабіць падкрэсленым (\\u) бягучае вылучэнне або тэкст пасля бягучай пазіцыі"
+" курсора"
+
+#: ../src/command/edit.cpp:460
+msgid "toggle underline"
+msgstr "змена падкрэслівання"
+
+#: ../src/command/edit.cpp:467 ../src/command/edit.cpp:468
+msgid "Toggle Strikeout"
+msgstr "Зрабіць перакрэсленым"
+
+#: ../src/command/edit.cpp:469
+msgid ""
+"Toggle strikeout (\\s) for the current selection or at the current cursor "
+"position"
+msgstr ""
+"Зрабіць перакрэсленым (\\s) бягучае вылучэнне або тэкст пасля бягучай "
+"пазіцыі курсора"
+
+#: ../src/command/edit.cpp:472
+msgid "toggle strikeout"
+msgstr "змена закрэслівання"
+
+#: ../src/command/edit.cpp:479
+msgid "Font Face..."
+msgstr "Шрыфт..."
+
+#: ../src/command/edit.cpp:480 ../src/preferences_base.cpp:251
+msgid "Font Face"
+msgstr "Назва шрыфта"
+
+#: ../src/command/edit.cpp:481
+msgid "Select a font face and size"
+msgstr "Выбраць шрыфт і памер"
+
+#: ../src/command/edit.cpp:508
+msgid "set font"
+msgstr "задаць шрыфт"
+
+#: ../src/command/edit.cpp:535
+msgid "Find and R&eplace..."
+msgstr "Знайсці і з&амяніць"
+
+#: ../src/command/edit.cpp:536
+msgid "Find and Replace"
+msgstr "Знайсці і замяніць"
+
+#: ../src/command/edit.cpp:537
+msgid "Find and replace words in subtitles"
+msgstr "Знайсці і замяніць словы ў субтытрах"
+
+#: ../src/command/edit.cpp:598
+msgid "&Copy Lines"
+msgstr "&Капіяваць радкі"
+
+#: ../src/command/edit.cpp:599
+msgid "Copy Lines"
+msgstr "Капіяваць радкі"
+
+#: ../src/command/edit.cpp:600
+msgid "Copy subtitles to the clipboard"
+msgstr "Капіяваць субтытры ў буфер абмену"
+
+#: ../src/command/edit.cpp:621
+msgid "Cu&t Lines"
+msgstr "&Выразаць радкі"
+
+#: ../src/command/edit.cpp:622
+msgid "Cut Lines"
+msgstr "Выразаць радкі"
+
+#: ../src/command/edit.cpp:623
+msgid "Cut subtitles"
+msgstr "Выразаць субтытры"
+
+#: ../src/command/edit.cpp:630
+msgid "cut lines"
+msgstr "выразаць радкі"
+
+#: ../src/command/edit.cpp:638
+msgid "De&lete Lines"
+msgstr "&Выдаліць радкі"
+
+#: ../src/command/edit.cpp:639
+msgid "Delete Lines"
+msgstr "Выдаліць радкі"
+
+#: ../src/command/edit.cpp:640
+msgid "Delete currently selected lines"
+msgstr "Выдаляе вылучаныя радкі"
+
+#: ../src/command/edit.cpp:643
+msgid "delete lines"
+msgstr "выдаліць радкі"
+
+#: ../src/command/edit.cpp:708 ../src/command/edit.cpp:1093
+msgid "split"
+msgstr "прамежак"
+
+#: ../src/command/edit.cpp:708
+msgid "duplicate lines"
+msgstr "дубліраванне радкоў"
+
+#: ../src/command/edit.cpp:715
+msgid "&Duplicate Lines"
+msgstr "&Дубліраваць радкі"
+
+#: ../src/command/edit.cpp:716
+msgid "Duplicate Lines"
+msgstr "Дубліраваць радкі"
+
+#: ../src/command/edit.cpp:717
+msgid "Duplicate the selected lines"
+msgstr "Дубліруе вылучаныя радкі"
+
+#: ../src/command/edit.cpp:726 ../src/command/edit.cpp:727
+msgid "Split lines after current frame"
+msgstr "Разбіць радкі пасля бягучага кадра"
+
+#: ../src/command/edit.cpp:728
+msgid ""
+"Split the current line into a line which ends on the current frame and a "
+"line which starts on the next frame"
+msgstr ""
+"Разбіць бягучы радок два, дзе першы заканчваецца на бягучым кадры, другі "
+"пачынаецца на наступным кадры."
+
+#: ../src/command/edit.cpp:738 ../src/command/edit.cpp:739
+msgid "Split lines before current frame"
+msgstr "Разбіць радкі перад бягучым кадрам"
+
+#: ../src/command/edit.cpp:740
+msgid ""
+"Split the current line into a line which ends on the previous frame and a "
+"line which starts on the current frame"
+msgstr ""
+"Разбіць бягучы радок два, дзе першы заканчваецца на папярэднім кадры, другі "
+"пачынаецца на бягучым кадры."
+
+#: ../src/command/edit.cpp:775
+msgid "As &Karaoke"
+msgstr "Як караоке"
+
+#: ../src/command/edit.cpp:776
+msgid "As Karaoke"
+msgstr "Як караоке"
+
+#: ../src/command/edit.cpp:777
+msgid "Join selected lines in a single one, as karaoke"
+msgstr "Аб'яднаць вылучаныя радкі ў адзін, як караоке"
+
+#: ../src/command/edit.cpp:780
+msgid "join as karaoke"
+msgstr "аб'ядноўвае як караоке"
+
+#: ../src/command/edit.cpp:786
+msgid "&Concatenate"
+msgstr "&Аб'яднаць"
+
+#: ../src/command/edit.cpp:787
+msgid "Concatenate"
+msgstr "Аб'яднаць"
+
+#: ../src/command/edit.cpp:788
+msgid "Join selected lines in a single one, concatenating text together"
+msgstr "Аб'яднаць вылучаныя радкі ў адзін, счапіўшы тэкст ўсіх радкоў"
+
+#: ../src/command/edit.cpp:791 ../src/command/edit.cpp:802
+msgid "join lines"
+msgstr "аб'яднаць радкі"
+
+#: ../src/command/edit.cpp:797
+msgid "Keep &First"
+msgstr "Захаваць &першае"
+
+#: ../src/command/edit.cpp:798
+msgid "Keep First"
+msgstr "Захаваць першае"
+
+#: ../src/command/edit.cpp:799
+msgid ""
+"Join selected lines in a single one, keeping text of first and discarding "
+"remaining"
+msgstr ""
+"Аб'яднаць вылучаныя радкі ў адзін, пакінуўшы тэкст першага радка і выдаліўшы"
+" тэкст астатніх"
+
+#: ../src/command/edit.cpp:840
+msgid "&Paste Lines"
+msgstr "&Уставіць радкі"
+
+#: ../src/command/edit.cpp:841
+msgid "Paste Lines"
+msgstr "Уставіць радкі"
+
+#: ../src/command/edit.cpp:842
+msgid "Paste subtitles"
+msgstr "Устаўляе субтытры"
+
+#: ../src/command/edit.cpp:871
+msgid "Paste Lines &Over..."
+msgstr "Уставіць &паверх радкоў..."
+
+#: ../src/command/edit.cpp:872
+msgid "Paste Lines Over"
+msgstr "Уставіць паверх радкоў"
+
+#: ../src/command/edit.cpp:873
+msgid "Paste subtitles over others"
+msgstr "Устаўляе субтытры паверх іншых"
+
+#: ../src/command/edit.cpp:956
+msgid "Recom&bine Lines"
+msgstr "&Рэкамбінаваць радкі"
+
+#: ../src/command/edit.cpp:957
+msgid "Recombine Lines"
+msgstr "Рэкамбінаваць радкі"
+
+#: ../src/command/edit.cpp:958
+msgid "Recombine subtitles which have been split and merged"
+msgstr "Рэкамбінаваць субтытры, якія былі разбіты і аб'яднаны"
+
+#: ../src/command/edit.cpp:1028
+msgid "combining"
+msgstr "камбінаванне"
+
+#: ../src/command/edit.cpp:1034 ../src/command/edit.cpp:1035
+msgid "Split Lines (by karaoke)"
+msgstr "Разбіць радкі (па тэгах караоке)"
+
+#: ../src/command/edit.cpp:1036
+msgid "Use karaoke timing to split line into multiple smaller lines"
+msgstr ""
+"Выкарыстоўваць таймінг караоке каб разбіць радок на некалькі меншых радкоў"
+
+#: ../src/command/edit.cpp:1070
+msgid "splitting"
+msgstr "прамежак"
+
+#: ../src/command/edit.cpp:1098 ../src/command/edit.cpp:1099
+#: ../src/subs_edit_ctrl.cpp:375
+msgid "Split at cursor (estimate times)"
+msgstr "Разбіць па курсору (пералічыць час)"
+
+#: ../src/command/edit.cpp:1100
+msgid ""
+"Split the current line at the cursor, dividing the original line's duration "
+"between the new ones"
+msgstr ""
+"Разбіць бягучы радок па курсору, раздзяліўшы зыходную працягласць паміж "
+"новымі радкамі"
+
+#: ../src/command/edit.cpp:1114 ../src/command/edit.cpp:1115
+#: ../src/subs_edit_ctrl.cpp:374
+msgid "Split at cursor (preserve times)"
+msgstr "Разбіць па курсору (пакінуць час)"
+
+#: ../src/command/edit.cpp:1116
+msgid ""
+"Split the current line at the cursor, setting both lines to the original "
+"line's times"
+msgstr ""
+"Разбіць бягучы радок па курсору, задаўшы новым радкам зыходны час радка"
+
+#: ../src/command/edit.cpp:1125 ../src/command/edit.cpp:1126
+msgid "Split at cursor (at video frame)"
+msgstr "Разбіць па курсору (па відэакадру)"
+
+#: ../src/command/edit.cpp:1127
+msgid ""
+"Split the current line at the cursor, dividing the line's duration at the "
+"current video frame"
+msgstr ""
+"Разбіць бягучы радок па курсору, раздзяліўшы працягласць радка па бягучаму "
+"відэакадру"
+
+#: ../src/command/edit.cpp:1143
+msgid "Redo last undone action"
+msgstr "Паўтарыць апошняе адмененае дзеянне"
+
+#: ../src/command/edit.cpp:1148
+msgid "Nothing to &redo"
+msgstr "Няма чаго &паўтарыць"
+
+#: ../src/command/edit.cpp:1149
+#, c-format
+msgid "&Redo %s"
+msgstr "&Паўтарыць %s"
+
+#: ../src/command/edit.cpp:1153
+msgid "Nothing to redo"
+msgstr "Няма чаго паўтарыць"
+
+#: ../src/command/edit.cpp:1154
+#, c-format
+msgid "Redo %s"
+msgstr "Паўтарыць %s"
+
+#: ../src/command/edit.cpp:1169
+msgid "Undo last action"
+msgstr "Адмяніць апошняе дзеянне"
+
+#: ../src/command/edit.cpp:1174
+msgid "Nothing to &undo"
+msgstr "Няма чаго &адмяніць"
+
+#: ../src/command/edit.cpp:1175
+#, c-format
+msgid "&Undo %s"
+msgstr "&Адмяніць %s"
+
+#: ../src/command/edit.cpp:1179
+msgid "Nothing to undo"
+msgstr "Няма чаго адмяніць"
+
+#: ../src/command/edit.cpp:1180
+#, c-format
+msgid "Undo %s"
+msgstr "Скасаваць %s"
+
+#: ../src/command/edit.cpp:1194 ../src/command/edit.cpp:1195
+msgid "Revert"
+msgstr "Вярнуць"
+
+#: ../src/command/edit.cpp:1196
+msgid ""
+"Revert the active line to its initial state (shown in the upper editor)"
+msgstr "Вяртае актыўны радок у пачатковы стан (паказаны ў верхнім рэдактары)"
+
+#: ../src/command/edit.cpp:1201
+msgid "revert line"
+msgstr "вярнуць радок"
+
+#: ../src/command/edit.cpp:1207 ../src/command/edit.cpp:1208
+#: ../src/preferences.cpp:389
+msgid "Clear"
+msgstr "Ачысціць"
+
+#: ../src/command/edit.cpp:1209
+msgid "Clear the current line's text"
+msgstr "Ачысціць тэкст бягучага радка"
+
+#: ../src/command/edit.cpp:1214 ../src/command/edit.cpp:1233
+msgid "clear line"
+msgstr "ачысціць радок"
+
+#: ../src/command/edit.cpp:1221 ../src/command/edit.cpp:1222
+msgid "Clear Text"
+msgstr "Ачысціць тэкст"
+
+#: ../src/command/edit.cpp:1223
+msgid "Clear the current line's text, leaving override tags"
+msgstr "Ачысціць тэкст бягучага радка, пакінуўшы тэгі"
+
+#: ../src/command/edit.cpp:1239 ../src/command/edit.cpp:1240
+#: ../src/command/tool.cpp:271
+msgid "Insert Original"
+msgstr "Уставіць арыгінал"
+
+#: ../src/command/edit.cpp:1241
+msgid "Insert the original line text at the cursor"
+msgstr "Уставіць зыходны тэкст радка пасля бягучай пазіцыі курсора"
+
+#: ../src/command/edit.cpp:1249
+msgid "insert original"
+msgstr "Уставіць арыгінал"
+
+#: ../src/command/recent.cpp:43 ../src/command/recent.cpp:44
+#: ../src/command/recent.cpp:45 ../src/command/recent.cpp:46
+#: ../src/command/recent.cpp:47 ../src/command/recent.cpp:51
+#: ../src/command/recent.cpp:52 ../src/command/recent.cpp:62
+#: ../src/command/recent.cpp:63 ../src/command/recent.cpp:73
+#: ../src/command/recent.cpp:74 ../src/command/recent.cpp:85
+#: ../src/command/recent.cpp:86 ../src/command/recent.cpp:96
+#: ../src/command/recent.cpp:97
+msgid "Recent"
+msgstr "Нядаўнія"
+
+#: ../src/command/recent.cpp:43 ../src/command/recent.cpp:53
+msgid "Open recent audio"
+msgstr "Адкрыць нядаўняе аўдыя"
+
+#: ../src/command/recent.cpp:44 ../src/command/recent.cpp:64
+msgid "Open recent keyframes"
+msgstr "Адкрыць нядаўнія ключкадры"
+
+#: ../src/command/recent.cpp:45 ../src/command/recent.cpp:75
+msgid "Open recent subtitles"
+msgstr "Адкрыць нядаўнія субтытры"
+
+#: ../src/command/recent.cpp:46 ../src/command/recent.cpp:87
+msgid "Open recent timecodes"
+msgstr "Адкрыць нядаўні файл таймкодаў"
+
+#: ../src/command/recent.cpp:47
+msgid "Open recent video"
+msgstr "Адкрыць нядаўняе відэа"
+
+#: ../src/command/recent.cpp:98
+msgid "Open recent videos"
+msgstr "Адкрыць нядаўнія відэа"
+
+#: ../src/command/subtitle.cpp:78
+msgid "A&ttachments..."
+msgstr "&Далучэнні..."
+
+#: ../src/command/subtitle.cpp:79
+msgid "Attachments"
+msgstr "Далучэнні..."
+
+#: ../src/command/subtitle.cpp:80
+msgid "Open the attachment manager dialog"
+msgstr "Адкрыць спіс далучэнняў"
+
+#: ../src/command/subtitle.cpp:91
+msgid "&Find..."
+msgstr "&Знайсці..."
+
+#: ../src/command/subtitle.cpp:92 ../src/dialog_search_replace.cpp:46
+msgid "Find"
+msgstr "Знайсці"
+
+#: ../src/command/subtitle.cpp:93
+msgid "Search for text in the subtitles"
+msgstr "Пошук тэксту ў субтытрах"
+
+#: ../src/command/subtitle.cpp:104
+msgid "Find &Next"
+msgstr "Знайсці далей"
+
+#: ../src/command/subtitle.cpp:105
+msgid "Find Next"
+msgstr "Знайсці далей"
+
+#: ../src/command/subtitle.cpp:106
+msgid "Find next match of last search"
+msgstr "Знайсці наступнае супадзенне з апошнім пошукавым запытам"
+
+#: ../src/command/subtitle.cpp:126 ../src/command/subtitle.cpp:160
+#: ../src/command/subtitle.cpp:202 ../src/command/grid.cpp:82
+msgid "line insertion"
+msgstr "устаўку радкоў"
+
+#: ../src/command/subtitle.cpp:133
+msgid "&After Current"
+msgstr "&Пасля бягучага"
+
+#: ../src/command/subtitle.cpp:134
+msgid "After Current"
+msgstr "Пасля бягучага"
+
+#: ../src/command/subtitle.cpp:135
+msgid "Insert a new line after the current one"
+msgstr "Уставіць радок пасля бягучага"
+
+#: ../src/command/subtitle.cpp:167 ../src/command/subtitle.cpp:168
+msgid "After Current, at Video Time"
+msgstr "Пасля бягучага, па часу відэа"
+
+#: ../src/command/subtitle.cpp:169
+msgid "Insert a new line after the current one, starting at video time"
+msgstr "Уставіць радок пасля бягучага па часу відэа"
+
+#: ../src/command/subtitle.cpp:178
+msgid "&Before Current"
+msgstr "&Перад бягучым"
+
+#: ../src/command/subtitle.cpp:179
+msgid "Before Current"
+msgstr "Перад бягучым"
+
+#: ../src/command/subtitle.cpp:180
+msgid "Insert a new line before the current one"
+msgstr "Уставіць новы радок перад бягучым"
+
+#: ../src/command/subtitle.cpp:209 ../src/command/subtitle.cpp:210
+msgid "Before Current, at Video Time"
+msgstr "Перад бягучым, па часу відэа"
+
+#: ../src/command/subtitle.cpp:211
+msgid "Insert a new line before the current one, starting at video time"
+msgstr "Уставіць радок перад бягучым па часу відэа"
+
+#: ../src/command/subtitle.cpp:221
+msgid "&New Subtitles"
+msgstr "&Новыя субтытры"
+
+#: ../src/command/subtitle.cpp:222
+msgid "New Subtitles"
+msgstr "Новыя субтытры"
+
+#: ../src/command/subtitle.cpp:223
+msgid "New subtitles"
+msgstr "Новыя субтытры"
+
+#: ../src/command/subtitle.cpp:234
+msgid "&Open Subtitles..."
+msgstr "&Адкрыць субтытры..."
+
+#: ../src/command/subtitle.cpp:235
+msgid "Open Subtitles"
+msgstr "Адкрыць субтытры"
+
+#: ../src/command/subtitle.cpp:236
+msgid "Open a subtitles file"
+msgstr "Адкрыць файл субтытраў"
+
+#: ../src/command/subtitle.cpp:248
+msgid "Open A&utosaved Subtitles..."
+msgstr "Адкрыць аўтазахаваныя субтытры..."
+
+#: ../src/command/subtitle.cpp:249
+msgid "Open Autosaved Subtitles"
+msgstr "Адкрыць аўтазахаваныя субтытры"
+
+#: ../src/command/subtitle.cpp:250
+msgid "Open a previous version of a file which was autosaved by Aegisub"
+msgstr "Адкрыць аўтазахаваную папярэднюю версію файла"
+
+#: ../src/command/subtitle.cpp:263
+msgid "Open Subtitles with &Charset..."
+msgstr "Адкрыць файл субтытраў у &кадзіроўцы..."
+
+#: ../src/command/subtitle.cpp:264
+msgid "Open Subtitles with Charset"
+msgstr "Адкрыць файл субтытраў у кадзіроўцы"
+
+#: ../src/command/subtitle.cpp:265
+msgid "Open a subtitles file with a specific file encoding"
+msgstr "Адкрыць файл субтытраў у зададзенай кадзіроўцы"
+
+#: ../src/command/subtitle.cpp:273
+msgid "Choose charset code:"
+msgstr "Выбраць кадзіроўку відэа:"
+
+#: ../src/command/subtitle.cpp:273
+msgid "Charset"
+msgstr "Кадзіроўка"
+
+#: ../src/command/subtitle.cpp:282
+msgid "Open Subtitles from &Video"
+msgstr "Адкрыць субтытры з &відэа"
+
+#: ../src/command/subtitle.cpp:283
+msgid "Open Subtitles from Video"
+msgstr "Адкрыць субтытры з відэа"
+
+#: ../src/command/subtitle.cpp:284
+msgid "Open the subtitles from the current video file"
+msgstr "Адкрыць субтытры з бягучага відэафайла"
+
+#: ../src/command/subtitle.cpp:300
+msgid "&Properties..."
+msgstr "&Уласцівасці..."
+
+#: ../src/command/subtitle.cpp:301
+msgid "Properties"
+msgstr "Уласцівасці"
+
+#: ../src/command/subtitle.cpp:302
+msgid "Open script properties window"
+msgstr "Адкрыць акно ўласцівасцяў скрыпта"
+
+#: ../src/command/subtitle.cpp:313
+msgid "Save subtitles file"
+msgstr "Захаваць файл субтытраў"
+
+#: ../src/command/subtitle.cpp:333
+msgid "&Save Subtitles"
+msgstr "&Захаваць субтытры"
+
+#: ../src/command/subtitle.cpp:334
+msgid "Save Subtitles"
+msgstr "Захаваць субтытры"
+
+#: ../src/command/subtitle.cpp:335
+msgid "Save the current subtitles"
+msgstr "Захаваць бягучыя субтытры"
+
+#: ../src/command/subtitle.cpp:350
+msgid "Save Subtitles &as..."
+msgstr "Захаваць субтытры &як..."
+
+#: ../src/command/subtitle.cpp:351
+msgid "Save Subtitles as"
+msgstr "Захаваць субтытры як"
+
+#: ../src/command/subtitle.cpp:352
+msgid "Save subtitles with another name"
+msgstr "Захаваць субтытры пад іншай назвай"
+
+#: ../src/command/subtitle.cpp:361 ../src/dialog_selected_choices.cpp:26
+#: ../src/subs_edit_ctrl.cpp:369 ../src/dialog_export.cpp:125
+msgid "Select &All"
+msgstr "Вылучыць &усе"
+
+#: ../src/command/subtitle.cpp:362
+msgid "Select All"
+msgstr "Вылучыць усе"
+
+#: ../src/command/subtitle.cpp:363
+msgid "Select all dialogue lines"
+msgstr "Вылучыць усе дыялогавыя радкі"
+
+#: ../src/command/subtitle.cpp:375 ../src/command/subtitle.cpp:376
+msgid "Select Visible"
+msgstr "Вылучыць бачныя"
+
+#: ../src/command/subtitle.cpp:377
+msgid "Select all dialogue lines that are visible on the current video frame"
+msgstr "Вылучыць усе дыялогавыя радкі, якія бачныя на бягучым кадры відэа"
+
+#: ../src/command/subtitle.cpp:407
+msgid "Spell &Checker..."
+msgstr "Праверка &арфаграфіі..."
+
+#: ../src/command/subtitle.cpp:408 ../src/dialog_spellchecker.cpp:103
+msgid "Spell Checker"
+msgstr "Праверка арфаграфіі"
+
+#: ../src/command/subtitle.cpp:409
+msgid "Open spell checker"
+msgstr "Адкрыць праверку арфаграфіі"
+
+#: ../src/command/tool.cpp:58
+msgid "ASSDraw3..."
+msgstr "ASSDraw3..."
+
+#: ../src/command/tool.cpp:59
+msgid "ASSDraw3"
+msgstr "ASSDraw3"
+
+#: ../src/command/tool.cpp:60
+msgid "Launch the ASSDraw3 tool for vector drawing"
+msgstr "Адкрыць ASSDraw3 - праграму для вектарнага рысавання "
+
+#: ../src/command/tool.cpp:70
+msgid "&Export Subtitles..."
+msgstr "&Экспартаваць субтытры..."
+
+#: ../src/command/tool.cpp:71
+msgid "Export Subtitles"
+msgstr "Экспартаваць субтытры"
+
+#: ../src/command/tool.cpp:72
+msgid ""
+"Save a copy of subtitles in a different format or with processing applied to"
+" it"
+msgstr ""
+"Захаваць копію субтытраў, перад гэтым апрацаваўшы або канвертаваўшы іх у "
+"іншы фармат"
+
+#: ../src/command/tool.cpp:83
+msgid "&Fonts Collector..."
+msgstr "&Зборшчык шрыфтоў..."
+
+#: ../src/command/tool.cpp:84 ../src/dialog_fonts_collector.cpp:218
+msgid "Fonts Collector"
+msgstr "Зборшчык шрыфтоў"
+
+#: ../src/command/tool.cpp:85
+msgid "Open fonts collector"
+msgstr "Адкрыць зборшчык шрыфтоў"
+
+#: ../src/command/tool.cpp:95
+msgid "S&elect Lines..."
+msgstr "&Выбраць радкі..."
+
+#: ../src/command/tool.cpp:96
+msgid "Select Lines"
+msgstr "Вылучыць радкі"
+
+#: ../src/command/tool.cpp:97
+msgid "Select lines based on defined criteria"
+msgstr "Вылучыць радкі на аснове вызначаных крытэрыяў"
+
+#: ../src/command/tool.cpp:107
+msgid "&Resample Resolution..."
+msgstr "&Пералічыць разрозненне..."
+
+#: ../src/command/tool.cpp:108 ../src/dialog_resample.cpp:90
+msgid "Resample Resolution"
+msgstr "Пералічыць разрозненне"
+
+#: ../src/command/tool.cpp:109
+msgid ""
+"Resample subtitles to maintain their current appearance at a different "
+"script resolution"
+msgstr ""
+"Пералічыць скрыпт субтытраў для падтрымкі бягучага знешняга выгляду ў іншым "
+"разрозненні"
+
+#: ../src/command/tool.cpp:122
+msgid "St&yling Assistant..."
+msgstr "&Памочнік стыляў..."
+
+#: ../src/command/tool.cpp:124
+msgid "Open styling assistant"
+msgstr "Адкрыць памочнік стыляў"
+
+#: ../src/command/tool.cpp:141 ../src/command/tool.cpp:225
+msgid "&Accept changes"
+msgstr "&Прыняць змены"
+
+#: ../src/command/tool.cpp:143 ../src/command/tool.cpp:227
+msgid "Commit changes and move to the next line"
+msgstr "Захаваць змены і перайсці да наступнага радка"
+
+#: ../src/command/tool.cpp:152 ../src/command/tool.cpp:236
+msgid "&Preview changes"
+msgstr "&Прагляд змен"
+
+#: ../src/command/tool.cpp:154 ../src/command/tool.cpp:238
+msgid "Commit changes and stay on the current line"
+msgstr "Захаваць змены і застацца на бягучым радку"
+
+#: ../src/command/tool.cpp:164
+msgid "&Styles Manager..."
+msgstr "Менеджар &стыляў..."
+
+#: ../src/command/tool.cpp:166
+msgid "Open the styles manager"
+msgstr "Адкрыць менеджар стыляў"
+
+#: ../src/command/tool.cpp:176
+msgid "&Kanji Timer..."
+msgstr "&Таймер кандзі"
+
+#: ../src/command/tool.cpp:177
+msgid "Kanji Timer"
+msgstr "Таймер кандзі"
+
+#: ../src/command/tool.cpp:178
+msgid "Open the Kanji timer copier"
+msgstr "Адкрыць таймер кандзі"
+
+#: ../src/command/tool.cpp:188
+msgid "&Timing Post-Processor..."
+msgstr "Пост-&апрацоўка таймінгу..."
+
+#: ../src/command/tool.cpp:190
+msgid ""
+"Post-process the subtitle timing to add lead-ins and lead-outs, snap timing "
+"to scene changes, etc."
+msgstr ""
+"Пост-апрацоўка таймінгу субтытраў: даданне ўступаў і канчаткаў, прывязванне "
+"таймінгу да змен сцэны і г.д."
+
+#: ../src/command/tool.cpp:200
+msgid "&Translation Assistant..."
+msgstr "Памочнік &перакладу..."
+
+#: ../src/command/tool.cpp:201 ../src/dialog_translation.cpp:64
+msgid "Translation Assistant"
+msgstr "Памочнік перакладу"
+
+#: ../src/command/tool.cpp:202
+msgid "Open translation assistant"
+msgstr "Адкрыць памочнік перакладу"
+
+#: ../src/command/tool.cpp:210
+msgid "There is nothing to translate in the file."
+msgstr "У гэтым файле няма чаго перакладаць"
+
+#: ../src/command/tool.cpp:247
+msgid "&Next Line"
+msgstr "&Наступны радок"
+
+#: ../src/command/tool.cpp:248 ../src/command/grid.cpp:51
+#: ../src/command/grid.cpp:52 ../src/command/grid.cpp:63
+#: ../src/command/grid.cpp:64 ../src/command/time.cpp:354
+#: ../src/command/time.cpp:355
+msgid "Next Line"
+msgstr "Наступны радок"
+
+#: ../src/command/tool.cpp:249
+msgid "Move to the next line without committing changes"
+msgstr "Перайсці да наступнага радка без захавання"
+
+#: ../src/command/tool.cpp:258
+msgid "&Previous Line"
+msgstr "&Папярэдні радок"
+
+#: ../src/command/tool.cpp:259 ../src/command/grid.cpp:90
+#: ../src/command/grid.cpp:91 ../src/command/time.cpp:366
+#: ../src/command/time.cpp:367
+msgid "Previous Line"
+msgstr "Папярэдні радок"
+
+#: ../src/command/tool.cpp:260
+msgid "Move to the previous line without committing changes"
+msgstr "Перайсці да папярэдняга радка без захавання"
+
+#: ../src/command/tool.cpp:270
+msgid "&Insert Original"
+msgstr "&Уставіць арыгінал"
+
+#: ../src/command/tool.cpp:272
+msgid "Insert the untranslated text"
+msgstr "Уставіць неперакладзены тэкст"
+
+#: ../src/command/app.cpp:58
+msgid "&About"
+msgstr "&Аб праграме"
+
+#: ../src/command/app.cpp:59
+msgid "About"
+msgstr "Аб праграме"
+
+#: ../src/command/app.cpp:60 ../src/dialog_about.cpp:44
+msgid "About Aegisub"
+msgstr "Аб Aegisub"
+
+#: ../src/command/app.cpp:69
+msgid "&Audio+Subs View"
+msgstr "&Паказваць аўдыя і субцітры"
+
+#: ../src/command/app.cpp:70
+msgid "Audio+Subs View"
+msgstr "Паказваць аўдыя і субцітры"
+
+#: ../src/command/app.cpp:71
+msgid "Display audio and the subtitles grid only"
+msgstr "Паказваць толькі аўдыя і сетку субтытраў"
+
+#: ../src/command/app.cpp:89
+msgid "&Full view"
+msgstr "&Паказваць усё"
+
+#: ../src/command/app.cpp:90
+msgid "Full view"
+msgstr "Паказваць усё"
+
+#: ../src/command/app.cpp:91
+msgid "Display audio, video and then subtitles grid"
+msgstr "Паказваць аўдыя, відэа і сетку субтытраў"
+
+#: ../src/command/app.cpp:109
+msgid "S&ubs Only View"
+msgstr "П&аказваць толькі субцітры"
+
+#: ../src/command/app.cpp:110
+msgid "Subs Only View"
+msgstr "Паказваць толькі субцітры"
+
+#: ../src/command/app.cpp:111
+msgid "Display the subtitles grid only"
+msgstr "Паказваць толькі сетку субтытраў"
+
+#: ../src/command/app.cpp:125
+msgid "&Video+Subs View"
+msgstr "&Паказваць відэа і субцітры"
+
+#: ../src/command/app.cpp:126
+msgid "Video+Subs View"
+msgstr "Паказваць відэа і субцітры"
+
+#: ../src/command/app.cpp:127
+msgid "Display video and the subtitles grid only"
+msgstr "Паказваць толькі відэа і сетку субтытраў"
+
+#: ../src/command/app.cpp:145
+msgid "E&xit"
+msgstr "&Выхад"
+
+#: ../src/command/app.cpp:146
+msgid "Exit"
+msgstr "Выйсці"
+
+#: ../src/command/app.cpp:147
+msgid "Exit the application"
+msgstr "Выйсці з праграмы"
+
+#: ../src/command/app.cpp:157
+msgid "&Language..."
+msgstr "&Мова"
+
+#: ../src/command/app.cpp:158
+msgid "Language"
+msgstr "Мова"
+
+#: ../src/command/app.cpp:159
+msgid "Select Aegisub interface language"
+msgstr "Выбраць мову інтэрфейса Aegisub"
+
+#: ../src/command/app.cpp:182
+msgid "&Log window"
+msgstr "&Журнал"
+
+#: ../src/command/app.cpp:183 ../src/dialog_log.cpp:99
+msgid "Log window"
+msgstr "Журнал"
+
+#: ../src/command/app.cpp:184
+msgid "View the event log"
+msgstr "Прагляд журнала падзей"
+
+#: ../src/command/app.cpp:194
+msgid "New &Window"
+msgstr "Новае &акно"
+
+#: ../src/command/app.cpp:195
+msgid "New Window"
+msgstr "Новае акно"
+
+#: ../src/command/app.cpp:196
+msgid "Open a new application window"
+msgstr "Адкрыць новае акно праграмы"
+
+#: ../src/command/app.cpp:206
+msgid "&Options..."
+msgstr "&Налады..."
+
+#: ../src/command/app.cpp:208
+msgid "Configure Aegisub"
+msgstr "Налады"
+
+#: ../src/command/app.cpp:222 ../src/command/app.cpp:223
+msgid "Toggle global hotkey overrides"
+msgstr "Уключыць глабальныя перавызначэнні гарачых клавіш"
+
+#: ../src/command/app.cpp:224
+msgid "Toggle global hotkey overrides (Medusa Mode)"
+msgstr "Уключыць глабальныя перавызначэнні гарачых клавіш (Medusa Mode)"
+
+#: ../src/command/app.cpp:239
+msgid "Toggle the main toolbar"
+msgstr "Пераключыць бачнасць галоўнай панэлі інструментаў"
+
+#: ../src/command/app.cpp:244
+msgid "Hide Toolbar"
+msgstr "Хаваць панэль інструментаў"
+
+#: ../src/command/app.cpp:245
+msgid "Show Toolbar"
+msgstr "Паказваць панэль інструментаў"
+
+#: ../src/command/app.cpp:260
+msgid "&Check for Updates..."
+msgstr "&Праверыць абнаўленні"
+
+#: ../src/command/app.cpp:261
+msgid "Check for Updates"
+msgstr "Праверыць абнаўленні"
+
+#: ../src/command/app.cpp:262
+msgid "Check to see if there is a new version of Aegisub available"
+msgstr "Праверыць, ці даступна новая версія Aegisub"
+
+#: ../src/command/grid.cpp:53
+msgid "Move to the next subtitle line"
+msgstr "Перайсці да наступнага радка субтытраў"
+
+#: ../src/command/grid.cpp:65
+msgid "Move to the next subtitle line, creating a new one if needed"
+msgstr "Перайсці да наступнага радка субтытраў, калі яго няма — стварыць новы"
+
+#: ../src/command/grid.cpp:92
+msgid "Move to the previous line"
+msgstr "Перайсці да наступнага радка"
+
+#: ../src/command/grid.cpp:101 ../src/command/grid.cpp:121
+msgid "&Actor Name"
+msgstr "&Акцёр"
+
+#: ../src/command/grid.cpp:102 ../src/command/grid.cpp:122
+msgid "Actor Name"
+msgstr "Акцёр"
+
+#: ../src/command/grid.cpp:103
+msgid "Sort all subtitles by their actor names"
+msgstr "Сартаваць усе субтытры па імёнах акцёраў"
+
+#: ../src/command/grid.cpp:107 ../src/command/grid.cpp:127
+#: ../src/command/grid.cpp:139 ../src/command/grid.cpp:151
+#: ../src/command/grid.cpp:163 ../src/command/grid.cpp:175
+#: ../src/command/grid.cpp:187 ../src/command/grid.cpp:199
+#: ../src/command/grid.cpp:211 ../src/command/grid.cpp:223
+#: ../src/command/grid.cpp:235 ../src/command/grid.cpp:247
+msgid "sort"
+msgstr "сартаваць"
+
+#: ../src/command/grid.cpp:123
+msgid "Sort selected subtitles by their actor names"
+msgstr "Сартаваць вылучаныя субтытры па імёнах акцёраў"
+
+#: ../src/command/grid.cpp:133 ../src/command/grid.cpp:145
+#: ../src/dialog_search_replace.cpp:87
+msgid "&Effect"
+msgstr "&Эфект"
+
+#: ../src/command/grid.cpp:134 ../src/command/grid.cpp:146
+#: ../src/dialog_paste_over.cpp:72 ../src/subs_edit_box.cpp:145
+#: ../src/grid_column.cpp:191 ../src/grid_column.cpp:192
+msgid "Effect"
+msgstr "Эфект"
+
+#: ../src/command/grid.cpp:135
+msgid "Sort all subtitles by their effects"
+msgstr "Сартаваць усе субтытры па эфектах"
+
+#: ../src/command/grid.cpp:147
+msgid "Sort selected subtitles by their effects"
+msgstr "Сартаваць вылучаныя субтытры па эфектах"
+
+#: ../src/command/grid.cpp:157 ../src/command/grid.cpp:169
+msgid "&End Time"
+msgstr "Час &канчатка"
+
+#: ../src/command/grid.cpp:158 ../src/command/grid.cpp:170
+#: ../src/dialog_paste_over.cpp:66 ../src/grid_column.cpp:147
+msgid "End Time"
+msgstr "Час канчатка"
+
+#: ../src/command/grid.cpp:159
+msgid "Sort all subtitles by their end times"
+msgstr "Сартаваць усе субтытры па часу заканчэння"
+
+#: ../src/command/grid.cpp:171
+msgid "Sort selected subtitles by their end times"
+msgstr "Сартаваць вылучаныя субтытры па канчатковаму часу"
+
+#: ../src/command/grid.cpp:181 ../src/command/grid.cpp:193
+msgid "&Layer"
+msgstr "&Слой"
+
+#: ../src/command/grid.cpp:182 ../src/command/grid.cpp:194
+#: ../src/dialog_paste_over.cpp:64 ../src/grid_column.cpp:107
+msgid "Layer"
+msgstr "Слой"
+
+#: ../src/command/grid.cpp:183
+msgid "Sort all subtitles by their layer number"
+msgstr "Сартаваць усе субтытры па нумару слоя"
+
+#: ../src/command/grid.cpp:195
+msgid "Sort selected subtitles by their layer number"
+msgstr "Сартаваць вылучаныя субтытры па нумару слоя"
+
+#: ../src/command/grid.cpp:205 ../src/command/grid.cpp:217
+msgid "&Start Time"
+msgstr "Час &пачатка"
+
+#: ../src/command/grid.cpp:206 ../src/command/grid.cpp:218
+#: ../src/dialog_paste_over.cpp:65 ../src/grid_column.cpp:129
+msgid "Start Time"
+msgstr "Час пачатка"
+
+#: ../src/command/grid.cpp:207
+msgid "Sort all subtitles by their start times"
+msgstr "Сартаваць усе субтытры па часу пачатку"
+
+#: ../src/command/grid.cpp:219
+msgid "Sort selected subtitles by their start times"
+msgstr "Сартаваць вылучаныя субтытры па пачатковаму часу"
+
+#: ../src/command/grid.cpp:229 ../src/command/grid.cpp:241
+msgid "St&yle Name"
+msgstr "&Стыль"
+
+#: ../src/command/grid.cpp:230 ../src/command/grid.cpp:242
+#: ../src/dialog_style_editor.cpp:177
+msgid "Style Name"
+msgstr "Стыль"
+
+#: ../src/command/grid.cpp:231
+msgid "Sort all subtitles by their style names"
+msgstr "Сартаваць усе субтытры па назвах стыляў"
+
+#: ../src/command/grid.cpp:243
+msgid "Sort selected subtitles by their style names"
+msgstr "Сартаваць вылучаныя субтытры па назвам стыляў"
+
+#: ../src/command/grid.cpp:254 ../src/command/grid.cpp:255
+msgid "Cycle Tag Hiding Mode"
+msgstr "Рэжым паказу тэгаў"
+
+#: ../src/command/grid.cpp:256
+msgid "Cycle through tag hiding modes"
+msgstr "Пераключыць рэжым паказу тэгаў"
+
+#: ../src/command/grid.cpp:266
+msgid "ASS Override Tag mode set to show full tags."
+msgstr "Рэжым ASS-тэгаў зададзены на паказ поўных тэгаў."
+
+#: ../src/command/grid.cpp:267
+msgid "ASS Override Tag mode set to simplify tags."
+msgstr "Рэжым ASS-тэгаў зададзены на спрашчэнне тэгаў."
+
+#: ../src/command/grid.cpp:268
+msgid "ASS Override Tag mode set to hide tags."
+msgstr "Рэжым ASS-тэгаў зададзены на хаванне тэгаў."
+
+#: ../src/command/grid.cpp:278
+msgid "&Hide Tags"
+msgstr "&Хаваць тэгі"
+
+#: ../src/command/grid.cpp:279
+msgid "Hide Tags"
+msgstr "Хаваць тэгі"
+
+#: ../src/command/grid.cpp:280
+msgid "Hide override tags in the subtitle grid"
+msgstr "Не паказваць тэгі ў сетцы субтытраў"
+
+#: ../src/command/grid.cpp:294
+msgid "Sh&ow Tags"
+msgstr "Па&казваць тэгі"
+
+#: ../src/command/grid.cpp:295
+msgid "Show Tags"
+msgstr "Паказваць тэгі"
+
+#: ../src/command/grid.cpp:296
+msgid "Show full override tags in the subtitle grid"
+msgstr "Паказваць поўныя тэгі ў сетцы субтытраў"
+
+#: ../src/command/grid.cpp:310
+msgid "S&implify Tags"
+msgstr "С&прашчаць тэгі"
+
+#: ../src/command/grid.cpp:311
+msgid "Simplify Tags"
+msgstr "Спрашчаць тэгі"
+
+#: ../src/command/grid.cpp:312
+msgid ""
+"Replace override tags in the subtitle grid with a simplified placeholder"
+msgstr "Замяняць поўныя тэгі ў сетцы субтытраў на спецыяльныя сімвалы"
+
+#: ../src/command/grid.cpp:348 ../src/command/grid.cpp:349
+msgid "Move line up"
+msgstr "Перамясціць радок вышэй"
+
+#: ../src/command/grid.cpp:350
+msgid "Move the selected lines up one row"
+msgstr "Перамясціць вылучаныя радкі на адзін рад вышэй"
+
+#: ../src/command/grid.cpp:359 ../src/command/grid.cpp:376
+msgid "move lines"
+msgstr "перамяшчэнне радкоў"
+
+#: ../src/command/grid.cpp:365 ../src/command/grid.cpp:366
+msgid "Move line down"
+msgstr "Перамясціць радок ніжэй"
+
+#: ../src/command/grid.cpp:367
+msgid "Move the selected lines down one row"
+msgstr "Перамясціць вылучаныя радкі на адзін рад ніжэй"
+
+#: ../src/command/grid.cpp:383 ../src/command/grid.cpp:384
+msgid "Swap Lines"
+msgstr "Памяняць месцамі радкі"
+
+#: ../src/command/grid.cpp:385
+msgid "Swap the two selected lines"
+msgstr "Памяняць месцамі два вылучаных радка"
+
+#: ../src/command/grid.cpp:396
+msgid "swap lines"
+msgstr "памяняць месцамі радкі"
+
+#: ../src/command/automation.cpp:48
+msgid "&Reload Automation scripts"
+msgstr "&Перазагрузіць усе скрыпты аўтаматызацыі"
+
+#: ../src/command/automation.cpp:49
+msgid "Reload Automation scripts"
+msgstr "Перазагрузіць усе скрыпты аўтаматызацыі"
+
+#: ../src/command/automation.cpp:50
+msgid "Reload all Automation scripts and rescan the autoload folder"
+msgstr ""
+"Перазагрузіць усе скрыпты аўтаматызацыі і перасканаваць папку аўтазагрузкі"
+
+#: ../src/command/automation.cpp:55
+msgid "Reloaded all Automation scripts"
+msgstr "Перазагружаны ўсе скрыпты аўтаматызацыі"
+
+#: ../src/command/automation.cpp:61
+msgid "R&eload autoload Automation scripts"
+msgstr "Перазагрузіць аўтаматычна загружаныя скрыпты аўтаматызацыі"
+
+#: ../src/command/automation.cpp:62
+msgid "Reload autoload Automation scripts"
+msgstr "Перазагрузіць аўтаматычна загружаныя скрыпты аўтаматызацыі"
+
+#: ../src/command/automation.cpp:63
+msgid "Rescan the Automation autoload folder"
+msgstr "Перасканаваць папку аўтазагрузкі аўтаматызацыі"
+
+#: ../src/command/automation.cpp:67
+msgid "Reloaded autoload Automation scripts"
+msgstr "Скрыпты аўтаматызацыі для аўтазагрузкі перазагружаны"
+
+#: ../src/command/automation.cpp:74 ../src/command/automation.cpp:86
+msgid "&Automation..."
+msgstr "&Аўтаматызацыя..."
+
+#: ../src/command/automation.cpp:75 ../src/command/automation.cpp:87
+#: ../src/preferences.cpp:314
+msgid "Automation"
+msgstr "Аўтаматызацыя"
+
+#: ../src/command/automation.cpp:76
+msgid "Open automation manager"
+msgstr "Адкрыць менеджар аўтаматызацыі"
+
+#: ../src/command/automation.cpp:88
+msgid ""
+"Open automation manager. Ctrl: Rescan autoload folder. Ctrl+Shift: Rescan "
+"autoload folder and reload all automation scripts"
+msgstr ""
+"Адкрыць менеджар аўтаматызацыі. Ctrl: Перасканаваць папку аўтазагрузкі "
+"аўтаматызацыі. Ctrl+Shift: Перасканаваць папку аўтазагрузкі аўтаматызацыі і "
+"перазагрузіць усе скрыпты аўтаматызацыі"
+
+#: ../src/command/time.cpp:99
+msgid "adjoin"
+msgstr "аб'яднанне"
+
+#: ../src/command/time.cpp:104
+msgid "Change &End"
+msgstr "Змяніць &канец"
+
+#: ../src/command/time.cpp:105
+msgid "Change End"
+msgstr "Змяніць канец"
+
+#: ../src/command/time.cpp:106
+msgid "Change end times of lines to the next line's start time"
+msgstr "Змяніць час канца радка на час пачатку наступнага радка"
+
+#: ../src/command/time.cpp:115
+msgid "Change &Start"
+msgstr "Змяніць &пачатак"
+
+#: ../src/command/time.cpp:116
+msgid "Change Start"
+msgstr "Змяніць пачатак"
+
+#: ../src/command/time.cpp:117
+msgid "Change start times of lines to the previous line's end time"
+msgstr "Змяніць час пачатку радка на час канца папярэдняга радка"
+
+#: ../src/command/time.cpp:127
+msgid "Shift to &Current Frame"
+msgstr "Зрушэнне да &бягучага кадра"
+
+#: ../src/command/time.cpp:128
+msgid "Shift to Current Frame"
+msgstr "Зрушэнне да бягучага кадра"
+
+#: ../src/command/time.cpp:129
+msgid "Shift selection so that the active line starts at current frame"
+msgstr ""
+"Ссунуць вылучэнне так, каб першы вылучаны радок пачынаўся з бягучага кадра"
+
+#: ../src/command/time.cpp:145
+msgid "shift to frame"
+msgstr "зрух да кадра"
+
+#: ../src/command/time.cpp:152
+msgid "S&hift Times..."
+msgstr "З&рух па часу..."
+
+#: ../src/command/time.cpp:154
+msgid "Shift subtitles by time or frames"
+msgstr "Зрух субтытраў па часу або кадрах"
+
+#: ../src/command/time.cpp:175 ../src/audio_timing_dialogue.cpp:512
+#: ../src/audio_timing_dialogue.cpp:518
+msgid "timing"
+msgstr "таймінг"
+
+#: ../src/command/time.cpp:181
+msgid "Snap &End to Video"
+msgstr "Прывязванне &канца па відэа"
+
+#: ../src/command/time.cpp:182
+msgid "Snap End to Video"
+msgstr "Прывязванне канца па відэа"
+
+#: ../src/command/time.cpp:183
+msgid "Set end of selected subtitles to current video frame"
+msgstr "Задаць канец вылучаных субтытраў на бягучы кадр відэа"
+
+#: ../src/command/time.cpp:193
+msgid "Snap to S&cene"
+msgstr "Прывязванне да с&цэны"
+
+#: ../src/command/time.cpp:194
+msgid "Snap to Scene"
+msgstr "Прывязванне да сцэны"
+
+#: ../src/command/time.cpp:195
+msgid ""
+"Set start and end of subtitles to the keyframes around current video frame"
+msgstr ""
+"Задаць пачатак і канец субтытраў на ключкадры па абодва бакі ад бягучага "
+"кадра відэа"
+
+#: ../src/command/time.cpp:232
+msgid "snap to scene"
+msgstr "прывязванне да сцэны"
+
+#: ../src/command/time.cpp:238 ../src/command/time.cpp:239
+msgid "Add lead in and out"
+msgstr "Дадаць уступ і канчатак"
+
+#: ../src/command/time.cpp:240
+msgid "Add both lead in and out to the selected lines"
+msgstr "Дадаць уступ і канчатак да вылучаных радкоў"
+
+#: ../src/command/time.cpp:252 ../src/command/time.cpp:253
+msgid "Add lead in"
+msgstr "Дадаць уступ"
+
+#: ../src/command/time.cpp:254
+msgid "Add the lead in time to the selected lines"
+msgstr "Дадаць час на ўступ да вылучаных радкоў"
+
+#: ../src/command/time.cpp:264 ../src/command/time.cpp:265
+msgid "Add lead out"
+msgstr "Дадаць канчатак"
+
+#: ../src/command/time.cpp:266
+msgid "Add the lead out time to the selected lines"
+msgstr "Дадаць час на канчатак да вылучаных радкоў"
+
+#: ../src/command/time.cpp:275 ../src/command/time.cpp:276
+msgid "Increase length"
+msgstr "Павялічыць даўжыню"
+
+#: ../src/command/time.cpp:277
+msgid "Increase the length of the current timing unit"
+msgstr "Павялічыць даўжыню бягучай частцы таймінгу"
+
+#: ../src/command/time.cpp:286 ../src/command/time.cpp:287
+msgid "Increase length and shift"
+msgstr "Павялічыць даўжыню і ссунуць"
+
+#: ../src/command/time.cpp:288
+msgid ""
+"Increase the length of the current timing unit and shift the following items"
+msgstr ""
+"Павялічыць даўжыню бягучай частцы таймінга і ссунуць наступныя элементы"
+
+#: ../src/command/time.cpp:297 ../src/command/time.cpp:298
+msgid "Decrease length"
+msgstr "Паменшыць даўжыню"
+
+#: ../src/command/time.cpp:299
+msgid "Decrease the length of the current timing unit"
+msgstr "Паменшыць даўжыню бягучай частцы таймінгу"
+
+#: ../src/command/time.cpp:308 ../src/command/time.cpp:309
+msgid "Decrease length and shift"
+msgstr "Паменшыць даўжыню і ссунуць"
+
+#: ../src/command/time.cpp:310
+msgid ""
+"Decrease the length of the current timing unit and shift the following items"
+msgstr ""
+"Паменшыць даўжыню бягучай частцы таймінга і ссунуць наступныя элементы"
+
+#: ../src/command/time.cpp:319 ../src/command/time.cpp:320
+msgid "Shift start time forward"
+msgstr "Ссунуць наперад час пачатку"
+
+#: ../src/command/time.cpp:321
+msgid "Shift the start time of the current timing unit forward"
+msgstr "Ссунуць наперад час пачатку бягучай частцы таймінга"
+
+#: ../src/command/time.cpp:330 ../src/command/time.cpp:331
+msgid "Shift start time backward"
+msgstr "Ссунуць назад час пачатку"
+
+#: ../src/command/time.cpp:332
+msgid "Shift the start time of the current timing unit backward"
+msgstr "Ссунуць назад час пачатку бягучай частцы таймінга"
+
+#: ../src/command/time.cpp:342
+msgid "Snap &Start to Video"
+msgstr "Прывязванне &пачатку па відэа"
+
+#: ../src/command/time.cpp:343
+msgid "Snap Start to Video"
+msgstr "Прывязванне пачатку па відэа"
+
+#: ../src/command/time.cpp:344
+msgid "Set start of selected subtitles to current video frame"
+msgstr "Задаць пачатак вылучаных субтытраў на бягучы кадр відэа"
+
+#: ../src/command/time.cpp:356
+msgid "Next line or syllable"
+msgstr "Наступны радок або склад"
+
+#: ../src/command/time.cpp:368
+msgid "Previous line or syllable"
+msgstr "Папярэдні радок або склад"
+
+#: ../src/command/vis_tool.cpp:56 ../src/command/vis_tool.cpp:57
+msgid "Standard"
+msgstr "Стандартны"
+
+#: ../src/command/vis_tool.cpp:58
+msgid "Standard mode, double click sets position"
+msgstr "Рэжым вымярэння каардынат"
+
+#: ../src/command/vis_tool.cpp:64 ../src/command/vis_tool.cpp:65
+#: ../src/visual_tool_vector_clip.cpp:57
+msgid "Drag"
+msgstr "Перамясціць"
+
+#: ../src/command/vis_tool.cpp:66
+msgid "Drag subtitles"
+msgstr "Перамясціць субтытры"
+
+#: ../src/command/vis_tool.cpp:72 ../src/command/vis_tool.cpp:73
+msgid "Rotate Z"
+msgstr "Паварот па вось Z"
+
+#: ../src/command/vis_tool.cpp:74
+msgid "Rotate subtitles on their Z axis"
+msgstr "Павярнуць субтытры па восі Z"
+
+#: ../src/command/vis_tool.cpp:80 ../src/command/vis_tool.cpp:81
+msgid "Rotate XY"
+msgstr "Паварот па восях X і Y"
+
+#: ../src/command/vis_tool.cpp:82
+msgid "Rotate subtitles on their X and Y axes"
+msgstr "Павярнуць субтытры па восях X і Y"
+
+#: ../src/command/vis_tool.cpp:88 ../src/command/vis_tool.cpp:89
+msgid "Scale"
+msgstr "Маштаб"
+
+#: ../src/command/vis_tool.cpp:90
+msgid "Scale subtitles on X and Y axes"
+msgstr "Маштаб субтытраў па восях X і Y"
+
+#: ../src/command/vis_tool.cpp:96 ../src/command/vis_tool.cpp:97
+msgid "Clip"
+msgstr "Абрэзка"
+
+#: ../src/command/vis_tool.cpp:98
+msgid "Clip subtitles to a rectangle"
+msgstr "Абрэзаць субтытры прамавугольнай вобласцю"
+
+#: ../src/command/vis_tool.cpp:104 ../src/command/vis_tool.cpp:105
+msgid "Vector Clip"
+msgstr "Вектарная абрэзка"
+
+#: ../src/command/vis_tool.cpp:106
+msgid "Clip subtitles to a vectorial area"
+msgstr "Абрэзаць субтытры вектарнай вобласцю"
+
+#: ../src/command/audio.cpp:65
+msgid "&Close Audio"
+msgstr "&Закрыць аўдыя"
+
+#: ../src/command/audio.cpp:66
+msgid "Close Audio"
+msgstr "Закрыць аўдыя"
+
+#: ../src/command/audio.cpp:67
+msgid "Close the currently open audio file"
+msgstr "Закрыць бягучы адкрыты аўдыяфайл"
+
+#: ../src/command/audio.cpp:77
+msgid "&Open Audio File..."
+msgstr "&Адкрыць аўдыяфайл..."
+
+#: ../src/command/audio.cpp:78 ../src/command/audio.cpp:85
+msgid "Open Audio File"
+msgstr "Адкрыць аўдыяфайл"
+
+#: ../src/command/audio.cpp:79
+msgid "Open an audio file"
+msgstr "Адкрыць аўдыяфайл"
+
+#: ../src/command/audio.cpp:82
+msgid "Audio Formats"
+msgstr "Фарматы аўдыя"
+
+#: ../src/command/audio.cpp:93 ../src/command/audio.cpp:94
+msgid "Open 2h30 Blank Audio"
+msgstr "Адкрыць пусты аўдыятрэк на 2 гадз 30 хв"
+
+#: ../src/command/audio.cpp:95
+msgid "Open a 150 minutes blank audio clip, for debugging"
+msgstr "Адкрыць пусты аўдыятрэк на 150 хв; для адладкі"
+
+#: ../src/command/audio.cpp:104 ../src/command/audio.cpp:105
+msgid "Open 2h30 Noise Audio"
+msgstr "Адкрыць аўдыятрэк шуму на 2 гадз 30 хв"
+
+#: ../src/command/audio.cpp:106
+msgid "Open a 150 minutes noise-filled audio clip, for debugging"
+msgstr "Адкрыць запоўнены шумам аўдыятрэк на 150 хв; для адладкі"
+
+#: ../src/command/audio.cpp:116
+msgid "Open Audio from &Video"
+msgstr "Адкрыць аўдыя з &відэа"
+
+#: ../src/command/audio.cpp:117
+msgid "Open Audio from Video"
+msgstr "Адкрыць аўдыя з відэа"
+
+#: ../src/command/audio.cpp:118
+msgid "Open the audio from the current video file"
+msgstr "Адкрыць аўдыя з бягучага відэафайла"
+
+#: ../src/command/audio.cpp:132
+msgid "&Spectrum Display"
+msgstr "&Спектраграма"
+
+#: ../src/command/audio.cpp:133
+msgid "Spectrum Display"
+msgstr "Спектраграма"
+
+#: ../src/command/audio.cpp:134
+msgid "Display audio as a frequency-power spectrograph"
+msgstr "Паказваць аўдыя як спектаграму па частаце-амплітудзе"
+
+#: ../src/command/audio.cpp:148
+msgid "&Waveform Display"
+msgstr "&Асцылаграма"
+
+#: ../src/command/audio.cpp:149
+msgid "Waveform Display"
+msgstr "Асцылаграма"
+
+#: ../src/command/audio.cpp:150
+msgid "Display audio as a linear amplitude graph"
+msgstr "Паказваць аўдыя як лінейны графік амплітуды"
+
+#: ../src/command/audio.cpp:187 ../src/command/audio.cpp:188
+msgid "Create audio clip"
+msgstr "Стварыць адрэзак аўдыя"
+
+#: ../src/command/audio.cpp:189
+msgid "Save an audio clip of the selected line"
+msgstr "Стварыць адрэзак аўдыя на аснове вылучаных радкоў"
+
+#: ../src/command/audio.cpp:200
+msgid "Save audio clip"
+msgstr "Захаваць адрэзак аўдыя"
+
+#: ../src/command/audio.cpp:247 ../src/command/audio.cpp:248
+msgid "Play current audio selection"
+msgstr "Прайграць бягучае вылучанае аўдыя"
+
+#: ../src/command/audio.cpp:249
+msgid "Play the current audio selection, ignoring changes made while playing"
+msgstr ""
+"Прайграць аўдыя ў бягучым вылучэнні без ўліку праведзеных у працэсе "
+"змяненняў"
+
+#: ../src/command/audio.cpp:262
+msgid "Play the audio for the current line"
+msgstr "Прайграць аўдыя, пачынаючы з бягучага радка"
+
+#: ../src/command/audio.cpp:275 ../src/command/audio.cpp:276
+msgid "Play audio selection"
+msgstr "Прайграць вылучанае аўдыя"
+
+#: ../src/command/audio.cpp:277
+msgid "Play audio until the end of the selection is reached"
+msgstr "Прайграць аўдыя да канца вылучэння"
+
+#: ../src/command/audio.cpp:287 ../src/command/audio.cpp:288
+msgid "Play audio selection or stop"
+msgstr "Прайграць аўдыя ў вылучэнні або спыніць"
+
+#: ../src/command/audio.cpp:289
+msgid "Play selection, or stop playback if it's already playing"
+msgstr "Прайграць вылучэнне або спыніць, калі прайграваецца"
+
+#: ../src/command/audio.cpp:304 ../src/command/audio.cpp:305
+msgid "Stop playing"
+msgstr "Спыніць прайграванне"
+
+#: ../src/command/audio.cpp:306
+msgid "Stop audio and video playback"
+msgstr "Спыніць прайграванне адўыя і відэа"
+
+#: ../src/command/audio.cpp:322 ../src/command/audio.cpp:323
+#: ../src/command/audio.cpp:324
+msgid "Play 500 ms before selection"
+msgstr "Прайграць 500 мс перад вылучэннем"
+
+#: ../src/command/audio.cpp:336 ../src/command/audio.cpp:337
+#: ../src/command/audio.cpp:338
+msgid "Play 500 ms after selection"
+msgstr "Прайграць 500 мс пасля вылучэння"
+
+#: ../src/command/audio.cpp:350 ../src/command/audio.cpp:351
+#: ../src/command/audio.cpp:352
+msgid "Play last 500 ms of selection"
+msgstr "Прайграць апошнія 500 мс вылучэння"
+
+#: ../src/command/audio.cpp:364 ../src/command/audio.cpp:365
+#: ../src/command/audio.cpp:366
+msgid "Play first 500 ms of selection"
+msgstr "Прайграць першыя 500 мс вылучэння"
+
+#: ../src/command/audio.cpp:380 ../src/command/audio.cpp:381
+#: ../src/command/audio.cpp:382
+msgid "Play from selection start to end of file"
+msgstr "Прайграць ад пачатку вылучэння да канца файла"
+
+#: ../src/command/audio.cpp:393 ../src/command/audio.cpp:394
+msgid "Commit"
+msgstr "Захаваць"
+
+#: ../src/command/audio.cpp:395
+msgid "Commit any pending audio timing changes"
+msgstr "Захаваць усе адкладзеныя змены таймінга аўдыя"
+
+#: ../src/command/audio.cpp:409 ../src/command/audio.cpp:410
+msgid "Commit and use default timing for next line"
+msgstr ""
+"Захаваць, але выкарыстоўваць таймінг па змаўчанні для наступнага радка"
+
+#: ../src/command/audio.cpp:411
+msgid ""
+"Commit any pending audio timing changes and reset the next line's times to "
+"the default"
+msgstr ""
+"Захаваць усе адкладзеныя змены таймінга аўдыя і скінуць таймінг наступнага "
+"радка да значэнняў па змаўчанні"
+
+#: ../src/command/audio.cpp:424 ../src/command/audio.cpp:425
+msgid "Commit and move to next line"
+msgstr "Захаваць і перайсці да наступнага радка"
+
+#: ../src/command/audio.cpp:426
+msgid "Commit any pending audio timing changes and move to the next line"
+msgstr ""
+"Захаваць усе адкладзеныя змены таймінга аўдыя і перайсці да наступнага радка"
+
+#: ../src/command/audio.cpp:439 ../src/command/audio.cpp:440
+msgid "Commit and stay on current line"
+msgstr "Захаваць і застацца на бягучым радку"
+
+#: ../src/command/audio.cpp:441
+msgid "Commit any pending audio timing changes and stay on the current line"
+msgstr ""
+"Захаваць усе адкладзеныя змены таймінга аўдыя і застацца на бягучым радку"
+
+#: ../src/command/audio.cpp:452 ../src/command/audio.cpp:453
+msgid "Go to selection"
+msgstr "Перайсці да вылучэння"
+
+#: ../src/command/audio.cpp:454
+msgid "Scroll the audio display to center on the current audio selection"
+msgstr ""
+"Праматаць акно аўдыя, каб выраўнаваць па цэнтры бягучае вылучэнне аўдыя"
+
+#: ../src/command/audio.cpp:463 ../src/command/audio.cpp:464
+msgid "Scroll left"
+msgstr "Прагартаць налева"
+
+#: ../src/command/audio.cpp:465
+msgid "Scroll the audio display left"
+msgstr "Праматаць акно аўдыя ўлева"
+
+#: ../src/command/audio.cpp:474 ../src/command/audio.cpp:475
+msgid "Scroll right"
+msgstr "Прагартаць направа"
+
+#: ../src/command/audio.cpp:476
+msgid "Scroll the audio display right"
+msgstr "Праматаць акно аўдыя ўправа"
+
+#: ../src/command/audio.cpp:490 ../src/command/audio.cpp:491
+#: ../src/command/audio.cpp:492
+msgid "Auto scroll audio display to selected line"
+msgstr "Аўтаматычна праматваць акно аўдыя да вылучанага радка"
+
+#: ../src/command/audio.cpp:507 ../src/command/audio.cpp:508
+#: ../src/command/audio.cpp:509
+msgid "Automatically commit all changes"
+msgstr "Аўтаматычна захоўваць усе змены"
+
+#: ../src/command/audio.cpp:524 ../src/command/audio.cpp:525
+msgid "Auto go to next line on commit"
+msgstr "Аўтапераход на наступны радок пры захаванні"
+
+#: ../src/command/audio.cpp:526
+msgid "Automatically go to next line on commit"
+msgstr "Аўтаматычна пераходзіць на наступны радок пры захаванні"
+
+#: ../src/command/audio.cpp:541 ../src/command/audio.cpp:542
+#: ../src/command/audio.cpp:543
+msgid "Spectrum analyzer mode"
+msgstr "Рэжым паказу аўдыятрэка"
+
+#: ../src/command/audio.cpp:558 ../src/command/audio.cpp:559
+#: ../src/command/audio.cpp:560
+msgid "Link vertical zoom and volume sliders"
+msgstr "Звязаць паўзункі вертыкальнага маштабу і гучнасці"
+
+#: ../src/command/audio.cpp:575 ../src/command/audio.cpp:576
+#: ../src/command/audio.cpp:577
+msgid "Toggle karaoke mode"
+msgstr "Выбар паміж звычайным рэжымам і караоке"
+
+#: ../src/command/help.cpp:48
+msgid "&Bug Tracker..."
+msgstr "&Адсочванне памылак..."
+
+#: ../src/command/help.cpp:49
+msgid "Bug Tracker"
+msgstr "Адсочванне памылак"
+
+#: ../src/command/help.cpp:50
+msgid "Visit Aegisub's bug tracker to report bugs and request new features"
+msgstr "Паведаміць пра памылкі і прапанаваць новыя функцыі для Aegisub"
+
+#: ../src/command/help.cpp:69
+msgid "&Contents"
+msgstr "&Выклік даведкі"
+
+#: ../src/command/help.cpp:70
+msgid "Contents"
+msgstr "Выклік даведкі"
+
+#: ../src/command/help.cpp:71
+msgid "Help topics"
+msgstr "Раздзелы дапамогі"
+
+#: ../src/command/help.cpp:81
+msgid "&Forums"
+msgstr "&Форум"
+
+#: ../src/command/help.cpp:82
+msgid "Forums"
+msgstr "Форум"
+
+#: ../src/command/help.cpp:83
+msgid "Visit Aegisub's forums"
+msgstr "Перайсці на форум Aegisub"
+
+#: ../src/command/help.cpp:93
+msgid "&IRC Channel"
+msgstr "&IRC-канал"
+
+#: ../src/command/help.cpp:94
+msgid "IRC Channel"
+msgstr "IRC-канал"
+
+#: ../src/command/help.cpp:95
+msgid "Visit Aegisub's official IRC channel"
+msgstr "Перайсці на афіцыйны IRC-канал Aegisub"
+
+#: ../src/command/help.cpp:105
+msgid "&Visual Typesetting"
+msgstr "&Візуальнае афармленне"
+
+#: ../src/command/help.cpp:106
+msgid "Visual Typesetting"
+msgstr "Візуальнае афармленне"
+
+#: ../src/command/help.cpp:107
+msgid "Open the manual page for Visual Typesetting"
+msgstr "Адкрыць дакументацыю па сродках візуальнага афармлення"
+
+#: ../src/command/help.cpp:117
+msgid "&Website"
+msgstr "&Сайт"
+
+#: ../src/command/help.cpp:118
+msgid "Website"
+msgstr "Сайт"
+
+#: ../src/command/help.cpp:119
+msgid "Visit Aegisub's official website"
+msgstr "Наведаць афіцыйны сайт Aegisub"
+
+#: ../src/command/keyframe.cpp:49 ../src/command/keyframe.cpp:50
+msgid "Close Keyframes"
+msgstr "Закрыць ключкадры"
+
+#: ../src/command/keyframe.cpp:51
+msgid ""
+"Discard the currently loaded keyframes and use those from the video, if any"
+msgstr ""
+"Выдаліць бягучыя загружаныя ключкадры і выкарыстоўваць ключкадры з відэа, "
+"пры наяўнасці"
+
+#: ../src/command/keyframe.cpp:66
+msgid "Open Keyframes..."
+msgstr "Адкрыць файл з ключкадрамі"
+
+#: ../src/command/keyframe.cpp:67
+msgid "Open Keyframes"
+msgstr "Адкрыць ключкадры"
+
+#: ../src/command/keyframe.cpp:68
+msgid "Open a keyframe list file"
+msgstr "Адкрыць файл са спісам ключкадраў"
+
+#: ../src/command/keyframe.cpp:72
+msgid "Open keyframes file"
+msgstr "Адкрыць файл з ключкадрамі"
+
+#: ../src/command/keyframe.cpp:85
+msgid "Save Keyframes..."
+msgstr "Захаваць ключкадры"
+
+#: ../src/command/keyframe.cpp:86
+msgid "Save Keyframes"
+msgstr "Захаваць ключкадры"
+
+#: ../src/command/keyframe.cpp:87
+msgid "Save the current list of keyframes to a file"
+msgstr "Захаваць бягучы спіс ключкадраў у файл"
+
+#: ../src/command/keyframe.cpp:95
+msgid "Save keyframes file"
+msgstr "Захаваць файл з ключкадрамі"
+
+#: ../src/dialog_selected_choices.cpp:33 ../src/dialog_export.cpp:126
+msgid "Select &None"
+msgstr "&Нічога"
+
+#: ../src/subtitles_provider_libass.cpp:112
+msgid "Updating font index"
+msgstr "Абнаўленне спісу шрыфтоў"
+
+#: ../src/subtitles_provider_libass.cpp:113
+msgid "This may take several minutes"
+msgstr "Гэта можа заняць некалькі хвілін"
+
+#: ../src/dialog_spellchecker.cpp:125
+msgid "Misspelled word:"
+msgstr "Слова з памылкай:"
+
+#: ../src/dialog_spellchecker.cpp:127 ../src/dialog_search_replace.cpp:73
+msgid "Replace with:"
+msgstr "Замяніць на:"
+
+#: ../src/dialog_spellchecker.cpp:182 ../src/dialog_search_replace.cpp:80
+msgid "&Skip Comments"
+msgstr "&Прапусціць каментарый"
+
+#: ../src/dialog_spellchecker.cpp:183
+msgid "Ignore &UPPERCASE words"
+msgstr "Ігнараваць словы Ў ВЕРХНІМ РЭГІСТРЫ"
+
+#: ../src/dialog_spellchecker.cpp:187
+msgid "&Replace"
+msgstr "&Замяніць"
+
+#: ../src/dialog_spellchecker.cpp:190 ../src/dialog_search_replace.cpp:95
+msgid "Replace &all"
+msgstr "Замяніць &усё"
+
+#: ../src/dialog_spellchecker.cpp:197
+msgid "&Ignore"
+msgstr "&Ігнараваць"
+
+#: ../src/dialog_spellchecker.cpp:200
+msgid "Ignore a&ll"
+msgstr "Ігнараваць у&сё"
+
+#: ../src/dialog_spellchecker.cpp:206
+msgid "Add to &dictionary"
+msgstr "&Дадаць у слоўнік"
+
+#: ../src/dialog_spellchecker.cpp:212
+msgid "Remove fro&m dictionary"
+msgstr "Выдаліць са слоўніку"
+
+#: ../src/dialog_spellchecker.cpp:279
+msgid "Aegisub has finished checking spelling of this script."
+msgstr "Aegisub скончыла правяраць арфаграфію ў дадзеным скрыпце."
+
+#: ../src/dialog_spellchecker.cpp:279 ../src/dialog_spellchecker.cpp:283
+msgid "Spell checking complete."
+msgstr "Праверка арфаграфіі завершана."
+
+#: ../src/dialog_spellchecker.cpp:283
+msgid "Aegisub has found no spelling mistakes in this script."
+msgstr "Aegisub не знайшла памылак у гэтым скрыпце."
+
+#: ../src/dialog_spellchecker.cpp:329 ../src/dialog_spellchecker.cpp:343
+msgid "spell check replace"
+msgstr "выпраўленне арфаграфіі"
+
+#: ../src/preferences_base.cpp:63
+msgid "Please choose the folder:"
+msgstr "Выбраць папку:"
+
+#: ../src/preferences_base.cpp:209
+msgid "Browse..."
+msgstr "Агляд..."
+
+#: ../src/preferences_base.cpp:244
+msgid "Choose..."
+msgstr "Выбраць..."
+
+#: ../src/preferences_base.cpp:252
+msgid "Font Size"
+msgstr "Памер шрыфта"
+
+#: ../src/dialog_properties.cpp:89
+msgid "Script Properties"
+msgstr "Уласцівасці скрыпта"
+
+#: ../src/dialog_properties.cpp:95
+msgid "Script"
+msgstr "Скрыпт"
+
+#: ../src/dialog_properties.cpp:98
+msgid "Title:"
+msgstr "Назва:"
+
+#: ../src/dialog_properties.cpp:99
+msgid "Original script:"
+msgstr "Арыгінальны скрыпт:"
+
+#: ../src/dialog_properties.cpp:100
+msgid "Translation:"
+msgstr "Пераклад:"
+
+#: ../src/dialog_properties.cpp:101
+msgid "Editing:"
+msgstr "Рэдакцыя:"
+
+#: ../src/dialog_properties.cpp:102
+msgid "Timing:"
+msgstr "Таймінг:"
+
+#: ../src/dialog_properties.cpp:103
+msgid "Synch point:"
+msgstr "Пункты сінхранізацыі:"
+
+#: ../src/dialog_properties.cpp:104
+msgid "Updated by:"
+msgstr "Абноўлены:"
+
+#: ../src/dialog_properties.cpp:105
+msgid "Update details:"
+msgstr "Звесткі пра абнаўленне:"
+
+#: ../src/dialog_properties.cpp:114 ../src/export_framerate.cpp:70
+#: ../src/dialog_resample.cpp:141
+msgid "From &video"
+msgstr "З &відэа"
+
+#: ../src/dialog_properties.cpp:133
+msgid "Resolution"
+msgstr "Разрозненне"
+
+#: ../src/dialog_properties.cpp:141
+msgid "0: Smart wrapping, top line is wider"
+msgstr "0: Акуратны перанос, верхі радок даўжэй"
+
+#: ../src/dialog_properties.cpp:142
+msgid "1: End-of-line word wrapping, only \\N breaks"
+msgstr "1: Перанос па канцу слоў, толькі \\N улічваецца"
+
+#: ../src/dialog_properties.cpp:143
+msgid "2: No word wrapping, both \\n and \\N break"
+msgstr "2: Без пераносу слоў, \\n і \\N улічваюцца"
+
+#: ../src/dialog_properties.cpp:144
+msgid "3: Smart wrapping, bottom line is wider"
+msgstr "3: Акуратны перанос, ніжні радок даўжэй"
+
+#: ../src/dialog_properties.cpp:148
+msgid "Wrap Style: "
+msgstr "Стыль пераносаў"
+
+#: ../src/dialog_properties.cpp:151
+msgid "Scale Border and Shadow"
+msgstr "Маштабаваць контур і цень"
+
+#: ../src/dialog_properties.cpp:152
+msgid ""
+"Scale border and shadow together with script/render resolution. If this is "
+"unchecked, relative border and shadow size will depend on renderer."
+msgstr ""
+"Маштабаваць контур і цень да разрознення скрыпта. Калі не адзначана, іх "
+"памер будзе залежыць ад рэндарара."
+
+#: ../src/dialog_properties.cpp:193
+msgid "property changes"
+msgstr "змяненне ўласцівасцяў"
+
+#: ../src/dialog_fonts_collector.cpp:107
+msgid "Symlinking fonts to folder...\n"
+msgstr "Стварэнне спасылак на шрыфты ў папцы...\n"
+
+#: ../src/dialog_fonts_collector.cpp:111
+msgid "Copying fonts to folder...\n"
+msgstr "Капіяванне шрыфтоў у папку...\n"
+
+#: ../src/dialog_fonts_collector.cpp:114
+msgid "Copying fonts to archive...\n"
+msgstr "Архіваванне шрыфтоў...\n"
+
+#: ../src/dialog_fonts_collector.cpp:126
+#, c-format
+msgid "* Failed to create directory '%s': %s.\n"
+msgstr "* Не атрымалася стварыць папку '%s': %s.\n"
+
+#: ../src/dialog_fonts_collector.cpp:137
+#, c-format
+msgid "* Failed to open %s.\n"
+msgstr "* Не атрымалася адкрыць %s.\n"
+
+#: ../src/dialog_fonts_collector.cpp:192
+#, c-format
+msgid "* Copied %s.\n"
+msgstr "* %s скапіяваны.\n"
+
+#: ../src/dialog_fonts_collector.cpp:194
+#, c-format
+msgid "* %s already exists on destination.\n"
+msgstr "* %s ужо існуе ў прызначэнні.\n"
+
+#: ../src/dialog_fonts_collector.cpp:196
+#, c-format
+msgid "* Symlinked %s.\n"
+msgstr "* Створана спасылка для %s.\n"
+
+#: ../src/dialog_fonts_collector.cpp:198
+#, c-format
+msgid "* Failed to copy %s.\n"
+msgstr "* Памылка капіявання %s.\n"
+
+#: ../src/dialog_fonts_collector.cpp:204
+msgid "Done. All fonts copied."
+msgstr "Гатова. Усе шрыфты скапіяваны."
+
+#: ../src/dialog_fonts_collector.cpp:206
+msgid "Done. Some fonts could not be copied."
+msgstr "Гатова. Некаторыя шрыфты немагчыма скапіяваць."
+
+#: ../src/dialog_fonts_collector.cpp:209
+msgid ""
+"\n"
+"Over 32 MB of fonts were copied. Some of the fonts may not be loaded by the player if they are all attached to a Matroska file."
+msgstr ""
+"\n"
+"Скапіявана больш за 32 МБ шрыфтоў. Прайгравальнік можа не загрузіць некаторыя шрыфты, калі іх усе далучыць да Matroska-файлу."
+
+#: ../src/dialog_fonts_collector.cpp:224
+msgid "Check fonts for availability"
+msgstr "Праверыць шрыфты на даступнасць"
+
+#: ../src/dialog_fonts_collector.cpp:225
+msgid "Copy fonts to folder"
+msgstr "Капіяваць шрыфты ў папку"
+
+#: ../src/dialog_fonts_collector.cpp:226
+msgid "Copy fonts to subtitle file's folder"
+msgstr "Капіяваць шрыфты ў папку з субтытрам"
+
+#: ../src/dialog_fonts_collector.cpp:227
+msgid "Copy fonts to zipped archive"
+msgstr "Стварыць ZIP-архіў са шрыфтамі"
+
+#: ../src/dialog_fonts_collector.cpp:229
+msgid "Symlink fonts to folder"
+msgstr "Стварыць спасылкі на шрыфты ў папцы"
+
+#: ../src/dialog_fonts_collector.cpp:232 ../src/dialog_selection.cpp:150
+msgid "Action"
+msgstr "Дзеянне"
+
+#: ../src/dialog_fonts_collector.cpp:238
+msgid "Destination"
+msgstr "Прызначэнне"
+
+#: ../src/dialog_fonts_collector.cpp:242
+msgid "&Browse..."
+msgstr "&Агляд..."
+
+#: ../src/dialog_fonts_collector.cpp:251
+msgid "Log"
+msgstr "Журнал"
+
+#: ../src/dialog_fonts_collector.cpp:264
+msgid "&Start!"
+msgstr "&Выканаць!"
+
+#: ../src/dialog_fonts_collector.cpp:301
+msgid "Invalid destination."
+msgstr "Памылковы шлях."
+
+#: ../src/dialog_fonts_collector.cpp:301 ../src/dialog_fonts_collector.cpp:306
+#: ../src/dialog_fonts_collector.cpp:311 ../src/preferences.cpp:257
+#: ../src/dialog_kara_timing_copy.cpp:574
+#: ../src/dialog_kara_timing_copy.cpp:576
+#: ../src/dialog_kara_timing_copy.cpp:626
+msgid "Error"
+msgstr "Памылка"
+
+#: ../src/dialog_fonts_collector.cpp:306
+msgid "Could not create destination folder."
+msgstr "Немагчыма стварыць мэтавую папку."
+
+#: ../src/dialog_fonts_collector.cpp:311
+msgid "Invalid path for .zip file."
+msgstr "Памылковы шлях да ZIP-архіва."
+
+#: ../src/dialog_fonts_collector.cpp:335
+msgid "Select archive file name"
+msgstr "Выбраць імя архіва"
+
+#: ../src/dialog_fonts_collector.cpp:342
+msgid "Select folder to save fonts on"
+msgstr "Выбраць папку для захавання шрыфтоў"
+
+#: ../src/dialog_fonts_collector.cpp:356
+msgid "N/A"
+msgstr "N/A"
+
+#: ../src/dialog_fonts_collector.cpp:364
+msgid ""
+"Choose the folder where the fonts will be collected to. It will be created "
+"if it doesn't exist."
+msgstr "Выбраць папку для збору шрыфтоў. Яна будзе створана, калі не існуе."
+
+#: ../src/dialog_fonts_collector.cpp:371
+msgid ""
+"Enter the name of the destination zip file to collect the fonts to. If a "
+"folder is entered, a default name will be used."
+msgstr ""
+"Увядзіце імя ZIP-архіва для збору шрыфтоў. Калі ўведзена папка, будзе "
+"выкарыстоўвацца імя па змаўчанню."
+
+#: ../src/audio_renderer_waveform.cpp:154
+msgid "Maximum"
+msgstr "Максімум"
+
+#: ../src/audio_renderer_waveform.cpp:155
+msgid "Maximum + Average"
+msgstr "Максімум + Усярэдненае"
+
+#: ../src/dialog_dummy_video.cpp:103
+msgid "Dummy video options"
+msgstr "Параметры пустога відэа"
+
+#: ../src/dialog_dummy_video.cpp:115
+msgid "Checkerboard &pattern"
+msgstr "Фон у &клетку"
+
+#: ../src/dialog_dummy_video.cpp:118
+msgid "Video resolution:"
+msgstr "Разрозненне відэа:"
+
+#: ../src/dialog_dummy_video.cpp:120
+msgid "Color:"
+msgstr "Колер:"
+
+#: ../src/dialog_dummy_video.cpp:121
+msgid "Frame rate (fps):"
+msgstr "Частата кадраў (кадр/сек):"
+
+#: ../src/dialog_dummy_video.cpp:122
+msgid "Duration (frames):"
+msgstr "Працягласць (у кадрах):"
+
+#: ../src/dialog_dummy_video.cpp:164
+#, c-format
+msgid "Resulting duration: %s"
+msgstr "Выніковая працягласць: %s"
+
+#: ../src/preferences.cpp:61 ../src/preferences.cpp:63
+#: ../src/preferences.cpp:316 ../src/preferences.cpp:341
+msgid "General"
+msgstr "Асноўныя"
+
+#: ../src/preferences.cpp:64
+msgid "Check for updates on startup"
+msgstr "Правяраць абнаўленні падчас запуску"
+
+#: ../src/preferences.cpp:65
+msgid "Show main toolbar"
+msgstr "Паказаць галоўную панэль інструментаў"
+
+#: ../src/preferences.cpp:66
+msgid "Save UI state in subtitles files"
+msgstr "Захоўваць стан інтэрфейсу ў файлах субтытраў"
+
+#: ../src/preferences.cpp:69
+msgid "Toolbar Icon Size"
+msgstr "Памер значкоў панэлі інструментаў"
+
+#: ../src/preferences.cpp:70 ../src/preferences.cpp:195
+msgid "Never"
+msgstr "Ніколі"
+
+#: ../src/preferences.cpp:70
+msgid "Always"
+msgstr "Заўсёды"
+
+#: ../src/preferences.cpp:70 ../src/preferences.cpp:195
+msgid "Ask"
+msgstr "Спытаць"
+
+#: ../src/preferences.cpp:72
+msgid "Automatically load linked files"
+msgstr "Аўтаматычна загружаць звязаныя файлы"
+
+#: ../src/preferences.cpp:73
+msgid "Undo Levels"
+msgstr "Колькасць магчымых адмен"
+
+#: ../src/preferences.cpp:75
+msgid "Recently Used Lists"
+msgstr "Нядаўна выкарыстаныя спісы"
+
+#: ../src/preferences.cpp:76 ../src/dialog_autosave.cpp:70
+msgid "Files"
+msgstr "Файлы"
+
+#: ../src/preferences.cpp:77
+msgid "Find/Replace"
+msgstr "Знайсці/Замяніць"
+
+#: ../src/preferences.cpp:83
+msgid "Default styles"
+msgstr "Стылі па змаўчанні"
+
+#: ../src/preferences.cpp:85
+msgid "Default style catalogs"
+msgstr "Каталог стыляў па змаўчанні"
+
+#: ../src/preferences.cpp:89
+msgid ""
+"The chosen style catalogs will be loaded when you start a new file or import files in the various formats.\n"
+"\n"
+"You can set up style catalogs in the Style Manager."
+msgstr ""
+"Выбраныя каталогі стыляў будуць загружаны, калі вы створыце новый файл або імпартуеце файл у адпаведных фарматах.\n"
+"\n"
+"Вы можаце наладзіць каталогі стыляў у Менеджары стыляў."
+
+#: ../src/preferences.cpp:114
+msgid "New files"
+msgstr "Новыя файлы"
+
+#: ../src/preferences.cpp:115
+msgid "MicroDVD import"
+msgstr "Імпарт MicroDVD"
+
+#: ../src/preferences.cpp:116
+msgid "SRT import"
+msgstr "Імпарт SRT"
+
+#: ../src/preferences.cpp:117
+msgid "TTXT import"
+msgstr "Імпарт TTXT"
+
+#: ../src/preferences.cpp:118
+msgid "Plain text import"
+msgstr "Імпарт звычайнага тэксту"
+
+#: ../src/preferences.cpp:125 ../src/preferences.cpp:354
+msgid "Audio"
+msgstr "Аўдыя"
+
+#: ../src/preferences.cpp:128
+msgid "Default mouse wheel to zoom"
+msgstr "Колца мышы мяняе маштаб"
+
+#: ../src/preferences.cpp:129
+msgid "Lock scroll on cursor"
+msgstr "Прагортка за курсорам"
+
+#: ../src/preferences.cpp:130
+msgid "Snap markers by default"
+msgstr "Прывязваць маркеры да сетцы па змаўчанні"
+
+#: ../src/preferences.cpp:131
+msgid "Auto-focus on mouse over"
+msgstr "Аўтафокус пры навядзенні мышшу"
+
+#: ../src/preferences.cpp:132
+msgid "Play audio when stepping in video"
+msgstr "Прайграваць аўдыя пры пераходзе па відэа"
+
+#: ../src/preferences.cpp:133
+msgid "Left-click-drag moves end marker"
+msgstr "Перацягванне левай кнопкай мышы ссоўвае маркер канчатка"
+
+#: ../src/preferences.cpp:134
+msgid "Default timing length (ms)"
+msgstr "Працягласць таймінга па змаўчанні (мс)"
+
+#: ../src/preferences.cpp:135
+msgid "Default lead-in length (ms)"
+msgstr "Працягласць уступу па змаўчанні (мс)"
+
+#: ../src/preferences.cpp:136
+msgid "Default lead-out length (ms)"
+msgstr "Працягласць канчатку па змаўчанні (мс)"
+
+#: ../src/preferences.cpp:138
+msgid "Marker drag-start sensitivity (px)"
+msgstr "Кропак да пачатку перамяшчэння маркера (px)"
+
+#: ../src/preferences.cpp:139
+msgid "Line boundary thickness (px)"
+msgstr "Таўшчыня ліній межаў радка (px)"
+
+#: ../src/preferences.cpp:140
+msgid "Maximum snap distance (px)"
+msgstr "Максімальная дыстанцыя прывязвання (px)"
+
+#: ../src/preferences.cpp:142
+msgid "Don't show"
+msgstr "Не паказваць"
+
+#: ../src/preferences.cpp:142
+msgid "Show previous"
+msgstr "Паказваць папярэдні"
+
+#: ../src/preferences.cpp:142
+msgid "Show previous and next"
+msgstr "Паказваць папярэдні і наступны"
+
+#: ../src/preferences.cpp:142
+msgid "Show all"
+msgstr "Паказваць усе"
+
+#: ../src/preferences.cpp:144
+msgid "Show inactive lines"
+msgstr "Паказваць неактыўныя радкі"
+
+#: ../src/preferences.cpp:146
+msgid "Include commented inactive lines"
+msgstr "Паказваць неактыўныя закаменціраваныя радкі"
+
+#: ../src/preferences.cpp:148
+msgid "Display Visual Options"
+msgstr "Візуальныя налады"
+
+#: ../src/preferences.cpp:149
+msgid "Keyframes in dialogue mode"
+msgstr "Ключкадры ў дыялогавым рэжыме"
+
+#: ../src/preferences.cpp:150
+msgid "Keyframes in karaoke mode"
+msgstr "Ключкадры ў рэжыме караоке"
+
+#: ../src/preferences.cpp:151
+msgid "Cursor time"
+msgstr "Час курсору"
+
+#: ../src/preferences.cpp:152
+msgid "Video position"
+msgstr "Пазіцыя відэа"
+
+#: ../src/preferences.cpp:153 ../src/preferences.cpp:246
+msgid "Seconds boundaries"
+msgstr "Межы секунд"
+
+#: ../src/preferences.cpp:155
+msgid "Waveform Style"
+msgstr "Стыль асцылаграмы"
+
+#: ../src/preferences.cpp:157
+msgid "Audio labels"
+msgstr "Аўдыяпазнакі"
+
+#: ../src/preferences.cpp:168
+msgid "Show keyframes in slider"
+msgstr "Паказваць ключкадры на паласе прагорткі"
+
+#: ../src/preferences.cpp:170
+msgid "Only show visual tools when mouse is over video"
+msgstr "Паказваць толькі візуальныя інструменты пры навядзенні"
+
+#: ../src/preferences.cpp:172
+msgid "Seek video to line start on selection change"
+msgstr "Пры змяненні вылучэння перамотваць відэа да пачатку радка."
+
+#: ../src/preferences.cpp:174
+msgid "Automatically open audio when opening video"
+msgstr "Аўтазагрузка аўдыя пры адкрыцці відэа"
+
+#: ../src/preferences.cpp:179
+msgid "Default Zoom"
+msgstr "Маштаб па змаўчанні"
+
+#: ../src/preferences.cpp:181
+msgid "Fast jump step in frames"
+msgstr "Крок хуткага пераходу, у кадрах"
+
+#: ../src/preferences.cpp:185
+msgid "Screenshot save path"
+msgstr "Шлях захавання здымкаў экрана"
+
+#: ../src/preferences.cpp:187
+msgid "Script Resolution"
+msgstr "Разрозненне скрыпта"
+
+#: ../src/preferences.cpp:188
+msgid "Use resolution of first video opened"
+msgstr "Выкарыстоўваць разрозненне першага адкрытага відэа"
+
+#: ../src/preferences.cpp:191
+msgid "Default width"
+msgstr "Шырыня па змаўчанні"
+
+#: ../src/preferences.cpp:193
+msgid "Default height"
+msgstr "Вышыня па змаўчанні"
+
+#: ../src/preferences.cpp:195
+msgid "Always set"
+msgstr "Заўжды задаваць"
+
+#: ../src/preferences.cpp:195
+msgid "Always resample"
+msgstr "Заўжды пералічваць"
+
+#: ../src/preferences.cpp:197
+msgid "Match video resolution on open"
+msgstr "Падагнаць разрозненне відэа падчас адкрыцця"
+
+#: ../src/preferences.cpp:204
+msgid "Interface"
+msgstr "Інтэрфейс"
+
+#: ../src/preferences.cpp:206
+msgid "Edit Box"
+msgstr "Акно рэдагавання"
+
+#: ../src/preferences.cpp:207
+msgid "Enable call tips"
+msgstr "Уключыць падказкі"
+
+#: ../src/preferences.cpp:208
+msgid "Overwrite in time boxes"
+msgstr "Пераразлік часу пры ўводзе"
+
+#: ../src/preferences.cpp:210
+msgid "Enable syntax highlighting"
+msgstr "Уключыць падсвятленне сінтаксісу"
+
+#: ../src/preferences.cpp:211
+msgid "Dictionaries path"
+msgstr "Шлях да слоўнікаў"
+
+#: ../src/preferences.cpp:214
+msgid "Character Counter"
+msgstr "Лічыльнік сімвалаў"
+
+#: ../src/preferences.cpp:215
+msgid "Maximum characters per line"
+msgstr "Максімальная колькасць сімвалаў у радку"
+
+#: ../src/preferences.cpp:216
+msgid "Characters Per Second Warning Threshold"
+msgstr "Значэнне сімвалаў у секунду, перавышэнне якога выдае папярэджанне"
+
+#: ../src/preferences.cpp:217
+msgid "Characters Per Second Error Threshold"
+msgstr ""
+"Значэнне сімвалаў у секунду, перавышэнне якога выдае паведамленне аб памылцы"
+
+#: ../src/preferences.cpp:218
+msgid "Ignore whitespace"
+msgstr "Ігнараваць прабелы"
+
+#: ../src/preferences.cpp:219
+msgid "Ignore punctuation"
+msgstr "Ігнараваць пунктуацыю"
+
+#: ../src/preferences.cpp:221
+msgid "Grid"
+msgstr "Сетка"
+
+#: ../src/preferences.cpp:222
+msgid "Focus grid on click"
+msgstr "Пераключыць фокус на сетку пры націсканні"
+
+#: ../src/preferences.cpp:223
+msgid "Highlight visible subtitles"
+msgstr "Падсвечваць бачныя субтытры"
+
+#: ../src/preferences.cpp:224
+msgid "Hide overrides symbol"
+msgstr "Сімвал спрошчаных тэгаў"
+
+#: ../src/preferences.cpp:232 ../src/dialog_style_editor.cpp:179
+msgid "Colors"
+msgstr "Колеры"
+
+#: ../src/preferences.cpp:240
+msgid "Audio Display"
+msgstr "Акно аўдыя"
+
+#: ../src/preferences.cpp:241
+msgid "Play cursor"
+msgstr "Курсор прайгравання"
+
+#: ../src/preferences.cpp:242
+msgid "Line boundary start"
+msgstr "Межа радка - пачатак"
+
+#: ../src/preferences.cpp:243
+msgid "Line boundary end"
+msgstr "Межа радка - канец"
+
+#: ../src/preferences.cpp:244
+msgid "Line boundary inactive line"
+msgstr "Межа радка - неактыўны"
+
+#: ../src/preferences.cpp:245
+msgid "Syllable boundaries"
+msgstr "Межа складаў"
+
+#: ../src/preferences.cpp:248
+msgid "Syntax Highlighting"
+msgstr "Падсвятленне сінтаксісу"
+
+#: ../src/preferences.cpp:249
+msgid "Background"
+msgstr "Фон"
+
+#: ../src/preferences.cpp:250 ../src/preferences.cpp:326
+msgid "Normal"
+msgstr "Стандарт"
+
+#: ../src/preferences.cpp:251
+msgid "Comments"
+msgstr "Каментарыі"
+
+#: ../src/preferences.cpp:252
+msgid "Drawings"
+msgstr "Рысункі"
+
+#: ../src/preferences.cpp:253
+msgid "Brackets"
+msgstr "Дужкі"
+
+#: ../src/preferences.cpp:254
+msgid "Slashes and Parentheses"
+msgstr "Косыя рысы і круглыя дужкі"
+
+#: ../src/preferences.cpp:255
+msgid "Tags"
+msgstr "Тэгі"
+
+#: ../src/preferences.cpp:256
+msgid "Parameters"
+msgstr "Параметры"
+
+#: ../src/preferences.cpp:258
+msgid "Error Background"
+msgstr "Фон памылкі"
+
+#: ../src/preferences.cpp:259
+msgid "Line Break"
+msgstr "Перанос радка"
+
+#: ../src/preferences.cpp:260
+msgid "Karaoke templates"
+msgstr "Шаблоны караоке"
+
+#: ../src/preferences.cpp:261
+msgid "Karaoke variables"
+msgstr "Пераменныя караоке"
+
+#: ../src/preferences.cpp:267
+msgid "Audio Color Schemes"
+msgstr "Колеравыя схемы аўдыя"
+
+#: ../src/preferences.cpp:269 ../src/preferences.cpp:370
+msgid "Spectrum"
+msgstr "Спектр"
+
+#: ../src/preferences.cpp:270
+msgid "Waveform"
+msgstr "Асцылаграма"
+
+#: ../src/preferences.cpp:272
+msgid "Subtitle Grid"
+msgstr "Табліца субтытраў"
+
+#: ../src/preferences.cpp:273
+msgid "Standard foreground"
+msgstr "Колер шрыфта"
+
+#: ../src/preferences.cpp:274
+msgid "Standard background"
+msgstr "Стандартны фон"
+
+#: ../src/preferences.cpp:275
+msgid "Selection foreground"
+msgstr "Колер шрыфта вылучэння"
+
+#: ../src/preferences.cpp:276
+msgid "Selection background"
+msgstr "Фон вылучэння"
+
+#: ../src/preferences.cpp:277
+msgid "Collision foreground"
+msgstr "Фон калізій"
+
+#: ../src/preferences.cpp:278
+msgid "In frame background"
+msgstr "Фон радка ў кадры"
+
+#: ../src/preferences.cpp:279
+msgid "Comment background"
+msgstr "Фон каментарыяў"
+
+#: ../src/preferences.cpp:280
+msgid "Selected comment background"
+msgstr "Фон вылучаных каментарыяў"
+
+#: ../src/preferences.cpp:281
+msgid "Header background"
+msgstr "Фон загалоўка"
+
+#: ../src/preferences.cpp:282
+msgid "Left Column"
+msgstr "Левая калонка"
+
+#: ../src/preferences.cpp:283
+msgid "Active Line Border"
+msgstr "Межа актыўнага радак"
+
+#: ../src/preferences.cpp:284
+msgid "Lines"
+msgstr "Радкі"
+
+#: ../src/preferences.cpp:285
+msgid "CPS Error"
+msgstr "Памылка сімв./сек"
+
+#: ../src/preferences.cpp:294
+msgid "Backup"
+msgstr "Рэзервовыя копіі"
+
+#: ../src/preferences.cpp:296
+msgid "Automatic Save"
+msgstr "Аўтазахаванне"
+
+#: ../src/preferences.cpp:297 ../src/preferences.cpp:305
+msgid "Enable"
+msgstr "Уключыць"
+
+#: ../src/preferences.cpp:300
+msgid "Interval in seconds"
+msgstr "Інтэрвал, сек"
+
+#: ../src/preferences.cpp:301 ../src/preferences.cpp:307
+#: ../src/preferences.cpp:368
+msgid "Path"
+msgstr "Шлях"
+
+#: ../src/preferences.cpp:302
+msgid "Autosave after every change"
+msgstr "Аўтазахаванне пасля кожнай змены"
+
+#: ../src/preferences.cpp:304
+msgid "Automatic Backup"
+msgstr "Аўтаматычныя рэзервовыя копіі"
+
+#: ../src/preferences.cpp:318
+msgid "Base path"
+msgstr "Базавы шлях"
+
+#: ../src/preferences.cpp:319
+msgid "Include path"
+msgstr "Шлях да загаловачных файлаў"
+
+#: ../src/preferences.cpp:320
+msgid "Auto-load path"
+msgstr "Шлях да аўтаматычна загружаемых сцэнарыяў"
+
+#: ../src/preferences.cpp:322
+msgid "0: Fatal"
+msgstr "0: Крытычны"
+
+#: ../src/preferences.cpp:322
+msgid "1: Error"
+msgstr "1: Памылка"
+
+#: ../src/preferences.cpp:322
+msgid "2: Warning"
+msgstr "2: Папярэджанне"
+
+#: ../src/preferences.cpp:322
+msgid "3: Hint"
+msgstr "3: Падказка"
+
+#: ../src/preferences.cpp:322
+msgid "4: Debug"
+msgstr "4: Адладка"
+
+#: ../src/preferences.cpp:322
+msgid "5: Trace"
+msgstr "5: Інфармацыя"
+
+#: ../src/preferences.cpp:324
+msgid "Trace level"
+msgstr "Узровень адсочвання"
+
+#: ../src/preferences.cpp:326
+msgid "Below Normal (recommended)"
+msgstr "Ніжэй за звычайны (рэкамендуецца)"
+
+#: ../src/preferences.cpp:326
+msgid "Lowest"
+msgstr "Найніжэйшы"
+
+#: ../src/preferences.cpp:328
+msgid "Thread priority"
+msgstr "Прыярытэт патоку"
+
+#: ../src/preferences.cpp:330
+msgid "No scripts"
+msgstr "Ніякія"
+
+#: ../src/preferences.cpp:330
+msgid "Subtitle-local scripts"
+msgstr "Лакальныя скрыпты"
+
+#: ../src/preferences.cpp:330
+msgid "Global autoload scripts"
+msgstr "Глабальныя аўтаматычна загружаемыя скрыпты"
+
+#: ../src/preferences.cpp:330
+msgid "All scripts"
+msgstr "Усе скрыпты"
+
+#: ../src/preferences.cpp:332
+msgid "Autoreload on Export"
+msgstr "Аўтаматычна перазагружаць пры экспарце"
+
+#: ../src/preferences.cpp:339
+msgid "Advanced"
+msgstr "Дадатковыя налады"
+
+#: ../src/preferences.cpp:343
+msgid ""
+"Changing these settings might result in bugs and/or crashes. Do not touch "
+"these unless you know what you're doing."
+msgstr ""
+"Змена гэтых налад можа выклікаць некарэктную працу праграмы. Не змяняйце іх,"
+" калі сапраўды не ўпэўнены ў тым, што робіце."
+
+#: ../src/preferences.cpp:356 ../src/preferences.cpp:419
+msgid "Expert"
+msgstr "Экспертныя"
+
+#: ../src/preferences.cpp:359
+msgid "Audio provider"
+msgstr "Правайдар аўдыя"
+
+#: ../src/preferences.cpp:362
+msgid "Audio player"
+msgstr "Прайграванне аўдыя праз"
+
+#: ../src/preferences.cpp:364
+msgid "Cache"
+msgstr "Кэш"
+
+#: ../src/preferences.cpp:365
+msgid "None (NOT RECOMMENDED)"
+msgstr "Не (НЕ РЭКАМЕНДУЕЦЦА)"
+
+#: ../src/preferences.cpp:365
+msgid "RAM"
+msgstr "Аператыўная памяць"
+
+#: ../src/preferences.cpp:365
+msgid "Hard Disk"
+msgstr "Цвёрды дыск"
+
+#: ../src/preferences.cpp:367
+msgid "Cache type"
+msgstr "Тып кэша"
+
+#: ../src/preferences.cpp:372
+msgid "Regular quality"
+msgstr "Звычайная"
+
+#: ../src/preferences.cpp:372
+msgid "Better quality"
+msgstr "Добрая"
+
+#: ../src/preferences.cpp:372
+msgid "High quality"
+msgstr "Высокая"
+
+#: ../src/preferences.cpp:372
+msgid "Insane quality"
+msgstr "Лепшая"
+
+#: ../src/preferences.cpp:374
+msgid "Quality"
+msgstr "Якасць"
+
+#: ../src/preferences.cpp:376
+msgid "Cache memory max (MB)"
+msgstr "Максімальны памер кэша (МБ)"
+
+#: ../src/preferences.cpp:382
+msgid "Avisynth down-mixer"
+msgstr "Метад мікшыравання Avisynth’ам"
+
+#: ../src/preferences.cpp:383
+msgid "Force sample rate"
+msgstr "Прымусова задаць сэмплінг"
+
+#: ../src/preferences.cpp:389
+msgid "Ignore"
+msgstr "Ігнараваць"
+
+#: ../src/preferences.cpp:389
+msgid "Stop"
+msgstr "Спыніць"
+
+#: ../src/preferences.cpp:389
+msgid "Abort"
+msgstr "Перапыніць"
+
+#: ../src/preferences.cpp:391
+msgid "Audio indexing error handling mode"
+msgstr "Рэжым апрацоўкі памылак індэксавання аўдыя"
+
+#: ../src/preferences.cpp:393
+msgid "Always index all audio tracks"
+msgstr "Заўсёды індэксаваць усе аўдыятрэкі"
+
+#: ../src/preferences.cpp:398
+msgid "Portaudio device"
+msgstr "Прылада Portaudio"
+
+#: ../src/preferences.cpp:403
+msgid "OSS Device"
+msgstr "Прылада OSS"
+
+#: ../src/preferences.cpp:408
+msgid "Buffer latency"
+msgstr "Латэнтнасць буферу"
+
+#: ../src/preferences.cpp:409
+msgid "Buffer length"
+msgstr "Даўжыня буферу"
+
+#: ../src/preferences.cpp:422
+msgid "Video provider"
+msgstr "Правайдар відэа"
+
+#: ../src/preferences.cpp:425
+msgid "Subtitles provider"
+msgstr "Правайдар субтытраў"
+
+#: ../src/preferences.cpp:428
+msgid "Force BT.601"
+msgstr "BT.601 прымусова"
+
+#: ../src/preferences.cpp:432
+msgid "Allow pre-2.56a Avisynth"
+msgstr "Дазволіць Avisynth версіі ніжэй за 2.56a"
+
+#: ../src/preferences.cpp:434
+msgid "Avisynth memory limit"
+msgstr "Ліміт памяці для Avisynth (МБ)"
+
+#: ../src/preferences.cpp:442
+msgid "Debug log verbosity"
+msgstr "Падрабязнасць журнала адладкі"
+
+#: ../src/preferences.cpp:444
+msgid "Decoding threads"
+msgstr "Колькасць патокаў дэкадавання"
+
+#: ../src/preferences.cpp:445
+msgid "Enable unsafe seeking"
+msgstr "Дазволіць небяспечную перамотку"
+
+#: ../src/preferences.cpp:574
+msgid "Hotkeys"
+msgstr "Гарачыя клавішы"
+
+#: ../src/preferences.cpp:672
+msgid ""
+"Are you sure that you want to restore the defaults? All your settings will "
+"be overridden."
+msgstr ""
+"Вы ўпэўнены, што жадаеце аднавіць налады па змаўчанні? Усе вашыя налады "
+"будуць скінуты. "
+
+#: ../src/preferences.cpp:672
+msgid "Restore defaults?"
+msgstr "Аднавіць налады па змаўчанні? "
+
+#: ../src/preferences.cpp:690
+msgid "Preferences"
+msgstr "Параметры"
+
+#: ../src/preferences.cpp:718
+msgid "&Restore Defaults"
+msgstr "&Аднавіць параметры па змаўчанню"
+
+#: ../src/subs_edit_ctrl.cpp:356
+msgid "Spell checker language"
+msgstr "Мова праверкі арфаграфіі"
+
+#: ../src/subs_edit_ctrl.cpp:365
+msgid "Cu&t"
+msgstr "Выразаць"
+
+#: ../src/subs_edit_ctrl.cpp:402
+#, c-format
+msgid "Remove \"%s\" from dictionary"
+msgstr "Выдаліць \"%s\" са слоўніку"
+
+#: ../src/subs_edit_ctrl.cpp:407
+msgid "No spell checker suggestions"
+msgstr "Няма варыянтаў"
+
+#: ../src/subs_edit_ctrl.cpp:413
+#, c-format
+msgid "Spell checker suggestions for \"%s\""
+msgstr "Варыянты для «%s»"
+
+#: ../src/subs_edit_ctrl.cpp:418
+msgid "No correction suggestions"
+msgstr "Няма варыянтаў"
+
+#: ../src/subs_edit_ctrl.cpp:424
+#, c-format
+msgid "Add \"%s\" to dictionary"
+msgstr "Дадаць «%s» у слоўнік"
+
+#: ../src/subs_edit_ctrl.cpp:459
+#, c-format
+msgid "Thesaurus suggestions for \"%s\""
+msgstr "Варыянты тэзаўруса для «%s»"
+
+#: ../src/subs_edit_ctrl.cpp:462
+msgid "No thesaurus suggestions"
+msgstr "Няма варыянтаў тэзаўруса"
+
+#: ../src/subs_edit_ctrl.cpp:465
+msgid "Thesaurus language"
+msgstr "Мова тэзаўруса"
+
+#: ../src/subs_edit_ctrl.cpp:474
+msgid "Disable"
+msgstr "Адключыць"
+
+#: ../src/menu.cpp:94
+msgid "Empty"
+msgstr "Пуста"
+
+#: ../src/menu.cpp:227
+msgid "&Recent"
+msgstr "&Нядаўнія"
+
+#: ../src/menu.cpp:410
+msgid "No Automation macros loaded"
+msgstr "Няма загружаных макрасаў аўтаматызацыі"
+
+#: ../src/dialog_about.cpp:46
+msgid "Translated into LANGUAGE by PERSON\n"
+msgstr "Пераклад на беларускую мову: prydespar@outlook.com\n"
+
+#: ../src/dialog_about.cpp:122
+msgid ""
+"\n"
+"See the help file for full credits.\n"
+msgstr ""
+"\n"
+"Поўны спіс глядзіце ў файле даведкі.\n"
+
+#: ../src/dialog_about.cpp:123
+#, c-format
+msgid "Built by %s on %s."
+msgstr "Зборка ад %s ад %s."
+
+#: ../src/dialog_kara_timing_copy.cpp:57
+msgid "Source: "
+msgstr "Зыходны:"
+
+#: ../src/dialog_kara_timing_copy.cpp:58
+msgid "Dest: "
+msgstr "Вынік:"
+
+#: ../src/dialog_kara_timing_copy.cpp:470
+msgid "Kanji timing"
+msgstr "Кандзі-таймер"
+
+#: ../src/dialog_kara_timing_copy.cpp:475 ../src/dialog_paste_over.cpp:73
+#: ../src/grid_column.cpp:334 ../src/grid_column.cpp:335
+msgid "Text"
+msgstr "Тэкст"
+
+#: ../src/dialog_kara_timing_copy.cpp:476
+msgid "Styles"
+msgstr "Стылі"
+
+#: ../src/dialog_kara_timing_copy.cpp:478
+msgid "Shortcut Keys"
+msgstr "Гарачыя клавішы"
+
+#: ../src/dialog_kara_timing_copy.cpp:479
+msgid "Commands"
+msgstr "Каманды"
+
+#: ../src/dialog_kara_timing_copy.cpp:487
+msgid "Attempt to &interpolate kanji."
+msgstr "&Спрабаваць прадугадаць кандзі"
+
+#: ../src/dialog_kara_timing_copy.cpp:494
+msgid ""
+"When the destination textbox has focus, use the following keys:\n"
+"\n"
+"Right Arrow: Increase dest. selection length\n"
+"Left Arrow: Decrease dest. selection length\n"
+"Up Arrow: Increase source selection length\n"
+"Down Arrow: Decrease source selection length\n"
+"Enter: Link, accept line when done\n"
+"Backspace: Unlink last"
+msgstr ""
+"Калі фокус уводу зададзены на мэтавым радку, можна выкарыстоўваць наступныя клавішы:\n"
+"\n"
+"Стрэлка ўправа: Павялічыць даўжыню мэтавага вылучэння\n"
+"Стрэлка ўлева: Паменшыць даўжыню мэтавага вылучэння\n"
+"Стрэлка ўверх: Павялічыць даўжыню зыходнага вылучэння\n"
+"Стрэлка ўніз: Паменшыць даўжыню зыходнага вылучэння\n"
+"Enter: Аб'яднаць, прыняць гатовы радок\n"
+"Backspace: Раз'яднаць"
+
+#: ../src/dialog_kara_timing_copy.cpp:497
+msgid "S&tart!"
+msgstr "П&ачаць!"
+
+#: ../src/dialog_kara_timing_copy.cpp:498
+msgid "&Link"
+msgstr "&Аб'яднаць"
+
+#: ../src/dialog_kara_timing_copy.cpp:499
+msgid "&Unlink"
+msgstr "&Раз'яднаць"
+
+#: ../src/dialog_kara_timing_copy.cpp:500
+msgid "Skip &Source Line"
+msgstr "Прапусціць &зыходны радок"
+
+#: ../src/dialog_kara_timing_copy.cpp:501
+msgid "Skip &Dest Line"
+msgstr "Прапусціць &мэтавы радок"
+
+#: ../src/dialog_kara_timing_copy.cpp:502
+msgid "&Go Back a Line"
+msgstr "&Вярнуцца назад на &радок"
+
+#: ../src/dialog_kara_timing_copy.cpp:503
+msgid "&Accept Line"
+msgstr "&Прыняць радок"
+
+#: ../src/dialog_kara_timing_copy.cpp:504 ../src/dialog_automation.cpp:122
+#: ../src/dialog_attachments.cpp:89 ../src/dialog_version_check.cpp:126
+msgid "&Close"
+msgstr "&Закрыць"
+
+#: ../src/dialog_kara_timing_copy.cpp:566
+msgid "kanji timing"
+msgstr "таймінг кандзі"
+
+#: ../src/dialog_kara_timing_copy.cpp:574
+msgid "Select source and destination styles first."
+msgstr "Спачатку зыходны стыль і мэтавы стыль."
+
+#: ../src/dialog_kara_timing_copy.cpp:576
+msgid "The source and destination styles must be different."
+msgstr "Зыходны і мэтавы стыль павінны быць рознымі."
+
+#: ../src/dialog_kara_timing_copy.cpp:626
+msgid "Group all of the source text."
+msgstr "Згрупуйце ўвесь зыходны тэкст."
+
+#: ../src/hotkey.cpp:175
+msgid "Invalid command name for hotkey"
+msgstr "Памылковая назва каманды для гарачай клавішы"
+
+#: ../src/dialog_paste_over.cpp:55
+msgid "Select Fields to Paste Over"
+msgstr "Выбраць палі для ўстаўкі паверх"
+
+#: ../src/dialog_paste_over.cpp:58
+msgid "Fields"
+msgstr "Палі"
+
+#: ../src/dialog_paste_over.cpp:59
+msgid "Please select the fields that you want to paste over:"
+msgstr "Выбраць палі паверх якіх вы хочаце ўставіць:"
+
+#: ../src/dialog_paste_over.cpp:63
+msgid "Comment"
+msgstr "Каментарый"
+
+#: ../src/dialog_paste_over.cpp:67 ../src/grid_column.cpp:177
+#: ../src/grid_column.cpp:178
+msgid "Style"
+msgstr "Стыль"
+
+#: ../src/dialog_paste_over.cpp:68 ../src/subs_edit_box.cpp:140
+#: ../src/grid_column.cpp:205 ../src/grid_column.cpp:206
+msgid "Actor"
+msgstr "Акцёр"
+
+#: ../src/dialog_paste_over.cpp:69
+msgid "Margin Left"
+msgstr "Водступ злева"
+
+#: ../src/dialog_paste_over.cpp:70
+msgid "Margin Right"
+msgstr "Водступ справа"
+
+#: ../src/dialog_paste_over.cpp:71
+msgid "Margin Vertical"
+msgstr "Вертыкальны водступ"
+
+#: ../src/dialog_paste_over.cpp:92
+msgid "&Times"
+msgstr "&Таймкоды"
+
+#: ../src/dialog_paste_over.cpp:94
+msgid "T&ext"
+msgstr "Т&экст"
+
+#: ../src/main.cpp:274
+#, c-format
+msgid ""
+"Oops, Aegisub has crashed!\n"
+"\n"
+"An attempt has been made to save a copy of your file to:\n"
+"\n"
+"%s\n"
+"\n"
+"Aegisub will now close."
+msgstr ""
+"Упс, Aegisub упала!\n"
+"\n"
+"Зрабілі спробу запісаць копію вашага файла ў:\n"
+"\n"
+"%s\n"
+"\n"
+"Зараз Aegisub будзе закрыты."
+
+#: ../src/main.cpp:302
+msgid ""
+"Do you want Aegisub to check for updates whenever it starts? You can still "
+"do it manually via the Help menu."
+msgstr ""
+"Правяраць абнаўленні праграмы Aegisub падчас запуску? Вы гэта можаце рабіць "
+"гэта і ўручную праз меню \"Дапамога\"."
+
+#: ../src/main.cpp:302
+msgid "Check for updates?"
+msgstr "Праверыць абнаўленні?"
+
+#: ../src/main.cpp:387 ../src/main.cpp:392
+msgid "Program error"
+msgstr "Памылка праграмы"
+
+#: ../src/main.cpp:406
+#, c-format
+msgid ""
+"An unexpected error has occurred. Please save your work and restart Aegisub.\n"
+"\n"
+"Error Message: %s"
+msgstr ""
+"Адбылася нечаканая памылка. Захавайце вынікі вашай працы і перазапусціце Aegisub.\n"
+"\n"
+"Паведамленне аб памылцы: %s"
+
+#: ../src/subs_edit_box.cpp:119
+msgid "&Comment"
+msgstr "&Каментарый"
+
+#: ../src/subs_edit_box.cpp:120
+msgid "Comment this line out. Commented lines don't show up on screen."
+msgstr "Закаменціраваць радок. Каментарыі не паказваюцца на экране."
+
+#: ../src/subs_edit_box.cpp:127
+msgid "Style for this line"
+msgstr "Стыль радка"
+
+#: ../src/subs_edit_box.cpp:129 ../src/subs_edit_box.cpp:130
+msgid "Edit"
+msgstr "Рэдагаваць"
+
+#: ../src/subs_edit_box.cpp:140
+msgid ""
+"Actor name for this speech. This is only for reference, and is mainly "
+"useless."
+msgstr "Імя акцёра, які гаварыць прамову. Інфармацыя толькі для даведкі."
+
+#: ../src/subs_edit_box.cpp:145
+msgid ""
+"Effect for this line. This can be used to store extra information for "
+"karaoke scripts, or for the effects supported by the renderer."
+msgstr ""
+"Эфекты ў гэтым радку. Можна выкарыстоўваць для захавання дадатковых звестак "
+"для скрыптаў караоке або для эфектаў рэндарара."
+
+#: ../src/subs_edit_box.cpp:151
+msgid "Number of characters in the longest line of this subtitle."
+msgstr "Колькасць сімвалаў у найдаўжэйшым радку гэтых субтытраў."
+
+#: ../src/subs_edit_box.cpp:158
+msgid "Layer number"
+msgstr "Нумар слоя"
+
+#: ../src/subs_edit_box.cpp:162
+msgid "Start time"
+msgstr "Час пачатку"
+
+#: ../src/subs_edit_box.cpp:163
+msgid "End time"
+msgstr "Час заканчэння"
+
+#: ../src/subs_edit_box.cpp:165
+msgid "Line duration"
+msgstr "Даўжыня радка"
+
+#: ../src/subs_edit_box.cpp:168
+msgid "Left Margin (0 = default from style)"
+msgstr "Левы водступ (0 = па змаўчанні)"
+
+#: ../src/subs_edit_box.cpp:168
+msgid "left margin change"
+msgstr "змяніць водступ злева"
+
+#: ../src/subs_edit_box.cpp:169
+msgid "Right Margin (0 = default from style)"
+msgstr "Правы водступ (0 = па змаўчанні)"
+
+#: ../src/subs_edit_box.cpp:169
+msgid "right margin change"
+msgstr "змяніць водступ справа"
+
+#: ../src/subs_edit_box.cpp:170
+msgid "Vertical Margin (0 = default from style)"
+msgstr "Вертыкальны водступ (0 = па змаўчанні)"
+
+#: ../src/subs_edit_box.cpp:170
+msgid "vertical margin change"
+msgstr "змяніць вертыкальны водступ"
+
+#: ../src/subs_edit_box.cpp:189
+msgid "T&ime"
+msgstr "Ч&ас"
+
+#: ../src/subs_edit_box.cpp:189
+msgid "Time by h:mm:ss.cs"
+msgstr "Час у h:mm:ss.cs"
+
+#: ../src/subs_edit_box.cpp:190
+msgid "F&rame"
+msgstr "К&адр"
+
+#: ../src/subs_edit_box.cpp:190
+msgid "Time by frame number"
+msgstr "Час па нумару кадра"
+
+#: ../src/subs_edit_box.cpp:193
+msgid "Show Original"
+msgstr "Паказаць арыгінал"
+
+#: ../src/subs_edit_box.cpp:194
+msgid ""
+"Show the contents of the subtitle line when it was first selected above the "
+"edit box. This is sometimes useful when editing subtitles or translating "
+"subtitles into another language."
+msgstr ""
+"Паказаць першапачатковае змесціва радка. Часам гэта карысна пры рэдагаванні "
+"субтытраў або перакладзе на іншую мову."
+
+#: ../src/subs_edit_box.cpp:441
+msgid "modify text"
+msgstr "змяніць тэкст"
+
+#: ../src/subs_edit_box.cpp:516
+msgid "modify times"
+msgstr "змяніць час"
+
+#: ../src/subs_edit_box.cpp:590 ../src/dialog_style_editor.cpp:453
+msgid "style change"
+msgstr "змена стылю"
+
+#: ../src/subs_edit_box.cpp:596
+msgid "actor change"
+msgstr "змена акцёра"
+
+#: ../src/subs_edit_box.cpp:601
+msgid "layer change"
+msgstr "змена слою"
+
+#: ../src/subs_edit_box.cpp:606
+msgid "effect change"
+msgstr "змена эфекта"
+
+#: ../src/subs_edit_box.cpp:611
+msgid "comment change"
+msgstr "каменціраванне"
+
+#: ../src/dialog_selection.cpp:106
+msgid "Select"
+msgstr "Выбраць"
+
+#: ../src/dialog_selection.cpp:117
+msgid "Match"
+msgstr "Супадзенне"
+
+#: ../src/dialog_selection.cpp:121
+msgid "&Matches"
+msgstr "&Супадае"
+
+#: ../src/dialog_selection.cpp:122
+msgid "&Doesn't Match"
+msgstr "&Не супадае"
+
+#: ../src/dialog_selection.cpp:123
+msgid "Match c&ase"
+msgstr "Улічваць &рэгістр"
+
+#: ../src/dialog_selection.cpp:132
+msgid "&Exact match"
+msgstr "&Дакладнае супадзенне"
+
+#: ../src/dialog_selection.cpp:132
+msgid "&Contains"
+msgstr "Ут&рымлівае"
+
+#: ../src/dialog_selection.cpp:132
+msgid "&Regular Expression match"
+msgstr "Супадае па рэгулярнаму &выразу"
+
+#: ../src/dialog_selection.cpp:133
+msgid "Mode"
+msgstr "Рэжым"
+
+#: ../src/dialog_selection.cpp:137 ../src/dialog_search_replace.cpp:87
+msgid "&Text"
+msgstr "&Тэкст"
+
+#: ../src/dialog_selection.cpp:137
+msgid "&Style"
+msgstr "&Стыль"
+
+#: ../src/dialog_selection.cpp:137
+msgid "Act&or"
+msgstr "&Акцёр"
+
+#: ../src/dialog_selection.cpp:137
+msgid "E&ffect"
+msgstr "Э&фект"
+
+#: ../src/dialog_selection.cpp:138 ../src/dialog_search_replace.cpp:90
+msgid "In Field"
+msgstr "У полі"
+
+#: ../src/dialog_selection.cpp:142
+msgid "Match dialogues/comments"
+msgstr "Дыялогі/каментарыі"
+
+#: ../src/dialog_selection.cpp:143
+msgid "D&ialogues"
+msgstr "Д&ыялогі"
+
+#: ../src/dialog_selection.cpp:144
+msgid "Comme&nts"
+msgstr "&Каментарыі"
+
+#: ../src/dialog_selection.cpp:149
+msgid "Set se&lection"
+msgstr "Задаць &вылучэнне"
+
+#: ../src/dialog_selection.cpp:149
+msgid "&Add to selection"
+msgstr "&Дадаць да вылучэння"
+
+#: ../src/dialog_selection.cpp:149
+msgid "S&ubtract from selection"
+msgstr "&Прыбраць з вылучэння"
+
+#: ../src/dialog_selection.cpp:149
+msgid "Intersect &with selection"
+msgstr "&Накладанне з вылучэннем"
+
+#: ../src/dialog_selection.cpp:211
+#, c-format
+msgid "Selection was set to one line"
+msgid_plural "Selection was set to %u lines"
+msgstr[0] "Вылучаны 1 радок"
+msgstr[1] "Вылучана %u радкі"
+msgstr[2] "Вылучана %u радкоў"
+msgstr[3] "Вылучана %u радкі"
+
+#: ../src/dialog_selection.cpp:212
+msgid "Selection was set to no lines"
+msgstr "Не вылучана радкоў"
+
+#: ../src/dialog_selection.cpp:218
+#, c-format
+msgid "One line was added to selection"
+msgid_plural "%u lines were added to selection"
+msgstr[0] "Адзін радок дададзены да вылучэння"
+msgstr[1] "%u радкі дададзены да вылучэння"
+msgstr[2] "%u радкоў дададзены да вылучэння "
+msgstr[3] "%u радкоў дададзены да вылучэння "
+
+#: ../src/dialog_selection.cpp:219
+msgid "No lines were added to selection"
+msgstr "Да вылучэння не дададзена радкоў"
+
+#: ../src/dialog_selection.cpp:230
+#, c-format
+msgid "One line was removed from selection"
+msgid_plural "%u lines were removed from selection"
+msgstr[0] "Адзін радок выдалены з вылучэння"
+msgstr[1] "%u радкі выдалены з вылучэння"
+msgstr[2] "%u радкоў выдалена з вылучэння"
+msgstr[3] "%u радкоў выдалена з вылучэння"
+
+#: ../src/dialog_selection.cpp:231
+msgid "No lines were removed from selection"
+msgstr "З вылучэння не выладена радкоў"
+
+#: ../src/dialog_selection.cpp:236
+msgid "Selection"
+msgstr "Вылучэнне"
+
+#: ../src/font_file_lister.cpp:72
+#, c-format
+msgid "Style '%s' does not exist\n"
+msgstr "Стыль '%s' не існуе\n"
+
+#: ../src/font_file_lister.cpp:138
+#, c-format
+msgid "Could not find font '%s'\n"
+msgstr "Не атрымалася знайсці шрыфт '%s'\n"
+
+#: ../src/font_file_lister.cpp:145
+#, c-format
+msgid "Found '%s' at '%s'\n"
+msgstr "Знойдзена '%s' в '%s'\n"
+
+#: ../src/font_file_lister.cpp:149
+#, c-format
+msgid "'%s' does not have a bold variant.\n"
+msgstr "'%s' не мае тоўстага варыянта.\n"
+
+#: ../src/font_file_lister.cpp:151
+#, c-format
+msgid "'%s' does not have an italic variant.\n"
+msgstr "'%s' не мае курсіўнага варыянта.\n"
+
+#: ../src/font_file_lister.cpp:155
+#, c-format
+msgid "'%s' is missing %d glyphs used.\n"
+msgstr "У '%s' не хапае %dгліфаў.\n"
+
+#: ../src/font_file_lister.cpp:157
+#, c-format
+msgid "'%s' is missing the following glyphs used: %s\n"
+msgstr "У '%s' не хапае наступных гліфаў: %s\n"
+
+#: ../src/font_file_lister.cpp:168
+msgid "Used in styles:\n"
+msgstr "Ужыта ў стылях:\n"
+
+#: ../src/font_file_lister.cpp:174
+msgid "Used on lines:"
+msgstr "Ужыта ў радках:"
+
+#: ../src/font_file_lister.cpp:186
+msgid "Parsing file\n"
+msgstr "Чытанне файла\n"
+
+#: ../src/font_file_lister.cpp:200
+msgid "Searching for font files\n"
+msgstr "Пошук файлаў шрыфтоў\n"
+
+#: ../src/font_file_lister.cpp:202
+msgid ""
+"Done\n"
+"\n"
+msgstr ""
+"Гатова\n"
+"\n"
+
+#: ../src/font_file_lister.cpp:209
+msgid "All fonts found.\n"
+msgstr "Усе шрыфты дададзены.\n"
+
+#: ../src/font_file_lister.cpp:211
+#, c-format
+msgid "One font could not be found\n"
+msgid_plural "%d fonts could not be found.\n"
+msgstr[0] "Не атрымоўваецца знайсці 1 шрыфт\n"
+msgstr[1] "Не атрымоўваецца знайсці %d шрыфты\n"
+msgstr[2] "Не атрымоўваецца знайсці %d шрыфтоў\n"
+msgstr[3] "Не атрымоўваецца знайсці %d шрыфтоў\n"
+
+#: ../src/font_file_lister.cpp:214
+#, c-format
+msgid "One font was found, but was missing glyphs used in the script.\n"
+msgid_plural ""
+"%d fonts were found, but were missing glyphs used in the script.\n"
+msgstr[0] ""
+"Знойдзены 1 шрыфт, але не хапае гліфаў, якія выкарытоўваюцца ў сэнарыі.\n"
+msgstr[1] ""
+"Знойдзены %d шрыфты, але не хапае гліфаў, якія выкарытоўваюцца ў сэнарыі.\n"
+msgstr[2] ""
+"Знойдзена %d шрыфтоў, але не хапае гліфаў, якія выкарытоўваюцца ў сэнарыі.\n"
+msgstr[3] ""
+"Знойдзена %d шрыфтоў, але не хапае гліфаў, якія выкарытоўваюцца ў скрыпце.\n"
+
+#: ../src/export_framerate.cpp:52
+msgid "Transform Framerate"
+msgstr "Змяніць частату кадраў"
+
+#: ../src/export_framerate.cpp:53
+msgid ""
+"Transform subtitle times, including those in override tags, from an input framerate to an output framerate.\n"
+"\n"
+"This is useful for converting regular time subtitles to VFRaC time subtitles for hardsubbing.\n"
+"It can also be used to convert subtitles to a different speed video, such as NTSC to PAL speedup."
+msgstr ""
+"Канвертаваць таймінг субтытраў і гэтаў з уваходнай частаты кадраў у выхадную частату.\n"
+"\n"
+"Гэта карысна для канвертавання звычайнага таймінга ў таймінг VFRaC для хардсаба.\n"
+"Можна выкарыстоўваць для канвертавання субтытраў пад іншую хуткасць відэа, напрыклад, паскарэнні відэа пры канвертаванні з NTSC у PAL."
+
+#: ../src/export_framerate.cpp:92
+msgid "V&ariable"
+msgstr "П&ераменная"
+
+#: ../src/export_framerate.cpp:96
+msgid "&Constant: "
+msgstr "&Пастаянная:"
+
+#: ../src/export_framerate.cpp:108
+msgid "&Reverse transformation"
+msgstr "&Адваротнае канвертаванне"
+
+#: ../src/export_framerate.cpp:116
+msgid "Input framerate: "
+msgstr "Уваходная частата кадраў:"
+
+#: ../src/export_framerate.cpp:118
+msgid "Output: "
+msgstr "Вывад:"
+
+#: ../src/audio_display.cpp:677
+#, c-format
+msgid "%d%%, %d pixel/second"
+msgstr "%d%%,%d пікселяў/сек"
+
+#: ../src/dialog_progress.cpp:197
+msgid "Cancel"
+msgstr "Скасаваць"
+
+#: ../src/dialog_progress.cpp:245
+msgid "Cancelling..."
+msgstr "Скасаванне..."
+
+#: ../src/visual_tool_vector_clip.cpp:57
+msgid "Drag control points"
+msgstr "Перамясціць кантрольныя пункты"
+
+#: ../src/visual_tool_vector_clip.cpp:58
+msgid "Line"
+msgstr "Радок"
+
+#: ../src/visual_tool_vector_clip.cpp:58
+msgid "Appends a line"
+msgstr "Дадаць прамую"
+
+#: ../src/visual_tool_vector_clip.cpp:59
+msgid "Bicubic"
+msgstr "Крывая"
+
+#: ../src/visual_tool_vector_clip.cpp:59
+msgid "Appends a bezier bicubic curve"
+msgstr "Канвертаваць крывую Без'е"
+
+#: ../src/visual_tool_vector_clip.cpp:61
+msgid "Convert"
+msgstr "Канвертаваць"
+
+#: ../src/visual_tool_vector_clip.cpp:61
+msgid "Converts a segment between line and bicubic"
+msgstr "Канвертаваць сегмент з прамой у крывую Без'е і назад"
+
+#: ../src/visual_tool_vector_clip.cpp:62
+msgid "Insert"
+msgstr "Уставіць"
+
+#: ../src/visual_tool_vector_clip.cpp:62
+msgid "Inserts a control point"
+msgstr "Уставіць кантрольны пункт"
+
+#: ../src/visual_tool_vector_clip.cpp:63
+msgid "Remove"
+msgstr "Выдаліць"
+
+#: ../src/visual_tool_vector_clip.cpp:63
+msgid "Removes a control point"
+msgstr "Выдаліць кантрольны пункт"
+
+#: ../src/visual_tool_vector_clip.cpp:65
+msgid "Freehand"
+msgstr "Ад рукі"
+
+#: ../src/visual_tool_vector_clip.cpp:65
+msgid "Draws a freehand shape"
+msgstr "Рысаваць контур ад рукі"
+
+#: ../src/visual_tool_vector_clip.cpp:66
+msgid "Freehand smooth"
+msgstr "Ад рукі згладжана"
+
+#: ../src/visual_tool_vector_clip.cpp:66
+msgid "Draws a smoothed freehand shape"
+msgstr "Рысаваць згладжаны контур ад рукі"
+
+#: ../src/visual_tool_vector_clip.cpp:265
+msgid "delete control point"
+msgstr "выдаленне кантрольнага пункту"
+
+#: ../src/dialog_automation.cpp:106
+msgid "Automation Manager"
+msgstr "Менеджар аўтаматызацыі"
+
+#: ../src/dialog_automation.cpp:117
+msgid "&Add"
+msgstr "&Дадаць"
+
+#: ../src/dialog_automation.cpp:118
+msgid "&Remove"
+msgstr "&Выдаліць"
+
+#: ../src/dialog_automation.cpp:119
+msgid "Re&load"
+msgstr "&Перазагрузіць"
+
+#: ../src/dialog_automation.cpp:120
+msgid "Show &Info"
+msgstr "Паказаць &звесткі"
+
+#: ../src/dialog_automation.cpp:121
+msgid "Re&scan Autoload Dir"
+msgstr "&Абнавіць папку аўтазагрузкі"
+
+#: ../src/dialog_automation.cpp:134
+msgid "Name"
+msgstr "Назва"
+
+#: ../src/dialog_automation.cpp:135
+msgid "Filename"
+msgstr "Назва файла"
+
+#: ../src/dialog_automation.cpp:136
+msgid "Description"
+msgstr "Апісанне"
+
+#: ../src/dialog_automation.cpp:222
+msgid "Add Automation script"
+msgstr "Дадаць скрыпт аўтаматызацыі"
+
+#: ../src/dialog_automation.cpp:277
+#, c-format
+msgid ""
+"Total scripts loaded: %d\n"
+"Global scripts loaded: %d\n"
+"Local scripts loaded: %d\n"
+msgstr ""
+"Усяго загружана скрыптаў: %d\n"
+"Загружана глабальных скрыптаў: %d\n"
+"Загружана лакальных скрыптаў: %d\n"
+
+#: ../src/dialog_automation.cpp:282
+msgid "Scripting engines installed:"
+msgstr "Усталяваныя апрацоўшчыкі скрыптаў:"
+
+#: ../src/dialog_automation.cpp:295
+msgid "Correctly loaded"
+msgstr "Карэктна загружаны"
+
+#: ../src/dialog_automation.cpp:295
+msgid "Failed to load"
+msgstr "Не атрымалася загрузіць"
+
+#: ../src/dialog_automation.cpp:289
+#, c-format
+msgid ""
+"\n"
+"Script info:\n"
+"Name: %s\n"
+"Description: %s\n"
+"Author: %s\n"
+"Version: %s\n"
+"Full path: %s\n"
+"State: %s\n"
+"\n"
+"Features provided by script:"
+msgstr ""
+"\n"
+"Звесткі пра скрыпт:\n"
+"Назва: %s\n"
+"Апісанне: %s\n"
+"Аўтар: %s\n"
+"Версія: %s\n"
+"Шлях: %s\n"
+"Стан: %s\n"
+"\n"
+"Прадстаўлена:"
+
+#: ../src/dialog_automation.cpp:298
+#, c-format
+msgid " Macro: %s (%s)"
+msgstr "Макрас: %s (%s)"
+
+#: ../src/dialog_automation.cpp:301
+#, c-format
+msgid " Export filter: %s"
+msgstr "Фільтр экспарту: %s"
+
+#: ../src/dialog_automation.cpp:305
+msgid "Automation Script Info"
+msgstr "Звесткі аб скрыпце аўтаматызацыі"
+
+#: ../src/dialog_export.cpp:102
+msgid "Export"
+msgstr "Экспарт"
+
+#: ../src/dialog_export.cpp:123
+msgid "Move &Up"
+msgstr "Перамясціць &вышэй"
+
+#: ../src/dialog_export.cpp:124
+msgid "Move &Down"
+msgstr "Перамясціць &ніжэй"
+
+#: ../src/dialog_export.cpp:142
+msgid "Text encoding:"
+msgstr "Кадзіроўка тэксту:"
+
+#: ../src/dialog_export.cpp:150
+msgid "Filters"
+msgstr "Фільтры"
+
+#: ../src/dialog_export.cpp:157
+msgid "Export..."
+msgstr "Экспарт..."
+
+#: ../src/dialog_export.cpp:189
+msgid "Export subtitles file"
+msgstr "Экспарт файла субтытраў"
+
+#: ../src/dialog_search_replace.cpp:46
+msgid "Replace"
+msgstr "Замяніць"
+
+#: ../src/dialog_search_replace.cpp:67
+msgid "Find what:"
+msgstr "Знайсці:"
+
+#: ../src/dialog_search_replace.cpp:78
+msgid "&Match case"
+msgstr "Улічваць &рэгістр"
+
+#: ../src/dialog_search_replace.cpp:79
+msgid "&Use regular expressions"
+msgstr "Выкарыстоўваць рэгулярныя выразы"
+
+#: ../src/dialog_search_replace.cpp:81
+msgid "S&kip Override Tags"
+msgstr "Прапусціць тэгі"
+
+#: ../src/dialog_search_replace.cpp:87
+msgid "St&yle"
+msgstr "Стыль"
+
+#: ../src/dialog_search_replace.cpp:87
+msgid "A&ctor"
+msgstr "Акцёр"
+
+#: ../src/dialog_search_replace.cpp:88
+msgid "A&ll rows"
+msgstr "Усе радкі"
+
+#: ../src/dialog_search_replace.cpp:91
+msgid "Limit to"
+msgstr "Абмежаваць"
+
+#: ../src/dialog_search_replace.cpp:93
+msgid "&Find next"
+msgstr "&Знайсці тэкст"
+
+#: ../src/dialog_search_replace.cpp:94
+msgid "Replace &next"
+msgstr "Замяніць &наступныя"
+
+#: ../src/dialog_autosave.cpp:66
+msgid "Open autosave file"
+msgstr "Адкрыць аўтаматычна захаваны файл"
+
+#: ../src/dialog_autosave.cpp:75
+msgid "Versions"
+msgstr "Версіі"
+
+#: ../src/dialog_autosave.cpp:85
+msgid "Open"
+msgstr "Адкрыць"
+
+#: ../src/dialog_autosave.cpp:94
+#, c-format
+msgid "%s [ORIGINAL BACKUP]"
+msgstr "%s [АРЫГІНАЛЬНАЯ РЭЗЕРВОВАЯ КОПІЯ]"
+
+#: ../src/dialog_autosave.cpp:95
+#, c-format
+msgid "%s [RECOVERED]"
+msgstr "%s[АДНОЎЛЕНА] "
+
+#: ../src/audio_box.cpp:73
+msgid "Horizontal zoom"
+msgstr "Гарызантальнае маштабаванне"
+
+#: ../src/audio_box.cpp:74
+msgid "Vertical zoom"
+msgstr "Вертыкальнае маштабаванне"
+
+#: ../src/audio_box.cpp:75
+msgid "Audio Volume"
+msgstr "Гучнасць аўдыя"
+
+#: ../src/grid_column.cpp:82
+msgid "#"
+msgstr "№"
+
+#: ../src/grid_column.cpp:83
+msgid "Line Number"
+msgstr "Нумар радка"
+
+#: ../src/grid_column.cpp:106
+msgid "L"
+msgstr "С"
+
+#: ../src/grid_column.cpp:128
+msgid "Start"
+msgstr "Пачатак"
+
+#: ../src/grid_column.cpp:146
+msgid "End"
+msgstr "Канец"
+
+#: ../src/grid_column.cpp:237 ../src/dialog_style_editor.cpp:288
+msgid "Left"
+msgstr "Лев"
+
+#: ../src/grid_column.cpp:238
+msgid "Left Margin"
+msgstr "Водступ злева"
+
+#: ../src/grid_column.cpp:242 ../src/dialog_style_editor.cpp:288
+msgid "Right"
+msgstr "Прав"
+
+#: ../src/grid_column.cpp:243
+msgid "Right Margin"
+msgstr "Водступ справа"
+
+#: ../src/grid_column.cpp:247 ../src/dialog_style_editor.cpp:288
+msgid "Vert"
+msgstr "Верт"
+
+#: ../src/grid_column.cpp:248
+msgid "Vertical Margin"
+msgstr "Вертыкальны водступ"
+
+#: ../src/grid_column.cpp:266
+msgid "CPS"
+msgstr "сімв./сек"
+
+#: ../src/grid_column.cpp:267
+msgid "Characters Per Second"
+msgstr "Сімвалаў у секунду"
+
+#: ../src/dialog_text_import.cpp:47
+msgid "Text import options"
+msgstr "Налады імпарту тэксту"
+
+#: ../src/dialog_text_import.cpp:54
+msgid "Actor separator:"
+msgstr "Раздзяляльнік акцёраў:"
+
+#: ../src/dialog_text_import.cpp:56
+msgid "Comment starter:"
+msgstr "Пачатак каментарыяў:"
+
+#: ../src/dialog_text_import.cpp:61
+msgid "Include blank lines"
+msgstr "Уключаючы пустыя радкі"
+
+#: ../src/video_box.cpp:57
+msgid "Seek video"
+msgstr "Пазіцыя відэа"
+
+#: ../src/video_box.cpp:62
+msgid "Current frame time and number"
+msgstr "Час і нумар бягучага кадра"
+
+#: ../src/video_box.cpp:65
+msgid "Time of this frame relative to start and end of current subs"
+msgstr "Час ад бягучага кадра да пачатку і канца радкоў"
+
+#: ../src/ass_style.cpp:193
+msgid "ANSI"
+msgstr "ANSI"
+
+#: ../src/ass_style.cpp:195
+msgid "Symbol"
+msgstr "Сімвал"
+
+#: ../src/ass_style.cpp:196
+msgid "Mac"
+msgstr "Mac"
+
+#: ../src/ass_style.cpp:197
+msgid "Shift_JIS"
+msgstr "Японская (Shift_JIS)"
+
+#: ../src/ass_style.cpp:198
+msgid "Hangeul"
+msgstr "Хангыль"
+
+#: ../src/ass_style.cpp:199
+msgid "Johab"
+msgstr "Карэйская (Johab)"
+
+#: ../src/ass_style.cpp:200
+msgid "GB2312"
+msgstr "Спрошчаная кітайская (GB2312)"
+
+#: ../src/ass_style.cpp:201
+msgid "Chinese BIG5"
+msgstr "Традыцыйная кітайская (BIG5)"
+
+#: ../src/ass_style.cpp:202
+msgid "Greek"
+msgstr "Грэчаская"
+
+#: ../src/ass_style.cpp:203
+msgid "Turkish"
+msgstr "Турэцкая"
+
+#: ../src/ass_style.cpp:204
+msgid "Vietnamese"
+msgstr "В'етнамская"
+
+#: ../src/ass_style.cpp:205
+msgid "Hebrew"
+msgstr "Іўрыт"
+
+#: ../src/ass_style.cpp:206
+msgid "Arabic"
+msgstr "Арабская"
+
+#: ../src/ass_style.cpp:207
+msgid "Baltic"
+msgstr "Балтыйская"
+
+#: ../src/ass_style.cpp:208
+msgid "Russian"
+msgstr "Руская"
+
+#: ../src/ass_style.cpp:209
+msgid "Thai"
+msgstr "Тайская"
+
+#: ../src/ass_style.cpp:210
+msgid "East European"
+msgstr "Усходне-Еўрапейская"
+
+#: ../src/ass_style.cpp:211
+msgid "OEM"
+msgstr "OEM"
+
+#: ../src/dialog_colorpicker.cpp:542
+msgid "Select Color"
+msgstr "Выбраць колер"
+
+#: ../src/dialog_colorpicker.cpp:556
+msgid "Color spectrum"
+msgstr "Спектр колеру"
+
+#: ../src/dialog_colorpicker.cpp:560
+msgid "RGB/R"
+msgstr "RGB/R"
+
+#: ../src/dialog_colorpicker.cpp:560
+msgid "RGB/G"
+msgstr "RGB/G"
+
+#: ../src/dialog_colorpicker.cpp:560
+msgid "RGB/B"
+msgstr "RGB/B"
+
+#: ../src/dialog_colorpicker.cpp:560
+msgid "HSL/L"
+msgstr "HSL/L"
+
+#: ../src/dialog_colorpicker.cpp:560
+msgid "HSV/H"
+msgstr "HSV/H"
+
+#: ../src/dialog_colorpicker.cpp:567
+msgid "RGB color"
+msgstr "Колер RGB"
+
+#: ../src/dialog_colorpicker.cpp:568
+msgid "HSL color"
+msgstr "HSL колер"
+
+#: ../src/dialog_colorpicker.cpp:569
+msgid "HSV color"
+msgstr "HSV колер"
+
+#: ../src/dialog_colorpicker.cpp:594
+msgid "Spectrum mode:"
+msgstr "Рэжым спектра:"
+
+#: ../src/dialog_colorpicker.cpp:611
+msgid "Red:"
+msgstr "Чырвоны:"
+
+#: ../src/dialog_colorpicker.cpp:611
+msgid "Green:"
+msgstr "Зялёны:"
+
+#: ../src/dialog_colorpicker.cpp:611
+msgid "Blue:"
+msgstr "Сіні:"
+
+#: ../src/dialog_colorpicker.cpp:614
+msgid "Alpha:"
+msgstr "Празрыстасць:"
+
+#: ../src/dialog_colorpicker.cpp:621 ../src/dialog_colorpicker.cpp:624
+msgid "Hue:"
+msgstr "Адц.:"
+
+#: ../src/dialog_colorpicker.cpp:621 ../src/dialog_colorpicker.cpp:624
+msgid "Sat.:"
+msgstr "Нас.:"
+
+#: ../src/dialog_colorpicker.cpp:621
+msgid "Lum.:"
+msgstr "Ярк.:"
+
+#: ../src/dialog_colorpicker.cpp:624
+msgid "Value:"
+msgstr "Значэнне:"
+
+#: ../src/charset_detect.cpp:80
+msgid ""
+"Aegisub could not narrow down the character set to a single one.\n"
+"Please pick one below:"
+msgstr ""
+"Aegisub не можа дакладна вызначыць кадзіроўку файла.\n"
+"Выберыце адну са спісу:"
+
+#: ../src/charset_detect.cpp:81
+msgid "Choose character set"
+msgstr "Выбраць кадзіроўку"
+
+#: ../src/dialog_detached_video.cpp:66 ../src/dialog_detached_video.cpp:134
+#, c-format
+msgid "Video: %s"
+msgstr "Відэа: %s"
+
+#: ../src/subtitle_format.cpp:100
+#, c-format
+msgid "From video (%g)"
+msgstr "З відэа (%g)"
+
+#: ../src/subtitle_format.cpp:102
+msgid "From video (VFR)"
+msgstr "З відэа (VFR)"
+
+#: ../src/subtitle_format.cpp:108
+msgid "15.000 FPS"
+msgstr "15.000 кадр/сек"
+
+#: ../src/subtitle_format.cpp:109
+msgid "23.976 FPS (Decimated NTSC)"
+msgstr "23.976 кадр/сек (Прарэджаны NTSC)"
+
+#: ../src/subtitle_format.cpp:110
+msgid "24.000 FPS (FILM)"
+msgstr "24.000 кадр/сек (FILM)"
+
+#: ../src/subtitle_format.cpp:111
+msgid "25.000 FPS (PAL)"
+msgstr "25.000 кадр/сек (PAL)"
+
+#: ../src/subtitle_format.cpp:112
+msgid "29.970 FPS (NTSC)"
+msgstr "29.970 кадр/сек (NTSC)"
+
+#: ../src/subtitle_format.cpp:114
+msgid "29.970 FPS (NTSC with SMPTE dropframe)"
+msgstr "29.970 кадр/сек (NTSC з SMPTE пропускам кадраў)"
+
+#: ../src/subtitle_format.cpp:115
+msgid "30.000 FPS"
+msgstr "30.000 кадр/сек"
+
+#: ../src/subtitle_format.cpp:116
+msgid "50.000 FPS (PAL x2)"
+msgstr "50.000 кадр/сек (PAL x2)"
+
+#: ../src/subtitle_format.cpp:117
+msgid "59.940 FPS (NTSC x2)"
+msgstr "59.940 кадр/сек(NTSC x2)"
+
+#: ../src/subtitle_format.cpp:118
+msgid "60.000 FPS"
+msgstr "60.000 кадр/сек"
+
+#: ../src/subtitle_format.cpp:119
+msgid "119.880 FPS (NTSC x4)"
+msgstr "119.880 кадр/сек(NTSC x4)"
+
+#: ../src/subtitle_format.cpp:120
+msgid "120.000 FPS"
+msgstr "120.000 кадр/сек"
+
+#: ../src/subtitle_format.cpp:124
+msgid "Please choose the appropriate FPS for the subtitles:"
+msgstr "Выбраць частату кадраў для субтытраў:"
+
+#: ../src/subtitle_format.cpp:124
+msgid "FPS"
+msgstr "кадр/сек"
+
+#: ../src/ffmpegsource_common.cpp:94
+msgid "Indexing"
+msgstr "Індэксаванне"
+
+#: ../src/ffmpegsource_common.cpp:95
+msgid "Reading timecodes and frame/sample data"
+msgstr "Чытанне таймкодаў і кадраў"
+
+#: ../src/ffmpegsource_common.cpp:141
+#, c-format
+msgid "Track %02d: %s"
+msgstr "Трэк %02d: %s"
+
+#: ../src/ffmpegsource_common.cpp:146
+msgid ""
+"Multiple video tracks detected, please choose the one you wish to load:"
+msgstr "Выяўлена некалькі відэатрэкаў, выберыце, які вы хочаце загрузіць:"
+
+#: ../src/ffmpegsource_common.cpp:146
+msgid ""
+"Multiple audio tracks detected, please choose the one you wish to load:"
+msgstr "Выяўлена некалькі аўдыятрэкаў, выберыце, якую вы хочаце загрузіць:"
+
+#: ../src/ffmpegsource_common.cpp:147
+msgid "Choose video track"
+msgstr "Выбраць відэатрэк"
+
+#: ../src/ffmpegsource_common.cpp:147
+msgid "Choose audio track"
+msgstr "Выбраць аўдыятрэк"
+
+#: ../src/resolution_resampler.cpp:287
+msgid "resolution resampling"
+msgstr "пералік разрознення"
+
+#: ../src/project.cpp:187
+msgid "Do you want to load/unload the associated files?"
+msgstr "Ці вы хочаце загрузіць/выгрузіць звязаныя файлы?"
+
+#: ../src/project.cpp:198
+msgid "Unload audio"
+msgstr "Выгрузіць аўдыя"
+
+#: ../src/project.cpp:198
+#, c-format
+msgid "Load audio file: %s"
+msgstr "Загрузіць аўдыяфайл: %s"
+
+#: ../src/project.cpp:200
+msgid "Unload video"
+msgstr "Выгрузіць відэа"
+
+#: ../src/project.cpp:200
+#, c-format
+msgid "Load video file: %s"
+msgstr "Загрузіць відэафайл: %s"
+
+#: ../src/project.cpp:202
+msgid "Unload timecodes"
+msgstr "Выгрузіць таймкоды"
+
+#: ../src/project.cpp:202
+#, c-format
+msgid "Load timecodes file: %s"
+msgstr "Загрузіць файл таймкодаў: %s"
+
+#: ../src/project.cpp:204
+msgid "Unload keyframes"
+msgstr "Выгрузіць ключкадры"
+
+#: ../src/project.cpp:204
+#, c-format
+msgid "Load keyframes file: %s"
+msgstr "Загрузіць файл ключкадраў: %s"
+
+#: ../src/project.cpp:206
+msgid "(Un)Load files?"
+msgstr "Загрузіць/Выгрузіць файлы?"
+
+#: ../src/project.cpp:255
+msgid "The audio file was not found: "
+msgstr "Аўдыяфайл не знойдзены:"
+
+#: ../src/project.cpp:263
+msgid ""
+"None of the available audio providers recognised the selected file as containing audio data.\n"
+"\n"
+"The following providers were tried:\n"
+msgstr ""
+"Ніводны з даступных правайдараў аўдыя не распазнаў выбраны файл як файл з аўдыяданымі.\n"
+"\n"
+"Былі скарыстаны наступныя правайдары:\n"
+
+#: ../src/project.cpp:266
+msgid ""
+"None of the available audio providers have a codec available to handle the selected file.\n"
+"\n"
+"The following providers were tried:\n"
+msgstr ""
+"Ніводны з даступных правайдараў аўдыя не мае кодэкаў для апрацоўкі выбранага файла.\n"
+"\n"
+"Былі скарыстаны наступныя правайдары:\n"
+
+#: ../src/dialog_style_editor.cpp:127
+msgid "Style Editor"
+msgstr "Рэдактар стыля"
+
+#: ../src/dialog_style_editor.cpp:178
+msgid "Font"
+msgstr "Шрыфт"
+
+#: ../src/dialog_style_editor.cpp:180
+msgid "Margins"
+msgstr "Водступы"
+
+#: ../src/dialog_style_editor.cpp:181 ../src/dialog_style_editor.cpp:277
+msgid "Outline"
+msgstr "Контур"
+
+#: ../src/dialog_style_editor.cpp:182
+msgid "Miscellaneous"
+msgstr "Рознае"
+
+#: ../src/dialog_style_editor.cpp:183
+msgid "Preview"
+msgstr "Перадпрагляд"
+
+#: ../src/dialog_style_editor.cpp:189
+msgid "&Bold"
+msgstr "&Тоўсты"
+
+#: ../src/dialog_style_editor.cpp:190
+msgid "&Italic"
+msgstr "&Курсіў"
+
+#: ../src/dialog_style_editor.cpp:191
+msgid "&Underline"
+msgstr "&Падкрэслены"
+
+#: ../src/dialog_style_editor.cpp:192
+msgid "&Strikeout"
+msgstr "&Закрэслены"
+
+#: ../src/dialog_style_editor.cpp:204
+msgid "Alignment"
+msgstr "Выраўноўванне"
+
+#: ../src/dialog_style_editor.cpp:207
+msgid "&Opaque box"
+msgstr "&Непразрысты фон"
+
+#: ../src/dialog_style_editor.cpp:215
+msgid "Style name"
+msgstr "Назва стыля"
+
+#: ../src/dialog_style_editor.cpp:216
+msgid "Font face"
+msgstr "Шрыфт"
+
+#: ../src/dialog_style_editor.cpp:217
+msgid "Font size"
+msgstr "Памер шрыфта"
+
+#: ../src/dialog_style_editor.cpp:218
+msgid "Choose primary color"
+msgstr "Выбраць першасны колер"
+
+#: ../src/dialog_style_editor.cpp:219
+msgid "Choose secondary color"
+msgstr "Выбраць другасны колер"
+
+#: ../src/dialog_style_editor.cpp:220
+msgid "Choose outline color"
+msgstr "Выбраць колер контуру"
+
+#: ../src/dialog_style_editor.cpp:221
+msgid "Choose shadow color"
+msgstr "Выбраць колер ценю"
+
+#: ../src/dialog_style_editor.cpp:222
+msgid "Distance from left edge, in pixels"
+msgstr "Адлегласць ад левага краю, у пікселях"
+
+#: ../src/dialog_style_editor.cpp:223
+msgid "Distance from right edge, in pixels"
+msgstr "Адлегласць ад правага краю, у пікселях"
+
+#: ../src/dialog_style_editor.cpp:224
+msgid "Distance from top/bottom edge, in pixels"
+msgstr "Водступ ад верхняга/ніжняга краю, у пікселях"
+
+#: ../src/dialog_style_editor.cpp:225
+msgid ""
+"When selected, display an opaque box behind the subtitles instead of an "
+"outline around the text"
+msgstr "Калі ўключана, будзе паказвацца непразрыстая рамка замест контуру"
+
+#: ../src/dialog_style_editor.cpp:226
+msgid "Outline width, in pixels"
+msgstr "Шырыня контуру, у пікселях"
+
+#: ../src/dialog_style_editor.cpp:227
+msgid "Shadow distance, in pixels"
+msgstr "Адлегласць ценю, у пікселях"
+
+#: ../src/dialog_style_editor.cpp:228
+msgid "Scale X, in percentage"
+msgstr "Маштаб па восі Х, у працэнтах"
+
+#: ../src/dialog_style_editor.cpp:229
+msgid "Scale Y, in percentage"
+msgstr "Маштаб па восі Y, у працэнтах"
+
+#: ../src/dialog_style_editor.cpp:230
+msgid "Angle to rotate in Z axis, in degrees"
+msgstr "Паварочванне па восі Z, у градусах"
+
+#: ../src/dialog_style_editor.cpp:231
+msgid ""
+"Encoding, only useful in unicode if the font doesn't have the proper unicode"
+" mapping"
+msgstr ""
+"Пры Юнікодзе, пабочныя кадзіроўкі выкарыстоўваюцца толькі калі шрыфт не мае "
+"набору сімвалаў Юнікода"
+
+#: ../src/dialog_style_editor.cpp:232
+msgid "Character spacing, in pixels"
+msgstr "Інтэрвал паміж сімваламі, у пікселях"
+
+#: ../src/dialog_style_editor.cpp:233
+msgid "Alignment in screen, in numpad style"
+msgstr "Выраўноўванне як на лічбавай клавіятуры"
+
+#: ../src/dialog_style_editor.cpp:277
+msgid "Primary"
+msgstr "Першасны"
+
+#: ../src/dialog_style_editor.cpp:277
+msgid "Secondary"
+msgstr "Другасны"
+
+#: ../src/dialog_style_editor.cpp:277
+msgid "Shadow"
+msgstr "Цень"
+
+#: ../src/dialog_style_editor.cpp:306
+msgid "Outline:"
+msgstr "Контур:"
+
+#: ../src/dialog_style_editor.cpp:307
+msgid "Shadow:"
+msgstr "Цень:"
+
+#: ../src/dialog_style_editor.cpp:312
+msgid "Scale X%:"
+msgstr "Маштаб X%:"
+
+#: ../src/dialog_style_editor.cpp:313
+msgid "Scale Y%:"
+msgstr "Маштаб Y%:"
+
+#: ../src/dialog_style_editor.cpp:314
+msgid "Rotation:"
+msgstr "Паварот:"
+
+#: ../src/dialog_style_editor.cpp:315
+msgid "Spacing:"
+msgstr "Інтэрвал:"
+
+#: ../src/dialog_style_editor.cpp:318
+msgid "Encoding:"
+msgstr "Кадзіроўка:"
+
+#: ../src/dialog_style_editor.cpp:328
+msgid "Preview of current style"
+msgstr "Перадпрагляд бягучага стыля"
+
+#: ../src/dialog_style_editor.cpp:331
+msgid "Text to be used for the preview"
+msgstr "Тэкст для перадпрагляду"
+
+#: ../src/dialog_style_editor.cpp:332
+msgid "Color of preview background"
+msgstr "Колер перадпрагляду фону"
+
+#: ../src/dialog_style_editor.cpp:413
+msgid "There is already a style with this name. Please choose another name."
+msgstr "Ужо існуе стыль пад дадзенай назвай. Выберыце іншае імя."
+
+#: ../src/dialog_style_editor.cpp:413
+msgid "Style name conflict"
+msgstr "Канфлікт назваў стыляў"
+
+#: ../src/dialog_style_editor.cpp:425
+msgid ""
+"Do you want to change all instances of this style in the script to this new "
+"name?"
+msgstr "Змяніць назву стыля ва ўсіх радках, дзе ён выкарыстоўваецца?"
+
+#: ../src/dialog_style_editor.cpp:426
+msgid "Update script?"
+msgstr "Абнавіць скрыпт?"
+
+#: ../src/dialog_export_ebu3264.cpp:84
+msgid ""
+"Time code offset in incorrect format. Ensure it is entered as four groups of"
+" two digits separated by colons."
+msgstr ""
+"Зрушэнне таймкода зададзена ў няправільным фармаце. Праверце, павінна быць 4"
+" групы па 2 лічбы праз двукроп'і."
+
+#: ../src/dialog_export_ebu3264.cpp:84
+msgid "EBU STL export"
+msgstr "Экспарт EBU STL"
+
+#: ../src/dialog_export_ebu3264.cpp:100
+msgid "Export to EBU STL format"
+msgstr "Экспарт у фармат EBU STL"
+
+#: ../src/dialog_export_ebu3264.cpp:103
+msgid "23.976 fps (non-standard, STL24.01)"
+msgstr "23.976 кадр/сек (нестандартна, STL24.01)"
+
+#: ../src/dialog_export_ebu3264.cpp:104
+msgid "24 fps (non-standard, STL24.01)"
+msgstr "24 кадр/сек (нестандартна, STL24.01)"
+
+#: ../src/dialog_export_ebu3264.cpp:105
+msgid "25 fps (STL25.01)"
+msgstr "25 кадр/с (STL25.01)"
+
+#: ../src/dialog_export_ebu3264.cpp:106
+msgid "29.97 fps (non-dropframe, STL30.01)"
+msgstr "29.97 кадр/сек (без пропуску кадраў, STL30.01)"
+
+#: ../src/dialog_export_ebu3264.cpp:107
+msgid "29.97 fps (dropframe, STL30.01)"
+msgstr "29.97 кадр/сек (з пропускам кадраў, STL30.01)"
+
+#: ../src/dialog_export_ebu3264.cpp:108
+msgid "30 fps (STL30.01)"
+msgstr "30 кадр/с (STL30.01)"
+
+#: ../src/dialog_export_ebu3264.cpp:110
+msgid "TV standard"
+msgstr "ТБ-стандарт"
+
+#: ../src/dialog_export_ebu3264.cpp:113
+msgid "Out-times are inclusive"
+msgstr "Залішні час уключаны"
+
+#: ../src/dialog_export_ebu3264.cpp:116
+msgid "ISO 6937-2 (Latin/Western Europe)"
+msgstr "ISO 6937-2 (Лацінка/Заходняя Еўропа)"
+
+#: ../src/dialog_export_ebu3264.cpp:117
+msgid "ISO 8859-5 (Cyrillic)"
+msgstr "ISO 8859-5 (Кірыліца)"
+
+#: ../src/dialog_export_ebu3264.cpp:118
+msgid "ISO 8859-6 (Arabic)"
+msgstr "ISO 8859-6 (Арабскі)"
+
+#: ../src/dialog_export_ebu3264.cpp:119
+msgid "ISO 8859-7 (Greek)"
+msgstr "ISO 8859-7 (Грэчаскі)"
+
+#: ../src/dialog_export_ebu3264.cpp:120
+msgid "ISO 8859-8 (Hebrew)"
+msgstr "ISO 8859-8 (Еўрапескі)"
+
+#: ../src/dialog_export_ebu3264.cpp:121
+msgid "UTF-8 Unicode (non-standard)"
+msgstr "UTF-8 Unicode (нестандартна)"
+
+#: ../src/dialog_export_ebu3264.cpp:123
+msgid "Text encoding"
+msgstr "Кадзіроўка"
+
+#: ../src/dialog_export_ebu3264.cpp:126
+msgid "Automatically wrap long lines (ASS)"
+msgstr "Аўтаматычна пераносіць доўгія радкі (ASS)"
+
+#: ../src/dialog_export_ebu3264.cpp:127
+msgid "Automatically wrap long lines (Balanced)"
+msgstr "Аўтаматычна пераносіць доўгія радкі (сбалансавана)"
+
+#: ../src/dialog_export_ebu3264.cpp:128
+msgid "Abort if any lines are too long"
+msgstr "Перапыняць, калі радок занадта доўгі"
+
+#: ../src/dialog_export_ebu3264.cpp:129
+msgid "Skip lines that are too long"
+msgstr "Прапускаць занадта доўгія радкі"
+
+#: ../src/dialog_export_ebu3264.cpp:134
+msgid "Translate alignments"
+msgstr "Выраўноўванне перакладу"
+
+#: ../src/dialog_export_ebu3264.cpp:139
+msgid "Open subtitles"
+msgstr "Адкрыць субтытры"
+
+#: ../src/dialog_export_ebu3264.cpp:140
+msgid "Level-1 teletext"
+msgstr "Level-1 тэлетэкст"
+
+#: ../src/dialog_export_ebu3264.cpp:141
+msgid "Level-2 teletext"
+msgstr "Level-2 тэлетэкст"
+
+#: ../src/dialog_export_ebu3264.cpp:147
+msgid "Max. line length:"
+msgstr "Макс. даўжыня радка:"
+
+#: ../src/dialog_export_ebu3264.cpp:151
+msgid "Time code offset:"
+msgstr "Зрушэнне таймкода:"
+
+#: ../src/dialog_export_ebu3264.cpp:154
+msgid "Text formatting"
+msgstr "Фарматаванне тэксту"
+
+#: ../src/dialog_export_ebu3264.cpp:159
+msgid "Time codes"
+msgstr "Таймкоды"
+
+#: ../src/dialog_export_ebu3264.cpp:163
+msgid "Display standard"
+msgstr "Стандарт паказу"
+
+#: ../src/subs_controller.cpp:158
+#, c-format
+msgid "File backup saved as \"%s\"."
+msgstr "Рэзервовы файл захаваны як \"%s\"."
+
+#: ../src/subs_controller.cpp:260
+#, c-format
+msgid "Do you want to save changes to %s?"
+msgstr "Ці вы хочаце захаваць змены ў %s?"
+
+#: ../src/subs_controller.cpp:260
+msgid "Unsaved changes"
+msgstr "Незахаваныя змены"
+
+#: ../src/subs_controller.cpp:395
+msgid "Untitled"
+msgstr "Без імені"
+
+#: ../src/subs_controller.cpp:397
+msgid "untitled"
+msgstr "без імені"
+
+#: ../src/dialog_video_properties.cpp:44
+msgid "Resolution mismatch"
+msgstr "Несупадзенне разрознення"
+
+#: ../src/dialog_video_properties.cpp:46
+#, c-format
+msgid ""
+"The resolution of the loaded video and the resolution specified for the subtitles don't match.\n"
+"\n"
+"Video resolution:\t%d x %d\n"
+"Script resolution:\t%d x %d\n"
+"\n"
+"Change subtitles resolution to match video?"
+msgstr ""
+"Разрозненне загружанага відэа і разрозненне субтытраў не супадаюць.\n"
+"\n"
+"Разрозненне відэа:\t%d x %d\n"
+"Разрозненне субтытраў :\t%d x %d\n"
+"\n"
+"Змяніць разрозненне субтытраў на разрозненне відэа?"
+
+#: ../src/dialog_video_properties.cpp:54 ../src/dialog_video_properties.cpp:63
+msgid "Set to video resolution"
+msgstr "Задаць як у разрознення відэа"
+
+#: ../src/dialog_video_properties.cpp:55
+msgid "Resample script (stretch to new aspect ratio)"
+msgstr "Пералічыць скрыпт (расцягнуць да новых суадносін бакоў)"
+
+#: ../src/dialog_video_properties.cpp:56
+msgid "Resample script (add borders)"
+msgstr "Пералічыць скрыпт (дадаць контуры)"
+
+#: ../src/dialog_video_properties.cpp:57
+msgid "Resample script (remove borders)"
+msgstr "Пералічыць скрыпт (выдаліць контуры)"
+
+#: ../src/dialog_video_properties.cpp:64
+msgid "Resample script"
+msgstr "Пералічыць скрыпт"
+
+#: ../src/dialog_video_properties.cpp:163
+msgid "change script resolution"
+msgstr "змяніць разрозненне сцэнарыя"
+
+#: ../src/dialog_attachments.cpp:68
+msgid "Attachment List"
+msgstr "Спіс далучэнняў"
+
+#: ../src/dialog_attachments.cpp:76
+msgid "Attach &Font"
+msgstr "Далучыць &шрыфт"
+
+#: ../src/dialog_attachments.cpp:77
+msgid "Attach &Graphics"
+msgstr "Далучыць &графіку"
+
+#: ../src/dialog_attachments.cpp:78
+msgid "E&xtract"
+msgstr "В&ыняць"
+
+#: ../src/dialog_attachments.cpp:110
+msgid "Attachment name"
+msgstr "Імя ўкладання"
+
+#: ../src/dialog_attachments.cpp:111
+msgid "Size"
+msgstr "Памер"
+
+#: ../src/dialog_attachments.cpp:112
+msgid "Group"
+msgstr "Група"
+
+#: ../src/dialog_attachments.cpp:138 ../src/dialog_attachments.cpp:147
+msgid "Choose file to be attached"
+msgstr "Выбраць файл для далучэння"
+
+#: ../src/dialog_attachments.cpp:142
+msgid "attach font file"
+msgstr "далучэнне шрыфта"
+
+#: ../src/dialog_attachments.cpp:152
+msgid "attach graphics file"
+msgstr "далучэнне графікі"
+
+#: ../src/dialog_attachments.cpp:164
+msgid "Select the path to save the files to:"
+msgstr "Выбраць шлях для захавання файлаў:"
+
+#: ../src/dialog_attachments.cpp:167
+msgid "Select the path to save the file to:"
+msgstr "Выбраць шлях для захавання файла:"
+
+#: ../src/dialog_attachments.cpp:189
+msgid "remove attachment"
+msgstr "выдаленне далучэння"
+
+#: ../src/dialog_translation.cpp:77
+msgid "Original"
+msgstr "Арыгінал"
+
+#: ../src/dialog_translation.cpp:100
+msgid "Translation"
+msgstr "Пераклад"
+
+#: ../src/dialog_translation.cpp:115
+msgid "Insert original"
+msgstr "Уставіць арыгінал"
+
+#: ../src/dialog_translation.cpp:118
+msgid "Delete line"
+msgstr "Выдаліць радок"
+
+#: ../src/dialog_translation.cpp:121
+msgid "Enable &preview"
+msgstr "Уключыць &перадпрагляд"
+
+#: ../src/dialog_translation.cpp:178 ../src/dialog_translation.cpp:278
+msgid "No more lines to translate."
+msgstr "Больш няма радкоў для перакладу."
+
+#: ../src/dialog_translation.cpp:186 ../src/dialog_translation.cpp:236
+#, c-format
+msgid "Current line: %d/%d"
+msgstr "Бягучы радок: %d/%d"
+
+#: ../src/dialog_translation.cpp:273
+msgid "translation assistant"
+msgstr "памочнік перакладу"
+
+#: ../src/visual_tool.cpp:122
+msgid "visual typesetting"
+msgstr "візуальнае афармленне"
+
+#: ../src/dialog_resample.cpp:119
+msgid "&Symmetrical"
+msgstr "&Сіметрычна"
+
+#: ../src/dialog_resample.cpp:143
+msgid "From s&cript"
+msgstr "З скрыпту"
+
+#: ../src/dialog_resample.cpp:146
+msgid "Stretch"
+msgstr "Расцягнуць"
+
+#: ../src/dialog_resample.cpp:146
+msgid "Add borders"
+msgstr "Дадаць межы"
+
+#: ../src/dialog_resample.cpp:146
+msgid "Remove borders"
+msgstr "Выдаліць межы"
+
+#: ../src/dialog_resample.cpp:146
+msgid "Manual"
+msgstr "Уручную"
+
+#: ../src/dialog_resample.cpp:147
+msgid "Aspect Ratio Handling"
+msgstr "Апрацоўка суадносін бакоў"
+
+#: ../src/dialog_resample.cpp:162
+msgid "Margin offset"
+msgstr "Змяшчэнне межаў"
+
+#: ../src/dialog_resample.cpp:167 ../src/dialog_resample.cpp:181
+msgid "x"
+msgstr "x"
+
+#: ../src/dialog_resample.cpp:172 ../src/dialog_resample.cpp:186
+msgid "YCbCr Matrix:"
+msgstr "Матрыца YCbCr:"
+
+#: ../src/dialog_resample.cpp:175
+msgid "Source Resolution"
+msgstr "Зыходнае разрозненне"
+
+#: ../src/dialog_resample.cpp:189
+msgid "Destination Resolution"
+msgstr "Мэтавае разрозненне"
+
+#: ../src/dialog_version_check.cpp:94
+msgid "Version Checker"
+msgstr "Праверка версій"
+
+#: ../src/dialog_version_check.cpp:119
+msgid "&Auto Check for Updates"
+msgstr "&Аўтаматычна правяраць абнаўленні"
+
+#: ../src/dialog_version_check.cpp:124
+msgid "Remind me again in a &week"
+msgstr "Нагадаць праз &тыдзень"
+
+#: ../src/dialog_version_check.cpp:288
+msgid "Could not connect to updates server."
+msgstr "Немагчыма падлучыцца да сервера абнаўленняў."
+
+#: ../src/dialog_version_check.cpp:310
+msgid "Could not download from updates server."
+msgstr "Немагчыма спампаваць абнаўленне з сервера."
+
+#: ../src/dialog_version_check.cpp:312
+#, c-format
+msgid "HTTP request failed, got HTTP response %d."
+msgstr "Памылка HTTP-запыту, атрыманы адказ HTTP %d."
+
+#: ../src/dialog_version_check.cpp:343
+msgid "An update to Aegisub was found."
+msgstr "Знойдзена абнаўленне Aegisub."
+
+#: ../src/dialog_version_check.cpp:345
+msgid "Several possible updates to Aegisub were found."
+msgstr "Знойдзена некалькі абнаўленняў Aegisub."
+
+#: ../src/dialog_version_check.cpp:347
+msgid "There are no updates to Aegisub."
+msgstr "Абнаўленняў Aegisub няма."
+
+#: ../src/dialog_version_check.cpp:375
+#, c-format
+msgid ""
+"There was an error checking for updates to Aegisub:\n"
+"%s\n"
+"\n"
+"If other applications can access the Internet fine, this is probably a temporary server problem on our end."
+msgstr ""
+"Адбылася памылка праверкі абнаўленняў Aegisub:\n"
+"%s\n"
+"\n"
+"Калі ў іншых праграм няма праблем з доступам да інтэрнэта, верагодна, гэта часовая памылка сервера на нашым канцы."
+
+#: ../src/dialog_version_check.cpp:379
+msgid "An unknown error occurred while checking for updates to Aegisub."
+msgstr "Адбылася невядомая памылка падчас праверкі абнаўленняў Aegisub."
+
+#: default_menu.json:0
+msgid "&Insert (before)"
+msgstr "&Уставіць (перад)"
+
+#: default_menu.json:0
+msgid "Insert (after)"
+msgstr "Уставіць (пасля)"
+
+#: default_menu.json:0
+msgid "Insert at video time (before)"
+msgstr "Уставіць па часу відэа (перад)"
+
+#: default_menu.json:0
+msgid "Insert at video time (after)"
+msgstr "Уставіць па часу відэа (пасля)"
+
+#: default_menu.json:0
+msgid "&Join (concatenate)"
+msgstr "&Аб'яднаць"
+
+#: default_menu.json:0
+msgid "Join (keep first)"
+msgstr "Аб'яднаць (пакінуць першы)"
+
+#: default_menu.json:0
+msgid "Join (as Karaoke)"
+msgstr "Аб'яднаць (як караоке)"
+
+#: default_menu.json:0
+msgid "&Make times continuous (change start)"
+msgstr "Зрабіць &бесперапынным (змяніць пачатак)"
+
+#: default_menu.json:0
+msgid "&Make times continuous (change end)"
+msgstr "Зрабіць &бесперапынным (змяніць канец)"
+
+#: default_menu.json:0
+msgid "&File"
+msgstr "&Файл"
+
+#: default_menu.json:0
+msgid "&Subtitle"
+msgstr "&Субтытры"
+
+#: default_menu.json:0
+msgid "&Timing"
+msgstr "&Таймінг"
+
+#: default_menu.json:0
+msgid "&Video"
+msgstr "&Відэа"
+
+#: default_menu.json:0
+msgid "&Audio"
+msgstr "&Аўдыя"
+
+#: default_menu.json:0
+msgid "A&utomation"
+msgstr "&Аўтаматызацыя"
+
+#: default_menu.json:0
+msgid "Vie&w"
+msgstr "Выгля&д"
+
+#: default_menu.json:0
+msgid "&Help"
+msgstr "&Дапамога"
+
+#: default_menu.json:0
+msgid "&Insert Lines"
+msgstr "&Уставіць радкі"
+
+#: default_menu.json:0
+msgid "Join Lines"
+msgstr "Аб'яднаць радкі"
+
+#: default_menu.json:0
+msgid "Sort All Lines"
+msgstr "Сартаваць усе радкі"
+
+#: default_menu.json:0
+msgid "Sort Selected Lines"
+msgstr "Сартаваць выбраныя радкі"
+
+#: default_menu.json:0
+msgid "Make Times Continuous"
+msgstr "Зрабіць таймінг бесперапынным"
+
+#: default_menu.json:0
+msgid "Set &Zoom"
+msgstr "Задаць &маштаб"
+
+#: default_menu.json:0
+msgid "Override &AR"
+msgstr "Змяніць &суадносіны бакоў"
+
+#: default_menu.json:0
+msgid "&Export As..."
+msgstr "&Экспартаваць як..."
+
+#: default_hotkey.json:602:
+msgid "Subtitle Edit Box"
+msgstr "Поле рэдагавання субтытраў"
+
+#: ../automation/autoload/macro-1-edgeblur.lua:6
+msgid "Add edgeblur"
+msgstr "Дадаць размыццё краёў"
+
+#: ../automation/autoload/macro-1-edgeblur.lua:7
+msgid ""
+"A demo macro showing how to do simple line modification in Automation 4"
+msgstr ""
+"Прыклад макрас аўтаматызацыі 4 версіі для звычайнай мадыфікацыі радкоў"
+
+#: ../automation/autoload/macro-1-edgeblur.lua:21
+msgid "Adds \\be1 tags to all selected lines"
+msgstr "Дадае \\be1 да ўсіх вылучаных радкоў"
+
+#: ../automation/autoload/karaoke-auto-leadin.lua:32
+msgid "Automatic karaoke lead-in"
+msgstr "Аўтаматычны ўступ для караоке"
+
+#: ../automation/autoload/karaoke-auto-leadin.lua:33
+msgid "Join up the ends of selected lines and add \\k tags to shift karaoke"
+msgstr "Аб'яднаць вылучаныя радкі і дадаць тэгі \\k для зрушэння караоке"
+
+#: ../automation/autoload/cleantags-autoload.lua:31
+msgid "Clean Tags"
+msgstr "Ачысціць тэгі"
+
+#: ../automation/autoload/cleantags-autoload.lua:32
+msgid ""
+"Clean subtitle lines by re-arranging ASS tags and override blocks within the"
+" lines"
+msgstr ""
+"Ачысціць радкі субтытраў перастаноўкай ASS-тэгаў і блокаў перавызначэння "
+"ўнутры радкоў"
+
+#: ../automation/autoload/kara-templater.lua:36
+msgid "Karaoke Templater"
+msgstr "Шабланізатар караоке"
+
+#: ../automation/autoload/kara-templater.lua:37
+msgid ""
+"Macro and export filter to apply karaoke effects using the template language"
+msgstr ""
+"Макрас і фільтр экспарту для стварэння эфектаў караоке з дапамогай мовы "
+"шаблонаў"
+
+#: ../automation/autoload/kara-templater.lua:858
+msgid "Apply karaoke template"
+msgstr "Дастасаваць шаблон караоке"
+
+#: ../automation/autoload/kara-templater.lua:858
+msgid "Applies karaoke effects from templates"
+msgstr "Дастасоўвае эфекты караоке з шаблонаў"
+
+#: ../automation/autoload/kara-templater.lua:859
+msgid "Karaoke template"
+msgstr "Шаблон караоке"
+
+#: ../automation/autoload/kara-templater.lua:859
+msgid ""
+"Apply karaoke effect templates to the subtitles.\n"
+"\n"
+"See the help file for information on how to use this."
+msgstr ""
+"Дастасоўвае шаблоны эфектаў караоке да субтытраў.\n"
+"\n"
+"Гл. файл дапамогі для звестак пра выкарыстанне."
+
+#: ../automation/autoload/strip-tags.lua:17
+msgid "Strip tags"
+msgstr "Выдаленне тэгаў"
+
+#: ../automation/autoload/strip-tags.lua:18
+msgid "Remove all override tags from selected lines"
+msgstr "Выдаліць усе тэгі з вылучаных радкоў"
+
+#: ../automation/autoload/strip-tags.lua:28
+msgid "strip tags"
+msgstr "выдаленне тэгаў"
+
+#: ../automation/autoload/macro-2-mkfullwitdh.lua:77
+msgid "Make fullwidth"
+msgstr "Зрабіць на ўсю шырыню"
+
+#: ../automation/autoload/macro-2-mkfullwitdh.lua:80
+msgid "Convert Latin letters to SJIS fullwidth letters"
+msgstr "Канвертаваць лацінскія літары ў літары на ўсю шырыню SJIS "
+
+#: aegisub.desktop:4
+msgid "Aegisub"
+msgstr "Aegisub"
+
+#: aegisub.desktop:5
+msgid "Subtitle Editor"
+msgstr "Рэдактар субтытраў"
+
+#: aegisub.desktop:6
+msgid "Create and edit subtitles for film and videos."
+msgstr "Стварыць і рэдагаваць субтытры для фільмаў і відэа."
+
+#: packages/win_installer/fragment_strings.iss:1
+msgid "Installing runtime libraries..."
+msgstr "Усталяванне бібліятэк асяроддзя выканання..."
+
+#: packages/win_installer/fragment_strings.iss:1
+msgid "Create a start menu icon"
+msgstr "Стварыць значок у меню \"Пуск\""
+
+#: packages/win_installer/fragment_strings.iss:1
+msgid "Automatically check for new versions of Aegisub"
+msgstr "Аўтаматычна правяраць абнаўленні Aegisub"
+
+#: packages/win_installer/fragment_strings.iss:1
+msgid "Update Checker:"
+msgstr "Праверка абнаўленняў:"
+
+#: packages/win_installer/fragment_strings.iss:1
+msgid ""
+"This will install Aegisub {#BUILD_GIT_VERSION_STRING} on your "
+"computer.%n%nAegisub is covered by the GNU General Public License version 2."
+" This means you may use the application for any purpose without charge, but "
+"that no warranties of any kind are given either.%n%nSee the Aegisub website "
+"for information on obtaining the source code."
+msgstr ""
+"Гэта ўсталюе Aegisub {#BUILD_GIT_VERSION_STRING} на ваш "
+"камп'ютар.%n%nAegisub распаўсюджваецца па ліцэнзіі GNU General Public "
+"License version 2. Гэта азначае, што вы можаце выкарыстоўваць гэту праграму "
+"для любых мэт, але без якіх-небудзь гарантый.%n%nКаб даведацца пра атрыманне"
+" зыходнага кода, перайдзіце на сайт Aegisub."
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 2634544f4..6ad75d8fa 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -4,7 +4,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-24 16:41+0200\n"
"PO-Revision-Date: \n"
-"Last-Translator: Cirrus Wazza \n"
+"Last-Translator: Ichunjo\n"
"Language-Team: Céréales Killer \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-Bookmarks: -1,596,-1,-1,-1,-1,-1,-1,-1,-1\n"
-"X-Generator: Poedit 1.8.4\n"
+"X-Generator: Poedit 2.4.3\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../src/dialog_shift_times.cpp:92
@@ -55,7 +55,7 @@ msgstr "depuis %d vers"
#: ../src/dialog_shift_times.cpp:115
msgid "sel "
-msgstr "sél."
+msgstr "sél. "
#: ../src/dialog_shift_times.cpp:133 ../src/command/time.cpp:153
msgid "Shift Times"
@@ -63,7 +63,7 @@ msgstr "Décalage temps"
#: ../src/dialog_shift_times.cpp:142
msgid "&Time: "
-msgstr "&Temps :"
+msgstr "&Temps : "
#: ../src/dialog_shift_times.cpp:143
msgid "Shift by time"
@@ -71,7 +71,7 @@ msgstr "Décalage temporel"
#: ../src/dialog_shift_times.cpp:146
msgid "&Frames: "
-msgstr "&Images :"
+msgstr "&Images : "
#: ../src/dialog_shift_times.cpp:147
msgid "Shift by frames"
@@ -90,24 +90,19 @@ msgid "For&ward"
msgstr "En a&vant"
#: ../src/dialog_shift_times.cpp:157
-msgid ""
-"Shifts subs forward, making them appear later. Use if they are appearing too "
-"soon."
+msgid "Shifts subs forward, making them appear later. Use if they are appearing too soon."
msgstr ""
-"Sous-titres décalés vers l'avant, apparition plus tardive. À utiliser s'ils "
-"arrivent trop tôt."
+"Sous-titres décalés vers l'avant, apparition plus tardive. À utiliser s'ils arrivent trop "
+"tôt."
#: ../src/dialog_shift_times.cpp:159
msgid "&Backward"
msgstr "En a&rrière"
#: ../src/dialog_shift_times.cpp:160
-msgid ""
-"Shifts subs backward, making them appear earlier. Use if they are appearing "
-"too late."
+msgid "Shifts subs backward, making them appear earlier. Use if they are appearing too late."
msgstr ""
-"Sous-titres décalés vers l'arrière, appartion plus tôt. À utiliser s'ils "
-"arrivent trop tard."
+"Sous-titres décalés vers l'arrière, appartion plus tôt. À utiliser s'ils arrivent trop tard."
#: ../src/dialog_shift_times.cpp:162
msgid "&All rows"
@@ -162,12 +157,8 @@ msgid "Fix Styles"
msgstr "Réparation de styles"
#: ../src/export_fixstyle.cpp:46
-msgid ""
-"Fixes styles by replacing any style that isn't available on file with "
-"Default."
-msgstr ""
-"Répare les styles en remplaçant tout style absent dans le fichier par "
-"Default."
+msgid "Fixes styles by replacing any style that isn't available on file with Default."
+msgstr "Répare les styles en remplaçant tout style absent dans le fichier par Default."
#: ../src/audio_karaoke.cpp:72
msgid "Discard all uncommitted splits"
@@ -220,21 +211,19 @@ msgstr ""
msgid "The file was not recognised as an Automation script: %s"
msgstr "Le fichier n'a pas été reconnu comme un script d'automatisme : %s"
-#: ../src/auto4_base.cpp:496 ../src/command/timecode.cpp:74
-#: ../src/command/timecode.cpp:94 ../src/command/video.cpp:568
-#: ../src/command/audio.cpp:84 ../src/command/keyframe.cpp:74
+#: ../src/auto4_base.cpp:496 ../src/command/timecode.cpp:74 ../src/command/timecode.cpp:94
+#: ../src/command/video.cpp:568 ../src/command/audio.cpp:84 ../src/command/keyframe.cpp:74
msgid "All Files"
-msgstr "Tous fichiers"
+msgstr "Tous les fichiers"
-#: ../src/auto4_base.cpp:502 ../src/command/timecode.cpp:74
-#: ../src/command/timecode.cpp:94 ../src/command/keyframe.cpp:74
-#: ../src/subtitle_format.cpp:312
+#: ../src/auto4_base.cpp:502 ../src/command/timecode.cpp:74 ../src/command/timecode.cpp:94
+#: ../src/command/keyframe.cpp:74 ../src/subtitle_format.cpp:312
msgid "All Supported Formats"
-msgstr "Tout format supporté"
+msgstr "Tous les formats supportés"
#: ../src/auto4_base.cpp:508
msgid "File was not recognized as a script"
-msgstr "Le fichier n'a pas été reconnu comme un script"
+msgstr "Le fichier n'a pas été reconnu en tant que script"
#: ../src/search_replace_engine.cpp:247 ../src/search_replace_engine.cpp:331
msgid "replace"
@@ -244,8 +233,8 @@ msgstr "remplacer"
#, c-format
msgid "One match was replaced."
msgid_plural "%d matches were replaced."
-msgstr[0] "Une correspondance a été remplacé."
-msgstr[1] "%d correspondances ont été remplacés"
+msgstr[0] "Une correspondance a été remplacée."
+msgstr[1] "%d correspondances ont été remplacées."
#: ../src/search_replace_engine.cpp:335
msgid "No matches found."
@@ -282,11 +271,11 @@ msgstr "FPS :"
#: ../src/dialog_video_details.cpp:60
msgid "Resolution:"
-msgstr "Résolution :"
+msgstr "Définition vidéo :"
#: ../src/dialog_video_details.cpp:61
msgid "Length:"
-msgstr "Longueur :"
+msgstr "Durée :"
#: ../src/dialog_video_details.cpp:61
#, c-format
@@ -299,8 +288,7 @@ msgstr[1] "%d images (%s)"
msgid "Decoder:"
msgstr "Décodeur :"
-#: ../src/dialog_video_details.cpp:65 ../src/preferences.cpp:165
-#: ../src/preferences.cpp:417
+#: ../src/dialog_video_details.cpp:65 ../src/preferences.cpp:165 ../src/preferences.cpp:417
msgid "Video"
msgstr "Vidéo"
@@ -314,8 +302,7 @@ msgstr "Appliquer aux styles"
#: ../src/dialog_timing_processor.cpp:159
msgid "Select styles to process. Unchecked ones will be ignored."
-msgstr ""
-"Choix des style à appliquer. Ceux qui ne sont pas cochés seront ignorés."
+msgstr "Choix des styles à appliquer. Ceux non-cochés seront ignorés."
#: ../src/dialog_timing_processor.cpp:161 ../src/dialog_paste_over.cpp:88
msgid "&All"
@@ -331,11 +318,10 @@ msgstr "Aucu&n"
#: ../src/dialog_timing_processor.cpp:165
msgid "Deselect all styles"
-msgstr "Écarter tous les styles."
+msgstr "Désélectionner tous les styles"
#: ../src/dialog_timing_processor.cpp:168 ../src/command/app.cpp:207
-#: ../src/dialog_properties.cpp:138 ../src/preferences.cpp:127
-#: ../src/preferences.cpp:167
+#: ../src/dialog_properties.cpp:138 ../src/preferences.cpp:127 ../src/preferences.cpp:167
msgid "Options"
msgstr "Options"
@@ -381,23 +367,20 @@ msgstr "Activ&er"
#: ../src/dialog_timing_processor.cpp:192
msgid ""
-"Enable snapping of subtitles together if they are within a certain distance "
-"of each other"
-msgstr ""
-"Activer l'assemblage des sous-titres s'ils sont à moins d'une certaine "
-"distance"
+"Enable snapping of subtitles together if they are within a certain distance of each other"
+msgstr "Activer le collage des sous-titres s'ils sont à moins d'une certaine distance"
#: ../src/dialog_timing_processor.cpp:195
msgid "Max gap:"
-msgstr "Escapement maxi :"
+msgstr "Écart maxi :"
#: ../src/dialog_timing_processor.cpp:196
msgid ""
-"Maximum difference between start and end time for two subtitles to be made "
-"continuous, in milliseconds"
+"Maximum difference between start and end time for two subtitles to be made continuous, in "
+"milliseconds"
msgstr ""
-"Différence maximale entre le début et la fin pour rendre deux sous-titres "
-"continus, en millisecondes"
+"Différence maximale entre le début et la fin pour rendre deux sous-titres continus, en "
+"millisecondes"
#: ../src/dialog_timing_processor.cpp:197
msgid "Max overlap:"
@@ -405,25 +388,25 @@ msgstr "Recouvrement maxi :"
#: ../src/dialog_timing_processor.cpp:198
msgid ""
-"Maximum overlap between the end and start time for two subtitles to be made "
-"continuous, in milliseconds"
+"Maximum overlap between the end and start time for two subtitles to be made continuous, in "
+"milliseconds"
msgstr ""
-"Recouvrement maximal entre le début et la fin pour rendre deux sous-titres "
-"continus, en millisecondes"
+"Recouvrement maximal entre le début et la fin pour rendre deux sous-titres continus, en "
+"millisecondes"
#: ../src/dialog_timing_processor.cpp:201
msgid ""
-"Sets how to set the adjoining of lines. If set totally to left, it will "
-"extend or shrink start time of the second line; if totally to right, it will "
-"extend or shrink the end time of the first line."
+"Sets how to set the adjoining of lines. If set totally to left, it will extend or shrink "
+"start time of the second line; if totally to right, it will extend or shrink the end time of "
+"the first line."
msgstr ""
-"Règle la façon de joindre des lignes. Si on règle tout à gauche, cela "
-"étendra ou réduira le temps de départ de la deuxième ligne ; tout à droite, "
-"cela étendra ou réduira le temps de fin de la première ligne."
+"Gère la façon de joindre des lignes. Si réglé tout à gauche, cela étendra ou réduira le "
+"temps de départ de la deuxième ligne ; tout à droite, cela étendra ou réduira le temps de "
+"fin de la première ligne."
#: ../src/dialog_timing_processor.cpp:204
msgid "Bias: Start <- "
-msgstr "Biais : Début <-"
+msgstr "Biais : Début <- "
#: ../src/dialog_timing_processor.cpp:206
msgid " -> End"
@@ -438,12 +421,10 @@ msgid "E&nable"
msgstr "Activer"
#: ../src/dialog_timing_processor.cpp:218
-msgid ""
-"Enable snapping of subtitles to nearest keyframe, if distance is within "
-"threshold"
+msgid "Enable snapping of subtitles to nearest keyframe, if distance is within threshold"
msgstr ""
-"Permet le collage des sous-titres sur l'image clé la plus proche, si le "
-"seuil n'est pas dépassé"
+"Permet le collage des sous-titres sur l'image clé la plus proche, si le seuil n'est pas "
+"dépassé"
#: ../src/dialog_timing_processor.cpp:229
msgid "Starts before thres.:"
@@ -451,11 +432,11 @@ msgstr "Démarre avant seuil :"
#: ../src/dialog_timing_processor.cpp:230
msgid ""
-"Threshold for 'before start' distance, that is, how many milliseconds a "
-"subtitle must start before a keyframe to snap to it"
+"Threshold for 'before start' distance, that is, how many milliseconds a subtitle must start "
+"before a keyframe to snap to it"
msgstr ""
-"Seuil de distance « avant début » définissant combien de millisecondes un "
-"sous-titre doit démarrer avant l'image clé pour s'y coller"
+"Seuil de distance « avant début » définissant combien de millisecondes un sous-titre doit "
+"démarrer avant l'image clé pour s'y coller"
#: ../src/dialog_timing_processor.cpp:232
msgid "Starts after thres.:"
@@ -463,11 +444,11 @@ msgstr "Démarre après seuil :"
#: ../src/dialog_timing_processor.cpp:233
msgid ""
-"Threshold for 'after start' distance, that is, how many milliseconds a "
-"subtitle must start after a keyframe to snap to it"
+"Threshold for 'after start' distance, that is, how many milliseconds a subtitle must start "
+"after a keyframe to snap to it"
msgstr ""
-"Seuil de distance « après début » définissant combien de millisecondes un "
-"sous-titre doit démarrer après l'image clé pour s'y coller"
+"Seuil de distance « après début » définissant combien de millisecondes un sous-titre doit "
+"démarrer après l'image clé pour s'y coller"
#: ../src/dialog_timing_processor.cpp:237
msgid "Ends before thres.:"
@@ -475,11 +456,11 @@ msgstr "Finit avant seuil :"
#: ../src/dialog_timing_processor.cpp:238
msgid ""
-"Threshold for 'before end' distance, that is, how many milliseconds a "
-"subtitle must end before a keyframe to snap to it"
+"Threshold for 'before end' distance, that is, how many milliseconds a subtitle must end "
+"before a keyframe to snap to it"
msgstr ""
-"Seuil de distance « avant fin » définissant combien de millisecondes un sous-"
-"titre doit finir avant l'image clé pour s'y coller"
+"Seuil de distance « avant fin » définissant combien de millisecondes un sous-titre doit "
+"finir avant l'image clé pour s'y coller"
#: ../src/dialog_timing_processor.cpp:240
msgid "Ends after thres.:"
@@ -487,11 +468,11 @@ msgstr "Finit après seuil :"
#: ../src/dialog_timing_processor.cpp:241
msgid ""
-"Threshold for 'after end' distance, that is, how many milliseconds a "
-"subtitle must end after a keyframe to snap to it"
+"Threshold for 'after end' distance, that is, how many milliseconds a subtitle must end after "
+"a keyframe to snap to it"
msgstr ""
-"Seuil de distance « après fin » définissant combien de millisecondes un sous-"
-"titre doit finir après l'image clé pour s'y coller"
+"Seuil de distance « après fin » définissant combien de millisecondes un sous-titre doit "
+"finir après l'image clé pour s'y coller"
#: ../src/dialog_timing_processor.cpp:349
#, c-format
@@ -526,8 +507,7 @@ msgstr "Lecture des sous-titres d'un fichier Matroska."
msgid "Styling Assistant"
msgstr "Assistant de styles"
-#: ../src/dialog_styling_assistant.cpp:65
-#: ../src/dialog_styling_assistant.cpp:66
+#: ../src/dialog_styling_assistant.cpp:65 ../src/dialog_styling_assistant.cpp:66
msgid "Current line"
msgstr "Ligne active"
@@ -537,7 +517,7 @@ msgstr "Styles disponibles"
#: ../src/dialog_styling_assistant.cpp:80
msgid "Set style"
-msgstr "Régler le style"
+msgstr "Régler le style"
#: ../src/dialog_styling_assistant.cpp:87 ../src/dialog_translation.cpp:108
msgid "Keys"
@@ -546,7 +526,7 @@ msgstr "Touches"
#: ../src/dialog_styling_assistant.cpp:90 ../src/command/tool.cpp:142
#: ../src/command/tool.cpp:226 ../src/dialog_translation.cpp:111
msgid "Accept changes"
-msgstr "Valide les modifications"
+msgstr "Valider les modifications"
#: ../src/dialog_styling_assistant.cpp:91 ../src/command/tool.cpp:153
#: ../src/command/tool.cpp:237 ../src/dialog_translation.cpp:112
@@ -607,11 +587,11 @@ msgstr "Aller à"
#: ../src/dialog_jumpto.cpp:72
msgid "Frame: "
-msgstr "Image :"
+msgstr "Image : "
#: ../src/dialog_jumpto.cpp:73
msgid "Time: "
-msgstr "Temps :"
+msgstr "Temps : "
#: ../src/dialog_style_manager.cpp:188
msgid "Move style up"
@@ -623,11 +603,11 @@ msgstr "Descendre le style"
#: ../src/dialog_style_manager.cpp:190
msgid "Move style to top"
-msgstr "Mettre le style en tête"
+msgstr "Mettre le style en haut"
#: ../src/dialog_style_manager.cpp:191
msgid "Move style to bottom"
-msgstr "Mettre le style en pied"
+msgstr "Mettre le style en bas"
#: ../src/dialog_style_manager.cpp:192
msgid "Sort styles alphabetically"
@@ -639,7 +619,7 @@ msgstr "&Nouveau"
#: ../src/dialog_style_manager.cpp:203 ../src/preferences.cpp:579
msgid "&Edit"
-msgstr "&Édition"
+msgstr "&Modifier"
#: ../src/dialog_style_manager.cpp:205 ../src/preferences.cpp:580
#: ../src/dialog_attachments.cpp:79
@@ -673,7 +653,7 @@ msgstr "Gestionnaire de styles"
#: ../src/dialog_style_manager.cpp:273
msgid "Catalog of available storages"
-msgstr "Catalogue des stocks disponibles"
+msgstr "Catalogue des stockages disponibles"
#: ../src/dialog_style_manager.cpp:275
msgid "New"
@@ -697,7 +677,7 @@ msgstr "&Importer depuis un script..."
#: ../src/dialog_style_manager.cpp:296
msgid "<- Copy to &storage"
-msgstr "<- Copier dan&s la banque"
+msgstr "<- Copier dan&s le stockage"
#: ../src/dialog_style_manager.cpp:307
msgid "Current script"
@@ -709,30 +689,31 @@ msgstr "Fermer"
#: ../src/dialog_style_manager.cpp:454
msgid "New storage name:"
-msgstr "Nouveau nom de stock :"
+msgstr "Nouveau nom de stockage :"
#: ../src/dialog_style_manager.cpp:454
msgid "New catalog entry"
-msgstr "Nouvelle entrée catalogue"
+msgstr "Nouvelle entrée de stockage"
#: ../src/dialog_style_manager.cpp:469
msgid "A catalog with that name already exists."
-msgstr "Un catalogue avec ce nom existe déjà."
+msgstr "Un stockage avec ce nom existe déjà."
#: ../src/dialog_style_manager.cpp:469
msgid "Catalog name conflict"
-msgstr "Conflit de nom de catalogue"
+msgstr "Conflit de nom de stockage"
#: ../src/dialog_style_manager.cpp:476
#, c-format
msgid ""
-"The specified catalog name contains one or more illegal characters. They "
-"have been replaced with underscores instead.\n"
+"The specified catalog name contains one or more illegal characters. They have been replaced "
+"with underscores instead.\n"
"The catalog has been renamed to \"%s\"."
msgstr ""
-"Le nom de catalogue spécifié contient au moins un caractère interdit. Ils "
-"ont été remplacés par des soulignés.\n"
-"Le catalogue a été renommé en « %s »."
+
+"Le nom de stockage spécifié contient au moins un caractère interdit. Ils ont été remplacés "
+"par des tirets bas.\n"
+"Le stockage a été renommé en « %s »."
#: ../src/dialog_style_manager.cpp:477
msgid "Invalid characters"
@@ -741,19 +722,16 @@ msgstr "Caractères interdits"
#: ../src/dialog_style_manager.cpp:490
#, c-format
msgid "Are you sure you want to delete the storage \"%s\" from the catalog?"
-msgstr "Êtes-vous sûr de vouloir supprimer le stock « %s » du catalogue ?"
+msgstr "Êtes-vous sûr de vouloir supprimer le stockage « %s » du catalogue ?"
#: ../src/dialog_style_manager.cpp:491
msgid "Confirm delete"
-msgstr "Suppression confirmée"
+msgstr "Confirmer la suppression"
#: ../src/dialog_style_manager.cpp:509
#, c-format
-msgid ""
-"There is already a style with the name \"%s\" in the current storage. "
-"Overwrite?"
-msgstr ""
-"Il existe déjà un style nommé « %s » dans la banque courante. Le remplacer ?"
+msgid "There is already a style with the name \"%s\" in the current storage. Overwrite?"
+msgstr "Il existe déjà un style « %s » dans le stockage courant. Le remplacer ?"
#: ../src/dialog_style_manager.cpp:509 ../src/dialog_style_manager.cpp:536
#: ../src/dialog_style_manager.cpp:714
@@ -762,11 +740,8 @@ msgstr "Conflit de nom de style"
#: ../src/dialog_style_manager.cpp:536 ../src/dialog_style_manager.cpp:713
#, c-format
-msgid ""
-"There is already a style with the name \"%s\" in the current script. "
-"Overwrite?"
-msgstr ""
-"Il existe déjà un style nommé « %s » dans le script actif. Le remplacer ?"
+msgid "There is already a style with the name \"%s\" in the current script. Overwrite?"
+msgstr "Il existe déjà un style « %s » dans le script actif. Le remplacer ?"
#: ../src/dialog_style_manager.cpp:547
msgid "style copy"
@@ -778,11 +753,11 @@ msgstr "collage de style"
#: ../src/dialog_style_manager.cpp:620
msgid "Confirm delete from storage"
-msgstr "Suppression du stock confirmée"
+msgstr "Confirmer suppression du stockage"
#: ../src/dialog_style_manager.cpp:659
msgid "Confirm delete from current"
-msgstr "Suppression de l'actif confirmée"
+msgstr "Confirmer suppression de l'actif"
#: ../src/dialog_style_manager.cpp:663
msgid "style delete"
@@ -795,7 +770,7 @@ msgstr "Ouvrir un fichier sous-titres"
#: ../src/dialog_style_manager.cpp:698
msgid "The selected file has no available styles."
-msgstr "Le fichier choisi n'a pas de style valide."
+msgstr "Le fichier sélectionné n'a pas de style valide."
#: ../src/dialog_style_manager.cpp:698
msgid "Error Importing Styles"
@@ -815,7 +790,7 @@ msgstr "importation de styles"
#: ../src/dialog_style_manager.cpp:839
msgid "Are you sure? This cannot be undone!"
-msgstr "Êtes-vous sur ? Cet action ne peut être annulée !"
+msgstr "Êtes-vous sûr ? Cette action ne peut être annulée !"
#: ../src/dialog_style_manager.cpp:839
msgid "Sort styles"
@@ -864,15 +839,15 @@ msgstr "« %s » n'est pas un nom de commande valide"
#: ../src/command/video.cpp:84
msgid "&Cinematic (2.35)"
-msgstr "&Cinématique (2.35)"
+msgstr "&cinématographique (2.35)"
#: ../src/command/video.cpp:85
msgid "Cinematic (2.35)"
-msgstr "Cinématique (2.35)"
+msgstr "Cinématographique (2.35)"
#: ../src/command/video.cpp:86
msgid "Force video to 2.35 aspect ratio"
-msgstr "Forcer la vidéo aux proportions 2.35"
+msgstr "Forcer la vidéo au rapport de forme 2.35"
#: ../src/command/video.cpp:102
msgid "C&ustom..."
@@ -884,7 +859,7 @@ msgstr "Personnalisation"
#: ../src/command/video.cpp:104
msgid "Force video to a custom aspect ratio"
-msgstr "Forcer la vidéo à un format d'image personnalisé"
+msgstr "Forcer la vidéo à un rapport de forme personnalisé"
#: ../src/command/video.cpp:115
msgid ""
@@ -893,22 +868,22 @@ msgid ""
" fractional (e.g. 16:9)\n"
" specific resolution (e.g. 853x480)"
msgstr ""
-"Saisir les proportions soit :\n"
+"Saisir le rapport de forme soit :\n"
" en décimale (ex. 2.35)\n"
" en fraction (ex. 16:9)\n"
-" en résolution spécifique (ex. 853x480)"
+" en définition d'image spécifique (ex. 853x480)"
#: ../src/command/video.cpp:116
msgid "Enter aspect ratio"
-msgstr "Saisir les proportions"
+msgstr "Saisir le rapport de forme"
#: ../src/command/video.cpp:135
msgid "Invalid value! Aspect ratio must be between 0.5 and 5.0."
-msgstr "Valeur incorrecte ! Les proportions doivent être entre 0.5 et 5.0."
+msgstr "Valeur incorrecte ! Le rapport de forme doit être compris entre 0.5 et 5.0."
#: ../src/command/video.cpp:135
msgid "Invalid Aspect Ratio"
-msgstr "Proportions invalides"
+msgstr "Rapport de forme invalide"
#: ../src/command/video.cpp:145
msgid "&Default"
@@ -920,7 +895,7 @@ msgstr "Défaut"
#: ../src/command/video.cpp:147
msgid "Use video's original aspect ratio"
-msgstr "Utiliser le format d'origine de la vidéo"
+msgstr "Utiliser le rapport de forme d'origine de la vidéo"
#: ../src/command/video.cpp:163
msgid "&Fullscreen (4:3)"
@@ -932,7 +907,7 @@ msgstr "Plein écran (4:3)"
#: ../src/command/video.cpp:165
msgid "Force video to 4:3 aspect ratio"
-msgstr "Forcer la vidéo au format 4:3"
+msgstr "Forcer la vidéo au rapport de forme 4:3"
#: ../src/command/video.cpp:181
msgid "&Widescreen (16:9)"
@@ -944,7 +919,7 @@ msgstr "Écran large (16:9)"
#: ../src/command/video.cpp:183
msgid "Force video to 16:9 aspect ratio"
-msgstr "Forcer la vidéo au format 16:9"
+msgstr "Forcer la vidéo au rapport de forme 16:9"
#: ../src/command/video.cpp:200
msgid "&Close Video"
@@ -963,24 +938,21 @@ msgid "Copy coordinates to Clipboard"
msgstr "Copie les coordonnées dans le presse-papier"
#: ../src/command/video.cpp:213
-msgid ""
-"Copy the current coordinates of the mouse over the video to the clipboard"
-msgstr ""
-"Copier les coordonnées actuelles de la souris sur la vidéo dans le presse-"
-"papier"
+msgid "Copy the current coordinates of the mouse over the video to the clipboard"
+msgstr "Copier les coordonnées actuelles de la souris sur la vidéo dans le presse-papier"
#: ../src/command/video.cpp:222 ../src/command/video.cpp:223
msgid "Cycle active subtitles provider"
-msgstr "Cycle de fournisseur de sous-titres actif"
+msgstr "Faire défiler les fournisseurs de sous-titres"
#: ../src/command/video.cpp:224
msgid "Cycle through the available subtitles providers"
-msgstr "À travers les sous-titres Cycle fournisseurs disponibles"
+msgstr "Faire défiler les fournisseurs de sous-titres disponibles"
#: ../src/command/video.cpp:235
#, c-format
msgid "Subtitles provider set to %s"
-msgstr "Fournisseur de sous-titres défini à %s"
+msgstr "Fournisseur de sous-titres configuré sur %s"
#: ../src/command/video.cpp:242
msgid "&Detach Video"
@@ -991,12 +963,9 @@ msgid "Detach Video"
msgstr "Détacher la vidéo"
#: ../src/command/video.cpp:244
-msgid ""
-"Detach the video display from the main window, displaying it in a separate "
-"Window"
+msgid "Detach the video display from the main window, displaying it in a separate Window"
msgstr ""
-"Détachez l'affichage vidéo à partir de la fenêtre principale, l'afficher "
-"dans une fenêtre séparée"
+"Détacher l'affichage vidéo de la fenêtre principale et l'afficher dans une fenêtre séparée"
#: ../src/command/video.cpp:262
msgid "Show &Video Details"
@@ -1012,30 +981,27 @@ msgstr "Afficher les détails vidéo"
#: ../src/command/video.cpp:274 ../src/command/video.cpp:275
msgid "Toggle video slider focus"
-msgstr "Bascule focus curseur vidéo"
+msgstr "Changer cible de saisie curseur vidéo"
#: ../src/command/video.cpp:276
-msgid ""
-"Toggle focus between the video slider and the previous thing to have focus"
+msgid "Toggle focus between the video slider and the previous thing to have focus"
msgstr ""
-"Basculer le focus entre le curseur de la vidéo et l'élément précédent à "
-"avoir le focus"
+"Changer la cible de saisie entre le curseur de la vidéo et l'élément précédemment ciblé"
#: ../src/command/video.cpp:297 ../src/command/video.cpp:298
msgid "Copy image to Clipboard"
-msgstr "Copie l'image dans le presse-papier"
+msgstr "Copier l'image dans le presse-papier"
#: ../src/command/video.cpp:299
msgid "Copy the currently displayed frame to the clipboard"
-msgstr "Copie l'image affichée dans le presse-papier"
+msgstr "Copier l'image affichée dans le presse-papier"
#: ../src/command/video.cpp:308 ../src/command/video.cpp:309
msgid "Copy image to Clipboard (no subtitles)"
-msgstr "Copie l'image dans le presse-papier (sans sous-titres)"
+msgstr "Copier l'image dans le presse-papier (sans sous-titres)"
#: ../src/command/video.cpp:310
-msgid ""
-"Copy the currently displayed frame to the clipboard, without the subtitles"
+msgid "Copy the currently displayed frame to the clipboard, without the subtitles"
msgstr "Copier l'image affichée dans le presse-papier sans les sous-titres"
#: ../src/command/video.cpp:319 ../src/command/video.cpp:320
@@ -1044,15 +1010,15 @@ msgstr "Image suivante"
#: ../src/command/video.cpp:321
msgid "Seek to the next frame"
-msgstr "Chercher l'image suivante"
+msgstr "Aller à l'image suivante"
#: ../src/command/video.cpp:330 ../src/command/video.cpp:331
msgid "Next Boundary"
-msgstr "Limite suivante"
+msgstr "Délimitation suivante"
#: ../src/command/video.cpp:332
msgid "Seek to the next beginning or end of a subtitle"
-msgstr "Saute au début ou la fin du sous-titre suivant"
+msgstr "Aller au début ou la fin du sous-titre suivant"
#: ../src/command/video.cpp:359 ../src/command/video.cpp:360
msgid "Next Keyframe"
@@ -1060,12 +1026,11 @@ msgstr "Image clé suivante"
#: ../src/command/video.cpp:361
msgid "Seek to the next keyframe"
-msgstr "Chercher l'image clé suivante"
+msgstr "Aller à l'image clé suivante"
-#: ../src/command/video.cpp:373 ../src/command/video.cpp:374
-#: ../src/command/video.cpp:375
+#: ../src/command/video.cpp:373 ../src/command/video.cpp:374 ../src/command/video.cpp:375
msgid "Fast jump forward"
-msgstr "Saut rapide avant"
+msgstr "Saut rapide vers l'avant"
#: ../src/command/video.cpp:386 ../src/command/video.cpp:387
msgid "Previous Frame"
@@ -1073,15 +1038,15 @@ msgstr "Image précédente"
#: ../src/command/video.cpp:388
msgid "Seek to the previous frame"
-msgstr "Chercher l'image précédente"
+msgstr "Aller à l'image précédente"
#: ../src/command/video.cpp:397 ../src/command/video.cpp:398
msgid "Previous Boundary"
-msgstr "Limite précédente"
+msgstr "Délimitation précédente"
#: ../src/command/video.cpp:399
msgid "Seek to the previous beginning or end of a subtitle"
-msgstr "Saute au début ou la fin du sous-titre précédent"
+msgstr "Aller au début ou la fin du sous-titre précédent"
#: ../src/command/video.cpp:426 ../src/command/video.cpp:427
msgid "Previous Keyframe"
@@ -1089,34 +1054,31 @@ msgstr "Image clé précédente"
#: ../src/command/video.cpp:428
msgid "Seek to the previous keyframe"
-msgstr "Chercher l'image clé précédente"
+msgstr "Aller à l'image clé précédente"
-#: ../src/command/video.cpp:448 ../src/command/video.cpp:449
-#: ../src/command/video.cpp:450
+#: ../src/command/video.cpp:448 ../src/command/video.cpp:449 ../src/command/video.cpp:450
msgid "Fast jump backwards"
-msgstr "Saut rapide arrière"
+msgstr "Saut rapide en arrière"
#: ../src/command/video.cpp:499 ../src/command/video.cpp:500
msgid "Save PNG snapshot"
-msgstr "Enregistre une copie d'écran PNG"
+msgstr "Enregistrer une capture d'écran PNG"
#: ../src/command/video.cpp:501
-msgid ""
-"Save the currently displayed frame to a PNG file in the video's directory"
-msgstr ""
-"Enregistrer l'image affichée en fichier PNG dans le répertoire de la vidéo"
+msgid "Save the currently displayed frame to a PNG file in the video's directory"
+msgstr "Enregistrer l'image affichée en fichier PNG dans le répertoire de la vidéo"
#: ../src/command/video.cpp:510 ../src/command/video.cpp:511
msgid "Save PNG snapshot (no subtitles)"
-msgstr "Enregistre une copie d'écran PNG (sans sous-titres)"
+msgstr "Enregistrer une capture d'écran PNG (sans sous-titres)"
#: ../src/command/video.cpp:512
msgid ""
-"Save the currently displayed frame without the subtitles to a PNG file in "
-"the video's directory"
+"Save the currently displayed frame without the subtitles to a PNG file in the video's "
+"directory"
msgstr ""
-"Enregistrer l'image affichée sans les sous-titres en fichier PNG dans le "
-"répertoire de la vidéo"
+"Enregistrer l'image affichée sans les sous-titres en fichier PNG dans le répertoire de la "
+"vidéo"
#: ../src/command/video.cpp:522
msgid "&Jump to..."
@@ -1124,7 +1086,7 @@ msgstr "&Aller à..."
#: ../src/command/video.cpp:524
msgid "Jump to frame or time"
-msgstr "Va à l'image ou au temps"
+msgstr "Aller à l'image ou au temps"
#: ../src/command/video.cpp:536
msgid "Jump Video to &End"
@@ -1184,13 +1146,13 @@ msgstr "Ouvrir un clip vidéo de l'espace réservé avec une couleur unie"
#: ../src/command/video.cpp:592 ../src/command/video.cpp:593
msgid "Toggle autoscroll of video"
-msgstr "Bascule le mode de défilement de la vidéo"
+msgstr "Alterner le mode de défilement de la vidéo"
#: ../src/command/video.cpp:594
msgid "Toggle automatically seeking video to the start time of selected lines"
msgstr ""
-"Bascule automatiquement le signal vidéo de recherche du temps de début de "
-"lignes sélectionnées"
+"Alterner automatiquement le signal vidéo de recherche du temps de début des lignes "
+"sélectionnées"
#: ../src/command/video.cpp:609 ../src/command/video.cpp:610
msgid "Play"
@@ -1202,10 +1164,9 @@ msgstr "Lire la vidéo depuis cette position"
#: ../src/command/video.cpp:621 ../src/command/video.cpp:622
msgid "Play line"
-msgstr "Lecture ligne"
+msgstr "Lire la ligne"
-#: ../src/command/video.cpp:623 ../src/command/audio.cpp:260
-#: ../src/command/audio.cpp:261
+#: ../src/command/video.cpp:623 ../src/command/audio.cpp:260 ../src/command/audio.cpp:261
msgid "Play current line"
msgstr "Lire la ligne active"
@@ -1219,11 +1180,11 @@ msgstr "Afficher le masque d'overscan"
#: ../src/command/video.cpp:634
msgid ""
-"Show a mask over the video, indicating areas that might get cropped off by "
-"overscan on televisions"
+"Show a mask over the video, indicating areas that might get cropped off by overscan on "
+"televisions"
msgstr ""
-"Affiche un masque sur la vidéo indiquant les zones qui seront réduites par "
-"l'overscan sur les téléviseurs"
+"Afficher un masque sur la vidéo indiquant les zones qui seront coupées par l'overscan sur "
+"les téléviseurs"
#: ../src/command/video.cpp:650
msgid "&100%"
@@ -1235,11 +1196,11 @@ msgstr "100 %"
#: ../src/command/video.cpp:652
msgid "Set zoom to 100%"
-msgstr "Mettre le zoom à 100 %"
+msgstr "Régler le zoom à 100 %"
#: ../src/command/video.cpp:669 ../src/command/video.cpp:670
msgid "Stop video"
-msgstr "Arrêt vidéo"
+msgstr "Arrêter la vidéo"
#: ../src/command/video.cpp:671
msgid "Stop video playback"
@@ -1255,7 +1216,7 @@ msgstr "200 %"
#: ../src/command/video.cpp:683
msgid "Set zoom to 200%"
-msgstr "Mettre le zoom à 200 %"
+msgstr "Régler le zoom à 200 %"
#: ../src/command/video.cpp:699
msgid "&50%"
@@ -1267,31 +1228,31 @@ msgstr "50 %"
#: ../src/command/video.cpp:701
msgid "Set zoom to 50%"
-msgstr "Mettre le zoom à 50 %"
+msgstr "Régler le zoom à 50 %"
#: ../src/command/video.cpp:717 ../src/command/video.cpp:718
msgid "Zoom In"
-msgstr "Zoom avant"
+msgstr "Agrandir"
#: ../src/command/video.cpp:719
msgid "Zoom video in"
-msgstr "Zoom avant vidéo"
+msgstr "Agrandir la vidéo"
#: ../src/command/video.cpp:729 ../src/command/video.cpp:730
msgid "Zoom Out"
-msgstr "Zoom arrière"
+msgstr "Rétrécir"
#: ../src/command/video.cpp:731
msgid "Zoom video out"
-msgstr "Zoom arrière vidéo"
+msgstr "Rétrécir la vidéo"
#: ../src/command/edit.cpp:131 ../src/command/edit.cpp:831
msgid "paste"
-msgstr "colle"
+msgstr "coller"
#: ../src/command/edit.cpp:369
msgid "set color"
-msgstr "réglage couleur"
+msgstr "régler couleur"
#: ../src/command/edit.cpp:383
msgid "Primary Color..."
@@ -1303,8 +1264,7 @@ msgstr "Couleur principale"
#: ../src/command/edit.cpp:385
msgid "Set the primary fill color (\\c) at the cursor position"
-msgstr ""
-"Régler la couleur principale de remplissage (\\c) à la position du curseur"
+msgstr "Définir la couleur principale de remplissage (\\c) à la position du curseur"
#: ../src/command/edit.cpp:395
msgid "Secondary Color..."
@@ -1316,9 +1276,7 @@ msgstr "Couleur secondaire"
#: ../src/command/edit.cpp:397
msgid "Set the secondary (karaoke) fill color (\\2c) at the cursor position"
-msgstr ""
-"Régler la couleur secondaire (karaoké) de remplissage (\\2c) à la position "
-"du curseur"
+msgstr "Définir la couleur secondaire de remplissage (karaoké) (\\2c) à la position du curseur"
#: ../src/command/edit.cpp:407
msgid "Outline Color..."
@@ -1330,82 +1288,70 @@ msgstr "Couleur du contour"
#: ../src/command/edit.cpp:409
msgid "Set the outline color (\\3c) at the cursor position"
-msgstr "Régler la couleur du contour (\\3c) à la position du curseur"
+msgstr "Définir la couleur du contour (\\3c) à la position du curseur"
#: ../src/command/edit.cpp:419
msgid "Shadow Color..."
-msgstr "Couleur de l’ombre..."
+msgstr "Couleur de l'ombre..."
#: ../src/command/edit.cpp:420
msgid "Shadow Color"
-msgstr "Couleur de l’ombre"
+msgstr "Couleur de l'ombre"
#: ../src/command/edit.cpp:421
msgid "Set the shadow color (\\4c) at the cursor position"
-msgstr "Régler la couleur de l'ombre (\\4c) à la position du curseur"
+msgstr "Définir la couleur de l'ombre (\\4c) à la position du curseur"
#: ../src/command/edit.cpp:431 ../src/command/edit.cpp:432
msgid "Toggle Bold"
-msgstr "Passer en Gras"
+msgstr "Alterner le gras"
#: ../src/command/edit.cpp:433
-msgid ""
-"Toggle bold (\\b) for the current selection or at the current cursor position"
-msgstr ""
-"Passer en gras (\\b) pour la sélection en cours ou à la position actuelle du "
-"curseur"
+msgid "Toggle bold (\\b) for the current selection or at the current cursor position"
+msgstr "Alterner le gras (\\b) pour la sélection en cours ou à la position actuelle du curseur"
#: ../src/command/edit.cpp:436
msgid "toggle bold"
-msgstr "Passer en gras"
+msgstr "alterner le gras"
#: ../src/command/edit.cpp:443 ../src/command/edit.cpp:444
msgid "Toggle Italics"
-msgstr "Passer en Italique"
+msgstr "Alterner l'italique"
#: ../src/command/edit.cpp:445
-msgid ""
-"Toggle italics (\\i) for the current selection or at the current cursor "
-"position"
+msgid "Toggle italics (\\i) for the current selection or at the current cursor position"
msgstr ""
-"Passer en italique (\\i) pour la sélection en cours ou à la position "
-"actuelle du curseur"
+"Alterner l'italique (\\i) pour la sélection en cours ou à la position actuelle du curseur"
#: ../src/command/edit.cpp:448
msgid "toggle italic"
-msgstr "Passer en italique"
+msgstr "alterner l'italique"
#: ../src/command/edit.cpp:455 ../src/command/edit.cpp:456
msgid "Toggle Underline"
-msgstr "Passer en Souligné"
+msgstr "Alterner le soulignage"
#: ../src/command/edit.cpp:457
-msgid ""
-"Toggle underline (\\u) for the current selection or at the current cursor "
-"position"
+msgid "Toggle underline (\\u) for the current selection or at the current cursor position"
msgstr ""
-"Passer en souligné (\\u) pour la sélection en cours ou à la position "
-"actuelle du curseur"
+"Alterner le soulignage (\\u) pour la sélection en cours ou à la position actuelle du curseur"
#: ../src/command/edit.cpp:460
msgid "toggle underline"
-msgstr "Passer en Souligné"
+msgstr "alterner le soulignage"
#: ../src/command/edit.cpp:467 ../src/command/edit.cpp:468
msgid "Toggle Strikeout"
-msgstr "Passer en Barré"
+msgstr "Alterner la biffure"
#: ../src/command/edit.cpp:469
-msgid ""
-"Toggle strikeout (\\s) for the current selection or at the current cursor "
-"position"
+msgid "Toggle strikeout (\\s) for the current selection or at the current cursor position"
msgstr ""
-"Passer en barré (\\s) pour la sélection en cours ou à la position actuelle "
-"du curseur"
+"Alterner la biffure (\\s) pour la sélection en cours ou à la position actuelle du curseur"
#: ../src/command/edit.cpp:472
msgid "toggle strikeout"
-msgstr "Passer en Barré"
+msgstr "alterner la biffure"
#: ../src/command/edit.cpp:479
msgid "Font Face..."
@@ -1413,15 +1359,15 @@ msgstr "Police personnalisée..."
#: ../src/command/edit.cpp:480 ../src/preferences_base.cpp:251
msgid "Font Face"
-msgstr "Police personnalisée"
+msgstr "Police d'écriture"
#: ../src/command/edit.cpp:481
msgid "Select a font face and size"
-msgstr "Sélectionnez une police et la taille"
+msgstr "Sélectionner police d'écriture et taille"
#: ../src/command/edit.cpp:508
msgid "set font"
-msgstr "régler la police"
+msgstr "définir police d'écriture"
#: ../src/command/edit.cpp:535
msgid "Find and R&eplace..."
@@ -1433,7 +1379,7 @@ msgstr "Chercher et remplacer"
#: ../src/command/edit.cpp:537
msgid "Find and replace words in subtitles"
-msgstr "Cherche et remplace des mots dans les sous-titres"
+msgstr "Chercher et remplacer des mots dans les sous-titres"
#: ../src/command/edit.cpp:598
msgid "&Copy Lines"
@@ -1445,71 +1391,71 @@ msgstr "Copier des lignes"
#: ../src/command/edit.cpp:600
msgid "Copy subtitles to the clipboard"
-msgstr "Copiez les sous-titres dans le presse-papiers"
+msgstr "Copier les sous-titres dans le presse-papiers"
#: ../src/command/edit.cpp:621
msgid "Cu&t Lines"
-msgstr "Co&uper des lignes"
+msgstr "Co&uper les lignes"
#: ../src/command/edit.cpp:622
msgid "Cut Lines"
-msgstr "Couper des lignes"
+msgstr "Couper les lignes"
#: ../src/command/edit.cpp:623
msgid "Cut subtitles"
-msgstr "Couper des sous-titres"
+msgstr "Couper les sous-titres"
#: ../src/command/edit.cpp:630
msgid "cut lines"
-msgstr "Couper des lignes"
+msgstr "couper les lignes"
#: ../src/command/edit.cpp:638
msgid "De&lete Lines"
-msgstr "Supprimer des &lignes"
+msgstr "Supprimer les &lignes"
#: ../src/command/edit.cpp:639
msgid "Delete Lines"
-msgstr "Suppression de lignes"
+msgstr "Supprimer les lignes"
#: ../src/command/edit.cpp:640
msgid "Delete currently selected lines"
-msgstr "Supprime les lignes sélectionnées"
+msgstr "Supprimer les lignes sélectionnées"
#: ../src/command/edit.cpp:643
msgid "delete lines"
-msgstr "Suppression de lignes"
+msgstr "supprimer les lignes"
#: ../src/command/edit.cpp:708 ../src/command/edit.cpp:1093
msgid "split"
-msgstr "divise"
+msgstr "diviser"
#: ../src/command/edit.cpp:708
msgid "duplicate lines"
-msgstr "dupliquer des lignes"
+msgstr "dupliquer les lignes"
#: ../src/command/edit.cpp:715
msgid "&Duplicate Lines"
-msgstr "&Dupliquer des lignes"
+msgstr "&Dupliquer les lignes"
#: ../src/command/edit.cpp:716
msgid "Duplicate Lines"
-msgstr "Dupliquer des lignes"
+msgstr "Dupliquer les lignes"
#: ../src/command/edit.cpp:717
msgid "Duplicate the selected lines"
-msgstr "Duplique les lignes sélectionnées"
+msgstr "Dupliquer les lignes sélectionnées"
#: ../src/command/edit.cpp:726 ../src/command/edit.cpp:727
msgid "Split lines after current frame"
-msgstr "Scinder les lignes après l'image actuelle"
+msgstr "Scinder les lignes après l'image en cours"
#: ../src/command/edit.cpp:728
msgid ""
-"Split the current line into a line which ends on the current frame and a "
-"line which starts on the next frame"
+"Split the current line into a line which ends on the current frame and a line which starts "
+"on the next frame"
msgstr ""
-"Scinder la ligne en cours en une ligne qui se termine sur l'image actuelle "
-"et une ligne qui démarre sur l'image suivante"
+"Scinder la ligne en cours en une ligne qui se termine à l'image actuelle et une ligne qui "
+"démarre à l'image suivante"
#: ../src/command/edit.cpp:738 ../src/command/edit.cpp:739
msgid "Split lines before current frame"
@@ -1517,11 +1463,11 @@ msgstr "Scinder les lignes avant l'image actuelle"
#: ../src/command/edit.cpp:740
msgid ""
-"Split the current line into a line which ends on the previous frame and a "
-"line which starts on the current frame"
+"Split the current line into a line which ends on the previous frame and a line which starts "
+"on the current frame"
msgstr ""
-"Scinder la ligne en cours en une ligne qui se termine sur l'image précédente "
-"et une ligne qui démarre sur l'image actuelle"
+"Scinder la ligne en cours en une ligne qui se termine à l'image précédente et une ligne qui "
+"démarre à l'image actuelle"
#: ../src/command/edit.cpp:775
msgid "As &Karaoke"
@@ -1533,29 +1479,27 @@ msgstr "En karaoké"
#: ../src/command/edit.cpp:777
msgid "Join selected lines in a single one, as karaoke"
-msgstr "Fusionner lignes sélectionnées en une seule, comme le karaoké"
+msgstr "Fusionner les lignes sélectionnées en une seule, comme un karaoké"
#: ../src/command/edit.cpp:780
msgid "join as karaoke"
-msgstr "Joindre en karaoké"
+msgstr "joindre en karaoké"
#: ../src/command/edit.cpp:786
msgid "&Concatenate"
-msgstr "&Chaînage"
+msgstr "&Concaténer"
#: ../src/command/edit.cpp:787
msgid "Concatenate"
-msgstr "Enchaîner"
+msgstr "Concaténer"
#: ../src/command/edit.cpp:788
msgid "Join selected lines in a single one, concatenating text together"
-msgstr ""
-"Fusionner les lignes sélectionnées en une seule, concaténation du texte "
-"ensemble"
+msgstr "Fusionner les lignes sélectionnées en une seule, tout en concaténant le texte"
#: ../src/command/edit.cpp:791 ../src/command/edit.cpp:802
msgid "join lines"
-msgstr "jonction de lignes"
+msgstr "fusionner lignes"
#: ../src/command/edit.cpp:797
msgid "Keep &First"
@@ -1566,48 +1510,45 @@ msgid "Keep First"
msgstr "Garder la première"
#: ../src/command/edit.cpp:799
-msgid ""
-"Join selected lines in a single one, keeping text of first and discarding "
-"remaining"
+msgid "Join selected lines in a single one, keeping text of first and discarding remaining"
msgstr ""
-"Fusionner les lignes sélectionnées en une seule, garder le texte du premier "
-"et rejeter le restant"
+"Fusionner les lignes sélectionnées en une seule, et ne garder que le texte de la première"
#: ../src/command/edit.cpp:840
msgid "&Paste Lines"
-msgstr "Coller des lignes"
+msgstr "Coller les lignes"
#: ../src/command/edit.cpp:841
msgid "Paste Lines"
-msgstr "Coller des lignes"
+msgstr "Coller les lignes"
#: ../src/command/edit.cpp:842
msgid "Paste subtitles"
-msgstr "Coller des sous-titres"
+msgstr "Coller les sous-titres"
#: ../src/command/edit.cpp:871
msgid "Paste Lines &Over..."
-msgstr "C&oller des lignes sur..."
+msgstr "C&oller les lignes sur..."
#: ../src/command/edit.cpp:872
msgid "Paste Lines Over"
-msgstr "Coller des lignes sur"
+msgstr "Coller les lignes sur"
#: ../src/command/edit.cpp:873
msgid "Paste subtitles over others"
-msgstr "Coller les sous-titres sur les autres"
+msgstr "Coller les sous-titres sur d'autres"
#: ../src/command/edit.cpp:956
msgid "Recom&bine Lines"
-msgstr "Recom&biner des lignes"
+msgstr "Recom&biner les lignes"
#: ../src/command/edit.cpp:957
msgid "Recombine Lines"
-msgstr "Recombiner des lignes"
+msgstr "Recombiner les lignes"
#: ../src/command/edit.cpp:958
msgid "Recombine subtitles which have been split and merged"
-msgstr "Recombiner les sous-titres qui ont été coupés et fusionnés"
+msgstr "Recombiner des sous-titres qui ont été coupés et fusionnés"
#: ../src/command/edit.cpp:1028
msgid "combining"
@@ -1619,72 +1560,66 @@ msgstr "Couper des lignes (en karaoké)"
#: ../src/command/edit.cpp:1036
msgid "Use karaoke timing to split line into multiple smaller lines"
-msgstr ""
-"Utiliser tempo du karaoke pour couper la ligne en plusieurs petites lignes"
+msgstr "Utiliser les temps karaoké pour couper la ligne en plusieurs petites lignes"
#: ../src/command/edit.cpp:1070
msgid "splitting"
msgstr "division"
-#: ../src/command/edit.cpp:1098 ../src/command/edit.cpp:1099
-#: ../src/subs_edit_ctrl.cpp:375
+#: ../src/command/edit.cpp:1098 ../src/command/edit.cpp:1099 ../src/subs_edit_ctrl.cpp:375
msgid "Split at cursor (estimate times)"
msgstr "Couper au curseur (durée estimée)"
#: ../src/command/edit.cpp:1100
msgid ""
-"Split the current line at the cursor, dividing the original line's duration "
-"between the new ones"
+"Split the current line at the cursor, dividing the original line's duration between the new "
+"ones"
msgstr ""
-"Couper la ligne en cours au niveau du curseur, en divisant la durée de la "
-"ligne d'origine entre les nouveaux"
+"Couper la ligne en cours au niveau du curseur, en divisant la durée de la ligne d'origine "
+"entre les nouveaux"
-#: ../src/command/edit.cpp:1114 ../src/command/edit.cpp:1115
-#: ../src/subs_edit_ctrl.cpp:374
+#: ../src/command/edit.cpp:1114 ../src/command/edit.cpp:1115 ../src/subs_edit_ctrl.cpp:374
msgid "Split at cursor (preserve times)"
msgstr "Couper au curseur (durée préservée)"
#: ../src/command/edit.cpp:1116
-msgid ""
-"Split the current line at the cursor, setting both lines to the original "
-"line's times"
+msgid "Split the current line at the cursor, setting both lines to the original line's times"
msgstr ""
-"Couper la ligne en cours au niveau du curseur, en plaçant les deux lignes "
-"aux temps de la ligne originale"
+"Couper la ligne en cours au niveau du curseur, en plaçant les deux lignes aux temps de la "
+"ligne originale"
#: ../src/command/edit.cpp:1125 ../src/command/edit.cpp:1126
msgid "Split at cursor (at video frame)"
-msgstr "Couper au Curseur (à l'image de la vidéo)"
+msgstr "Couper au curseur (à l'image de la vidéo)"
#: ../src/command/edit.cpp:1127
msgid ""
-"Split the current line at the cursor, dividing the line's duration at the "
-"current video frame"
+"Split the current line at the cursor, dividing the line's duration at the current video frame"
msgstr ""
-"Couper la ligne en cours au niveau du curseur, en divisant la durée de la "
-"ligne à l'image actuelle de la vidéo"
+"Couper la ligne en cours au niveau du curseur, en divisant la durée de la ligne à l'image "
+"actuelle de la vidéo"
#: ../src/command/edit.cpp:1143
msgid "Redo last undone action"
-msgstr "Rétablir la dernière action annulée"
+msgstr "Restaurer la dernière action annulée"
#: ../src/command/edit.cpp:1148
msgid "Nothing to &redo"
-msgstr "Rien à &refaire"
+msgstr "Rien à &restaurer"
#: ../src/command/edit.cpp:1149
#, c-format
msgid "&Redo %s"
-msgstr "&Rétablir %s"
+msgstr "&Restaurer %s"
#: ../src/command/edit.cpp:1153
msgid "Nothing to redo"
-msgstr "Rien à refaire"
+msgstr "Rien à restaurer"
#: ../src/command/edit.cpp:1154
#, c-format
msgid "Redo %s"
-msgstr "Rétablir %s"
+msgstr "Restaurer %s"
#: ../src/command/edit.cpp:1169
msgid "Undo last action"
@@ -1692,7 +1627,7 @@ msgstr "Annuler la dernière action"
#: ../src/command/edit.cpp:1174
msgid "Nothing to &undo"
-msgstr "Rien à &défaire"
+msgstr "Rien à &annuler"
#: ../src/command/edit.cpp:1175
#, c-format
@@ -1701,7 +1636,7 @@ msgstr "Ann&uler %s"
#: ../src/command/edit.cpp:1179
msgid "Nothing to undo"
-msgstr "Rien à défaire"
+msgstr "Rien à annuler"
#: ../src/command/edit.cpp:1180
#, c-format
@@ -1714,16 +1649,13 @@ msgstr "Rétablir"
#: ../src/command/edit.cpp:1196
msgid "Revert the active line to its initial state (shown in the upper editor)"
-msgstr ""
-"Rétablir la ligne active à son état initial (montrée dans l'éditeur "
-"supérieure)"
+msgstr "Restaurer la ligne active à son état initial"
#: ../src/command/edit.cpp:1201
msgid "revert line"
msgstr "rétablir la ligne"
-#: ../src/command/edit.cpp:1207 ../src/command/edit.cpp:1208
-#: ../src/preferences.cpp:389
+#: ../src/command/edit.cpp:1207 ../src/command/edit.cpp:1208 ../src/preferences.cpp:389
msgid "Clear"
msgstr "Effacer"
@@ -1733,7 +1665,7 @@ msgstr "Effacer le texte de la ligne courante"
#: ../src/command/edit.cpp:1214 ../src/command/edit.cpp:1233
msgid "clear line"
-msgstr "Effacer la ligne"
+msgstr "effacer la ligne"
#: ../src/command/edit.cpp:1221 ../src/command/edit.cpp:1222
msgid "Clear Text"
@@ -1741,37 +1673,31 @@ msgstr "Effacer le texte"
#: ../src/command/edit.cpp:1223
msgid "Clear the current line's text, leaving override tags"
-msgstr ""
-"Effacez le texte de la ligne courante, en laissant les balises de "
-"remplacement"
+msgstr "Effacer le texte de la ligne courante, en laissant les balises de remplacement"
-#: ../src/command/edit.cpp:1239 ../src/command/edit.cpp:1240
-#: ../src/command/tool.cpp:271
+#: ../src/command/edit.cpp:1239 ../src/command/edit.cpp:1240 ../src/command/tool.cpp:271
msgid "Insert Original"
msgstr "Insérer l'original"
#: ../src/command/edit.cpp:1241
msgid "Insert the original line text at the cursor"
-msgstr "Insérez la ligne de texte original sur le curseur"
+msgstr "Insérer la ligne de texte original sur le curseur"
#: ../src/command/edit.cpp:1249
msgid "insert original"
-msgstr "Insérer l'original"
+msgstr "insérer l'original"
-#: ../src/command/recent.cpp:43 ../src/command/recent.cpp:44
-#: ../src/command/recent.cpp:45 ../src/command/recent.cpp:46
-#: ../src/command/recent.cpp:47 ../src/command/recent.cpp:51
-#: ../src/command/recent.cpp:52 ../src/command/recent.cpp:62
-#: ../src/command/recent.cpp:63 ../src/command/recent.cpp:73
-#: ../src/command/recent.cpp:74 ../src/command/recent.cpp:85
-#: ../src/command/recent.cpp:86 ../src/command/recent.cpp:96
-#: ../src/command/recent.cpp:97
+#: ../src/command/recent.cpp:43 ../src/command/recent.cpp:44 ../src/command/recent.cpp:45
+#: ../src/command/recent.cpp:46 ../src/command/recent.cpp:47 ../src/command/recent.cpp:51
+#: ../src/command/recent.cpp:52 ../src/command/recent.cpp:62 ../src/command/recent.cpp:63
+#: ../src/command/recent.cpp:73 ../src/command/recent.cpp:74 ../src/command/recent.cpp:85
+#: ../src/command/recent.cpp:86 ../src/command/recent.cpp:96 ../src/command/recent.cpp:97
msgid "Recent"
msgstr "Fichiers récents"
#: ../src/command/recent.cpp:43 ../src/command/recent.cpp:53
msgid "Open recent audio"
-msgstr "Ouvre un fichier audio récent"
+msgstr "Ouvrir un fichier audio récent"
#: ../src/command/recent.cpp:44 ../src/command/recent.cpp:64
msgid "Open recent keyframes"
@@ -1795,15 +1721,15 @@ msgstr "Ouvrir des vidéos récentes"
#: ../src/command/subtitle.cpp:78
msgid "A&ttachments..."
-msgstr "A&ttachements..."
+msgstr "P&ièces jointes..."
#: ../src/command/subtitle.cpp:79
msgid "Attachments"
-msgstr "Accessoires"
+msgstr "Pièces jointes"
#: ../src/command/subtitle.cpp:80
msgid "Open the attachment manager dialog"
-msgstr "Ouvrir la boîte de dialogue du gestionnaire de fichier"
+msgstr "Ouvrir la boîte de dialogue du gestionnaire de pièce jointe"
#: ../src/command/subtitle.cpp:91
msgid "&Find..."
@@ -1844,7 +1770,7 @@ msgstr "Après ligne active"
#: ../src/command/subtitle.cpp:135
msgid "Insert a new line after the current one"
-msgstr "Insérez une nouvelle ligne après l'actuelle"
+msgstr "Insérer une nouvelle ligne après celle active"
#: ../src/command/subtitle.cpp:167 ../src/command/subtitle.cpp:168
msgid "After Current, at Video Time"
@@ -1852,7 +1778,7 @@ msgstr "Après l'active, au point de synchronisation"
#: ../src/command/subtitle.cpp:169
msgid "Insert a new line after the current one, starting at video time"
-msgstr "Insérez une nouvelle ligne après l'actuelle, au début de la vidéo"
+msgstr "Insérer une nouvelle ligne après celle active, au début de la vidéo"
#: ../src/command/subtitle.cpp:178
msgid "&Before Current"
@@ -1864,7 +1790,7 @@ msgstr "Avant ligne active"
#: ../src/command/subtitle.cpp:180
msgid "Insert a new line before the current one"
-msgstr "Insérez une nouvelle ligne avant la ligne actuelle"
+msgstr "Insérer une nouvelle ligne avant la ligne active"
#: ../src/command/subtitle.cpp:209 ../src/command/subtitle.cpp:210
msgid "Before Current, at Video Time"
@@ -1872,8 +1798,7 @@ msgstr "Avant l'active, au point de synchronisation"
#: ../src/command/subtitle.cpp:211
msgid "Insert a new line before the current one, starting at video time"
-msgstr ""
-"Insérez une nouvelle ligne avant la ligne actuelle, au début de la vidéo"
+msgstr "Insérez une nouvelle ligne avant la ligne active, au début de la vidéo"
#: ../src/command/subtitle.cpp:221
msgid "&New Subtitles"
@@ -1910,8 +1835,7 @@ msgstr "Ouvrir un fichier de sous-titres auto-sauvegardé"
#: ../src/command/subtitle.cpp:250
msgid "Open a previous version of a file which was autosaved by Aegisub"
msgstr ""
-"Ouvrez une version précédente d'un fichier qui a été sauvegardée "
-"automatiquement par Aegisub"
+"Ouvrir une version précédente d'un fichier qui a été sauvegardée automatiquement par Aegisub"
#: ../src/command/subtitle.cpp:263
msgid "Open Subtitles with &Charset..."
@@ -1923,8 +1847,7 @@ msgstr "Ouvrir sous-titres avec jeu de caractères"
#: ../src/command/subtitle.cpp:265
msgid "Open a subtitles file with a specific file encoding"
-msgstr ""
-"Ouvrir un fichier de sous-titres avec un encodage de fichier spécifique"
+msgstr "Ouvrir un fichier de sous-titres avec un encodage de fichier spécifique"
#: ../src/command/subtitle.cpp:273
msgid "Choose charset code:"
@@ -1984,7 +1907,7 @@ msgstr "Enregistrer les sous-titres sous"
#: ../src/command/subtitle.cpp:352
msgid "Save subtitles with another name"
-msgstr "Enregistrer sous-titres avec un autre nom"
+msgstr "Enregistrer les sous-titres avec un autre nom"
#: ../src/command/subtitle.cpp:361 ../src/dialog_selected_choices.cpp:26
#: ../src/subs_edit_ctrl.cpp:369 ../src/dialog_export.cpp:125
@@ -1997,7 +1920,7 @@ msgstr "Tout sélectionner"
#: ../src/command/subtitle.cpp:363
msgid "Select all dialogue lines"
-msgstr "Sélectionnez toutes les lignes de dialogue"
+msgstr "Sélectionner toutes les lignes de dialogue"
#: ../src/command/subtitle.cpp:375 ../src/command/subtitle.cpp:376
msgid "Select Visible"
@@ -2005,9 +1928,7 @@ msgstr "Sélection visible"
#: ../src/command/subtitle.cpp:377
msgid "Select all dialogue lines that are visible on the current video frame"
-msgstr ""
-"Sélectionnez toutes les lignes de dialogue qui sont visibles sur l'image "
-"vidéo en cours"
+msgstr "Sélectionner toutes les lignes de dialogue visibles sur l'image en cours"
#: ../src/command/subtitle.cpp:407
msgid "Spell &Checker..."
@@ -2015,11 +1936,11 @@ msgstr "&Correcteur orthographique..."
#: ../src/command/subtitle.cpp:408 ../src/dialog_spellchecker.cpp:103
msgid "Spell Checker"
-msgstr "Vérificateur d'orthographe"
+msgstr "Correcteur orthographique"
#: ../src/command/subtitle.cpp:409
msgid "Open spell checker"
-msgstr "Ouvre le correcteur orthographique"
+msgstr "Ouvrir le correcteur orthographique"
#: ../src/command/tool.cpp:58
msgid "ASSDraw3..."
@@ -2031,7 +1952,7 @@ msgstr "ASSDraw3"
#: ../src/command/tool.cpp:60
msgid "Launch the ASSDraw3 tool for vector drawing"
-msgstr "Lancez l'outil ASSDraw3 pour le dessin vectoriel"
+msgstr "Lancer ASSDraw3 pour le dessin vectoriel"
#: ../src/command/tool.cpp:70
msgid "&Export Subtitles..."
@@ -2042,24 +1963,22 @@ msgid "Export Subtitles"
msgstr "Exporter les sous-titres"
#: ../src/command/tool.cpp:72
-msgid ""
-"Save a copy of subtitles in a different format or with processing applied to "
-"it"
+msgid "Save a copy of subtitles in a different format or with processing applied to it"
msgstr ""
-"Enregistrer une copie de sous-titres dans un format différent ou avec le "
-"traitement qui lui est appliqué"
+"Enregistrer une copie de sous-titres dans un format différent ou avec un traitement à lui "
+"appliquer"
#: ../src/command/tool.cpp:83
msgid "&Fonts Collector..."
-msgstr "Collecte des &polices..."
+msgstr "Collecte des &polices d'écriture..."
#: ../src/command/tool.cpp:84 ../src/dialog_fonts_collector.cpp:218
msgid "Fonts Collector"
-msgstr "Collecte des polices"
+msgstr "Collecte des polices d'écriture"
#: ../src/command/tool.cpp:85
msgid "Open fonts collector"
-msgstr "Ouvrir le collecteur de polices"
+msgstr "Ouvrir le collecteur de polices d'écriture"
#: ../src/command/tool.cpp:95
msgid "S&elect Lines..."
@@ -2071,7 +1990,7 @@ msgstr "Choix de lignes"
#: ../src/command/tool.cpp:97
msgid "Select lines based on defined criteria"
-msgstr "Sélectionnez les lignes en fonction de critères définis"
+msgstr "Sélectionner des lignes à partir de critères définis"
#: ../src/command/tool.cpp:107
msgid "&Resample Resolution..."
@@ -2083,11 +2002,10 @@ msgstr "Rééchantillonnage de la résolution"
#: ../src/command/tool.cpp:109
msgid ""
-"Resample subtitles to maintain their current appearance at a different "
-"script resolution"
+"Resample subtitles to maintain their current appearance at a different script resolution"
msgstr ""
-"Rééchantillonner sous-titres pour maintenir leur aspect actuel à une "
-"résolution de script différente"
+"Rééchantillonner les sous-titres pour maintenir leur aspect actuel à une résolution de "
+"script différente"
#: ../src/command/tool.cpp:122
msgid "St&yling Assistant..."
@@ -2099,11 +2017,11 @@ msgstr "Ouvre l'assistant de style"
#: ../src/command/tool.cpp:141 ../src/command/tool.cpp:225
msgid "&Accept changes"
-msgstr "V&alide les modifications"
+msgstr "V&alider les modifications"
#: ../src/command/tool.cpp:143 ../src/command/tool.cpp:227
msgid "Commit changes and move to the next line"
-msgstr "Accepter les modifications et passer à la ligne suivante"
+msgstr "Valider les modifications et passer à la ligne suivante"
#: ../src/command/tool.cpp:152 ../src/command/tool.cpp:236
msgid "&Preview changes"
@@ -2111,7 +2029,7 @@ msgstr "A&perçu des modifications"
#: ../src/command/tool.cpp:154 ../src/command/tool.cpp:238
msgid "Commit changes and stay on the current line"
-msgstr "Accepter les modifications et rester sur la ligne actuelle"
+msgstr "Valider les modifications et rester sur la ligne actuelle"
#: ../src/command/tool.cpp:164
msgid "&Styles Manager..."
@@ -2119,31 +2037,31 @@ msgstr "Gestionnaire de &styles..."
#: ../src/command/tool.cpp:166
msgid "Open the styles manager"
-msgstr "Ouvrez le gestionnaire de styles"
+msgstr "Ouvrir le gestionnaire de styles"
#: ../src/command/tool.cpp:176
msgid "&Kanji Timer..."
-msgstr "Chrono &kanji..."
+msgstr "Minutage &kanji..."
#: ../src/command/tool.cpp:177
msgid "Kanji Timer"
-msgstr "Chrono kanji"
+msgstr "Minutage kanji"
#: ../src/command/tool.cpp:178
msgid "Open the Kanji timer copier"
-msgstr "Ouvrir le copieur de chrono Kanji"
+msgstr "Ouvrir le copieur de minutage Kanji"
#: ../src/command/tool.cpp:188
msgid "&Timing Post-Processor..."
-msgstr "Postprocesseur &temporel..."
+msgstr "Postprocesseur &de synchronisation..."
#: ../src/command/tool.cpp:190
msgid ""
-"Post-process the subtitle timing to add lead-ins and lead-outs, snap timing "
-"to scene changes, etc."
+"Post-process the subtitle timing to add lead-ins and lead-outs, snap timing to scene "
+"changes, etc."
msgstr ""
-"Post-traitement de la synchronisation des sous-titres pour ajouter des blanc "
-"de fin, de début, synchronisation instantanée aux changements de scène, etc."
+"Post-traitement de la synchronisation des sous-titres pour ajouter des blancs de fin, de "
+"début, synchronisation instantanée aux changements de scène, etc."
#: ../src/command/tool.cpp:200
msgid "&Translation Assistant..."
@@ -2155,40 +2073,38 @@ msgstr "Assistant à la traduction"
#: ../src/command/tool.cpp:202
msgid "Open translation assistant"
-msgstr "Ouvre l'assistant à la traduction"
+msgstr "Ouvrir l'assistant à la traduction"
#: ../src/command/tool.cpp:210
msgid "There is nothing to translate in the file."
-msgstr "Il n'y a rien à traduire dans le fichier"
+msgstr "Il n'y a rien à traduire dans le fichier."
#: ../src/command/tool.cpp:247
msgid "&Next Line"
msgstr "Lig&ne suivante"
-#: ../src/command/tool.cpp:248 ../src/command/grid.cpp:51
-#: ../src/command/grid.cpp:52 ../src/command/grid.cpp:63
-#: ../src/command/grid.cpp:64 ../src/command/time.cpp:354
+#: ../src/command/tool.cpp:248 ../src/command/grid.cpp:51 ../src/command/grid.cpp:52
+#: ../src/command/grid.cpp:63 ../src/command/grid.cpp:64 ../src/command/time.cpp:354
#: ../src/command/time.cpp:355
msgid "Next Line"
msgstr "Ligne suivante"
#: ../src/command/tool.cpp:249
msgid "Move to the next line without committing changes"
-msgstr "Aller à la ligne suivante à valider"
+msgstr "Aller à la ligne suivante sans valider les changements"
#: ../src/command/tool.cpp:258
msgid "&Previous Line"
msgstr "Ligne &précédente"
-#: ../src/command/tool.cpp:259 ../src/command/grid.cpp:90
-#: ../src/command/grid.cpp:91 ../src/command/time.cpp:366
-#: ../src/command/time.cpp:367
+#: ../src/command/tool.cpp:259 ../src/command/grid.cpp:90 ../src/command/grid.cpp:91
+#: ../src/command/time.cpp:366 ../src/command/time.cpp:367
msgid "Previous Line"
msgstr "Ligne &précédente"
#: ../src/command/tool.cpp:260
msgid "Move to the previous line without committing changes"
-msgstr "Aller à la ligne précédente sans accepter les modifications"
+msgstr "Aller à la ligne précédente sans valider les modifications"
#: ../src/command/tool.cpp:270
msgid "&Insert Original"
@@ -2312,24 +2228,23 @@ msgstr "&Options..."
#: ../src/command/app.cpp:208
msgid "Configure Aegisub"
-msgstr "Paramétrer Aegisub"
+msgstr "Configurer Aegisub"
#: ../src/command/app.cpp:222 ../src/command/app.cpp:223
msgid "Toggle global hotkey overrides"
-msgstr "Basculer entre les touches de raccourcis globales et modifiées"
+msgstr "Alterner entre les touches de raccourcis globales et modifiées"
#: ../src/command/app.cpp:224
msgid "Toggle global hotkey overrides (Medusa Mode)"
-msgstr ""
-"Basculer entre les touches de raccourcis globales et modifiées (Mode Medusa)"
+msgstr "Alterner entre les touches de raccourcis globales et modifiées (Mode Medusa)"
#: ../src/command/app.cpp:239
msgid "Toggle the main toolbar"
-msgstr "Basculer sur la barre d'outils principale"
+msgstr "Alterner la barre d'outils principale"
#: ../src/command/app.cpp:244
msgid "Hide Toolbar"
-msgstr "Masque la barre d'outils"
+msgstr "Masquer la barre d'outils"
#: ../src/command/app.cpp:245
msgid "Show Toolbar"
@@ -2345,7 +2260,7 @@ msgstr "Vérifier les mises à jour"
#: ../src/command/app.cpp:262
msgid "Check to see if there is a new version of Aegisub available"
-msgstr "Vérifie s'il existe une nouvelle version disponible d'Aegisub"
+msgstr "Vérifier s'il existe une nouvelle version disponible d'Aegisub"
#: ../src/command/grid.cpp:53
msgid "Move to the next subtitle line"
@@ -2371,12 +2286,10 @@ msgstr "Nom de l'acteur"
msgid "Sort all subtitles by their actor names"
msgstr "Trier tous les sous-titres par leur nom d'acteur"
-#: ../src/command/grid.cpp:107 ../src/command/grid.cpp:127
-#: ../src/command/grid.cpp:139 ../src/command/grid.cpp:151
-#: ../src/command/grid.cpp:163 ../src/command/grid.cpp:175
-#: ../src/command/grid.cpp:187 ../src/command/grid.cpp:199
-#: ../src/command/grid.cpp:211 ../src/command/grid.cpp:223
-#: ../src/command/grid.cpp:235 ../src/command/grid.cpp:247
+#: ../src/command/grid.cpp:107 ../src/command/grid.cpp:127 ../src/command/grid.cpp:139
+#: ../src/command/grid.cpp:151 ../src/command/grid.cpp:163 ../src/command/grid.cpp:175
+#: ../src/command/grid.cpp:187 ../src/command/grid.cpp:199 ../src/command/grid.cpp:211
+#: ../src/command/grid.cpp:223 ../src/command/grid.cpp:235 ../src/command/grid.cpp:247
msgid "sort"
msgstr "tri"
@@ -2384,31 +2297,29 @@ msgstr "tri"
msgid "Sort selected subtitles by their actor names"
msgstr "Trier les sous-titres sélectionnés par leur nom d'acteur"
-#: ../src/command/grid.cpp:133 ../src/command/grid.cpp:145
-#: ../src/dialog_search_replace.cpp:87
+#: ../src/command/grid.cpp:133 ../src/command/grid.cpp:145 ../src/dialog_search_replace.cpp:87
msgid "&Effect"
msgstr "&Effet"
-#: ../src/command/grid.cpp:134 ../src/command/grid.cpp:146
-#: ../src/dialog_paste_over.cpp:72 ../src/subs_edit_box.cpp:145
-#: ../src/grid_column.cpp:191 ../src/grid_column.cpp:192
+#: ../src/command/grid.cpp:134 ../src/command/grid.cpp:146 ../src/dialog_paste_over.cpp:72
+#: ../src/subs_edit_box.cpp:145 ../src/grid_column.cpp:191 ../src/grid_column.cpp:192
msgid "Effect"
msgstr "Effet"
#: ../src/command/grid.cpp:135
msgid "Sort all subtitles by their effects"
-msgstr "Trier tous les sous-titres par leurs effets"
+msgstr "Trier tous les sous-titres par leur effet"
#: ../src/command/grid.cpp:147
msgid "Sort selected subtitles by their effects"
-msgstr "Trier les sous-titres sélectionnés par leurs effets"
+msgstr "Trier les sous-titres sélectionnés par leur effet"
#: ../src/command/grid.cpp:157 ../src/command/grid.cpp:169
msgid "&End Time"
msgstr "T&emps de fin"
-#: ../src/command/grid.cpp:158 ../src/command/grid.cpp:170
-#: ../src/dialog_paste_over.cpp:66 ../src/grid_column.cpp:147
+#: ../src/command/grid.cpp:158 ../src/command/grid.cpp:170 ../src/dialog_paste_over.cpp:66
+#: ../src/grid_column.cpp:147
msgid "End Time"
msgstr "Temps fin"
@@ -2424,8 +2335,8 @@ msgstr "Trier les sous-titres sélectionnés par leur temps de fin"
msgid "&Layer"
msgstr "Ca&lque"
-#: ../src/command/grid.cpp:182 ../src/command/grid.cpp:194
-#: ../src/dialog_paste_over.cpp:64 ../src/grid_column.cpp:107
+#: ../src/command/grid.cpp:182 ../src/command/grid.cpp:194 ../src/dialog_paste_over.cpp:64
+#: ../src/grid_column.cpp:107
msgid "Layer"
msgstr "Calque"
@@ -2441,10 +2352,10 @@ msgstr "Trier les sous-titres sélectionnés par leur numéro de calque"
msgid "&Start Time"
msgstr "Temp&s début"
-#: ../src/command/grid.cpp:206 ../src/command/grid.cpp:218
-#: ../src/dialog_paste_over.cpp:65 ../src/grid_column.cpp:129
+#: ../src/command/grid.cpp:206 ../src/command/grid.cpp:218 ../src/dialog_paste_over.cpp:65
+#: ../src/grid_column.cpp:129
msgid "Start Time"
-msgstr "Temps départ"
+msgstr "Temps début"
#: ../src/command/grid.cpp:207
msgid "Sort all subtitles by their start times"
@@ -2458,8 +2369,7 @@ msgstr "Trier tous les sous-titres par leur temps de début"
msgid "St&yle Name"
msgstr "Nom du st&yle"
-#: ../src/command/grid.cpp:230 ../src/command/grid.cpp:242
-#: ../src/dialog_style_editor.cpp:177
+#: ../src/command/grid.cpp:230 ../src/command/grid.cpp:242 ../src/dialog_style_editor.cpp:177
msgid "Style Name"
msgstr "Nom du style"
@@ -2473,11 +2383,11 @@ msgstr "Trier les sous-titres sélectionnés par leur nom de style"
#: ../src/command/grid.cpp:254 ../src/command/grid.cpp:255
msgid "Cycle Tag Hiding Mode"
-msgstr "Mode balises de cycle cachées"
+msgstr "Défiler modes d'affichage balises"
#: ../src/command/grid.cpp:256
msgid "Cycle through tag hiding modes"
-msgstr "Bascule entre les modes d'affichage des balises"
+msgstr "Défiler les modes d'affichage des balises"
#: ../src/command/grid.cpp:266
msgid "ASS Override Tag mode set to show full tags."
@@ -2505,7 +2415,7 @@ msgstr "Masquer les balises prioritaires dans la grille des sous-titres"
#: ../src/command/grid.cpp:294
msgid "Sh&ow Tags"
-msgstr "V&oir les étiquettes"
+msgstr "A&fficher les balises"
#: ../src/command/grid.cpp:295
msgid "Show Tags"
@@ -2513,23 +2423,20 @@ msgstr "Afficher les balises"
#: ../src/command/grid.cpp:296
msgid "Show full override tags in the subtitle grid"
-msgstr ""
-"Affichage complet des balises prioritaires sur la grille des sous-titres"
+msgstr "Afficher complètement les balises prioritaires sur la grille des sous-titres"
#: ../src/command/grid.cpp:310
msgid "S&implify Tags"
-msgstr "S&implification des balises"
+msgstr "S&implifier les balises"
#: ../src/command/grid.cpp:311
msgid "Simplify Tags"
-msgstr "Simplification des balises"
+msgstr "Simplifier les balises"
#: ../src/command/grid.cpp:312
-msgid ""
-"Replace override tags in the subtitle grid with a simplified placeholder"
+msgid "Replace override tags in the subtitle grid with a simplified placeholder"
msgstr ""
-"Remplacer les balises prioritaires dans la grille des sous-titres par un "
-"repère simplifié"
+"Remplacer les balises prioritaires dans la grille des sous-titres par un repère simplifié"
#: ../src/command/grid.cpp:348 ../src/command/grid.cpp:349
msgid "Move line up"
@@ -2537,11 +2444,11 @@ msgstr "Monter la ligne"
#: ../src/command/grid.cpp:350
msgid "Move the selected lines up one row"
-msgstr "Monte les lignes sélectionnées d'une rangée"
+msgstr "Monter les lignes sélectionnées d'une rangée"
#: ../src/command/grid.cpp:359 ../src/command/grid.cpp:376
msgid "move lines"
-msgstr "déplace des lignes"
+msgstr "déplacer des lignes"
#: ../src/command/grid.cpp:365 ../src/command/grid.cpp:366
msgid "Move line down"
@@ -2549,7 +2456,7 @@ msgstr "Descendre la ligne"
#: ../src/command/grid.cpp:367
msgid "Move the selected lines down one row"
-msgstr "Descend les lignes sélectionnées d'une rangée"
+msgstr "Descendre les lignes sélectionnées d'une rangée"
#: ../src/command/grid.cpp:383 ../src/command/grid.cpp:384
msgid "Swap Lines"
@@ -2561,7 +2468,7 @@ msgstr "Permuter les deux lignes sélectionnées"
#: ../src/command/grid.cpp:396
msgid "swap lines"
-msgstr "inversion de lignes"
+msgstr "inverser les lignes"
#: ../src/command/automation.cpp:48
msgid "&Reload Automation scripts"
@@ -2573,51 +2480,47 @@ msgstr "Recharger les scripts d'automatisme"
#: ../src/command/automation.cpp:50
msgid "Reload all Automation scripts and rescan the autoload folder"
-msgstr ""
-"Recharger tous les scripts d'automatisme et rescruter le dossier de "
-"chargement automatique"
+msgstr "Recharger tous les scripts d'automatisme et rescanner le dossier autoload"
#: ../src/command/automation.cpp:55
msgid "Reloaded all Automation scripts"
-msgstr "Recharger tous les scripts d'automatisme"
+msgstr "Recharge de tous les scripts d'automatisme"
#: ../src/command/automation.cpp:61
msgid "R&eload autoload Automation scripts"
-msgstr "R&echarger les scripts d'automatisme autochargés"
+msgstr "R&echarger les scripts d'automatisme « autoload »"
#: ../src/command/automation.cpp:62
msgid "Reload autoload Automation scripts"
-msgstr "Recharger les scripts d'automatisme autochargés"
+msgstr "Recharger les scripts d'automatisme « autoload »"
#: ../src/command/automation.cpp:63
msgid "Rescan the Automation autoload folder"
-msgstr "Rescruter le dossier de chargement des automatismes"
+msgstr "Rescanner le dossier des automatismes « autoload »"
#: ../src/command/automation.cpp:67
msgid "Reloaded autoload Automation scripts"
-msgstr "Recharger les scripts d'automatisme autochargés"
+msgstr "Recharge des scripts d'automatisme « autoload »"
#: ../src/command/automation.cpp:74 ../src/command/automation.cpp:86
msgid "&Automation..."
msgstr "&Automatisme..."
-#: ../src/command/automation.cpp:75 ../src/command/automation.cpp:87
-#: ../src/preferences.cpp:314
+#: ../src/command/automation.cpp:75 ../src/command/automation.cpp:87 ../src/preferences.cpp:314
msgid "Automation"
msgstr "Automatisme"
#: ../src/command/automation.cpp:76
msgid "Open automation manager"
-msgstr "Ouvre le gestionnaire d'automatismes"
+msgstr "Ouvre le gestionnaire des automatismes"
#: ../src/command/automation.cpp:88
msgid ""
-"Open automation manager. Ctrl: Rescan autoload folder. Ctrl+Shift: Rescan "
-"autoload folder and reload all automation scripts"
+"Open automation manager. Ctrl: Rescan autoload folder. Ctrl+Shift: Rescan autoload folder "
+"and reload all automation scripts"
msgstr ""
-"Ouvrir le gestionnaire d'automatisation. Ctrl: Rescanne le dossier auto-"
-"chargement. Ctrl+Maj: Rescanne le dossier auto-chargement et recharger tous "
-"les scripts d'automatisation"
+"Ouvrir le gestionnaire des automatismes. Ctrl: Rescanne le dossier « autoload »chargement. "
+"Ctrl+Maj: Rescanner le dossier « autoload » et recharger tous les scripts d'automatisme"
#: ../src/command/time.cpp:99
msgid "adjoin"
@@ -2625,29 +2528,27 @@ msgstr "joint"
#: ../src/command/time.cpp:104
msgid "Change &End"
-msgstr "Changer la &fin"
+msgstr "Modifier la &fin"
#: ../src/command/time.cpp:105
msgid "Change End"
-msgstr "Changer la fin"
+msgstr "Modifier la fin"
#: ../src/command/time.cpp:106
msgid "Change end times of lines to the next line's start time"
-msgstr ""
-"Modifier les temps de fin de ligne au temps de début de la ligne suivante"
+msgstr "Modifier les temps de fin des lignes au temps de début de la ligne suivante"
#: ../src/command/time.cpp:115
msgid "Change &Start"
-msgstr "Changer le &début"
+msgstr "Modifier le &début"
#: ../src/command/time.cpp:116
msgid "Change Start"
-msgstr "Changer le début"
+msgstr "Modifier le début"
#: ../src/command/time.cpp:117
msgid "Change start times of lines to the previous line's end time"
-msgstr ""
-"Modifier les temps de début de ligne au temps de finde la ligne précédente"
+msgstr "Modifier les temps de début des lignes au temps de fin de la ligne précédente"
#: ../src/command/time.cpp:127
msgid "Shift to &Current Frame"
@@ -2659,9 +2560,7 @@ msgstr "Décaler vers l'image active"
#: ../src/command/time.cpp:129
msgid "Shift selection so that the active line starts at current frame"
-msgstr ""
-"Décaler la sélection pour que la première ligne active démarre sur l'image "
-"courante"
+msgstr "Décaler la sélection pour que la première ligne active démarre sur l'image active"
#: ../src/command/time.cpp:145
msgid "shift to frame"
@@ -2673,7 +2572,7 @@ msgstr "&Décalage temporel..."
#: ../src/command/time.cpp:154
msgid "Shift subtitles by time or frames"
-msgstr "Décale des sous-titres en temps ou images"
+msgstr "Décaler des sous-titres en temps ou images"
#: ../src/command/time.cpp:175 ../src/audio_timing_dialogue.cpp:512
#: ../src/audio_timing_dialogue.cpp:518
@@ -2690,7 +2589,7 @@ msgstr "Coller la fin à la vidéo"
#: ../src/command/time.cpp:183
msgid "Set end of selected subtitles to current video frame"
-msgstr "Applique la fin des sous-titres sélectionnés à l'image vidéo active"
+msgstr "Appliquer la fin des sous-titres sélectionnés à l'image vidéo active"
#: ../src/command/time.cpp:193
msgid "Snap to S&cene"
@@ -2701,11 +2600,9 @@ msgid "Snap to Scene"
msgstr "Coller à la scène"
#: ../src/command/time.cpp:195
-msgid ""
-"Set start and end of subtitles to the keyframes around current video frame"
+msgid "Set start and end of subtitles to the keyframes around current video frame"
msgstr ""
-"Met le début et la fin des sous-titre sur les clés d'image autour de l'image "
-"vidéo active"
+"Définir le début et la fin des sous-titre sur les images-clés proche de l'image vidéo active"
#: ../src/command/time.cpp:232
msgid "snap to scene"
@@ -2713,46 +2610,43 @@ msgstr "coller à la scène"
#: ../src/command/time.cpp:238 ../src/command/time.cpp:239
msgid "Add lead in and out"
-msgstr "Ajout blancs de début et de fin"
+msgstr "Ajouter blancs de début et de fin"
#: ../src/command/time.cpp:240
msgid "Add both lead in and out to the selected lines"
-msgstr "Ajouter à la fois les entrée et sortie pour les lignes sélectionnées"
+msgstr "Ajouter blanc de début et de fin pour les lignes sélectionnées"
#: ../src/command/time.cpp:252 ../src/command/time.cpp:253
msgid "Add lead in"
-msgstr "Ajout de blanc de début"
+msgstr "Ajouter blanc de début"
#: ../src/command/time.cpp:254
msgid "Add the lead in time to the selected lines"
-msgstr "Ajout de blanc de début pour les lignes sélectionnées"
+msgstr "Ajouter blanc de début pour les lignes sélectionnées"
#: ../src/command/time.cpp:264 ../src/command/time.cpp:265
msgid "Add lead out"
-msgstr "Ajout de blanc de fin"
+msgstr "Ajouter blanc de fin"
#: ../src/command/time.cpp:266
msgid "Add the lead out time to the selected lines"
-msgstr "Ajout de blanc de fin pour les lignes sélectionnées"
+msgstr "Ajouter un blanc de fin pour les lignes sélectionnées"
#: ../src/command/time.cpp:275 ../src/command/time.cpp:276
msgid "Increase length"
-msgstr "Augmenter la longueur"
+msgstr "Agrandir la durée"
#: ../src/command/time.cpp:277
msgid "Increase the length of the current timing unit"
-msgstr "Augmenter la longueur de l'unité de temps actuelle"
+msgstr "Agrandir la longueur de l'unité de temps actuelle"
#: ../src/command/time.cpp:286 ../src/command/time.cpp:287
msgid "Increase length and shift"
-msgstr "Augmenter la longueur et décaler"
+msgstr "Agrandir la longueur et décaler"
#: ../src/command/time.cpp:288
-msgid ""
-"Increase the length of the current timing unit and shift the following items"
-msgstr ""
-"Allonger la longueur de l'unité de temps courante et décaler les éléments "
-"suivants"
+msgid "Increase the length of the current timing unit and shift the following items"
+msgstr "Agrandir la longueur de l'unité de temps actuelle et décaler les éléments suivants"
#: ../src/command/time.cpp:297 ../src/command/time.cpp:298
msgid "Decrease length"
@@ -2760,34 +2654,31 @@ msgstr "Réduire la longueur"
#: ../src/command/time.cpp:299
msgid "Decrease the length of the current timing unit"
-msgstr "Réduire la longueur de l'actuelle unité de temps"
+msgstr "Réduire la longueur de l'unité de temps actuelle"
#: ../src/command/time.cpp:308 ../src/command/time.cpp:309
msgid "Decrease length and shift"
msgstr "Réduire la longueur et décaler"
#: ../src/command/time.cpp:310
-msgid ""
-"Decrease the length of the current timing unit and shift the following items"
-msgstr ""
-"Réduire la longueur de l'unité de temps courante et décaler les éléments "
-"suivants"
+msgid "Decrease the length of the current timing unit and shift the following items"
+msgstr "Réduire la longueur de l'unité de temps actuelle et décaler les éléments suivants"
#: ../src/command/time.cpp:319 ../src/command/time.cpp:320
msgid "Shift start time forward"
-msgstr "Décale les temps de début vers l'avant"
+msgstr "Décaler les temps de début vers l'avant"
#: ../src/command/time.cpp:321
msgid "Shift the start time of the current timing unit forward"
-msgstr "Avancer le temps de départ de l'unité de temps courante"
+msgstr "Décaler le temps de début de l'unité de temps actuelle"
#: ../src/command/time.cpp:330 ../src/command/time.cpp:331
msgid "Shift start time backward"
-msgstr "Reculer le temps de départ"
+msgstr "Décaler le temps de départ en arrière"
#: ../src/command/time.cpp:332
msgid "Shift the start time of the current timing unit backward"
-msgstr "Reculer le temps de départ de l'unité de temps courante"
+msgstr "Décaler le temps de départ de l'unité de temps actuelle en arrière"
#: ../src/command/time.cpp:342
msgid "Snap &Start to Video"
@@ -2799,7 +2690,7 @@ msgstr "Coller le début à la vidéo"
#: ../src/command/time.cpp:344
msgid "Set start of selected subtitles to current video frame"
-msgstr "Applique le début du sous-titre sélectionné à l'image vidéo active."
+msgstr "Appliquer le début du sous-titre sélectionné à l'image vidéo active"
#: ../src/command/time.cpp:356
msgid "Next line or syllable"
@@ -2815,7 +2706,7 @@ msgstr "Standard"
#: ../src/command/vis_tool.cpp:58
msgid "Standard mode, double click sets position"
-msgstr "Mode standard, double-clic règle la position."
+msgstr "Mode standard, le double-clic définit la position"
#: ../src/command/vis_tool.cpp:64 ../src/command/vis_tool.cpp:65
#: ../src/visual_tool_vector_clip.cpp:57
@@ -2832,7 +2723,7 @@ msgstr "Rotation Z"
#: ../src/command/vis_tool.cpp:74
msgid "Rotate subtitles on their Z axis"
-msgstr "Tourne les sous-titres selon leur axe Z"
+msgstr "Pivoter les sous-titres sur l'axe Z"
#: ../src/command/vis_tool.cpp:80 ../src/command/vis_tool.cpp:81
msgid "Rotate XY"
@@ -2840,31 +2731,31 @@ msgstr "Rotation XY"
#: ../src/command/vis_tool.cpp:82
msgid "Rotate subtitles on their X and Y axes"
-msgstr "Tourne les sous-titres selon leurs axes X et Y"
+msgstr "Pivoter les sous-titres selon les axes X et Y"
#: ../src/command/vis_tool.cpp:88 ../src/command/vis_tool.cpp:89
msgid "Scale"
-msgstr "Anamorphose"
+msgstr "Ajuster taille"
#: ../src/command/vis_tool.cpp:90
msgid "Scale subtitles on X and Y axes"
-msgstr "Anamorphose les sous-titres selon les axes X et Y"
+msgstr "Ajuster la taille les sous-titres selon les axes X et Y"
#: ../src/command/vis_tool.cpp:96 ../src/command/vis_tool.cpp:97
msgid "Clip"
-msgstr "Clip"
+msgstr "Contraindre"
#: ../src/command/vis_tool.cpp:98
msgid "Clip subtitles to a rectangle"
-msgstr "Contraint les sous-titres dans un rectangle"
+msgstr "Contraindre les sous-titres dans un rectangle"
#: ../src/command/vis_tool.cpp:104 ../src/command/vis_tool.cpp:105
msgid "Vector Clip"
-msgstr "Clip vectoriel"
+msgstr "Zone vectorielle"
#: ../src/command/vis_tool.cpp:106
msgid "Clip subtitles to a vectorial area"
-msgstr "Contraint les sous-titres dans une zone vectorielle"
+msgstr "Contraindre les sous-titres dans une zone vectorielle"
#: ../src/command/audio.cpp:65
msgid "&Close Audio"
@@ -2876,7 +2767,7 @@ msgstr "Fermer l'audio"
#: ../src/command/audio.cpp:67
msgid "Close the currently open audio file"
-msgstr "Fermez le fichier audio actuellement ouvert"
+msgstr "Fermer le fichier audio actuellement ouvert"
#: ../src/command/audio.cpp:77
msgid "&Open Audio File..."
@@ -2896,11 +2787,11 @@ msgstr "Formats audio"
#: ../src/command/audio.cpp:93 ../src/command/audio.cpp:94
msgid "Open 2h30 Blank Audio"
-msgstr "Ouvre un fichier audio vierge de 2 h 30"
+msgstr "Ouvrir un audio vierge de 2 h 30"
#: ../src/command/audio.cpp:95
msgid "Open a 150 minutes blank audio clip, for debugging"
-msgstr "Ouvrir un clip audio vierge de 150 minutes pour débogage"
+msgstr "Ouvrir 150 minutes d'audio vierge, pour débogage"
#: ../src/command/audio.cpp:104 ../src/command/audio.cpp:105
msgid "Open 2h30 Noise Audio"
@@ -2908,7 +2799,7 @@ msgstr "Ouvrir 2 h 30 de bruit audio"
#: ../src/command/audio.cpp:106
msgid "Open a 150 minutes noise-filled audio clip, for debugging"
-msgstr "Ouvrir un clip audio de 150 minutes de bruit, pour débogage"
+msgstr "Ouvrir 150 minutes de bruit audio, pour débogage"
#: ../src/command/audio.cpp:116
msgid "Open Audio from &Video"
@@ -2920,7 +2811,7 @@ msgstr "Ouvrir l'audio de la vidéo"
#: ../src/command/audio.cpp:118
msgid "Open the audio from the current video file"
-msgstr "Ouvrez l'audio du fichier vidéo en cours"
+msgstr "Ouvrir l'audio du fichier vidéo en cours"
#: ../src/command/audio.cpp:132
msgid "&Spectrum Display"
@@ -2960,17 +2851,15 @@ msgstr "Enregistrer le clip audio"
#: ../src/command/audio.cpp:247 ../src/command/audio.cpp:248
msgid "Play current audio selection"
-msgstr "Lire la sélection audio courante"
+msgstr "Lire la sélection audio"
#: ../src/command/audio.cpp:249
msgid "Play the current audio selection, ignoring changes made while playing"
-msgstr ""
-"Lire la sélection audio en ignorant les modifications apportées pendant la "
-"lecture"
+msgstr "Lire la sélection audio en ignorant les modifications apportées pendant la lecture"
#: ../src/command/audio.cpp:262
msgid "Play the audio for the current line"
-msgstr "Lire l'audio pour la ligne actuelle"
+msgstr "Lire l'audio de la ligne actuelle"
#: ../src/command/audio.cpp:275 ../src/command/audio.cpp:276
msgid "Play audio selection"
@@ -2986,7 +2875,7 @@ msgstr "Lire la sélection audio ou arrêter"
#: ../src/command/audio.cpp:289
msgid "Play selection, or stop playback if it's already playing"
-msgstr "lire la sélection, ou arrêter la lecture si elle est déjà en cours"
+msgstr "Lire la sélection, ou arrêter la lecture si elle est déjà en cours"
#: ../src/command/audio.cpp:304 ../src/command/audio.cpp:305
msgid "Stop playing"
@@ -2996,60 +2885,51 @@ msgstr "Arrêter la lecture"
msgid "Stop audio and video playback"
msgstr "Arrêtez la lecture audio et vidéo"
-#: ../src/command/audio.cpp:322 ../src/command/audio.cpp:323
-#: ../src/command/audio.cpp:324
+#: ../src/command/audio.cpp:322 ../src/command/audio.cpp:323 ../src/command/audio.cpp:324
msgid "Play 500 ms before selection"
msgstr "Lire 500 ms avant la sélection"
-#: ../src/command/audio.cpp:336 ../src/command/audio.cpp:337
-#: ../src/command/audio.cpp:338
+#: ../src/command/audio.cpp:336 ../src/command/audio.cpp:337 ../src/command/audio.cpp:338
msgid "Play 500 ms after selection"
msgstr "Lire 500 ms après la sélection"
-#: ../src/command/audio.cpp:350 ../src/command/audio.cpp:351
-#: ../src/command/audio.cpp:352
+#: ../src/command/audio.cpp:350 ../src/command/audio.cpp:351 ../src/command/audio.cpp:352
msgid "Play last 500 ms of selection"
msgstr "Lire les dernières 500 ms de la sélection"
-#: ../src/command/audio.cpp:364 ../src/command/audio.cpp:365
-#: ../src/command/audio.cpp:366
+#: ../src/command/audio.cpp:364 ../src/command/audio.cpp:365 ../src/command/audio.cpp:366
msgid "Play first 500 ms of selection"
msgstr "Lire les premières 500 ms de la sélection"
-#: ../src/command/audio.cpp:380 ../src/command/audio.cpp:381
-#: ../src/command/audio.cpp:382
+#: ../src/command/audio.cpp:380 ../src/command/audio.cpp:381 ../src/command/audio.cpp:382
msgid "Play from selection start to end of file"
-msgstr "Lit du début de la sélection à la fin du fichier"
+msgstr "Lire du début de la sélection à la fin du fichier"
#: ../src/command/audio.cpp:393 ../src/command/audio.cpp:394
msgid "Commit"
-msgstr "Accepter"
+msgstr "Valider"
#: ../src/command/audio.cpp:395
msgid "Commit any pending audio timing changes"
-msgstr "Accepter tous les changements de temps audio en instance"
+msgstr "Valider tous les changements de temps audio en attente"
#: ../src/command/audio.cpp:409 ../src/command/audio.cpp:410
msgid "Commit and use default timing for next line"
-msgstr "Accepter et utiliser le temps par défaut pour la ligne suivante"
+msgstr "Valider et utiliser le temps par défaut pour la ligne suivante"
#: ../src/command/audio.cpp:411
-msgid ""
-"Commit any pending audio timing changes and reset the next line's times to "
-"the default"
+msgid "Commit any pending audio timing changes and reset the next line's times to the default"
msgstr ""
-"Accepter les modifications de temps audio en instance et appliquer le temps "
-"par défaut à la ligne suivante"
+"Valider les modifications de temps audio en attente et appliquer le temps par défaut à la "
+"ligne suivante"
#: ../src/command/audio.cpp:424 ../src/command/audio.cpp:425
msgid "Commit and move to next line"
-msgstr "Accepter et aller à la ligne suivante"
+msgstr "Valider et aller à la ligne suivante"
#: ../src/command/audio.cpp:426
msgid "Commit any pending audio timing changes and move to the next line"
-msgstr ""
-"Accepter toute modification de temps audio en instance et aller à la ligne "
-"suivante"
+msgstr "Valider les modifications de temps audio en attente et aller à la ligne suivante"
#: ../src/command/audio.cpp:439 ../src/command/audio.cpp:440
msgid "Commit and stay on current line"
@@ -3057,9 +2937,7 @@ msgstr "Valider et rester sur la ligne courante"
#: ../src/command/audio.cpp:441
msgid "Commit any pending audio timing changes and stay on the current line"
-msgstr ""
-"Accepter toute modification de temps audio en instance et rester sur la "
-"ligne courante"
+msgstr "Valider les modifications de temps audio en attente et rester sur la ligne active"
#: ../src/command/audio.cpp:452 ../src/command/audio.cpp:453
msgid "Go to selection"
@@ -3067,8 +2945,7 @@ msgstr "Aller à la sélection"
#: ../src/command/audio.cpp:454
msgid "Scroll the audio display to center on the current audio selection"
-msgstr ""
-"Faites défiler l'affichage audio pour centrer sur la sélection audio actuelle"
+msgstr "Faire défiler l'affichage audio pour le centrer sur la sélection audio actuelle"
#: ../src/command/audio.cpp:463 ../src/command/audio.cpp:464
msgid "Scroll left"
@@ -3086,38 +2963,33 @@ msgstr "Défiler à droite"
msgid "Scroll the audio display right"
msgstr "Défiler l'affichage audio à droite"
-#: ../src/command/audio.cpp:490 ../src/command/audio.cpp:491
-#: ../src/command/audio.cpp:492
+#: ../src/command/audio.cpp:490 ../src/command/audio.cpp:491 ../src/command/audio.cpp:492
msgid "Auto scroll audio display to selected line"
-msgstr "Auto-défilement de l'affichage audio de la ligne sélectionnée"
+msgstr "Auto-défilement de l'affichage audio vers la ligne sélectionnée"
-#: ../src/command/audio.cpp:507 ../src/command/audio.cpp:508
-#: ../src/command/audio.cpp:509
+#: ../src/command/audio.cpp:507 ../src/command/audio.cpp:508 ../src/command/audio.cpp:509
msgid "Automatically commit all changes"
-msgstr "Valider automatiquement toute modification"
+msgstr "Valider automatiquement les modifications"
#: ../src/command/audio.cpp:524 ../src/command/audio.cpp:525
msgid "Auto go to next line on commit"
-msgstr "Aller automatiquement à la ligne suivante après validation"
+msgstr "Passer automatiquement à la ligne suivante après validation"
#: ../src/command/audio.cpp:526
msgid "Automatically go to next line on commit"
-msgstr "Aller automatiquement à la ligne suivante après validation"
+msgstr "Passer automatiquement à la ligne suivante après validation"
-#: ../src/command/audio.cpp:541 ../src/command/audio.cpp:542
-#: ../src/command/audio.cpp:543
+#: ../src/command/audio.cpp:541 ../src/command/audio.cpp:542 ../src/command/audio.cpp:543
msgid "Spectrum analyzer mode"
msgstr "Mode analyse de spectre"
-#: ../src/command/audio.cpp:558 ../src/command/audio.cpp:559
-#: ../src/command/audio.cpp:560
+#: ../src/command/audio.cpp:558 ../src/command/audio.cpp:559 ../src/command/audio.cpp:560
msgid "Link vertical zoom and volume sliders"
msgstr "Lier les curseurs de zoom vertical et de volume"
-#: ../src/command/audio.cpp:575 ../src/command/audio.cpp:576
-#: ../src/command/audio.cpp:577
+#: ../src/command/audio.cpp:575 ../src/command/audio.cpp:576 ../src/command/audio.cpp:577
msgid "Toggle karaoke mode"
-msgstr "Basculer en mode karaoké"
+msgstr "Alterner mode karaoké"
#: ../src/command/help.cpp:48
msgid "&Bug Tracker..."
@@ -3130,8 +3002,8 @@ msgstr "Traqueur de bogues"
#: ../src/command/help.cpp:50
msgid "Visit Aegisub's bug tracker to report bugs and request new features"
msgstr ""
-"Visitez le traqueur de bogues d'Aegisub pour rendre compte de bogues et "
-"demander de nouvelles fonctions"
+"Visitez le traqueur de bogues d'Aegisub pour signaler des bogues et proposer des "
+"nouvelles fonctions"
#: ../src/command/help.cpp:69
msgid "&Contents"
@@ -3171,15 +3043,15 @@ msgstr "Visitez le canal IRC officiel d'Aegisub"
#: ../src/command/help.cpp:105
msgid "&Visual Typesetting"
-msgstr "Typographie &visuelle"
+msgstr "Éditions vidéos"
#: ../src/command/help.cpp:106
msgid "Visual Typesetting"
-msgstr "Typographie visuelle"
+msgstr "Éditions vidéos"
#: ../src/command/help.cpp:107
msgid "Open the manual page for Visual Typesetting"
-msgstr "Ouvrir la page du manuel pour la typographie visuelle"
+msgstr "Ouvrir la page du manuel des éditions vidéos"
#: ../src/command/help.cpp:117
msgid "&Website"
@@ -3198,11 +3070,8 @@ msgid "Close Keyframes"
msgstr "Fermer les images clés"
#: ../src/command/keyframe.cpp:51
-msgid ""
-"Discard the currently loaded keyframes and use those from the video, if any"
-msgstr ""
-"Ignorer les images clés actuellement chargés et utiliser ceux de la vidéo, "
-"le cas échéant"
+msgid "Discard the currently loaded keyframes and use those from the video, if any"
+msgstr "Ignorer les images clés chargées et utiliser celles de la vidéo, le cas échéant"
#: ../src/command/keyframe.cpp:66
msgid "Open Keyframes..."
@@ -3218,7 +3087,7 @@ msgstr "Ouvrir un fichier de liste d'images clés"
#: ../src/command/keyframe.cpp:72
msgid "Open keyframes file"
-msgstr "Ouvrir un fichier des images clés"
+msgstr "Ouvrir un fichier d'images clés"
#: ../src/command/keyframe.cpp:85
msgid "Save Keyframes..."
@@ -3302,7 +3171,7 @@ msgstr "Aegisub n'a trouvé aucune erreur orthographique dans ce script."
#: ../src/dialog_spellchecker.cpp:329 ../src/dialog_spellchecker.cpp:343
msgid "spell check replace"
-msgstr "Remplacement proposé"
+msgstr "remplacement proposé"
#: ../src/preferences_base.cpp:63
msgid "Please choose the folder:"
@@ -3318,7 +3187,7 @@ msgstr "Choisir..."
#: ../src/preferences_base.cpp:252
msgid "Font Size"
-msgstr "Taille du caractère"
+msgstr "Taille de la police d'écriture"
#: ../src/dialog_properties.cpp:89
msgid "Script Properties"
@@ -3342,15 +3211,15 @@ msgstr "Traduction :"
#: ../src/dialog_properties.cpp:101
msgid "Editing:"
-msgstr "Édition :"
+msgstr "Adaptation :"
#: ../src/dialog_properties.cpp:102
msgid "Timing:"
-msgstr "Minutage :"
+msgstr "Synchronisation :"
#: ../src/dialog_properties.cpp:103
msgid "Synch point:"
-msgstr "Synchronisation :"
+msgstr "Point de synchronisation :"
#: ../src/dialog_properties.cpp:104
msgid "Updated by:"
@@ -3367,7 +3236,7 @@ msgstr "De la &vidéo"
#: ../src/dialog_properties.cpp:133
msgid "Resolution"
-msgstr "Résolution"
+msgstr "Définition vidéo"
#: ../src/dialog_properties.cpp:141
msgid "0: Smart wrapping, top line is wider"
@@ -3383,24 +3252,23 @@ msgstr "2 : pas de répartition, césures sur \\n et \\N"
#: ../src/dialog_properties.cpp:144
msgid "3: Smart wrapping, bottom line is wider"
-msgstr "3 : répartition intelligente, ligne infériieure plus grande"
+msgstr "3 : répartition intelligente, ligne inférieure plus grande"
#: ../src/dialog_properties.cpp:148
msgid "Wrap Style: "
-msgstr "Style de répartition :"
+msgstr "Style de répartition : "
#: ../src/dialog_properties.cpp:151
msgid "Scale Border and Shadow"
-msgstr "Échelle bord et ombre"
+msgstr "Adapter taille bord et ombre"
#: ../src/dialog_properties.cpp:152
msgid ""
-"Scale border and shadow together with script/render resolution. If this is "
-"unchecked, relative border and shadow size will depend on renderer."
+"Scale border and shadow together with script/render resolution. If this is unchecked, "
+"relative border and shadow size will depend on renderer."
msgstr ""
-"Adapter le bord et l'ombre ensemble selon la résolution du script. Si "
-"l'option n'est pas cochée, la taille relative du bord et de l'ombre "
-"dépendront du rendu."
+"Adapter le bord et l'ombre selon la définition vidéo du script. Si l'option n'est pas "
+"cochée, la taille relative du bord et de l'ombre dépendront du rendu."
#: ../src/dialog_properties.cpp:193
msgid "property changes"
@@ -3408,15 +3276,15 @@ msgstr "modifications des propriétés"
#: ../src/dialog_fonts_collector.cpp:107
msgid "Symlinking fonts to folder...\n"
-msgstr "Liaision des polices vers le dossier...\n"
+msgstr "Liaison symbolique des polices d'écriture vers le dossier...\n"
#: ../src/dialog_fonts_collector.cpp:111
msgid "Copying fonts to folder...\n"
-msgstr "Copie des polices vers le dossier...\n"
+msgstr "Copie des polices d'écriture vers le dossier...\n"
#: ../src/dialog_fonts_collector.cpp:114
msgid "Copying fonts to archive...\n"
-msgstr "Copie des polices dans l'archive...\n"
+msgstr "Copie des polices d'écriture dans l'archive...\n"
#: ../src/dialog_fonts_collector.cpp:126
#, c-format
@@ -3450,42 +3318,41 @@ msgstr "* Échec copie %s.\n"
#: ../src/dialog_fonts_collector.cpp:204
msgid "Done. All fonts copied."
-msgstr "Terminé. Toutes les polices ont été copiées."
+msgstr "Terminé. Toutes les polices d'écriture ont été copiées."
#: ../src/dialog_fonts_collector.cpp:206
msgid "Done. Some fonts could not be copied."
-msgstr "Terminé. Certaines polices n'ont pas été copiées."
+msgstr "Terminé. Certaines polices d'écriture n'ont pas été copiées."
#: ../src/dialog_fonts_collector.cpp:209
msgid ""
"\n"
-"Over 32 MB of fonts were copied. Some of the fonts may not be loaded by the "
-"player if they are all attached to a Matroska file."
+"Over 32 MB of fonts were copied. Some of the fonts may not be loaded by the player if they "
+"are all attached to a Matroska file."
msgstr ""
"\n"
-"Plus de 32 Mo de polices ont été copiés. Certaines polices ne seront pas "
-"chargées par le lecteur si elles ont toutes été attachées au fichier "
-"Matroska."
+"Plus de 32 Mo de polices d'écriture ont été copiés. Certaines polices ne seront pas chargées "
+"par le lecteur si elles ont toutes été attachées au fichier Matroska."
#: ../src/dialog_fonts_collector.cpp:224
msgid "Check fonts for availability"
-msgstr "Tester la disponibilité des polices"
+msgstr "Tester la disponibilité des polices d'écriture"
#: ../src/dialog_fonts_collector.cpp:225
msgid "Copy fonts to folder"
-msgstr "Copier les polices dans le dossier"
+msgstr "Copier les polices d'écriture dans le dossier"
#: ../src/dialog_fonts_collector.cpp:226
msgid "Copy fonts to subtitle file's folder"
-msgstr "Copier les polices dans le dossier des sous-titres"
+msgstr "Copier les polices d'écriture dans le dossier des sous-titres"
#: ../src/dialog_fonts_collector.cpp:227
msgid "Copy fonts to zipped archive"
-msgstr "Copier les polices dans une archive compressée"
+msgstr "Copier les polices d'écriture dans une archive compressée"
#: ../src/dialog_fonts_collector.cpp:229
msgid "Symlink fonts to folder"
-msgstr "Liaison des polices dans le dossier"
+msgstr "Liaison des polices d'écriture dans le dossier"
#: ../src/dialog_fonts_collector.cpp:232 ../src/dialog_selection.cpp:150
msgid "Action"
@@ -3513,8 +3380,7 @@ msgstr "Destination invalide."
#: ../src/dialog_fonts_collector.cpp:301 ../src/dialog_fonts_collector.cpp:306
#: ../src/dialog_fonts_collector.cpp:311 ../src/preferences.cpp:257
-#: ../src/dialog_kara_timing_copy.cpp:574
-#: ../src/dialog_kara_timing_copy.cpp:576
+#: ../src/dialog_kara_timing_copy.cpp:574 ../src/dialog_kara_timing_copy.cpp:576
#: ../src/dialog_kara_timing_copy.cpp:626
msgid "Error"
msgstr "Erreur"
@@ -3529,11 +3395,11 @@ msgstr "Chemin du fichier .zip invalide."
#: ../src/dialog_fonts_collector.cpp:335
msgid "Select archive file name"
-msgstr "Choix du nom de l'archive"
+msgstr "Choisir le nom de l'archive"
#: ../src/dialog_fonts_collector.cpp:342
msgid "Select folder to save fonts on"
-msgstr "Choix du dossier pour les polices"
+msgstr "Choisir le dossier pour les polices"
#: ../src/dialog_fonts_collector.cpp:356
msgid "N/A"
@@ -3541,18 +3407,18 @@ msgstr "N/D"
#: ../src/dialog_fonts_collector.cpp:364
msgid ""
-"Choose the folder where the fonts will be collected to. It will be created "
-"if it doesn't exist."
+"Choose the folder where the fonts will be collected to. It will be created if it doesn't "
+"exist."
msgstr ""
-"Dossier de destination des polices collectées. S'il est absent, il sera créé."
+"Dossier de destination des polices d'écriture collectées. S'il est absent, il sera créé."
#: ../src/dialog_fonts_collector.cpp:371
msgid ""
-"Enter the name of the destination zip file to collect the fonts to. If a "
-"folder is entered, a default name will be used."
+"Enter the name of the destination zip file to collect the fonts to. If a folder is entered, "
+"a default name will be used."
msgstr ""
-"Nom du fichier zip devant recevoir les polices. Si un dossier est choisi, un "
-"nom par défaut sera utilisé."
+"Nom du fichier zip qui doit recevoir les polices. Si un dossier est choisi, un nom par "
+"défaut sera utilisé."
#: ../src/audio_renderer_waveform.cpp:154
msgid "Maximum"
@@ -3572,7 +3438,7 @@ msgstr "Échi&quier"
#: ../src/dialog_dummy_video.cpp:118
msgid "Video resolution:"
-msgstr "Résolution vidéo :"
+msgstr "Définition vidéo :"
#: ../src/dialog_dummy_video.cpp:120
msgid "Color:"
@@ -3580,7 +3446,7 @@ msgstr "Couleur :"
#: ../src/dialog_dummy_video.cpp:121
msgid "Frame rate (fps):"
-msgstr "Défilement (FPS) :"
+msgstr "Fréquence d'image (IPS) :"
#: ../src/dialog_dummy_video.cpp:122
msgid "Duration (frames):"
@@ -3591,8 +3457,8 @@ msgstr "Durée (images) :"
msgid "Resulting duration: %s"
msgstr "Durée : %s"
-#: ../src/preferences.cpp:61 ../src/preferences.cpp:63
-#: ../src/preferences.cpp:316 ../src/preferences.cpp:341
+#: ../src/preferences.cpp:61 ../src/preferences.cpp:63 ../src/preferences.cpp:316
+#: ../src/preferences.cpp:341
msgid "General"
msgstr "Général"
@@ -3606,9 +3472,7 @@ msgstr "Afficher la barre d'outils principale"
#: ../src/preferences.cpp:66
msgid "Save UI state in subtitles files"
-msgstr ""
-"Enregistrer l'état de l'interface utilisateur dans les fichiers de sous-"
-"titres"
+msgstr "Enregistrer l'état de l'interface utilisateur dans les fichiers de sous-titres"
#: ../src/preferences.cpp:69
msgid "Toolbar Icon Size"
@@ -3656,15 +3520,15 @@ msgstr "Catalogues de style par défaut"
#: ../src/preferences.cpp:89
msgid ""
-"The chosen style catalogs will be loaded when you start a new file or import "
-"files in the various formats.\n"
+"The chosen style catalogs will be loaded when you start a new file or import files in the "
+"various formats.\n"
"\n"
"You can set up style catalogs in the Style Manager."
msgstr ""
-"Les catalogues de style choisis seront chargés lorsque vous démarrez un "
-"nouveau fichier ou importez des fichiers dans différents formats.\n"
+"Les catalogues de style choisis seront chargés en démarrant un nouveau fichier ou en "
+"important des fichiers dans différents formats.\n"
"\n"
-"Vous pouvez configurer des catalogues styles dans le gestionnaire des styles."
+"Configuration possible des catalogues styles dans le gestionnaire des styles."
#: ../src/preferences.cpp:114
msgid "New files"
@@ -3700,7 +3564,7 @@ msgstr "Verrouiller le défilement sur le curseur"
#: ../src/preferences.cpp:130
msgid "Snap markers by default"
-msgstr "Coller aux marquers par défaut"
+msgstr "Coller aux marqueurs par défaut"
#: ../src/preferences.cpp:131
msgid "Auto-focus on mouse over"
@@ -3712,31 +3576,31 @@ msgstr "Jouer l'audio lors de pas vidéo"
#: ../src/preferences.cpp:133
msgid "Left-click-drag moves end marker"
-msgstr "Clic gauche-glissé déplace le marqueur de fin"
+msgstr "Le clic gauche glissé déplace le marqueur de fin"
#: ../src/preferences.cpp:134
msgid "Default timing length (ms)"
-msgstr "Longueur de temps par défaut (ms)"
+msgstr "Durée par défaut (en ms)"
#: ../src/preferences.cpp:135
msgid "Default lead-in length (ms)"
-msgstr "Longueur du blanc de début par défaut (ms)"
+msgstr "Durée du blanc de début par défaut (en ms)"
#: ../src/preferences.cpp:136
msgid "Default lead-out length (ms)"
-msgstr "Longueur du blanc de fin par défaut (ms)"
+msgstr "Durée du blanc de fin par défaut (en ms)"
#: ../src/preferences.cpp:138
msgid "Marker drag-start sensitivity (px)"
-msgstr "Sensibilité du départ du glissé du marqueur (px)"
+msgstr "Sensibilité du départ du glissé du marqueur (en px)"
#: ../src/preferences.cpp:139
msgid "Line boundary thickness (px)"
-msgstr "Épaisseur de la ligne de limite (px)"
+msgstr "Épaisseur de la ligne de limite (en px)"
#: ../src/preferences.cpp:140
msgid "Maximum snap distance (px)"
-msgstr "Distance maximale de contrainte (px)"
+msgstr "Distance maximale de collage (en px)"
#: ../src/preferences.cpp:142
msgid "Don't show"
@@ -3744,11 +3608,11 @@ msgstr "Ne pas afficher"
#: ../src/preferences.cpp:142
msgid "Show previous"
-msgstr "Afficher précédent"
+msgstr "Afficher précédente"
#: ../src/preferences.cpp:142
msgid "Show previous and next"
-msgstr "Afficher précédent et suivant"
+msgstr "Afficher précédente et suivante"
#: ../src/preferences.cpp:142
msgid "Show all"
@@ -3788,7 +3652,7 @@ msgstr "Limites secondes"
#: ../src/preferences.cpp:155
msgid "Waveform Style"
-msgstr "Forme d'onde"
+msgstr "Style forme d'onde"
#: ../src/preferences.cpp:157
msgid "Audio labels"
@@ -3796,16 +3660,15 @@ msgstr "Étiquettes audio"
#: ../src/preferences.cpp:168
msgid "Show keyframes in slider"
-msgstr "Affichier les clés d'image dans la glissière"
+msgstr "Afficher les images clés dans le champ"
#: ../src/preferences.cpp:170
msgid "Only show visual tools when mouse is over video"
-msgstr "N'afficher que les outils vidéo lorsque la souris est sur la vidéo"
+msgstr "N'afficher les outils vidéo que lorsque la souris est sur la vidéo"
#: ../src/preferences.cpp:172
msgid "Seek video to line start on selection change"
-msgstr ""
-"Chercher dans la vidéo la ligne de départ sur modification de sélection"
+msgstr "Sauter au début de ligne quand changement de sélection"
#: ../src/preferences.cpp:174
msgid "Automatically open audio when opening video"
@@ -3817,19 +3680,19 @@ msgstr "Zoom par défaut"
#: ../src/preferences.cpp:181
msgid "Fast jump step in frames"
-msgstr "Pas du saut rapide dans les images"
+msgstr "Pas du saut rapide en images"
#: ../src/preferences.cpp:185
msgid "Screenshot save path"
-msgstr "Chemin d'enregistrement des copies d'écran"
+msgstr "Chemin d'enregistrement des captures d'écran"
#: ../src/preferences.cpp:187
msgid "Script Resolution"
-msgstr "Résolution du script"
+msgstr "Définition vidéo du script"
#: ../src/preferences.cpp:188
msgid "Use resolution of first video opened"
-msgstr "Utiliser la résolution de la première vidéo ouverte"
+msgstr "Utiliser la définition vidéo de la première vidéo ouverte"
#: ../src/preferences.cpp:191
msgid "Default width"
@@ -3849,7 +3712,7 @@ msgstr "Toujours ré-échantillonner"
#: ../src/preferences.cpp:197
msgid "Match video resolution on open"
-msgstr "Coller à la résolution vidéo à l'ouverture"
+msgstr "Faire correspondre à la définition vidéo à l'ouverture"
#: ../src/preferences.cpp:204
msgid "Interface"
@@ -3861,15 +3724,15 @@ msgstr "Boîte d'édition"
#: ../src/preferences.cpp:207
msgid "Enable call tips"
-msgstr "Appel astuces disponible"
+msgstr "Activer les actuces"
#: ../src/preferences.cpp:208
msgid "Overwrite in time boxes"
-msgstr "Écrasement dans cases temps"
+msgstr "Remplacement dans cases temps"
#: ../src/preferences.cpp:210
msgid "Enable syntax highlighting"
-msgstr "Mise en valeur syntaxique disponible"
+msgstr "Activer la surbrillance syntaxique"
#: ../src/preferences.cpp:211
msgid "Dictionaries path"
@@ -3885,15 +3748,15 @@ msgstr "Nombre maximum de caractères par ligne"
#: ../src/preferences.cpp:216
msgid "Characters Per Second Warning Threshold"
-msgstr "Caractères par seconde seuil d'avertissement"
+msgstr "Seuil d'avertissement des caractères par seconde"
#: ../src/preferences.cpp:217
msgid "Characters Per Second Error Threshold"
-msgstr "Caractères par seconde seuil d'erreur"
+msgstr "Seuil d'erreur des caractères par seconde"
#: ../src/preferences.cpp:218
msgid "Ignore whitespace"
-msgstr "Ignorer l'espace blanc"
+msgstr "Ignorer les espaces"
#: ../src/preferences.cpp:219
msgid "Ignore punctuation"
@@ -3905,15 +3768,15 @@ msgstr "Grille"
#: ../src/preferences.cpp:222
msgid "Focus grid on click"
-msgstr "Grille de focus sur clic"
+msgstr "La grille devient la cible de saisie par un clic"
#: ../src/preferences.cpp:223
msgid "Highlight visible subtitles"
-msgstr "Surligner les sous-titres visibles"
+msgstr "Surbriller les sous-titres visibles"
#: ../src/preferences.cpp:224
msgid "Hide overrides symbol"
-msgstr "Masquer les symboles de recouvrement"
+msgstr "Caractère de masquage des balises"
#: ../src/preferences.cpp:232 ../src/dialog_style_editor.cpp:179
msgid "Colors"
@@ -3925,7 +3788,7 @@ msgstr "Affichage audio"
#: ../src/preferences.cpp:241
msgid "Play cursor"
-msgstr "Curseur lecteur"
+msgstr "Curseur du lecteur"
#: ../src/preferences.cpp:242
msgid "Line boundary start"
@@ -3945,7 +3808,7 @@ msgstr "Limite des syllabes"
#: ../src/preferences.cpp:248
msgid "Syntax Highlighting"
-msgstr "Surlignage syntaxique"
+msgstr "Surbrillance syntaxique"
#: ../src/preferences.cpp:249
msgid "Background"
@@ -4001,7 +3864,7 @@ msgstr "Couleurs d'affichage audio"
#: ../src/preferences.cpp:269 ../src/preferences.cpp:370
msgid "Spectrum"
-msgstr "Spectre"
+msgstr "Spectrogramme"
#: ../src/preferences.cpp:270
msgid "Waveform"
@@ -4009,7 +3872,7 @@ msgstr "Forme d'onde"
#: ../src/preferences.cpp:272
msgid "Subtitle Grid"
-msgstr "Grille sous-titres"
+msgstr "Grille des sous-titres"
#: ../src/preferences.cpp:273
msgid "Standard foreground"
@@ -4061,7 +3924,35 @@ msgstr "Lignes"
#: ../src/preferences.cpp:285
msgid "CPS Error"
-msgstr "Erreur de caractères/seconde"
+msgstr "Erreur de CPS"
+
+#: ../src/preferences.cpp:291
+msgid "Visual Typesetting Tools"
+msgstr "Outils des éditions vidéo"
+
+#: ../src/preferences.cpp:292
+msgid "Primary Lines"
+msgstr "Lignes principales"
+
+#: ../src/preferences.cpp:293
+msgid "Secondary Lines"
+msgstr "Lignes secondaires"
+
+#: ../src/preferences.cpp:294
+msgid "Primary Highlight"
+msgstr "Surbrillance principale"
+
+#: ../src/preferences.cpp:295
+msgid "Secondary Highlight"
+msgstr "Surbrillance secondaire"
+
+#: ../src/preferences.cpp:298
+msgid "Visual Typesetting Tools Alpha"
+msgstr "Transparence des outils des éditions vidéo"
+
+#: ../src/preferences.cpp:299
+msgid "Shaded Area"
+msgstr "Zone grisée"
#: ../src/preferences.cpp:294
msgid "Backup"
@@ -4079,14 +3970,13 @@ msgstr "Disponible"
msgid "Interval in seconds"
msgstr "Intervale en secondes"
-#: ../src/preferences.cpp:301 ../src/preferences.cpp:307
-#: ../src/preferences.cpp:368
+#: ../src/preferences.cpp:301 ../src/preferences.cpp:307 ../src/preferences.cpp:368
msgid "Path"
msgstr "Chemin"
#: ../src/preferences.cpp:302
msgid "Autosave after every change"
-msgstr "Enregistrement automatique après chaque modification"
+msgstr "Enregistrement automatique après une modification"
#: ../src/preferences.cpp:304
msgid "Automatic Backup"
@@ -4094,15 +3984,15 @@ msgstr "Sauvegarde automatique"
#: ../src/preferences.cpp:318
msgid "Base path"
-msgstr "Chemin de base"
+msgstr "Chemin"
#: ../src/preferences.cpp:319
msgid "Include path"
-msgstr "Chemin d'inclusions"
+msgstr "Chemin « include »"
#: ../src/preferences.cpp:320
msgid "Auto-load path"
-msgstr "Chemin de chargement auto"
+msgstr "Chemin « auto-load »"
#: ../src/preferences.cpp:322
msgid "0: Fatal"
@@ -4170,11 +4060,11 @@ msgstr "Avancé"
#: ../src/preferences.cpp:343
msgid ""
-"Changing these settings might result in bugs and/or crashes. Do not touch "
-"these unless you know what you're doing."
+"Changing these settings might result in bugs and/or crashes. Do not touch these unless you "
+"know what you're doing."
msgstr ""
-"Modifier ces réglages peut générer des bogues ou des plantages. Ne modifier "
-"que si vous savez ce que vous faites."
+"Modifier ces réglages peut générer des bogues ou des plantages. Ne modifier que si vous "
+"savez ce que vous faites."
#: ../src/preferences.cpp:356 ../src/preferences.cpp:419
msgid "Expert"
@@ -4194,7 +4084,7 @@ msgstr "Cache"
#: ../src/preferences.cpp:365
msgid "None (NOT RECOMMENDED)"
-msgstr "Aucune (DÉCONSEILLÉ)"
+msgstr "Aucun (DÉCONSEILLÉ)"
#: ../src/preferences.cpp:365
msgid "RAM"
@@ -4314,11 +4204,9 @@ msgstr "Raccourcis clavier"
#: ../src/preferences.cpp:672
msgid ""
-"Are you sure that you want to restore the defaults? All your settings will "
-"be overridden."
+"Are you sure that you want to restore the defaults? All your settings will be overridden."
msgstr ""
-"Êtes-vous sûr de vouloir rétablir les réglages par défaut ? Tous vos "
-"réglages seront perdus."
+"Êtes-vous sûr de vouloir rétablir les réglages par défaut ? Tous vos réglages seront perdus."
#: ../src/preferences.cpp:672
msgid "Restore defaults?"
@@ -4394,7 +4282,7 @@ msgstr "Aucune macro d'automatisme chargée"
#: ../src/dialog_about.cpp:46
msgid "Translated into LANGUAGE by PERSON\n"
-msgstr "Traduit en français par Céréales Killer\n"
+msgstr "Traduction originelle en français par Céréales Killer, corrigée par Vardë\n"
#: ../src/dialog_about.cpp:122
msgid ""
@@ -4411,15 +4299,15 @@ msgstr "Compilé par %s le %s."
#: ../src/dialog_kara_timing_copy.cpp:57
msgid "Source: "
-msgstr "Source :"
+msgstr "Source : "
#: ../src/dialog_kara_timing_copy.cpp:58
msgid "Dest: "
-msgstr "Cible :"
+msgstr "Cible : "
#: ../src/dialog_kara_timing_copy.cpp:470
msgid "Kanji timing"
-msgstr "Minutage kanji"
+msgstr "Synchronisation kanji"
#: ../src/dialog_kara_timing_copy.cpp:475 ../src/dialog_paste_over.cpp:73
#: ../src/grid_column.cpp:334 ../src/grid_column.cpp:335
@@ -4453,8 +4341,7 @@ msgid ""
"Enter: Link, accept line when done\n"
"Backspace: Unlink last"
msgstr ""
-"Lorsque le focus est sur la boîte texte cible, utiliser les touches "
-"suivantes :\n"
+"Lorsque la cible de saisie est la boîte texte cible, utiliser les touches suivantes :\n"
"\n"
"Flèche droite : agrandit la longueur de sélection cible\n"
"Flèche gauche : réduit la longueur de sélection cible\n"
@@ -4498,7 +4385,7 @@ msgstr "&Fermer"
#: ../src/dialog_kara_timing_copy.cpp:566
msgid "kanji timing"
-msgstr "minutage kanji"
+msgstr "synchronisation kanji"
#: ../src/dialog_kara_timing_copy.cpp:574
msgid "Select source and destination styles first."
@@ -4532,13 +4419,12 @@ msgstr "Choisir les champs que vous voulez recouvrir :"
msgid "Comment"
msgstr "Commentaire"
-#: ../src/dialog_paste_over.cpp:67 ../src/grid_column.cpp:177
-#: ../src/grid_column.cpp:178
+#: ../src/dialog_paste_over.cpp:67 ../src/grid_column.cpp:177 ../src/grid_column.cpp:178
msgid "Style"
msgstr "Style"
-#: ../src/dialog_paste_over.cpp:68 ../src/subs_edit_box.cpp:140
-#: ../src/grid_column.cpp:205 ../src/grid_column.cpp:206
+#: ../src/dialog_paste_over.cpp:68 ../src/subs_edit_box.cpp:140 ../src/grid_column.cpp:205
+#: ../src/grid_column.cpp:206
msgid "Actor"
msgstr "Acteur"
@@ -4583,11 +4469,11 @@ msgstr ""
#: ../src/main.cpp:302
msgid ""
-"Do you want Aegisub to check for updates whenever it starts? You can still "
-"do it manually via the Help menu."
+"Do you want Aegisub to check for updates whenever it starts? You can still do it manually "
+"via the Help menu."
msgstr ""
-"Voulez-vous qu'Aegisub recherche les mises à jour au démarrage ? Vous "
-"pourrez toujours le faire manuellement par le menu Aide."
+"Voulez-vous qu'Aegisub recherche les mises à jour au démarrage ? Vous pourrez toujours le "
+"faire manuellement par le menu « aide »."
#: ../src/main.cpp:302
msgid "Check for updates?"
@@ -4600,13 +4486,12 @@ msgstr "Erreur de programme"
#: ../src/main.cpp:406
#, c-format
msgid ""
-"An unexpected error has occurred. Please save your work and restart "
-"Aegisub.\n"
+"An unexpected error has occurred. Please save your work and restart Aegisub.\n"
"\n"
"Error Message: %s"
msgstr ""
-"Une erreur inattendue s'est produite. S'il vous plaît, enregistrez votre "
-"travail et redémarrez Aegisub.\n"
+"Une erreur inattendue s'est produite. Veuillez enregistrer votre travail et redémarrez "
+"Aegisub.\n"
"\n"
"Message d'erreur : %s"
@@ -4616,9 +4501,7 @@ msgstr "&Commentaire"
#: ../src/subs_edit_box.cpp:120
msgid "Comment this line out. Commented lines don't show up on screen."
-msgstr ""
-"Commente cette ligne en dehors. Les lignes de commentaires ne sont pas "
-"affichées à l'écran."
+msgstr "Commenter cette ligne. Les lignes de commentaires ne sont pas affichées à l'écran."
#: ../src/subs_edit_box.cpp:127
msgid "Style for this line"
@@ -4629,21 +4512,16 @@ msgid "Edit"
msgstr "Éditer"
#: ../src/subs_edit_box.cpp:140
-msgid ""
-"Actor name for this speech. This is only for reference, and is mainly "
-"useless."
-msgstr ""
-"Nom de l'acteur pour ce dialogue. Cela ne sert que de référence, donc "
-"inutile."
+msgid "Actor name for this speech. This is only for reference, and is mainly useless."
+msgstr "Nom de l'acteur pour ce dialogue. Cela ne sert que de référence, donc inutile."
#: ../src/subs_edit_box.cpp:145
msgid ""
-"Effect for this line. This can be used to store extra information for "
-"karaoke scripts, or for the effects supported by the renderer."
+"Effect for this line. This can be used to store extra information for karaoke scripts, or "
+"for the effects supported by the renderer."
msgstr ""
-"Effet pour cette ligne. Peut être utilisé pour stocker des informations "
-"supplémentaires pour des scripts karaoké our pour des effets supportés par "
-"le codeur."
+"Effet pour cette ligne. Peut être utilisé pour stocker des informations supplémentaires pour "
+"des scripts karaoké ou pour des effets supportés par le moteur de rendu."
#: ../src/subs_edit_box.cpp:151
msgid "Number of characters in the longest line of this subtitle."
@@ -4711,14 +4589,12 @@ msgstr "Afficher l'original"
#: ../src/subs_edit_box.cpp:194
msgid ""
-"Show the contents of the subtitle line when it was first selected above the "
-"edit box. This is sometimes useful when editing subtitles or translating "
-"subtitles into another language."
+"Show the contents of the subtitle line when it was first selected above the edit box. This "
+"is sometimes useful when editing subtitles or translating subtitles into another language."
msgstr ""
-"Afficher le contenu de la ligne de sous-titre quand il a été sélectionné en "
-"premier au-dessus de la zone d'édition. Cela peut être utile lors de "
-"l'édition de sous-titres ou de traduction des sous-titres dans une autre "
-"langue."
+"Afficher le contenu de la ligne de sous-titre lorsqu'elle a été sélectionné pour la première "
+"fois au-dessus de la zone d'édition. Cela peut être utile lors de la modification de sous-"
+"titres ou de traduction des sous-titres dans une autre langue."
#: ../src/subs_edit_box.cpp:441
msgid "modify text"
@@ -4841,7 +4717,7 @@ msgstr[1] "La sélection a été fixée à %u lignes"
#: ../src/dialog_selection.cpp:212
msgid "Selection was set to no lines"
-msgstr "La sélection a été fixée à aucun ligne"
+msgstr "La sélection n'a été fixée à aucune ligne"
#: ../src/dialog_selection.cpp:218
#, c-format
@@ -4872,7 +4748,7 @@ msgstr "Sélection"
#: ../src/font_file_lister.cpp:72
#, c-format
msgid "Style '%s' does not exist\n"
-msgstr "Style '%s' n'existe pas\n"
+msgstr "Le style '%s' n'existe pas\n"
#: ../src/font_file_lister.cpp:138
#, c-format
@@ -4892,7 +4768,7 @@ msgstr "'%s' n'a pas une variante gras.\n"
#: ../src/font_file_lister.cpp:151
#, c-format
msgid "'%s' does not have an italic variant.\n"
-msgstr "'%s' n'a pas une variante italique.\n"
+msgstr "'%s' ne possède pas de variante italique.\n"
#: ../src/font_file_lister.cpp:155
#, c-format
@@ -4918,7 +4794,7 @@ msgstr "Analyse du fichier\n"
#: ../src/font_file_lister.cpp:200
msgid "Searching for font files\n"
-msgstr "Recherche des polices\n"
+msgstr "Recherche de polices d'écriture\n"
#: ../src/font_file_lister.cpp:202
msgid ""
@@ -4942,36 +4818,30 @@ msgstr[1] "%d polices sont introuvables\n"
#: ../src/font_file_lister.cpp:214
#, c-format
msgid "One font was found, but was missing glyphs used in the script.\n"
-msgid_plural ""
-"%d fonts were found, but were missing glyphs used in the script.\n"
-msgstr[0] ""
-"Une police a été trouvée, mais était absente des glyphs utilisés dans le "
-"script.\n"
+msgid_plural "%d fonts were found, but were missing glyphs used in the script.\n"
+msgstr[0] "Une police a été trouvée, mais était absente des glyphes utilisés dans le script.\n"
msgstr[1] ""
-"%d polices ont été trouvées, mais étaient absentes des glyphs utilisés dans "
-"le script.\n"
+"%d polices ont été trouvées, mais étaient absentes des glyphes utilisés dans le script.\n"
#: ../src/export_framerate.cpp:52
msgid "Transform Framerate"
-msgstr "Transformation défilement"
+msgstr "Modifier fréquence d'image"
#: ../src/export_framerate.cpp:53
msgid ""
-"Transform subtitle times, including those in override tags, from an input "
-"framerate to an output framerate.\n"
+"Transform subtitle times, including those in override tags, from an input framerate to an "
+"output framerate.\n"
"\n"
-"This is useful for converting regular time subtitles to VFRaC time subtitles "
-"for hardsubbing.\n"
-"It can also be used to convert subtitles to a different speed video, such as "
-"NTSC to PAL speedup."
+"This is useful for converting regular time subtitles to VFRaC time subtitles for "
+"hardsubbing.\n"
+"It can also be used to convert subtitles to a different speed video, such as NTSC to PAL "
+"speedup."
msgstr ""
-"Transforme les données temporelles, même celles qui sont dans les balises "
-"prioritaires, depuis un taux d'entrée vers un taux de sortie.\n"
+"Transforme les données temporelles, même celles qui sont dans les balises prioritaires, "
+"depuis une fréquence d'image vers une nouvelle fréquence d'image.\n"
"\n"
-"Très pratique pour convertir les temps réguliers en VFRaC pour "
-"l'incrustation.\n"
-"Peut également être utile pour convertir la vitesse des sous-titres, comme "
-"de NTSC vers PAL."
+"Très pratique pour convertir les temps réguliers en VFRaC pour l'incrustation.\n"
+"Peut également être utile pour convertir la vitesse des sous-titres, comme de NTSC vers PAL."
#: ../src/export_framerate.cpp:92
msgid "V&ariable"
@@ -4979,7 +4849,7 @@ msgstr "V&ariable"
#: ../src/export_framerate.cpp:96
msgid "&Constant: "
-msgstr "&Constante :"
+msgstr "&Constante : "
#: ../src/export_framerate.cpp:108
msgid "&Reverse transformation"
@@ -4987,11 +4857,11 @@ msgstr "Transformation inve&rse"
#: ../src/export_framerate.cpp:116
msgid "Input framerate: "
-msgstr "Défilement d'entrée :"
+msgstr "Fréquence d'image d'entrée : "
#: ../src/export_framerate.cpp:118
msgid "Output: "
-msgstr "Sortie :"
+msgstr "Sortie : "
#: ../src/audio_display.cpp:677
#, c-format
@@ -5020,11 +4890,11 @@ msgstr "Ajoute une ligne"
#: ../src/visual_tool_vector_clip.cpp:59
msgid "Bicubic"
-msgstr "Bicubique"
+msgstr "Cubique"
#: ../src/visual_tool_vector_clip.cpp:59
msgid "Appends a bezier bicubic curve"
-msgstr "Ajoute une courbe de Bézier bicubique"
+msgstr "Ajoute une courbe de Bézier cubique"
#: ../src/visual_tool_vector_clip.cpp:61
msgid "Convert"
@@ -5032,7 +4902,7 @@ msgstr "Convertir"
#: ../src/visual_tool_vector_clip.cpp:61
msgid "Converts a segment between line and bicubic"
-msgstr "Convertit un segment ligne en bicubique"
+msgstr "Convertit un segment ligne et cubique"
#: ../src/visual_tool_vector_clip.cpp:62
msgid "Insert"
@@ -5068,11 +4938,11 @@ msgstr "Dessine une forme libre adoucie"
#: ../src/visual_tool_vector_clip.cpp:265
msgid "delete control point"
-msgstr "supprime un point de contrôle."
+msgstr "supprime un point de contrôle"
#: ../src/dialog_automation.cpp:106
msgid "Automation Manager"
-msgstr "Gestion d'automatisme"
+msgstr "Gestionnaire d'automatismes"
#: ../src/dialog_automation.cpp:117
msgid "&Add"
@@ -5324,11 +5194,11 @@ msgstr "Marge Vertical"
#: ../src/grid_column.cpp:266
msgid "CPS"
-msgstr "caractères/seconde"
+msgstr "CPS"
#: ../src/grid_column.cpp:267
msgid "Characters Per Second"
-msgstr "caractères/seconde"
+msgstr "Caractères Par Seconde"
#: ../src/dialog_text_import.cpp:47
msgid "Text import options"
@@ -5356,8 +5226,7 @@ msgstr "Temps et numéro de l'image courante"
#: ../src/video_box.cpp:65
msgid "Time of this frame relative to start and end of current subs"
-msgstr ""
-"Temps de cette image relatif au début et à la fin du sous-titre courant"
+msgstr "Temps de cette image relatif au début et à la fin du sous-titre courant"
#: ../src/ass_style.cpp:193
msgid "ANSI"
@@ -5437,19 +5306,19 @@ msgstr "Choix couleur"
#: ../src/dialog_colorpicker.cpp:556
msgid "Color spectrum"
-msgstr "Couleur du spectre"
+msgstr "Couleur du spectrogramme"
#: ../src/dialog_colorpicker.cpp:560
msgid "RGB/R"
-msgstr "RVB/R"
+msgstr "RGB/R"
#: ../src/dialog_colorpicker.cpp:560
msgid "RGB/G"
-msgstr "RVB/V"
+msgstr "RGB/G"
#: ../src/dialog_colorpicker.cpp:560
msgid "RGB/B"
-msgstr "RVB/B"
+msgstr "RGB/B"
#: ../src/dialog_colorpicker.cpp:560
msgid "HSL/L"
@@ -5461,7 +5330,7 @@ msgstr "HSV/H"
#: ../src/dialog_colorpicker.cpp:567
msgid "RGB color"
-msgstr "Couleur RVB"
+msgstr "Couleur RGB"
#: ../src/dialog_colorpicker.cpp:568
msgid "HSL color"
@@ -5583,7 +5452,7 @@ msgstr "120,000 IPS"
#: ../src/subtitle_format.cpp:124
msgid "Please choose the appropriate FPS for the subtitles:"
-msgstr "Choisir le taux d'image par seconde (IPS) approprié aux sous-titres :"
+msgstr "Choisir la fréquence d'image (IPS) approprié aux sous-titres :"
#: ../src/subtitle_format.cpp:124
msgid "FPS"
@@ -5668,31 +5537,30 @@ msgstr "(Dé)charger les fichiers ?"
#: ../src/project.cpp:255
msgid "The audio file was not found: "
-msgstr "Le fichier audio n'a pas été trouvé :"
+msgstr "Le fichier audio n'a pas été trouvé : "
#: ../src/project.cpp:263
msgid ""
-"None of the available audio providers recognised the selected file as "
-"containing audio data.\n"
+"None of the available audio providers recognised the selected file as containing audio "
+"data.\n"
"\n"
"The following providers were tried:\n"
msgstr ""
-"Aucune source audio valide n'a identifié le fichier sélectionné pouvant "
+"Aucun des fournisseurs audios disponibles n'a identifié le fichier sélectionné pouvant "
"contenir des données audio.\n"
"\n"
-"Les sources suivantes ont été essayés :\n"
+"Les fournisseurs audios suivants ont été essayés :\n"
#: ../src/project.cpp:266
msgid ""
-"None of the available audio providers have a codec available to handle the "
-"selected file.\n"
+"None of the available audio providers have a codec available to handle the selected file.\n"
"\n"
"The following providers were tried:\n"
msgstr ""
-"Aucun des sources audio disponibles ont un codec disponible pour gérer le "
-"fichier sélectionné.\n"
+"Aucun des fournisseurs audios disponibles n'a un codec disponible pour gérer le fichier "
+"sélectionné.\n"
"\n"
-"Les sources suivantes ont été essayés :\n"
+"Les fournisseurs audios suivants ont été essayés :\n"
"\n"
#: ../src/dialog_style_editor.cpp:127
@@ -5701,7 +5569,7 @@ msgstr "Éditeur de style"
#: ../src/dialog_style_editor.cpp:178
msgid "Font"
-msgstr "Police"
+msgstr "Police d'écriture"
#: ../src/dialog_style_editor.cpp:180
msgid "Margins"
@@ -5785,11 +5653,11 @@ msgstr "Distance des bords haut et bas, en pixels"
#: ../src/dialog_style_editor.cpp:225
msgid ""
-"When selected, display an opaque box behind the subtitles instead of an "
-"outline around the text"
+"When selected, display an opaque box behind the subtitles instead of an outline around the "
+"text"
msgstr ""
-"Lorsque sélectionné, affiche une boîte opaque derrière les sous-titres au "
-"lieu du contour du texte"
+"Lorsque sélectionné, affiche une boîte opaque derrière les sous-titres à la place du contour "
+"du texte"
#: ../src/dialog_style_editor.cpp:226
msgid "Outline width, in pixels"
@@ -5812,11 +5680,8 @@ msgid "Angle to rotate in Z axis, in degrees"
msgstr "Angle de rotation de l'axe Z, en degrés"
#: ../src/dialog_style_editor.cpp:231
-msgid ""
-"Encoding, only useful in unicode if the font doesn't have the proper unicode "
-"mapping"
-msgstr ""
-"Encodage, utile en Unicode si la police n'a pas son propre codage Unicode."
+msgid "Encoding, only useful in unicode if the font doesn't have the proper unicode mapping"
+msgstr "Encodage, utile en Unicode si la police n'a pas son propre codage Unicode"
#: ../src/dialog_style_editor.cpp:232
msgid "Character spacing, in pixels"
@@ -5824,7 +5689,7 @@ msgstr "Espacement des caractères, en pixels"
#: ../src/dialog_style_editor.cpp:233
msgid "Alignment in screen, in numpad style"
-msgstr "Alignement à l'écran, en style clavier numérique"
+msgstr "Alignement à l'écran, comme sur un pavé numérique"
#: ../src/dialog_style_editor.cpp:277
msgid "Primary"
@@ -5880,19 +5745,15 @@ msgstr "Couleur de l'arrière-plan de l'aperçu"
#: ../src/dialog_style_editor.cpp:413
msgid "There is already a style with this name. Please choose another name."
-msgstr ""
-"Il y a déjà un style portant ce nom. S'il vous plaît choisissez un autre nom."
+msgstr "Il y a déjà un style portant ce nom. Veuillez choisir un autre nom."
#: ../src/dialog_style_editor.cpp:413
msgid "Style name conflict"
msgstr "Conflit de nom de style"
#: ../src/dialog_style_editor.cpp:425
-msgid ""
-"Do you want to change all instances of this style in the script to this new "
-"name?"
-msgstr ""
-"Voulez-vous remplacer toutes les occurrences de ce style par ce nouveau nom ?"
+msgid "Do you want to change all instances of this style in the script to this new name?"
+msgstr "Voulez-vous remplacer toutes les occurrences de ce style par ce nouveau nom ?"
#: ../src/dialog_style_editor.cpp:426
msgid "Update script?"
@@ -5900,11 +5761,11 @@ msgstr "Mettre à jour le script ?"
#: ../src/dialog_export_ebu3264.cpp:84
msgid ""
-"Time code offset in incorrect format. Ensure it is entered as four groups of "
-"two digits separated by colons."
+"Time code offset in incorrect format. Ensure it is entered as four groups of two digits "
+"separated by colons."
msgstr ""
-"Format de décalage codes temps incorrect. Saisissez-les en quatre groupes de "
-"deux chiffres séparés par des virgules."
+"Format de décalage codes temps incorrect. Saisissez-les en quatre groupes de deux chiffres "
+"séparés par des virgules."
#: ../src/dialog_export_ebu3264.cpp:84
msgid "EBU STL export"
@@ -5916,27 +5777,27 @@ msgstr "Exporter au format EBU STL"
#: ../src/dialog_export_ebu3264.cpp:103
msgid "23.976 fps (non-standard, STL24.01)"
-msgstr "23,976 i/s (non standard, STL24.01)"
+msgstr "23,976 IPS (non standard, STL24.01)"
#: ../src/dialog_export_ebu3264.cpp:104
msgid "24 fps (non-standard, STL24.01)"
-msgstr "24 i/s (non standard, STL24.01)"
+msgstr "24 IPS (non standard, STL24.01)"
#: ../src/dialog_export_ebu3264.cpp:105
msgid "25 fps (STL25.01)"
-msgstr "25 i/s (STL25.01)"
+msgstr "25 IPS (STL25.01)"
#: ../src/dialog_export_ebu3264.cpp:106
msgid "29.97 fps (non-dropframe, STL30.01)"
-msgstr "29,97 i/s (sans dépôt d'image, STL30.01)"
+msgstr "29,97 IPS (sans dépôt d'image, STL30.01)"
#: ../src/dialog_export_ebu3264.cpp:107
msgid "29.97 fps (dropframe, STL30.01)"
-msgstr "29,97 i/s (dépôt d'image, STL30.01)"
+msgstr "29,97 IPS (dépôt d'image, STL30.01)"
#: ../src/dialog_export_ebu3264.cpp:108
msgid "30 fps (STL30.01)"
-msgstr "30 i/s (STL30.01)"
+msgstr "30 IPS (STL30.01)"
#: ../src/dialog_export_ebu3264.cpp:110
msgid "TV standard"
@@ -5976,11 +5837,11 @@ msgstr "Encodage texte"
#: ../src/dialog_export_ebu3264.cpp:126
msgid "Automatically wrap long lines (ASS)"
-msgstr "Retour automatique des lignes longues (ASS)"
+msgstr "Césure automatique des longues lignes (ASS)"
#: ../src/dialog_export_ebu3264.cpp:127
msgid "Automatically wrap long lines (Balanced)"
-msgstr "Césure automatique des lignes longues (équilibré)"
+msgstr "Césure automatique des longues lignes (équilibré)"
#: ../src/dialog_export_ebu3264.cpp:128
msgid "Abort if any lines are too long"
@@ -6055,25 +5916,24 @@ msgstr "Résolution incompatible"
#: ../src/dialog_video_properties.cpp:46
#, c-format
msgid ""
-"The resolution of the loaded video and the resolution specified for the "
-"subtitles don't match.\n"
+"The resolution of the loaded video and the resolution specified for the subtitles don't "
+"match.\n"
"\n"
"Video resolution:\t%d x %d\n"
"Script resolution:\t%d x %d\n"
"\n"
"Change subtitles resolution to match video?"
msgstr ""
-"Les résolutions de la vidéo chargée et des sous-titres ne correspondent "
-"pas.\n"
+"La définition de la vidéo chargée et des sous-titres ne correspondent pas.\n"
"\n"
-"Résolution vidéo : \t%d x %d\n"
-"Résolution script : \t%d x %d\n"
+"Définition vidéo : \t%d x %d\n"
+"Définition script : \t%d x %d\n"
"\n"
-"Changer la résolution des sous-titres pour correspondre à la vidéo ?"
+"Changer la définition des sous-titres pour correspondre à la vidéo ?"
#: ../src/dialog_video_properties.cpp:54 ../src/dialog_video_properties.cpp:63
msgid "Set to video resolution"
-msgstr "Définir la résolution vidéo"
+msgstr "Définir la définition vidéo"
#: ../src/dialog_video_properties.cpp:55
msgid "Resample script (stretch to new aspect ratio)"
@@ -6093,19 +5953,19 @@ msgstr "Rééchantillonner le script"
#: ../src/dialog_video_properties.cpp:163
msgid "change script resolution"
-msgstr "changer la résolution du script"
+msgstr "changer la définition vidéo du script"
#: ../src/dialog_attachments.cpp:68
msgid "Attachment List"
-msgstr "Liste des affectations"
+msgstr "Liste des pièces jointes"
#: ../src/dialog_attachments.cpp:76
msgid "Attach &Font"
-msgstr "&Polices liées"
+msgstr "&Ajouter une police"
#: ../src/dialog_attachments.cpp:77
msgid "Attach &Graphics"
-msgstr "&Images liées"
+msgstr "&Ajouter une image"
#: ../src/dialog_attachments.cpp:78
msgid "E&xtract"
@@ -6113,7 +5973,7 @@ msgstr "E&xtraire"
#: ../src/dialog_attachments.cpp:110
msgid "Attachment name"
-msgstr "Nom de l'affectation"
+msgstr "Nom de la pièce jointe"
#: ../src/dialog_attachments.cpp:111
msgid "Size"
@@ -6129,11 +5989,11 @@ msgstr "Choix du fichier à joindre"
#: ../src/dialog_attachments.cpp:142
msgid "attach font file"
-msgstr "Ajout des polices"
+msgstr "ajout de police d'écriture"
#: ../src/dialog_attachments.cpp:152
msgid "attach graphics file"
-msgstr "Ajout des images"
+msgstr "ajout d'image"
#: ../src/dialog_attachments.cpp:164
msgid "Select the path to save the files to:"
@@ -6145,7 +6005,7 @@ msgstr "Choix du chemin d'enregistrement du fichier :"
#: ../src/dialog_attachments.cpp:189
msgid "remove attachment"
-msgstr "Enlever les ajouts"
+msgstr "enlever fichier joint"
#: ../src/dialog_translation.cpp:77
msgid "Original"
@@ -6157,7 +6017,7 @@ msgstr "Traduction"
#: ../src/dialog_translation.cpp:115
msgid "Insert original"
-msgstr "Insère original"
+msgstr "Insérer original"
#: ../src/dialog_translation.cpp:118
msgid "Delete line"
@@ -6174,7 +6034,7 @@ msgstr "Plus de ligne à traduire."
#: ../src/dialog_translation.cpp:186 ../src/dialog_translation.cpp:236
#, c-format
msgid "Current line: %d/%d"
-msgstr "Ligne courante : %d/%d"
+msgstr "Ligne active : %d/%d"
#: ../src/dialog_translation.cpp:273
msgid "translation assistant"
@@ -6182,7 +6042,7 @@ msgstr "assistant à la traduction"
#: ../src/visual_tool.cpp:122
msgid "visual typesetting"
-msgstr "typographie visuelle"
+msgstr "édition vidéo"
#: ../src/dialog_resample.cpp:119
msgid "&Symmetrical"
@@ -6210,7 +6070,7 @@ msgstr "Manuel"
#: ../src/dialog_resample.cpp:147
msgid "Aspect Ratio Handling"
-msgstr "Changer la résolution vidéo"
+msgstr "Gestion du rapport de forme"
#: ../src/dialog_resample.cpp:162
msgid "Margin offset"
@@ -6222,15 +6082,15 @@ msgstr "x"
#: ../src/dialog_resample.cpp:172 ../src/dialog_resample.cpp:186
msgid "YCbCr Matrix:"
-msgstr "YCbCr Matrix :"
+msgstr "Matrice YCbCr :"
#: ../src/dialog_resample.cpp:175
msgid "Source Resolution"
-msgstr "Résolution de la source"
+msgstr "Définition vidéo source"
#: ../src/dialog_resample.cpp:189
msgid "Destination Resolution"
-msgstr "Résolution de la destination"
+msgstr "Définition vidéo destination"
#: ../src/dialog_version_check.cpp:94
msgid "Version Checker"
@@ -6275,21 +6135,18 @@ msgid ""
"There was an error checking for updates to Aegisub:\n"
"%s\n"
"\n"
-"If other applications can access the Internet fine, this is probably a "
-"temporary server problem on our end."
+"If other applications can access the Internet fine, this is probably a temporary server "
+"problem on our end."
msgstr ""
-"Une erreur s'est produite lors de la vérification des mises à jour "
-"d'Aegisub :\n"
+"Une erreur s'est produite lors de la vérification des mises à jour d'Aegisub :\n"
"%s\n"
"\n"
-"Si d'autres applications accèdent à internet sans problème, c'est "
-"probablement dû à un problème ponctuel de notre serveur."
+"Si d'autres applications accèdent à internet sans problème, c'est probablement dû à un "
+"problème ponctuel de notre serveur."
#: ../src/dialog_version_check.cpp:379
msgid "An unknown error occurred while checking for updates to Aegisub."
-msgstr ""
-"Une erreur inconnue s'est produite lors de la vérification des mises à jour "
-"d'Aegisub."
+msgstr "Une erreur inconnue s'est produite lors de la vérification des mises à jour d'Aegisub."
#: default_menu.json:0
msgid "&Insert (before)"
@@ -6385,7 +6242,7 @@ msgstr "Réglage du &zoom"
#: default_menu.json:0
msgid "Override &AR"
-msgstr "Outrep&asser les proportions"
+msgstr "Outrep&asser le rapport de forme"
#: default_menu.json:0
msgid "&Export As..."
@@ -6401,9 +6258,7 @@ msgstr "Ajouter flou de contour"
#: ../automation/autoload/macro-1-edgeblur.lua:7
msgid "A demo macro showing how to do simple line modification in Automation 4"
-msgstr ""
-"Macro de démo montrant comment faire une modification simple de ligne en "
-"Automation 4"
+msgstr "Macro de démo montrant comment faire une modification simple de ligne en Automation 4"
#: ../automation/autoload/macro-1-edgeblur.lua:21
msgid "Adds \\be1 tags to all selected lines"
@@ -6416,31 +6271,26 @@ msgstr "Introduction karaoké automatique"
#: ../automation/autoload/karaoke-auto-leadin.lua:33
msgid "Join up the ends of selected lines and add \\k tags to shift karaoke"
msgstr ""
-"Joindre la fin des lignes sélectionnées et ajouter des balises \\k pour "
-"décalage en karaoké"
+"Joindre la fin des lignes sélectionnées et ajouter des balises \\k pour décalage en karaoké"
#: ../automation/autoload/cleantags-autoload.lua:31
msgid "Clean Tags"
msgstr "Nettoyage des balises"
#: ../automation/autoload/cleantags-autoload.lua:32
-msgid ""
-"Clean subtitle lines by re-arranging ASS tags and override blocks within the "
-"lines"
+msgid "Clean subtitle lines by re-arranging ASS tags and override blocks within the lines"
msgstr ""
-"Nettoyage des lignes de sous-titres en réarrangeant les balises ASS et en "
-"écrasant les blocs dans les lignes"
+"Nettoyage des lignes de sous-titres en réarrangeant les balises ASS et en écrasant les blocs "
+"dans les lignes"
#: ../automation/autoload/kara-templater.lua:36
msgid "Karaoke Templater"
msgstr "Création modèle karaoké"
#: ../automation/autoload/kara-templater.lua:37
-msgid ""
-"Macro and export filter to apply karaoke effects using the template language"
+msgid "Macro and export filter to apply karaoke effects using the template language"
msgstr ""
-"Macro et filtres d'export pour appliquer les effets karaoké en utilisant le "
-"modèle de langue"
+"Macro et filtres d'export pour appliquer les effets karaoké en utilisant le modèle de langue"
#: ../automation/autoload/kara-templater.lua:858
msgid "Apply karaoke template"
@@ -6474,11 +6324,11 @@ msgstr "Enlève toutes les balises de recouvrement des lignes sélectionnées"
#: ../automation/autoload/strip-tags.lua:28
msgid "strip tags"
-msgstr "bande de balises"
+msgstr "Retirer balises"
#: ../automation/autoload/macro-2-mkfullwitdh.lua:77
msgid "Make fullwidth"
-msgstr "Remplacer par de larges lettres"
+msgstr "Remplacer par du pleine chasse"
#: ../automation/autoload/macro-2-mkfullwitdh.lua:80
msgid "Convert Latin letters to SJIS fullwidth letters"
@@ -6494,11 +6344,11 @@ msgstr "Éditeur de sous-titres"
#: aegisub.desktop:6
msgid "Create and edit subtitles for film and videos."
-msgstr "Crée et édite des sous-titres pour films et vidéos."
+msgstr "Crée et modifie des sous-titres pour contenu vidéo."
#: packages/win_installer/fragment_strings.iss:1
msgid "Installing runtime libraries..."
-msgstr "Installation de bibliothèques d'exécution..."
+msgstr "Installation des bibliothèques d'exécution..."
#: packages/win_installer/fragment_strings.iss:1
msgid "Create a start menu icon"
@@ -6514,1409 +6364,12 @@ msgstr "Contrôle de la mise à jour :"
#: packages/win_installer/fragment_strings.iss:1
msgid ""
-"This will install Aegisub {#BUILD_GIT_VERSION_STRING} on your computer.%n"
-"%nAegisub is covered by the GNU General Public License version 2. This means "
-"you may use the application for any purpose without charge, but that no "
-"warranties of any kind are given either.%n%nSee the Aegisub website for "
-"information on obtaining the source code."
+"This will install Aegisub {#BUILD_GIT_VERSION_STRING} on your computer.%n%nAegisub is "
+"covered by the GNU General Public License version 2. This means you may use the application "
+"for any purpose without charge, but that no warranties of any kind are given either.%n%nSee "
+"the Aegisub website for information on obtaining the source code."
msgstr ""
-"Ceci installera Aegisub {#BUILD_GIT_VERSION_STRING} sur votre computer.%n"
-"%nAegisub est couvert par la GNU General Public License version 2. Cela "
-"signifie que vous pouvez utiliser l'application pour n'importe quel but, "
-"sans frais, mais qu'aucune garantie d'aucune sorte ne soit donnée.%n%nAller "
-"le site de Aegisub pour savoir comment obtenir le code source."
-
-#~ msgid ""
-#~ "An Automation script failed to load. File name: '%s', error reported: %s"
-#~ msgstr ""
-#~ "Échec du chargement d'un script d'automatisme. Fichier : « %s », erreur "
-#~ "retournée : %s"
-
-#~ msgid "%d frames (%s)"
-#~ msgstr "%d images (%s)"
-
-#~ msgid "Are you sure you want to delete these %d styles?"
-#~ msgstr "Êtes-vous sûr de vouloir supprimer ces %d styles ?"
-
-#~ msgid "Style name collision."
-#~ msgstr "Conflit de nom de style."
-
-#~ msgid "Closes the currently open timecodes file"
-#~ msgstr "Ferme le fichier de codes temporels actif"
-
-#~ msgid "Opens a VFR timecodes v1 or v2 file"
-#~ msgstr "Ouvre un fichier de codages temporels VFR v1 ou v2"
-
-#~ msgid "Saves a VFR timecodes v2 file"
-#~ msgstr "Enregistre un fichier de codes temporels VFR v2"
-
-#~ msgid "Forces video to 2.35 aspect ratio"
-#~ msgstr "Forcer la vidéo aux proportions 2.35"
-
-#~ msgid "Forces video to a custom aspect ratio"
-#~ msgstr "Forcer la vidéo aux proportions personnalisées"
-
-#~ msgid "Leave video on original aspect ratio"
-#~ msgstr "Laisser la vidéo à ses proportions d'origine"
-
-#~ msgid "Forces video to 4:3 aspect ratio"
-#~ msgstr "Forcer la vidéo aux proportions 4:3"
-
-#~ msgid "Forces video to 16:9 aspect ratio"
-#~ msgstr "Forcer la vidéo aux proportions 16:9"
-
-#~ msgid "Closes the currently open video file"
-#~ msgstr "Ferme le fichier vidéo actuellement ouvert"
-
-#~ msgid "Detach video, displaying it in a separate Window"
-#~ msgstr "Détache la vidéo pour l'afficher dans une fenêtre séparée"
-
-#~ msgid "Shows video details"
-#~ msgstr "Affiche les détails de la vidéo"
-
-#~ msgid "Toggle focus between the video slider and other things"
-#~ msgstr "Basculer le focus entre le curseur vidéo et les autres éléments"
-
-#~ msgid "Seek to the next subtitle boundary"
-#~ msgstr "Chercher la limite de sous-titre suivante"
-
-#~ msgid "Seek to the previous subtitle boundary"
-#~ msgstr "Chercher la limite de sous-titre précédente"
-
-#~ msgid "Jumps the video to the end frame of current subtitle"
-#~ msgstr "Met la vidéo à l'image de fin du sous-titre actif"
-
-#~ msgid "Jumps the video to the start frame of current subtitle"
-#~ msgstr "Met la vidéo à l'image de début du sous-titre actif"
-
-#~ msgid "Opens a video file"
-#~ msgstr "Ouvre un fichier vidéo"
-
-#~ msgid "Opens a video clip with solid color"
-#~ msgstr "Ouvre un clip vidéo formé d'une couleur pleine"
-
-#~ msgid "Copy subtitles"
-#~ msgstr "Copier des sous-titres"
-
-#~ msgid "D&uplicate and Shift by 1 Frame"
-#~ msgstr "D&upliquer et décaler d'une image"
-
-#~ msgid "Duplicate and Shift by 1 Frame"
-#~ msgstr "Dupliquer et décaler d'une image"
-
-#~ msgid "Duplicate lines and shift by one frame"
-#~ msgstr "Duplique les lignes et les décale d'une image"
-
-#~ msgid "Joins selected lines in a single one, as karaoke"
-#~ msgstr "Joint les lignes sélectionnées en une seul, en karaoké"
-
-#~ msgid "Joins selected lines in a single one, concatenating text together"
-#~ msgstr ""
-#~ "Joint les lignes sélectionnées en une seule, chaînant le texte ensemble"
-
-#~ msgid ""
-#~ "Joins selected lines in a single one, keeping text of first and "
-#~ "discarding remaining"
-#~ msgstr ""
-#~ "Joint les lignes sélectionnées en une seule, ne gardant que le texte de "
-#~ "la première"
-
-#~ msgid "Recombine subtitles when they have been split and merged"
-#~ msgstr "Recombine des sous-titres lorsqu'ils ont été divisés et fusionnés"
-
-#~ msgid "Uses karaoke timing to split line into multiple smaller lines"
-#~ msgstr ""
-#~ "Utilise le minutage karaoké pour diviser la ligne en plusieurs petites "
-#~ "lignes"
-
-#~ msgid "Redoes last action"
-#~ msgstr "Rétablit la dernière action"
-
-#~ msgid "Undoes last action"
-#~ msgstr "Annule la dernière action"
-
-#~ msgid "Open the attachment list"
-#~ msgstr "Ouvrir la liste des affectations"
-
-#~ msgid "Find words in subtitles"
-#~ msgstr "Chercher des mots dans les sous-titres"
-
-#~ msgid "Find next match of last word"
-#~ msgstr "Cherche l'occurrence suivant du dernier mot"
-
-#~ msgid "Inserts a line after current"
-#~ msgstr "Insère une ligne après l'active"
-
-#~ msgid "Inserts a line after current, starting at video time"
-#~ msgstr ""
-#~ "Insère une ligne après celle active démarrant au point de synchronisation"
-
-#~ msgid "Inserts a line before current"
-#~ msgstr "Insère une ligne avant celle active"
-
-#~ msgid "Inserts a line before current, starting at video time"
-#~ msgstr ""
-#~ "Insère une ligne avant celle active démarrant au point de synchronisation"
-
-#~ msgid "Opens a subtitles file"
-#~ msgstr "Ouvre un fichier de sous-titres"
-
-#~ msgid "Opens a subtitles file with a specific charset"
-#~ msgstr ""
-#~ "Ouvre un fichier de sous-titres avec un jeu de caractères spécifique"
-
-#~ msgid "Opens the subtitles from the current video file"
-#~ msgstr "Ouvre les sous-titres du fichier vidéo courant"
-
-#~ msgid "Saves subtitles"
-#~ msgstr "Enregistre les sous-titres"
-
-#~ msgid "Saves subtitles with another name"
-#~ msgstr "Enregistre les sous-titres sous un autre nom"
-
-#~ msgid "Selects all dialogue lines"
-#~ msgstr "Sélectionne toutes les lignes de dialogue"
-
-#~ msgid "Selects all lines that are currently visible on video frame"
-#~ msgstr ""
-#~ "Sélectione toutes les lignes qui sont visibiles dans l'image vidéo active"
-
-#~ msgid "Launch ASSDraw3 tool for vector drawing"
-#~ msgstr "Lance l'outil « ASSDraw3 » pour le dessin vectoriel"
-
-#~ msgid "Saves a copy of subtitles with processing applied to it"
-#~ msgstr ""
-#~ "Enregistre une copie des sous-titres après leur avoir appliqué une action"
-
-#~ msgid "Selects lines based on defined criteria"
-#~ msgstr "Sélectionne des lignes sur des critères définis"
-
-#~ msgid "Changes resolution and modifies subtitles to conform to change"
-#~ msgstr "Change la résolution et modifie les sous-titres pour les adapter"
-
-#~ msgid "Open styles manager"
-#~ msgstr "Ouvre le gestionnaire de styles"
-
-#~ msgid "Open Kanji timer"
-#~ msgstr "Ouvre le chrono kanji"
-
-#~ msgid ""
-#~ "Runs a post-processor for timing to deal with lead-ins, lead-outs, scene "
-#~ "timing and etc"
-#~ msgstr ""
-#~ "Lance un postprocesseur pour ajuster les blancs de début et de fin, la "
-#~ "synchro, etc."
-
-#~ msgid "Display audio and subtitles only"
-#~ msgstr "N'affiche que l'audio et les sous-titres"
-
-#~ msgid "Display audio, video and subtitles"
-#~ msgstr "Affiche l'audio, la vidéo et les sous-titres"
-
-#~ msgid "Display subtitles only"
-#~ msgstr "N'affiche que les sous-titres"
-
-#~ msgid "Display video and subtitles only"
-#~ msgstr "N'affiche que la vidéo et les sous-titres"
-
-#~ msgid "Swaps the two selected lines"
-#~ msgstr "Intervertit les deux lignes sélectionnées"
-
-#~ msgid "Changes times of subs so end times begin on next's start time"
-#~ msgstr ""
-#~ "Change les temps du sous-titre pour qu'il finisse sur le temps de début "
-#~ "suivant"
-
-#~ msgid "Changes times of subs so start times begin on previous's end time"
-#~ msgstr ""
-#~ "Change les temps du sous-titre pour qu'il commence sur le temps de fin "
-#~ "précédent"
-
-#~ msgid "Closes the currently open audio file"
-#~ msgstr "Ferme le fichier audio actif"
-
-#~ msgid "Opens an audio file"
-#~ msgstr "Ouvre un fichier audio"
-
-#~ msgid "Opens the audio from the current video file"
-#~ msgstr "Ouvre la bande son du fichier vidéo actif"
-
-#~ msgid "Create an audio clip of the selected line"
-#~ msgstr "Crée un clip audio de la ligne sélectionnée"
-
-#~ msgid "Play selection or stop playback if it's already playing"
-#~ msgstr ""
-#~ "Jouer la sélection ou arrêter la reproduction si elle est déjà en cours"
-
-#~ msgid "Auto scrolls audio display to selected line"
-#~ msgstr "Affichage auto de l'audio de la ligne sélectionnée"
-
-#~ msgid "Auto goes to next line on commit"
-#~ msgstr "Aller à la ligne suivante à la validation"
-
-#~ msgid "All Fil&es"
-#~ msgstr "Tous fichi&ers"
-
-#~ msgid "Resource files"
-#~ msgstr "Fichiers de ressource"
-
-#~ msgid "Closes the currently open keyframes list"
-#~ msgstr "Ferme la liste des images clés actuelle"
-
-#~ msgid "Opens a keyframe list file"
-#~ msgstr "Ouvre un fichier de liste de clés d'image"
-
-#~ msgid "Saves the current keyframe list"
-#~ msgstr "Enregistre la liste de images clés active"
-
-#~ msgid "Reverse"
-#~ msgstr "Inverser"
-
-#~ msgid "Collision: "
-#~ msgstr "Collision :"
-
-#~ msgid "Aegisub was built without any font file listers enabled"
-#~ msgstr "Aegisub a été compilé sans aucun listeur de polices activé"
-
-#~ msgid "Resulting duration: %d:%02d:%02d.%03d"
-#~ msgstr "Durée résultante : %d:%02d:%02d.%03d"
-
-#~ msgid "Invalid fps or length value"
-#~ msgstr "Valeur FPS ou longueur invalides"
-
-#~ msgid "Allow grid to take focus"
-#~ msgstr "Permettre la grille de prendre focus"
-
-#~ msgid "File name"
-#~ msgstr "Nom du fichier"
-
-#~ msgid "Left Margin (0 = default)"
-#~ msgstr "Marge de gauche (0 = par défaut)"
-
-#~ msgid "Right Margin (0 = default)"
-#~ msgstr "Marge de droite (0 = par défaut)"
-
-#~ msgid "Vertical Margin (0 = default)"
-#~ msgstr "Marge verticale (0 = par défaut)"
-
-#~ msgid "Bold"
-#~ msgstr "Gras"
-
-#~ msgid "Italics"
-#~ msgstr "Italique"
-
-#~ msgid "Underline"
-#~ msgstr "Souligné"
-
-#~ msgid "Strikeout"
-#~ msgstr "Barré"
-
-#~ msgid "Primary color"
-#~ msgstr "Couleur primaire"
-
-#~ msgid "Secondary color"
-#~ msgstr "Couleur secondaire"
-
-#~ msgid "Outline color"
-#~ msgstr "Couleur du contour"
-
-#~ msgid "Shadow color"
-#~ msgstr "Couleur de l'ombre"
-
-#~ msgid "Commits the text (Enter)"
-#~ msgstr "Accepte le texte (Entrée)"
-
-#~ msgid "MarginL change"
-#~ msgstr "modification margeG"
-
-#~ msgid "MarginR change"
-#~ msgstr "modification margeD"
-
-#~ msgid "MarginV change"
-#~ msgstr "modification margeV"
-
-#~ msgid "Selection was set to %u lines"
-#~ msgstr "La sélection a été fixée à %u lignes"
-
-#~ msgid "%u lines were added to selection"
-#~ msgstr "%u lignes ont été ajoutées à la sélection"
-
-#~ msgid "%u lines were removed from selection"
-#~ msgstr "%u lignes ont été retirées de la sélection"
-
-#~ msgid "%d fonts could not be found.\n"
-#~ msgstr "%d polices sont absentes.\n"
-
-#~ msgid "%d fonts were found, but were missing glyphs used in the script.\n"
-#~ msgstr ""
-#~ "%d polices trouvées mais des glyphes utilisés dans le script sont "
-#~ "absents.\n"
-
-#~ msgid ""
-#~ "Collecting font data from system. This might take a while, depending on "
-#~ "the number of fonts installed. Results are cached and subsequent "
-#~ "executions will be faster...\n"
-#~ msgstr ""
-#~ "Collecte des données de polices du système. Cela peut durer un moment "
-#~ "selon le nombre de polices installées. Les résultats seront mis en cache "
-#~ "et les prochaines exécutions seront plus rapides...\n"
-
-#~ msgid "Done collecting font data.\n"
-#~ msgstr "Collecte des données de polices achevée.\n"
-
-#~ msgid " Subtitle format handler: %s"
-#~ msgstr " Format sous-titre : %s"
-
-#~ msgid "Update &Video"
-#~ msgstr "Mise à jour &vidéo"
-
-#~ msgid "All rows"
-#~ msgstr "Toutes les colonnes"
-
-#~ msgid "Selected rows"
-#~ msgstr "Colonnes sélectionnées"
-
-#~ msgid "%i matches were replaced."
-#~ msgstr "%i correspondances remplacées."
-
-#~ msgid "delete"
-#~ msgstr "supprime"
-
-#~ msgid "Associate file types"
-#~ msgstr "Types de fichiers associés"
-
-#~ msgid ""
-#~ "Aegisub can take over the following file types.\n"
-#~ "\n"
-#~ "If you want Aegisub to no longer be associated with a file type, you must "
-#~ "tell another program to take over the file type."
-#~ msgstr ""
-#~ "Aegisub peut gérer les types de fichiers suivants.\n"
-#~ "\n"
-#~ "Si vous ne désirez plus associer un type de fichier à Aegisub, vous devez "
-#~ "demander à un autre logiciel de gérer le type de fichier."
-
-#~ msgid ""
-#~ "Aegisub is already associated with all supported file types.\n"
-#~ "\n"
-#~ "If you want Aegisub to no longer be associated with a file type, you must "
-#~ "tell another program to take over the file type."
-#~ msgstr ""
-#~ "Aegisub est déjà associé à tous les types de fichiers supportés.\n"
-#~ "\n"
-#~ "Si vous ne désirez plus associer un type de fichier à Aegisub, vous devez "
-#~ "demander à un autre logiciel de gérer le type de fichier."
-
-#~ msgid "Make Aegisub default editor for subtitles?"
-#~ msgstr "Faire d'Aegisub votre éditeur de sous-titres par défaut ?"
-
-#~ msgid ""
-#~ "Aegisub is not your default editor for subtitle files. Do you want to "
-#~ "make Aegisub your default editor for subtitle files?"
-#~ msgstr ""
-#~ "Aegisub n'est pas votre éditeur de sous-titres par défaut. Voulez-vous "
-#~ "faire d'Aegisub votre éditeur de sous-titres par défaut ?"
-
-#~ msgid "Always perform this check when Aegisub starts"
-#~ msgstr "Toujours faire cette vérification au démarrage d'Aegisub"
-
-#~ msgid "&Yes"
-#~ msgstr "&Oui"
-
-#~ msgid "&No"
-#~ msgstr "&Non"
-
-#~ msgid ""
-#~ "You already have timecodes loaded. Would you like to replace them with "
-#~ "timecodes from the video file?"
-#~ msgstr ""
-#~ "Vous avez déjà chargé des codes temps. Les remplacer par les codes temps "
-#~ "du fichier ?"
-
-#~ msgid "Replace timecodes?"
-#~ msgstr "Remplacer les codes de temps ?"
-
-#~ msgid "Set opacity, from 0 (opaque) to 255 (transparent)"
-#~ msgstr "Réglage d'opacité, de 0 (opaque) à 255 (transparent)"
-
-#~ msgid "No subtitle providers available. Cannot preview subs."
-#~ msgstr "Aucune source de sous-titres. Aperçu impossible."
-
-#~ msgid "Load audio"
-#~ msgstr "Charger audio"
-
-#~ msgid "Reading into RAM"
-#~ msgstr "Lecture en RAM"
-
-#~ msgid "Reading to Hard Disk cache"
-#~ msgstr "Lecture en cache du disque dur"
-
-#~ msgid "&Change aspect ratio"
-#~ msgstr "&Changer les proportions"
-
-#~ msgid "Select overlaps"
-#~ msgstr "Sélectionner les recouvrements"
-
-#~ msgid "Select lines which begin while another non-comment line is active"
-#~ msgstr ""
-#~ "Sélection des lignes qui commencent alors qu'une autre ligne non "
-#~ "commentée est active"
-
-#~ msgid "Clean Script Info"
-#~ msgstr "Nettoyer les infos script"
-
-#~ msgid ""
-#~ "Removes all but the absolutely required fields from the Script Info "
-#~ "section. You might want to run this on files that you plan to distribute "
-#~ "in original form."
-#~ msgstr ""
-#~ "Enlève tout sauf les champs indispensables de la section Info du script. "
-#~ "Vous devriez effectuer ce nettoyage sur les fichiers que vous voulez "
-#~ "distribuer en tant qu'originaux."
-
-#~ msgid "Seek bar"
-#~ msgstr "Barre de recherche"
-
-#~ msgid "Play selection (%KEY%/%KEY%)"
-#~ msgstr "Lire la sélection (%KEY%/%KEY%)"
-
-#~ msgid "Play current line (%KEY%)"
-#~ msgstr "Lire la ligne courante (%KEY%)"
-
-#~ msgid "Stop (%KEY%)"
-#~ msgstr "Arrêter (%KEY%)"
-
-#~ msgid "Add lead in (%KEY%)"
-#~ msgstr "Ajoute un blanc de début (%KEY%)"
-
-#~ msgid "Add lead out (%KEY%)"
-#~ msgstr "Ajoute un blanc de fin (%KEY%)"
-
-#~ msgid "Commit changes (%KEY%/%KEY%)"
-#~ msgstr "Valide les modifications (%KEY%/%KEY%)"
-
-#~ msgid "Enable Medusa-Style Timing Shortcuts"
-#~ msgstr "Activer les raccourcis temporels style Medusa"
-
-#~ msgid "Karaoke"
-#~ msgstr "Karaoké"
-
-#~ msgid "Accept Split"
-#~ msgstr "Accepter la division"
-
-#~ msgid "Commit splits and leave split-mode"
-#~ msgstr "Valider les divisions et sortir du mode division"
-
-#~ msgid "Join"
-#~ msgstr "Joindre"
-
-#~ msgid "Join selected syllables"
-#~ msgstr "Joindre les syllabes sélectionnées"
-
-#~ msgid "Split"
-#~ msgstr "Diviser"
-
-#~ msgid "Enter split-mode"
-#~ msgstr "Entrer en mode division"
-
-#~ msgid ""
-#~ "Do you want to commit your changes? If you choose No, they will be "
-#~ "discarded."
-#~ msgstr ""
-#~ "Voulez-vous valider vos modifications ? Si vous refusez, elles seront "
-#~ "rejetées."
-
-#~ msgid "Commit?"
-#~ msgstr "Valider ?"
-
-#~ msgid "Script completed"
-#~ msgstr "Script achevé"
-
-#~ msgid "Not enough parameters for Aegisub::text_extents()"
-#~ msgstr "Pas assez de paramètres pour Aegisub:text_extents()"
-
-#~ msgid ""
-#~ "Tried to register PerlConsole, but support for it was disabled in this "
-#~ "version."
-#~ msgstr ""
-#~ "Tentative d'enregistrer PerlConsole, mais le support en a été désactivé "
-#~ "dans cette version."
-
-#~ msgid "Fatal error: "
-#~ msgstr "Erreur critique :"
-
-#~ msgid "Error: "
-#~ msgstr "Erreur :"
-
-#~ msgid "Warning: "
-#~ msgstr "Avertissement :"
-
-#~ msgid "Hint: "
-#~ msgstr "Conseil :"
-
-#~ msgid "Debug: "
-#~ msgstr "Débogage :"
-
-#~ msgid "Trace: "
-#~ msgstr "Trace :"
-
-#~ msgid "Executing "
-#~ msgstr "Exécution"
-
-#~ msgid "Perl script"
-#~ msgstr "Script Perl"
-
-#~ msgid ""
-#~ "Unable to add the automation include path(s) to @INC: the script's code "
-#~ "may not compile or execute properly."
-#~ msgstr ""
-#~ "Impossible d'ajouter l'automatisme ni le(s) chemin(s) à @INC : le code du "
-#~ "script ne peut se compiler ou s'exécuter correctement."
-
-#~ msgid "Reloading %s because the file on disk (%s) changed."
-#~ msgstr "Rechargement de %s car le fichier sur le disque (%s) a été modifié."
-
-#~ msgid "Saving changes"
-#~ msgstr "Enregistrement des modifications"
-
-#~ msgid "Colour Picker"
-#~ msgstr "Pipette :"
-
-#~ msgid "Select all"
-#~ msgstr "Sélectionner tout"
-
-#~ msgid "Attach fonts to current subtitles"
-#~ msgstr "Joindre les polices aux sous-titres actuels"
-
-#~ msgid "DEBUG: Verify all fonts in system"
-#~ msgstr "Débug : vérifier les polices du système"
-
-#~ msgid "Zip Archives (*.zip)|*.zip"
-#~ msgstr "Archives Zip (*.zip)|*.zip"
-
-#~ msgid "Invalid destination directory."
-#~ msgstr "Répertoire de destination invalide."
-
-#~ msgid "Scanning file for fonts..."
-#~ msgstr "Recherche des polices du fichier... "
-
-#~ msgid "Checking fonts...\n"
-#~ msgstr "Analyse des polices...\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "Finished writing to %s.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Fin d'écriture vers %s.\n"
-
-#~ msgid "font attachment"
-#~ msgstr "affectation des polices"
-
-#~ msgid "Not found.\n"
-#~ msgstr "Introuvable.\n"
-
-#~ msgid "Found.\n"
-#~ msgstr "Trouvé.\n"
-
-#~ msgid "\"%s\" found on style \"%s\".\n"
-#~ msgstr "« %s » trouvée dans la feuille de style « %s ».\n"
-
-#~ msgid "\"%s\" found on dialogue line \"%d\".\n"
-#~ msgstr "« %s » trouvée sur ligne dialogue « %d ».\n"
-
-#~ msgid "\"%s\" found.\n"
-#~ msgstr "« %s » trouvée.\n"
-
-#~ msgid "Source Style"
-#~ msgstr "Style source"
-
-#~ msgid "Dest Style"
-#~ msgstr "Style cible"
-
-#~ msgid "Startup"
-#~ msgstr "Démarrage"
-
-#~ msgid "Check File Associations on Start"
-#~ msgstr "Vérifier l'association des fichiers au démarrage"
-
-#~ msgid "Limits for levels and recent files"
-#~ msgstr "Limite des niveaux et des fichiers récents"
-
-#~ msgid "Maximum recent timecode files"
-#~ msgstr "Maximum des fichiers chrono récents"
-
-#~ msgid "Maximum recent keyframe files"
-#~ msgstr "Maximum de fichiers images clés récents"
-
-#~ msgid "Maximum recent subtitle files"
-#~ msgstr "Maximum de fichiers sous-titres récents"
-
-#~ msgid "Maximum recent video files"
-#~ msgstr "Maximum de fichiers vidéo récents"
-
-#~ msgid "Maximum recent audio files"
-#~ msgstr "Maximum de fichiers audio récents"
-
-#~ msgid "Maximum recent find strings"
-#~ msgstr "Maximum de chaînes trouvées récentes"
-
-#~ msgid "Maximum recent replace strings"
-#~ msgstr "Maximum de chaînes remplacées récentes"
-
-#~ msgid "Auto-save"
-#~ msgstr "Enregistrement automatique"
-
-#~ msgid "File paths"
-#~ msgstr "Chemins d'accès aux fichiers"
-
-#~ msgid "Miscellanea"
-#~ msgstr "Divers"
-
-#~ msgid "seconds."
-#~ msgstr "secondes."
-
-#~ msgid "Auto-save path:"
-#~ msgstr "Chemin d'accès enregistrement auto :"
-
-#~ msgid "Auto-backup path:"
-#~ msgstr "Chemin d'accès sauvegarde auto :"
-
-#~ msgid "Crash recovery path:"
-#~ msgstr "Chemin d'accès restauration crash :"
-
-#~ msgid "Link commiting of times"
-#~ msgstr "Lier validation des temps"
-
-#~ msgid "Path to dictionary files:"
-#~ msgstr "Chemin des fichiers dictionnaires :"
-
-#~ msgid "Modified Background"
-#~ msgstr "Arrière-plan modifié"
-
-#~ msgid "Syntax highlighter - "
-#~ msgstr "Mise en valeur syntaxique -"
-
-#~ msgid "Font: "
-#~ msgstr "Police :"
-
-#~ msgid "Highlight subtitles that are currently visible in video"
-#~ msgstr "Mise en valeur des sous-titres visibles dans la vidéo"
-
-#~ msgid "Header"
-#~ msgstr "Têtière"
-
-#~ msgid "Replace override tags with: "
-#~ msgstr "Remplacer les balises superposées par :"
-
-#~ msgid "Advanced - EXPERT USERS ONLY"
-#~ msgstr "Avancé - RÉSERVÉ AUX EXPERTS"
-
-#~ msgid "Grab times from line upon selection"
-#~ msgstr "Coller les temps de la ligne au-dessus de la sélection"
-
-#~ msgid "Snap to adjacent lines"
-#~ msgstr "Coller aux lignes adjacentes"
-
-#~ msgid "Draw secondary lines"
-#~ msgstr "Dessiner les lignes secondaires"
-
-#~ msgid "Draw selection background"
-#~ msgstr "Dessiner l'arrière-plan de sélection"
-
-#~ msgid "Draw timeline"
-#~ msgstr "Dessiner la ligne de temps"
-
-#~ msgid "Draw keyframes"
-#~ msgstr "Dessiner les images clés"
-
-#~ msgid "Selection background - modified"
-#~ msgstr "Arrière-plan sélection - modifié"
-
-#~ msgid "Waveform - selection"
-#~ msgstr "Forme d'onde - sélection"
-
-#~ msgid "Waveform - modified"
-#~ msgstr "Forme d'onde - modifiée"
-
-#~ msgid "Waveform - inactive"
-#~ msgstr "Forme d'onde - inactive"
-
-#~ msgid "Syllable text"
-#~ msgstr "Texte syllabe"
-
-#~ msgid "HD cache name"
-#~ msgstr "Nom cache DD"
-
-#~ msgid "Spectrum cutoff"
-#~ msgstr "Limite spectrale"
-
-#~ msgid "Function"
-#~ msgstr "Fonction"
-
-#~ msgid "Key"
-#~ msgstr "Touche"
-
-#~ msgid "Set Hotkey..."
-#~ msgstr "Régler les raccourcis clavier..."
-
-#~ msgid "Clear Hotkey"
-#~ msgstr "Supprimer les raccourcis clavier"
-
-#~ msgid "Default All"
-#~ msgstr "Tout par défaut"
-
-#~ msgid "File save/load"
-#~ msgstr "Enregistrement/chargement fichier"
-
-#~ msgid "Aegisub must restart for the changes to take effect. Restart now?"
-#~ msgstr ""
-#~ "Aegisub doit être relancé pour appliquer les modifications. Redémarrage ?"
-
-#~ msgid "Restart Aegisub"
-#~ msgstr "Redémarrage d'Aegisub"
-
-#~ msgid "Press Key"
-#~ msgstr "Presser une touche"
-
-#~ msgid "Press key to bind to \"%s\" or Esc to cancel."
-#~ msgstr "Presser une touche pour lier à « %s » ou Echap. pour annuler."
-
-#~ msgid ""
-#~ "The hotkey %s is already mapped to %s. If you proceed, that hotkey will "
-#~ "be cleared. Proceed?"
-#~ msgstr ""
-#~ "Le raccourci %s est déjà lié à %s. Si vous continuez, ce raccourci sera "
-#~ "supprimé. Continuer ?"
-
-#~ msgid "Hotkey conflict"
-#~ msgstr "Conflit de raccourcis"
-
-#~ msgid "Margin Top"
-#~ msgstr "Marge de tête"
-
-#~ msgid "Margin Bottom"
-#~ msgstr "Marge de pied"
-
-#~ msgid "All"
-#~ msgstr "Tout"
-
-#~ msgid ""
-#~ "Invalid resolution: destination resolution cannot be 0 on either "
-#~ "dimension."
-#~ msgstr ""
-#~ "Résolution invalide : la résolution sible ne peut être 0 dans aucun sens."
-
-#~ msgid "History"
-#~ msgstr "Historique"
-
-#~ msgid "s, "
-#~ msgstr "s,"
-
-#~ msgid "e, "
-#~ msgstr "e,"
-
-#~ msgid "original"
-#~ msgstr "original"
-
-#~ msgid "replace with"
-#~ msgstr "remplacer par"
-
-#~ msgid "Replace All"
-#~ msgstr "Tout remplacer"
-
-#~ msgid ""
-#~ "You have chosen to use the \"Comic Sans\" font. As the programmer and a "
-#~ "typesetter,\n"
-#~ "I must urge you to reconsider. Comic Sans is the most abused font in the "
-#~ "history\n"
-#~ "of computing, so please avoid using it unless it's REALLY suitable. "
-#~ "Thanks."
-#~ msgstr ""
-#~ "Vous avez choisi d'utiliser la police « Comic Sans ». En tant que "
-#~ "programmeur et typographe,\n"
-#~ "je vous conseille de reconsidérer votre choix, Comic Sans étant la police "
-#~ "la plus abusée\n"
-#~ "de l'histoire informatique, donc à proscrire sauf si elle est VRAIMENT "
-#~ "adaptée. Merci."
-
-#~ msgid "Warning"
-#~ msgstr "Avertissement"
-
-#~ msgid "Copy of "
-#~ msgstr "Copie de "
-
-#~ msgid "Are you sure you want to delete these "
-#~ msgstr "Êtes-vous sûr de vouloir supprimer ces "
-
-#~ msgid " styles?"
-#~ msgstr " styles ?"
-
-#~ msgid "Styling assistant"
-#~ msgstr "Assistant des styles"
-
-#~ msgid "Enable preview (slow)"
-#~ msgstr "Afficher l'aperçu (lent)"
-
-#~ msgid "style changes"
-#~ msgstr "modifications du style"
-
-#~ msgid "Threshold:"
-#~ msgstr "Seuil :"
-
-#~ msgid ""
-#~ "Aegisub can export subtitles to many different formats, character "
-#~ "encodings, and even compensate Variable Frame Rate so you can hardsub "
-#~ "them - it's all in the Export option in File menu."
-#~ msgstr ""
-#~ "Aegisub peut exporter les sous-titres dans de nombreux formats, encodages "
-#~ "de caractères et même compenser le Variable Frame Rate (taux de "
-#~ "défilement variable) afin de pouvoir les encoder. Tout est dans Options "
-#~ "d'exportation dans le menu Fichier."
-
-#~ msgid ""
-#~ "You can easily translate subtitle files using the translation assistant."
-#~ msgstr ""
-#~ "Vous pouvez facilement traduire des fichiers de sous-titres en utilisant "
-#~ "l'assistant de traduction."
-
-#~ msgid ""
-#~ "Styles can be stored in different storages, so that you can keep your "
-#~ "projects organized."
-#~ msgstr ""
-#~ "Les styles peuvent être stockés dans différents stocks, vous pouvez ainsi "
-#~ "garder vos projets organisés."
-
-#~ msgid ""
-#~ "Use keyboard shortcuts! They make your life easier, for example, Ctrl"
-#~ "+Enter updates changes on current line without going to next. Check the "
-#~ "manual for a complete list."
-#~ msgstr ""
-#~ "Utilisez les raccourcis clavier ! Ils vous faciliteront la vie, par "
-#~ "exemple, Ctrl+Entrée met à jour les modifications de la ligne active sans "
-#~ "passer à la suivante. Consultez le manuel pour ue liste complète."
-
-#~ msgid ""
-#~ "There is no reason to use the SSA format (as opposed to ASS). ASS is very "
-#~ "similar, but adds some important functionality. Most importantly, "
-#~ "however, is that only ASS supports certain override tags (such as \\pos "
-#~ "and \\t). Those only work on SSA files because VSFilter/Textsub is "
-#~ "merciful."
-#~ msgstr ""
-#~ "ll n'y a pas de raison d'utiliser le format SSA (opposé au ASS). ASS est "
-#~ "très similaire, mais il ajoute quelques fonctions importantes. Le plus "
-#~ "important, cependant, est que seul ASS supporte certaines balises de "
-#~ "placement (comme \\pos et \\t). Elles ne fonctionnent qu'avec des "
-#~ "fichiers SSA car VSFilter/Textsub est clément."
-
-#~ msgid "DON'T PANIC!"
-#~ msgstr "NE PANIQUEZ PAS !"
-
-#~ msgid ""
-#~ "Aegisub has several features to make sure you will never lose your work. "
-#~ "It will periodically save your subtitles to autosave folder, and will "
-#~ "create a copy of subs whenever you open them, to autoback folder. Also, "
-#~ "if it crashes, it will attempt to save a restore file."
-#~ msgstr ""
-#~ "Aegisub a plusieurs fonctions pour vous assurer de ne jamais perdre votre "
-#~ "travail. Il enregistrera périodiquement vos sous-titres dans son dossier "
-#~ "d'enregistrement automatique et créera une copie des sous-titres si vous "
-#~ "deviez les ouvrir, dans son dossier de sauvegarde. De même, s'il plante, "
-#~ "il essaiera d'enregistrer un fichier de restauration."
-
-#~ msgid ""
-#~ "The styling assistant is a practical way to set styles to each line, when "
-#~ "each actor has a different style assigned to it."
-#~ msgstr ""
-#~ "L'assistant de styles est une façon pratique d'appliquer des styles à "
-#~ "chaque ligne, lorsque chaque acteur a un style différent."
-
-#~ msgid ""
-#~ "The fonts collector is one of the most useful features, which resumes the "
-#~ "boring task of hunting down fonts into a matter of a few clicks."
-#~ msgstr ""
-#~ "Le collecteur de polices est l'une des fonctions les plus utiles "
-#~ "puisqu'elle réduit la fastidieuse tâche de la collecte des polices à "
-#~ "quelques clics."
-
-#~ msgid ""
-#~ "When you are done with your subtitles and ready to distribute them, "
-#~ "remember: say no to MP4, OGM or AVI. Matroska is your friend."
-#~ msgstr ""
-#~ "Lorsque vos sous-titres sont terminés et prêts à être diffusés, rappelez-"
-#~ "vous : dites non à MP4, OGM ou AVI. Mastroska est votre ami."
-
-#~ msgid ""
-#~ "Much like anything loaded via DirectShow, certain files may have a "
-#~ "strange structure (such as h.264 into AVI or XviD will null frames) which "
-#~ "may cause unreliable seeking (that is, video frames might be off by one "
-#~ "frame). This is not an Aegisub bug - you may consider reencoding those "
-#~ "videos before working with them."
-#~ msgstr ""
-#~ "Comme tout ce qui est chargé par DirectShow, certains fichiers peuvent "
-#~ "avoir une structure bizarre (comme du h.264 en AVI ou du XviD avec null "
-#~ "frames) causant un affichage inexploitable (tel les images vidéo décalées "
-#~ "d'une image). Ce n'est pas un bogue d'Aegisub - il vous faudra réencoder "
-#~ "ces fichiers avant de travailler avec."
-
-#~ msgid ""
-#~ "Try the spectrum mode for the audio display, it can make it much easier "
-#~ "to spot where the important points in the audio are."
-#~ msgstr ""
-#~ "Essayez le mode spectral pour l'affichage audio, il peut vous aider à "
-#~ "visualiser plus facilement les points importants de la bande son."
-
-#~ msgid ""
-#~ "If you decode your audio to a PCM WAV file before loading it in Aegisub, "
-#~ "you don't have to wait for it to be decoded before you can use it."
-#~ msgstr ""
-#~ "Si vous décodez votre bande son en un fichier PCM WA avant de le charger "
-#~ "dans Aegisub, vous n'aurez pas à attendre après son décodage pour "
-#~ "l'utiliser."
-
-#~ msgid ""
-#~ "Having video open is often more a nuisance than a help when timing "
-#~ "subtitles. Timing with only audio open is often much easier. You can "
-#~ "always adjust the subtitles to match the video later on."
-#~ msgstr ""
-#~ "Avoir la vidéo ouverte est plus une source d'ennuis qu'une aide à la "
-#~ "synchronisation des sous-titres. La synchro avec la seule bande son est "
-#~ "plus facile. Vous pourrez toujours ajuster les sous-titres à la vidéo "
-#~ "plus tard."
-
-#~ msgid ""
-#~ "If the audio doesn't seem to work properly during video playback, try "
-#~ "loading audio separately. Just select Audio->Load from video, that "
-#~ "usually makes the audio much more reliable."
-#~ msgstr ""
-#~ "Si la bande son ne semble pas fonctionner correctement durant la lecture "
-#~ "vidéo, essayez de charger le son séparément. Allez sur Audio -> Charger "
-#~ "depuis la vidéo, ce qui rendra la bande son plus fiable."
-
-#~ msgid "If anything goes wrong, blame movax."
-#~ msgstr "Si quelque chose va mal, blâmez-en movax."
-
-#~ msgid "Current line: ?"
-#~ msgstr "Ligne active : ?"
-
-#~ msgid "From Video"
-#~ msgstr "Depuis la vidéo"
-
-#~ msgid "video"
-#~ msgstr "vidéo"
-
-#~ msgid "audio"
-#~ msgstr "audio"
-
-#~ msgid "Save"
-#~ msgstr "Enregistrer"
-
-#~ msgid "Save subtitles"
-#~ msgstr "Enregistrer les sous-titres"
-
-#~ msgid "Jump To..."
-#~ msgstr "Aller à..."
-
-#~ msgid "Jump video to time/frame"
-#~ msgstr "Avancer au temps/image de la vidéo"
-
-#~ msgid "Jump video to end"
-#~ msgstr "Aller à la fin de la vidéo"
-
-#~ msgid "Snap start to video"
-#~ msgstr "Coller au départ de la vidéo"
-
-#~ msgid "Snap subtitles to scene"
-#~ msgstr "Coller les sous-titres à la scène"
-
-#~ msgid "Snap selected subtitles so they match current scene start/end"
-#~ msgstr ""
-#~ "Colle les sous-titres sélectionnés aux début et fin de la scène active"
-
-#~ msgid "Shift subtitles to frame"
-#~ msgstr "Décalage de sous-titres à l'image"
-
-#~ msgid "Shift selected subtitles so first selected starts at this frame"
-#~ msgstr ""
-#~ "Décale les sous-titres sélectionnés au premier départ sélectionné de "
-#~ "l'image"
-
-#~ msgid "Open Styles Manager"
-#~ msgstr "Ouvrir le gestionnaire de styles"
-
-#~ msgid "Open Attachment List"
-#~ msgstr "Ouvrir la liste des accessoires"
-
-#~ msgid "Open Fonts Collector"
-#~ msgstr "Ouvrir le collecteur de polices"
-
-#~ msgid "Open Shift Times Dialogue"
-#~ msgstr "Ouvrir le dialogue de décalage temporel"
-
-#~ msgid "Open Styling Assistant"
-#~ msgstr "Ouvrir l'assistant de styles"
-
-#~ msgid "Open Translation Assistant"
-#~ msgstr "Ouvrir l'assistant à la traduction"
-
-#~ msgid "Resample"
-#~ msgstr "Rééchantillonnage"
-
-#~ msgid "Open Timing Post-processor dialog"
-#~ msgstr "Ouvrir le dialogue du postprocesseur temporel"
-
-#~ msgid "Open Kanji Timer dialog"
-#~ msgstr "Ouvrir le dialogue du chrono kanji"
-
-#~ msgid "Open Spell checker"
-#~ msgstr "Ouvrir le correcteur orthographique"
-
-#~ msgid "Sort by Time"
-#~ msgstr "Tri par temps"
-
-#~ msgid "&Automation"
-#~ msgstr "&Automatisme"
-
-#~ msgid "&Associations..."
-#~ msgstr "&Associations..."
-
-#~ msgid "Associate file types with Aegisub"
-#~ msgstr "Associe les types de fichiers à Aegisub"
-
-#~ msgid "Open log window"
-#~ msgstr "Ouvre la fenêtre d'historique"
-
-#~ msgid "Resource files distributed with Aegisub"
-#~ msgstr "Fichiers de ressources distribués avec Aegisub"
-
-#~ msgid "Save before continuing?"
-#~ msgstr "Enregistrer avant de continuer ?"
-
-#~ msgid "You have timecodes loaded currently. Would you like to unload them?"
-#~ msgstr ""
-#~ "Vous avez des codes temporels actuellement chargés. Voulez-vous les "
-#~ "décharger ?"
-
-#~ msgid "Unload timecodes?"
-#~ msgstr "Décharger les codes temps ?"
-
-#~ msgid "All files"
-#~ msgstr "Tous fichiers"
-
-#~ msgid "Open audio file"
-#~ msgstr "Ouvrir un fichier audio"
-
-#~ msgid "All Supported Types"
-#~ msgstr "Tout type supporté"
-
-#~ msgid "Save timecodes file"
-#~ msgstr "Enregistrer le fichier de codes temps"
-
-#~ msgid "show full tags."
-#~ msgstr "affichage complet des balises."
-
-#~ msgid "Help"
-#~ msgstr "Aide"
-
-#~ msgid "Cut"
-#~ msgstr "Couper"
-
-#~ msgid "Paste"
-#~ msgstr "Coller"
-
-#~ msgid "Paste Over"
-#~ msgstr "Coller sur"
-
-#~ msgid "Video Jump"
-#~ msgstr "Saut vidéo"
-
-#~ msgid "Set Start to Video"
-#~ msgstr "Régler sur début de la vidéo"
-
-#~ msgid "Set End to Video"
-#~ msgstr "Régler sur fin de la vidéo"
-
-#~ msgid "Shift by Current Time"
-#~ msgstr "Décaler du temps actif"
-
-#~ msgid "Zoom 50%"
-#~ msgstr "Zoom 50 %"
-
-#~ msgid "Video global prev frame"
-#~ msgstr "Image précédente vidéo globale"
-
-#~ msgid "Video global focus seek"
-#~ msgstr "Recherche point sur vidéo globale"
-
-#~ msgid "Video global play"
-#~ msgstr "Lecture vidéo globale"
-
-#~ msgid "Grid global prev line"
-#~ msgstr "Ligne précédente sur grille globale"
-
-#~ msgid "Grid global next line"
-#~ msgstr "Ligne suivante sur grille globale"
-
-#~ msgid "Save Subtitles Alt"
-#~ msgstr "Enregistrement alteratif des sous-titres"
-
-#~ msgid "Video global zoom in"
-#~ msgstr "Zoom avant vidéo globale"
-
-#~ msgid "Video global zoom out"
-#~ msgstr "Zoom arrière vidéo globale"
-
-#~ msgid "Grid move row down"
-#~ msgstr "Grille déplacer rangée vers le bas"
-
-#~ msgid "Grid move row up"
-#~ msgstr "Grille déplacer rangée vers le haut"
-
-#~ msgid "Grid delete rows"
-#~ msgstr "Grille suppression rangées"
-
-#~ msgid "Grid duplicate rows"
-#~ msgstr "Grille duplication rangées"
-
-#~ msgid "Grid duplicate and shift one frame"
-#~ msgstr "Grille dupliquer et décaler une image"
-
-#~ msgid "Audio Commit Alt"
-#~ msgstr "Audio Validation alt."
-
-#~ msgid "Audio Commit"
-#~ msgstr "Audio validation"
-
-#~ msgid "Audio Commit (Stay)"
-#~ msgstr "Audio validation (rester)"
-
-#~ msgid "Audio Prev Line"
-#~ msgstr "Audio ligne précédente"
-
-#~ msgid "Audio Prev Line Alt"
-#~ msgstr "Audio Ligne précédente alt."
-
-#~ msgid "Audio Next Line"
-#~ msgstr "Audio Ligne suivante"
-
-#~ msgid "Audio Next Line Alt"
-#~ msgstr "Audio Ligne suivante alt."
-
-#~ msgid "Audio Play"
-#~ msgstr "Audio Lecture"
-
-#~ msgid "Audio Play Alt"
-#~ msgstr "Audio Lecture alt."
-
-#~ msgid "Audio Play or Stop"
-#~ msgstr "Audio Lecture ou arrêt"
-
-#~ msgid "Audio Stop"
-#~ msgstr "Audio Arrêt"
-
-#~ msgid "Audio Karaoke Increase Len"
-#~ msgstr "Audio Augmenter longueur karaoké"
-
-#~ msgid "Audio Karaoke Decrease Len"
-#~ msgstr "Audio Réduire longueur karaoké"
-
-#~ msgid "Audio Karaoke Increase Len Shift"
-#~ msgstr "Audio Augmenter décalage longeur karaoké"
-
-#~ msgid "Audio Karaoke Decrease Len Shift"
-#~ msgstr "Audio Réduire décalage longueur karaoké"
-
-#~ msgid "Audio Play First 500ms"
-#~ msgstr "Audio Lire premiers 500 ms"
-
-#~ msgid "Audio Play Last 500ms"
-#~ msgstr "Audio Lire derniers 500 ms"
-
-#~ msgid "Audio Play 500ms Before"
-#~ msgstr "Audio Lire 500 ms avant"
-
-#~ msgid "Audio Play 500ms After"
-#~ msgstr "Audio Lire 500 ms après"
-
-#~ msgid "Audio Play To End"
-#~ msgstr "Audio Lire jusqu'à la fin"
-
-#~ msgid "Audio Play Original Line"
-#~ msgstr "Audio Lire ligne d'origine"
-
-#~ msgid "Audio Add Lead In"
-#~ msgstr "Audio Ajout blanc de début"
-
-#~ msgid "Audio Add Lead Out"
-#~ msgstr "Audio Ajout blanc de fin"
-
-#~ msgid "Audio Medusa Toggle"
-#~ msgstr "Audio Medusa Bascule"
-
-#~ msgid "Audio Medusa Play"
-#~ msgstr "Audio Medusa Lecture"
-
-#~ msgid "Audio Medusa Stop"
-#~ msgstr "Audio Medusa Arrêt"
-
-#~ msgid "Audio Medusa Shift Start Back"
-#~ msgstr "Audio Medusa Décale le début en arrière"
-
-#~ msgid "Audio Medusa Shift Start Forward"
-#~ msgstr "Audio Medusa Décale le début en avant"
-
-#~ msgid "Audio Medusa Shift End Back"
-#~ msgstr "Audio Medusa Décale la fin en arrière"
-
-#~ msgid "Audio Medusa Shift End Forward"
-#~ msgstr "Audio Medusa Décale la fin en avant"
-
-#~ msgid "Audio Medusa Play Before"
-#~ msgstr "Audio Medusa Lecture avant"
-
-#~ msgid "Audio Medusa Play After"
-#~ msgstr "Audio Medusa Lecture après"
-
-#~ msgid "Audio Medusa Next"
-#~ msgstr "Audio Medusa Suivant"
-
-#~ msgid "Audio Medusa Previous"
-#~ msgstr "Audio Medusa Précédet"
-
-#~ msgid "Audio Medusa Enter"
-#~ msgstr "Audio Medusa Entrée"
-
-#~ msgid "Translation Assistant Play Audio"
-#~ msgstr "Assistant de traduction Lecture audio"
-
-#~ msgid "Translation Assistant Play Video"
-#~ msgstr "Assistant de traduction Lecture vidéo"
-
-#~ msgid "Translation Assistant Next"
-#~ msgstr "Assistant de traduction Suivant"
-
-#~ msgid "Translation Assistant Prev"
-#~ msgstr "Assistant de traduction Précédent"
-
-#~ msgid "Translation Assistant Accept"
-#~ msgstr "Assistant de traduction Accepter"
-
-#~ msgid "Translation Assistant Preview"
-#~ msgstr "Assistant de traduction Aperçu"
-
-#~ msgid "Translation Assistant Insert Original"
-#~ msgstr "Assistant de traduction Original"
-
-#~ msgid "Styling Assistant Play Audio"
-#~ msgstr "Assistant de styles Lecture audio"
-
-#~ msgid "Styling Assistant Play Video"
-#~ msgstr "Assistant de styles Lecture vidéo"
-
-#~ msgid "Styling Assistant Next"
-#~ msgstr "Assistant de styles Suivant"
-
-#~ msgid "Styling Assistant Prev"
-#~ msgstr "Assistant de styles Précédent"
-
-#~ msgid "Styling Assistant Accept"
-#~ msgstr "Assistant de styles Accepter"
-
-#~ msgid "Styling Assistant Preview"
-#~ msgstr "Assistant de styles Aperçu"
-
-#~ msgid "Load keyframes"
-#~ msgstr "Charger des codes temps"
-
-#~ msgid "Reading keyframes from video"
-#~ msgstr "Lecture des codes temps de la vidéo"
-
-#~ msgid "Reading keyframe and timecode data from Matroska file."
-#~ msgstr ""
-#~ "Lecture des données d'images clés et de codes temps d'u fichier Matroska."
-
-#~ msgid ""
-#~ "Configuration file is either invalid or corrupt. The current file will be "
-#~ "backed up and replaced with a default file."
-#~ msgstr ""
-#~ "Le fichier de configuration est invalide ou corrompu. Le fichier actif "
-#~ "sera sauvegardé et remplacé par un fichier de base."
-
-#~ msgid "Font Face Name"
-#~ msgstr "Nom de la police"
-
-#~ msgid "Commits the text (Enter). Hold Ctrl to stay in line (%KEY%)."
-#~ msgstr ""
-#~ "Accepte le texte (Entrée). Maintenez Control pour rester sur la ligne "
-#~ "(%KEY%)."
-
-#~ msgid "Time"
-#~ msgstr "Temps"
-
-#~ msgid "editing"
-#~ msgstr "édition"
-
-#~ msgid "&Duplicate"
-#~ msgstr "&Dupliquer"
-
-#~ msgid "&Duplicate and shift by 1 frame"
-#~ msgstr "&Dupliquer et décaler d'une image"
-
-#~ msgid "Split (by karaoke)"
-#~ msgstr "Diviser (en karaoké)"
-
-#~ msgid "&Swap"
-#~ msgstr "Inver&ser"
-
-#~ msgid ""
-#~ "Joins selected lines in a single one, making each line into a karaoke "
-#~ "syllable"
-#~ msgstr ""
-#~ "Joint les lignes sélectionnées en une seule, découpant chaque ligne en "
-#~ "syllabes karaoké"
-
-#~ msgid "C&ut"
-#~ msgstr "Co&uper"
-
-#~ msgid "Cuts selected lines to clipboard"
-#~ msgstr "Coupe les lignes sélectionnées et les mets dans le presse-papier"
-
-#~ msgid "Paste lines from clipboard"
-#~ msgstr "Colle les lignes depuis le presse-papier"
-
-#~ msgid "The starting point is beyond the length of the audio loaded."
-#~ msgstr "Le point de départ est au-delà de la longueur de l'audio chargée."
-
-#~ msgid "There is no audio to save."
-#~ msgstr "Aucune audio à enregistrer."
-
-#~ msgid "Couldn't allocate memory."
-#~ msgstr "Impossible d'allouer la mémoire."
-
-#~ msgid "load"
-#~ msgstr "charge"
-
-#~ msgid "Please wait, caching fonts..."
-#~ msgstr "Patientez, mise des polices en cache..."
-
-#~ msgid "Exporting PRS"
-#~ msgstr "Exportation PRS"
-
-#~ msgid "No timecodes to average"
-#~ msgstr "Aucun code temps pour faire la moyenne "
-
-#~ msgid "Realtime"
-#~ msgstr "Temps réel"
-
-#~ msgid "Toggle realtime display of changes."
-#~ msgstr "Basculer l'affichage des modifications en temps réel."
-
-#~ msgid "Unknown"
-#~ msgstr "Inconnu"
-
-#~ msgid ""
-#~ "You already have timecodes loaded. Replace them with the timecodes from "
-#~ "the Matroska file?"
-#~ msgstr ""
-#~ "Vous avez déjà chargé des codes temps. Les remplacer par les codes temps "
-#~ "du fichier Matroska ?"
+"Ceci installera Aegisub {#BUILD_GIT_VERSION_STRING} sur votre ordinateur.%n%nAegisub est "
+"couvert par la GNU General Public License version 2. Cela signifie que vous pouvez utiliser "
+"l'application pour n'importe quel but, sans frais, mais qu'aucune garantie n'est donnée.%n"
+"%Veuillez visiter le site d'Aegisub pour l'obtention du code source."
diff --git a/po/make_pot.sh b/po/make_pot.sh
index e05252f28..eccf9a9b1 100755
--- a/po/make_pot.sh
+++ b/po/make_pot.sh
@@ -39,13 +39,19 @@ find ../automation -name *.lua \
| sed 's/\\/\\\\\\\\/g' \
| maybe_append
-for i in 'Name' 'GenericName' 'Comment'
+for i in 'Name' 'GenericName' 'Comment' 'Keywords'
do
grep ^_$i -n ../packages/desktop/aegisub.desktop.template.in \
| sed 's/\([0-9]\+\):[^=]\+=\(.*\)$/aegisub.desktop|\1|"\2"/' \
| maybe_append
done
+if which xmlstarlet >/dev/null 2>&1 && which jq >/dev/null 2>&1; then
+ for i in 'name' 'summary' 'p' 'li' 'caption'; do
+ xmlstarlet sel -t -v "//_$i" ../packages/desktop/aegisub.appdata.xml.template.in | jq -R .
+ done | nl -v0 -w1 -s'|' | sed -re 's/^/aegisub.appdata.xml|/' | maybe_append
+fi
+
grep '^_[A-Za-z0-9]*=.*' ../packages/win_installer/fragment_strings.iss.in | while read line
do
echo "$line" \
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 000000000..5aae381d1
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,4 @@
+i18n = import('i18n')
+# This is currently busted on OSX
+i18n.gettext('aegisub',
+ install_dir: localedir)
diff --git a/po/pl.po b/po/pl.po
index c3829aafb..61d1b74fb 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -3,22 +3,20 @@ msgstr ""
"Project-Id-Version: Aegisub\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-04 01:20+0200\n"
-"PO-Revision-Date: 2011-06-18 19:24+0100\n"
-"Last-Translator: Invi \n"
+"PO-Revision-Date: 2021-05-23 22:24+0200\n"
+"Last-Translator: clr134\n"
"Language-Team: Invi \n"
-"Language: \n"
+"Language: pl_PL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Polish\n"
-"X-Poedit-Country: POLAND\n"
+"X-Generator: Poedit 2.4.3\n"
#: ass_style.cpp:575
msgid "ANSI"
msgstr "ANSI"
-#: ass_style.cpp:576
-#: dialog_options.cpp:602
+#: ass_style.cpp:576 dialog_options.cpp:602
msgid "Default"
msgstr "Domyślny"
@@ -226,13 +224,11 @@ msgstr "Podziel"
msgid "Enter split-mode"
msgstr "Włącza tryb dzielenia"
-#: audio_display.cpp:2294
-#: audio_display.cpp:2349
+#: audio_display.cpp:2294 audio_display.cpp:2349
msgid "Do you want to commit your changes? If you choose No, they will be discarded."
msgstr "Czy chcesz zatwierdzić zmiany? Jeśli wybierzesz Nie, zostaną on utracone."
-#: audio_display.cpp:2294
-#: audio_display.cpp:2349
+#: audio_display.cpp:2294 audio_display.cpp:2349
msgid "Commit?"
msgstr "Zatwierdzić?"
@@ -260,8 +256,7 @@ msgstr "Załaduj audio"
msgid "Reading into RAM"
msgstr "Wczytywanie do pamięci"
-#: auto4_base.cpp:401
-#: dialog_kanji_timer.cpp:737
+#: auto4_base.cpp:401 dialog_kanji_timer.cpp:737
msgid "Close"
msgstr "Zamknij"
@@ -272,7 +267,7 @@ msgstr "Skrypt wykonany"
#: auto4_base.cpp:755
#, c-format
msgid "An Automation script failed to load. File name: '%s', error reported:"
-msgstr "Plik automatyzacji się nie załadował. Plik: '%s', zgłoszony błąd:"
+msgstr "Plik automatyzacji się nie załadował. Plik: '%s', zgłoszony błąd:"
#: auto4_base.cpp:768
#, c-format
@@ -293,19 +288,19 @@ msgstr "Próbowano zarejestrować PerlConsole*, ale wsparcie dla niej zostało w
#: auto4_perl.cpp:383
msgid "Fatal error: "
-msgstr "Błąd krytyczny:"
+msgstr "Błąd krytyczny: "
#: auto4_perl.cpp:385
msgid "Error: "
-msgstr "Błąd:"
+msgstr "Błąd: "
#: auto4_perl.cpp:387
msgid "Warning: "
-msgstr "Ostrzeżenie:"
+msgstr "Ostrzeżenie: "
#: auto4_perl.cpp:389
msgid "Hint: "
-msgstr "Wskazówka:"
+msgstr "Wskazówka: "
#: auto4_perl.cpp:391
msgid "Debug: "
@@ -313,11 +308,11 @@ msgstr "Debug: "
#: auto4_perl.cpp:393
msgid "Trace: "
-msgstr "Ślad*:"
+msgstr "Ślad: "
#: auto4_perl_dialogs.cpp:60
msgid "Executing "
-msgstr "Wykonywanie"
+msgstr "Wykonywanie "
#: auto4_perl_script.cpp:99
msgid "Perl script"
@@ -344,68 +339,44 @@ msgstr "#"
msgid "L"
msgstr "W"
-#: base_grid.cpp:436
-#: subs_grid.cpp:120
+#: base_grid.cpp:436 subs_grid.cpp:120
msgid "Start"
msgstr "Start"
-#: base_grid.cpp:437
-#: subs_grid.cpp:121
+#: base_grid.cpp:437 subs_grid.cpp:121
msgid "End"
msgstr "Koniec"
-#: base_grid.cpp:438
-#: dialog_options.cpp:213
-#: dialog_options.cpp:284
-#: dialog_options.cpp:470
-#: dialog_paste_over.cpp:68
-#: dialog_search_replace.cpp:96
-#: dialog_selection.cpp:78
-#: subs_grid.cpp:122
+#: base_grid.cpp:438 dialog_options.cpp:213 dialog_options.cpp:284
+#: dialog_options.cpp:470 dialog_paste_over.cpp:68 dialog_search_replace.cpp:96
+#: dialog_selection.cpp:78 subs_grid.cpp:122
msgid "Style"
msgstr "Styl"
-#: base_grid.cpp:439
-#: dialog_paste_over.cpp:69
-#: dialog_search_replace.cpp:97
-#: dialog_selection.cpp:79
-#: subs_edit_box.cpp:90
-#: subs_grid.cpp:123
+#: base_grid.cpp:439 dialog_paste_over.cpp:69 dialog_search_replace.cpp:97
+#: dialog_selection.cpp:79 subs_edit_box.cpp:90 subs_grid.cpp:123
msgid "Actor"
msgstr "Aktor"
-#: base_grid.cpp:440
-#: dialog_paste_over.cpp:79
-#: dialog_search_replace.cpp:98
-#: dialog_selection.cpp:80
-#: subs_edit_box.cpp:93
-#: subs_grid.cpp:124
+#: base_grid.cpp:440 dialog_paste_over.cpp:79 dialog_search_replace.cpp:98
+#: dialog_selection.cpp:80 subs_edit_box.cpp:93 subs_grid.cpp:124
msgid "Effect"
msgstr "Efekt"
-#: base_grid.cpp:441
-#: dialog_style_editor.cpp:248
-#: subs_grid.cpp:125
+#: base_grid.cpp:441 dialog_style_editor.cpp:248 subs_grid.cpp:125
msgid "Left"
msgstr "Lewy"
-#: base_grid.cpp:442
-#: dialog_style_editor.cpp:248
-#: subs_grid.cpp:126
+#: base_grid.cpp:442 dialog_style_editor.cpp:248 subs_grid.cpp:126
msgid "Right"
msgstr "Prawy"
-#: base_grid.cpp:443
-#: dialog_style_editor.cpp:248
-#: subs_grid.cpp:127
+#: base_grid.cpp:443 dialog_style_editor.cpp:248 subs_grid.cpp:127
msgid "Vert"
msgstr "Pion"
-#: base_grid.cpp:444
-#: dialog_kanji_timer.cpp:707
-#: dialog_paste_over.cpp:80
-#: dialog_paste_over.cpp:92
-#: dialog_search_replace.cpp:95
+#: base_grid.cpp:444 dialog_kanji_timer.cpp:707 dialog_paste_over.cpp:80
+#: dialog_paste_over.cpp:92 dialog_search_replace.cpp:95
#: dialog_selection.cpp:77
msgid "Text"
msgstr "Tekst"
@@ -430,8 +401,7 @@ msgstr ""
msgid "Choose character set"
msgstr "Wybierz kodowanie znaków"
-#: dialog_about.cpp:53
-#: frame_main.cpp:527
+#: dialog_about.cpp:53 frame_main.cpp:527
msgid "About Aegisub"
msgstr "O Aegisub"
@@ -520,8 +490,7 @@ msgstr "Załącz &czcionkę"
msgid "Attach &Graphics"
msgstr "Załącz &grafikę"
-#: dialog_attachments.cpp:80
-#: dialog_automation.cpp:69
+#: dialog_attachments.cpp:80 dialog_automation.cpp:69
#: dialog_version_check.cpp:502
msgid "&Close"
msgstr "&Zamknij"
@@ -538,8 +507,7 @@ msgstr "Rozmiar"
msgid "Group"
msgstr "Rodzaj"
-#: dialog_attachments.cpp:194
-#: dialog_attachments.cpp:229
+#: dialog_attachments.cpp:194 dialog_attachments.cpp:229
msgid "Choose file to be attached"
msgstr "Wybierz pliki do załączenia"
@@ -565,7 +533,7 @@ msgstr "usuń załącznik"
#: dialog_automation.cpp:54
msgid "Automation Manager"
-msgstr "Menedżer Automatyzacji"
+msgstr "Menedżer automatyzacji"
#: dialog_automation.cpp:64
msgid "&Add"
@@ -635,7 +603,7 @@ msgid ""
"Features provided by script:\n"
msgstr ""
"\n"
-"Informacje o skrypcie:\n"
+"Informacje o pliku:\n"
"Nazwa: %s\n"
"Opis: %s\n"
"Autor: %s\n"
@@ -643,7 +611,7 @@ msgstr ""
"Pełna ścieżka: %s\n"
"Stan: %s\n"
"\n"
-"Dodatkowe elementy dostarczone przez skrypt:\n"
+"Dodatkowe elementy:\n"
#: dialog_automation.cpp:299
msgid "Correctly loaded"
@@ -711,7 +679,7 @@ msgstr "Kolory HSV"
#: dialog_colorpicker.cpp:583
msgid "Spectrum mode:"
-msgstr "Tryb widma"
+msgstr "Tryb widma:"
#: dialog_colorpicker.cpp:595
msgid "Red:"
@@ -725,13 +693,11 @@ msgstr "Zielony:"
msgid "Blue:"
msgstr "Niebieski:"
-#: dialog_colorpicker.cpp:614
-#: dialog_colorpicker.cpp:624
+#: dialog_colorpicker.cpp:614 dialog_colorpicker.cpp:624
msgid "Hue:"
msgstr "Barwa:"
-#: dialog_colorpicker.cpp:616
-#: dialog_colorpicker.cpp:626
+#: dialog_colorpicker.cpp:616 dialog_colorpicker.cpp:626
msgid "Sat.:"
msgstr "Nasyc.:"
@@ -821,17 +787,15 @@ msgstr "Eksport..."
msgid "Export subtitles file"
msgstr "Eksportuje pliku napisów"
-#: dialog_fonts_collector.cpp:80
-#: frame_main.cpp:255
+#: dialog_fonts_collector.cpp:80 frame_main.cpp:255
msgid "Fonts Collector"
msgstr "Kolekcjoner czcionek"
#: dialog_fonts_collector.cpp:96
msgid "&Browse..."
-msgstr "&Przeglądaj"
+msgstr "&Przeglądaj..."
-#: dialog_fonts_collector.cpp:98
-#: dialog_fonts_collector.cpp:309
+#: dialog_fonts_collector.cpp:98 dialog_fonts_collector.cpp:309
msgid ""
"Choose the folder where the fonts will be collected to.\n"
"It will be created if it doesn't exist."
@@ -875,19 +839,11 @@ msgstr "&Strat!"
msgid "Invalid destination."
msgstr "Błędne miejsce docelowe."
-#: dialog_fonts_collector.cpp:195
-#: dialog_fonts_collector.cpp:204
-#: dialog_fonts_collector.cpp:213
-#: dialog_kanji_timer.cpp:820
-#: dialog_kanji_timer.cpp:822
-#: dialog_kanji_timer.cpp:865
-#: dialog_options.cpp:238
-#: dialog_resample.cpp:217
-#: dialog_resample.cpp:221
-#: options.cpp:467
-#: subs_grid.cpp:686
-#: subs_grid.cpp:690
-#: subs_grid.cpp:736
+#: dialog_fonts_collector.cpp:195 dialog_fonts_collector.cpp:204
+#: dialog_fonts_collector.cpp:213 dialog_kanji_timer.cpp:820
+#: dialog_kanji_timer.cpp:822 dialog_kanji_timer.cpp:865 dialog_options.cpp:238
+#: dialog_resample.cpp:217 dialog_resample.cpp:221 options.cpp:467
+#: subs_grid.cpp:686 subs_grid.cpp:690 subs_grid.cpp:736
msgid "Error"
msgstr "Błąd"
@@ -917,7 +873,7 @@ msgid ""
"If a folder is entered, a default name will be used."
msgstr ""
"Wprowadź nazwę pliku zip, do którego zostaną zebrane czcionki.\n"
-" Jeśli wprowadzony zostanie folder, zostanie użyta domyślna nazwa."
+"Jeśli wprowadzony zostanie folder, zostanie użyta domyślna nazwa."
#: dialog_fonts_collector.cpp:393
msgid "Invalid destination directory."
@@ -933,7 +889,7 @@ msgstr "Ukończono zbieranie informacji o czcionkach."
#: dialog_fonts_collector.cpp:409
msgid "Scanning file for fonts..."
-msgstr "Szukanie czcionek w pliku"
+msgstr "Szukanie czcionek w pliku..."
#: dialog_fonts_collector.cpp:442
msgid "Done."
@@ -982,7 +938,7 @@ msgstr "Skończone. Nie znaleziono pewnych czcionek."
#: dialog_fonts_collector.cpp:485
msgid "Done. Some fonts could not be copied."
-msgstr "Skończone. Nie skopiowano pewnych czcionek. "
+msgstr "Zakończono. Kopiowanie niektórych czcionek nie powiodło się."
#: dialog_fonts_collector.cpp:505
msgid "Not found.\n"
@@ -1028,24 +984,23 @@ msgstr "Skocz do"
#: dialog_jumpto.cpp:75
msgid "Frame: "
-msgstr "Klatka:"
+msgstr "Klatka: "
-#: dialog_jumpto.cpp:76
-#: dialog_shift_times.cpp:78
+#: dialog_jumpto.cpp:76 dialog_shift_times.cpp:78
msgid "Time: "
-msgstr "Czas:"
+msgstr "Czas: "
#: dialog_kanji_timer.cpp:59
msgid "Source: "
-msgstr "Źródło:"
+msgstr "Źródło: "
#: dialog_kanji_timer.cpp:60
msgid "Dest: "
-msgstr "Cel:"
+msgstr "Cel: "
#: dialog_kanji_timer.cpp:695
msgid "Kanji timing"
-msgstr "Timing Kanji "
+msgstr "Timing Kanji"
#: dialog_kanji_timer.cpp:708
msgid "Styles"
@@ -1135,17 +1090,10 @@ msgstr "Styl źródłowy i docelowy muszą być różne."
msgid "Group all of the source text."
msgstr "Zgrupuj cały tekst źródłowy."
-#: dialog_options.cpp:86
-#: dialog_options.cpp:210
-#: dialog_options.cpp:283
-#: dialog_options.cpp:351
-#: dialog_options.cpp:428
-#: dialog_options.cpp:469
-#: dialog_options.cpp:555
-#: dialog_properties.cpp:119
-#: dialog_timing_processor.cpp:83
-#: frame_main.cpp:279
-#: hotkeys.cpp:333
+#: dialog_options.cpp:86 dialog_options.cpp:210 dialog_options.cpp:283
+#: dialog_options.cpp:351 dialog_options.cpp:428 dialog_options.cpp:469
+#: dialog_options.cpp:555 dialog_properties.cpp:119
+#: dialog_timing_processor.cpp:83 frame_main.cpp:279 hotkeys.cpp:333
#: hotkeys.cpp:337
msgid "Options"
msgstr "Opcje"
@@ -1154,8 +1102,7 @@ msgstr "Opcje"
msgid "Startup"
msgstr "Uruchamianie"
-#: dialog_options.cpp:114
-#: dialog_version_check.cpp:495
+#: dialog_options.cpp:114 dialog_version_check.cpp:495
msgid "Auto Check for Updates"
msgstr "Automatycznie sprawdzaj aktualizacje"
@@ -1239,18 +1186,15 @@ msgstr "Ścieżka odzyskiwania:"
msgid "Automatically load linked files:"
msgstr "Automatycznie ładuj dołączone pliki:"
-#: dialog_options.cpp:189
-#: dialog_options.cpp:359
+#: dialog_options.cpp:189 dialog_options.cpp:359
msgid "Never"
msgstr "Nigdy"
-#: dialog_options.cpp:189
-#: dialog_options.cpp:359
+#: dialog_options.cpp:189 dialog_options.cpp:359
msgid "Always"
msgstr "Zawsze"
-#: dialog_options.cpp:189
-#: dialog_options.cpp:359
+#: dialog_options.cpp:189 dialog_options.cpp:359
msgid "Ask"
msgstr "Pytaj"
@@ -1272,11 +1216,9 @@ msgstr "Nadpisuj zawartość pól czasu"
#: dialog_options.cpp:227
msgid "Path to dictionary files:"
-msgstr "Ścieżka do plików słownika"
+msgstr "Ścieżka do plików słownika:"
-#: dialog_options.cpp:237
-#: dialog_options.cpp:563
-#: dialog_properties.cpp:133
+#: dialog_options.cpp:237 dialog_options.cpp:563 dialog_properties.cpp:133
msgid "Normal"
msgstr "Normalny"
@@ -1314,12 +1256,11 @@ msgstr "Tło zmodyfikowane"
#: dialog_options.cpp:245
msgid "Syntax highlighter - "
-msgstr "Podświetlenie składni -"
+msgstr "Podświetlenie składni - "
-#: dialog_options.cpp:256
-#: dialog_options.cpp:319
+#: dialog_options.cpp:256 dialog_options.cpp:319
msgid "Font: "
-msgstr "Czcionka:"
+msgstr "Czcionka: "
#: dialog_options.cpp:290
msgid "Allow grid to take focus"
@@ -1341,8 +1282,7 @@ msgstr "Standard, tło"
msgid "Selection foreground"
msgstr "Zaznaczenie, pierwszy plan"
-#: dialog_options.cpp:301
-#: dialog_options.cpp:487
+#: dialog_options.cpp:301 dialog_options.cpp:487
msgid "Selection background"
msgstr "Zaznaczenie, tło"
@@ -1380,12 +1320,11 @@ msgstr "Linie"
#: dialog_options.cpp:332
msgid "Replace override tags with: "
-msgstr "Zamień tagi ASS na:"
+msgstr "Zamień tagi ASS na: "
-#: dialog_options.cpp:352
-#: dialog_options.cpp:520
+#: dialog_options.cpp:352 dialog_options.cpp:520
msgid "Advanced - EXPERT USERS ONLY"
-msgstr "Zaawansowane - TYLKO DLA EKSPERTÓW"
+msgstr "Zaawansowane - TYLKO DLA EKSPERTÓW"
#: dialog_options.cpp:358
msgid "Match video resolution on open"
@@ -1393,7 +1332,7 @@ msgstr "Dopasuj rozdzielczość wideo przy otwarciu"
#: dialog_options.cpp:363
msgid "Default Zoom"
-msgstr "Domyślny Zoom"
+msgstr "Domyślny zoom"
#: dialog_options.cpp:374
msgid "Fast jump step in frames"
@@ -1421,10 +1360,9 @@ msgstr "Limit pamięci dla Avisyntha"
#: dialog_options.cpp:408
msgid "Allow pre-2.56a Avisynth"
-msgstr "Dopuść Avisynth starszy niż 2.56a"
+msgstr "Włącz Avisynth starszy niż 2.56a"
-#: dialog_options.cpp:416
-#: dialog_options.cpp:544
+#: dialog_options.cpp:416 dialog_options.cpp:544
msgid ""
"WARNING: Changing these settings might result in bugs,\n"
"crashes, glitches and/or movax.\n"
@@ -1676,15 +1614,15 @@ msgstr "nic"
#: dialog_options.cpp:564
msgid "Subtitle-local scripts"
-msgstr "lokalne skrypty napisów"
+msgstr "Lokalne skrypty napisów"
#: dialog_options.cpp:564
msgid "Global autoload scripts"
-msgstr "globalnie automatycznie ładowane skrypty"
+msgstr "Globalne automatycznie ładowane skrypty"
#: dialog_options.cpp:564
msgid "All scripts"
-msgstr "wszystkie skrypty"
+msgstr "Wszystkie skrypty"
#: dialog_options.cpp:565
msgid "Trace level"
@@ -1698,13 +1636,11 @@ msgstr "Priorytet procesu"
msgid "Autoreload on Export"
msgstr "Przeładuj przy eksporcie"
-#: dialog_options.cpp:585
-#: dialog_options.cpp:1081
+#: dialog_options.cpp:585 dialog_options.cpp:1081
msgid "Function"
msgstr "Funkcja"
-#: dialog_options.cpp:586
-#: dialog_options.cpp:1082
+#: dialog_options.cpp:586 dialog_options.cpp:1082
msgid "Key"
msgstr "Klawisz"
@@ -1736,8 +1672,7 @@ msgstr "Okno edycji napisów"
msgid "Subtitles grid"
msgstr "Siatka napisów"
-#: dialog_options.cpp:617
-#: dialog_video_details.cpp:57
+#: dialog_options.cpp:617 dialog_video_details.cpp:57
msgid "Video"
msgstr "Wideo"
@@ -1753,8 +1688,7 @@ msgstr "Wyświetlanie"
msgid "Advanced"
msgstr "Zaawansowane"
-#: dialog_options.cpp:621
-#: frame_main.cpp:260
+#: dialog_options.cpp:621 frame_main.cpp:260
msgid "Automation"
msgstr "Automatyzacja"
@@ -1766,17 +1700,13 @@ msgstr "Skróty klawiszowe"
msgid "Restore Defaults"
msgstr "Przywróć domyślne"
-#: dialog_options.cpp:727
-#: dialog_options.cpp:761
-#: dialog_options.cpp:901
+#: dialog_options.cpp:727 dialog_options.cpp:761 dialog_options.cpp:901
msgid "Aegisub must restart for the changes to take effect. Restart now?"
-msgstr "Aegisub musi zostać uruchomiony ponownie aby zmiany zaczęły działać. Uruchomić ponownie teraz?"
+msgstr "Aby zmiany weszły w życie, Aegisub wymaga ponownego uruchomienia. Uruchomić ponownie teraz?"
-#: dialog_options.cpp:727
-#: dialog_options.cpp:761
-#: dialog_options.cpp:901
+#: dialog_options.cpp:727 dialog_options.cpp:761 dialog_options.cpp:901
msgid "Restart Aegisub"
-msgstr "Uruchom ponownie Aegisub'a"
+msgstr "Uruchom ponownie Aegisub"
#: dialog_options.cpp:777
msgid "Are you sure that you want to restore the defaults? All your settings will be overridden."
@@ -1814,10 +1744,9 @@ msgstr "Pola"
#: dialog_paste_over.cpp:60
msgid "Please select the fields that you want to paste over:"
-msgstr "Wybierz pola do których chcesz wklejać :"
+msgstr "Wybierz pola do których chcesz wklejać:"
-#: dialog_paste_over.cpp:65
-#: subs_grid.cpp:119
+#: dialog_paste_over.cpp:65 subs_grid.cpp:119
msgid "Layer"
msgstr "Warstwa"
@@ -1849,28 +1778,25 @@ msgstr "Górny margines"
msgid "Margin Bottom"
msgstr "Dolny margines"
-#: dialog_paste_over.cpp:89
-#: dialog_timing_processor.cpp:77
+#: dialog_paste_over.cpp:89 dialog_timing_processor.cpp:77
msgid "All"
msgstr "Wszystkie"
-#: dialog_paste_over.cpp:90
-#: dialog_timing_processor.cpp:79
+#: dialog_paste_over.cpp:90 dialog_timing_processor.cpp:79
msgid "None"
msgstr "Żaden"
-#: dialog_paste_over.cpp:91
-#: dialog_shift_times.cpp:113
+#: dialog_paste_over.cpp:91 dialog_shift_times.cpp:113
msgid "Times"
msgstr "Czasy"
#: dialog_properties.cpp:58
msgid "Script Properties"
-msgstr "Właściwości skryptu"
+msgstr "Właściwości pliku"
#: dialog_properties.cpp:67
msgid "Script"
-msgstr "Skrypt"
+msgstr "Plik"
#: dialog_properties.cpp:68
msgid "Title:"
@@ -1902,15 +1828,13 @@ msgstr "Zaktualizowany przez:"
#: dialog_properties.cpp:82
msgid "Update details:"
-msgstr "Informacje o zmianach"
+msgstr "Informacje o zmianach:"
-#: dialog_properties.cpp:105
-#: dialog_resample.cpp:90
+#: dialog_properties.cpp:105 dialog_resample.cpp:90
msgid "Resolution"
msgstr "Rozdzielczość"
-#: dialog_properties.cpp:111
-#: dialog_resample.cpp:99
+#: dialog_properties.cpp:111 dialog_resample.cpp:99
msgid "From video"
msgstr "Z wideo"
@@ -1923,9 +1847,7 @@ msgid "1: End-of-line word wrapping, only \\N breaks"
msgstr "1: Linie będą dzielone tylko w miejscu gdzie jest \\N"
#: dialog_properties.cpp:124
-msgid ""
-"2: No word wrapping, both \\n"
-" and \\N break"
+msgid "2: No word wrapping, both \\n and \\N break"
msgstr "2: Linie będą dzielone tylko tam gdzie jest \\N lub \\n"
#: dialog_properties.cpp:125
@@ -1950,7 +1872,7 @@ msgstr "Skaluj obramowanie i cień"
#: dialog_properties.cpp:142
msgid "Scale border and shadow together with script/render resolution. If this is unchecked, relative border and shadow size will depend on renderer."
-msgstr "Skaluje obramowanie i cień razem z rozdzielczością skryptu/rendera. Jeśli to jest odznaczone, względna wielkość obramowania i cienia będzie zależała od rendera. "
+msgstr "Skaluje obramowanie i cień razem z rozdzielczością pliku/renderu. Jeśli to jest odznaczone, względna wielkość obramowania i cienia będzie zależała od renderera."
#: dialog_properties.cpp:204
msgid "property changes"
@@ -1988,13 +1910,11 @@ msgstr "przeliczanie rozdzielczość"
msgid "Find what:"
msgstr "Znajdź:"
-#: dialog_search_replace.cpp:74
-#: dialog_spellchecker.cpp:113
+#: dialog_search_replace.cpp:74 dialog_spellchecker.cpp:113
msgid "Replace with:"
msgstr "Zamień na:"
-#: dialog_search_replace.cpp:81
-#: dialog_selection.cpp:70
+#: dialog_search_replace.cpp:81 dialog_selection.cpp:70
msgid "Match case"
msgstr "Uwzględnij wielkość liter"
@@ -2006,18 +1926,15 @@ msgstr "Użyj wyrażeń regularnych"
msgid "Update Video (slow)"
msgstr "Aktualizuj wideo (wolne)"
-#: dialog_search_replace.cpp:100
-#: dialog_shift_times.cpp:108
+#: dialog_search_replace.cpp:100 dialog_shift_times.cpp:108
msgid "All rows"
msgstr "Wszystkie wiersze"
-#: dialog_search_replace.cpp:101
-#: dialog_shift_times.cpp:108
+#: dialog_search_replace.cpp:101 dialog_shift_times.cpp:108
msgid "Selected rows"
msgstr "Zaznaczone wiersze"
-#: dialog_search_replace.cpp:102
-#: dialog_selection.cpp:81
+#: dialog_search_replace.cpp:102 dialog_selection.cpp:81
msgid "In Field"
msgstr "W polu"
@@ -2037,8 +1954,7 @@ msgstr "Zamień następne"
msgid "Replace all"
msgstr "Zamień wszystkie"
-#: dialog_search_replace.cpp:411
-#: dialog_search_replace.cpp:523
+#: dialog_search_replace.cpp:411 dialog_search_replace.cpp:523
msgid "replace"
msgstr "zamień"
@@ -2051,15 +1967,12 @@ msgstr "%i wyników zostało zamienionych."
msgid "No matches found."
msgstr "Nie znaleziono wyników."
-#: dialog_search_replace.cpp:566
-#: dialog_spellchecker.cpp:122
-#: hotkeys.cpp:351
+#: dialog_search_replace.cpp:566 dialog_spellchecker.cpp:122 hotkeys.cpp:351
#: hotkeys.cpp:354
msgid "Replace"
msgstr "Zamień"
-#: dialog_search_replace.cpp:566
-#: hotkeys.cpp:348
+#: dialog_search_replace.cpp:566 hotkeys.cpp:348
msgid "Find"
msgstr "Znajdź"
@@ -2128,9 +2041,7 @@ msgstr "Akcja"
msgid "Selection was set to %u lines"
msgstr "Zaznaczonych zostało %u linii"
-#: dialog_selection.cpp:276
-#: dialog_selection.cpp:277
-#: dialog_selection.cpp:278
+#: dialog_selection.cpp:276 dialog_selection.cpp:277 dialog_selection.cpp:278
msgid "Selection"
msgstr "Zaznaczenie"
@@ -2144,9 +2055,7 @@ msgstr "%u linii zostało dodanych do zaznaczenia"
msgid "%u lines were removed from selection"
msgstr "%u linii zostało usuniętych z zaznaczenia"
-#: dialog_shift_times.cpp:63
-#: frame_main.cpp:269
-#: hotkeys.cpp:347
+#: dialog_shift_times.cpp:63 frame_main.cpp:269 hotkeys.cpp:347
msgid "Shift Times"
msgstr "Przesuń czasy"
@@ -2220,7 +2129,7 @@ msgstr "Wyczyść"
#: dialog_shift_times.cpp:251
msgid "unsaved"
-msgstr "Niezapisane"
+msgstr "niezapisane"
#: dialog_shift_times.cpp:256
msgid " frames "
@@ -2263,8 +2172,7 @@ msgstr "zaznaczone "
msgid "shifting"
msgstr "przesuwanie"
-#: dialog_spellchecker.cpp:69
-#: frame_main.cpp:275
+#: dialog_spellchecker.cpp:69 frame_main.cpp:275
msgid "Spell Checker"
msgstr "Sprawdzanie pisowni"
@@ -2298,10 +2206,9 @@ msgstr "Dodaj do słownika"
#: dialog_spellchecker.cpp:327
msgid "Aegisub has finished checking spelling of this script."
-msgstr "Aegisub skończył sprawdzanie pisowni w tym skrypcie."
+msgstr "Aegisub zakończył sprawdzanie pisowni w tych napisach."
-#: dialog_spellchecker.cpp:327
-#: dialog_spellchecker.cpp:394
+#: dialog_spellchecker.cpp:327 dialog_spellchecker.cpp:394
msgid "Spell checking complete."
msgstr "Sprawdzanie pisowni ukończone."
@@ -2311,7 +2218,7 @@ msgstr "Sprawdzanie pisowni "
#: dialog_spellchecker.cpp:394
msgid "Aegisub has found no spelling mistakes in this script."
-msgstr "Aegisub nie znalazł błędów w tym skrypcie"
+msgstr "Aegisub nie znalazł żadnych błędów w tych napisach."
#: dialog_style_editor.cpp:99
msgid "Style Editor"
@@ -2333,8 +2240,7 @@ msgstr "Kolory"
msgid "Margins"
msgstr "Marginesy"
-#: dialog_style_editor.cpp:137
-#: dialog_style_editor.cpp:236
+#: dialog_style_editor.cpp:137 dialog_style_editor.cpp:236
msgid "Outline"
msgstr "Obramowanie"
@@ -2346,8 +2252,7 @@ msgstr "Różne"
msgid "Preview"
msgstr "Podgląd"
-#: dialog_style_editor.cpp:145
-#: subs_edit_box.cpp:120
+#: dialog_style_editor.cpp:145 subs_edit_box.cpp:120
msgid "Bold"
msgstr "Pogrubienie"
@@ -2355,13 +2260,11 @@ msgstr "Pogrubienie"
msgid "Italic"
msgstr "Kursywa"
-#: dialog_style_editor.cpp:147
-#: subs_edit_box.cpp:124
+#: dialog_style_editor.cpp:147 subs_edit_box.cpp:124
msgid "Underline"
msgstr "Podkreślenie"
-#: dialog_style_editor.cpp:148
-#: subs_edit_box.cpp:126
+#: dialog_style_editor.cpp:148 subs_edit_box.cpp:126
msgid "Strikeout"
msgstr "Przekreślenie"
@@ -2511,14 +2414,13 @@ msgstr "Brak providera napisów. Nie można podejrzeć napisów."
#: dialog_style_editor.cpp:452
msgid "Do you want to change all instances of this style in the script to this new name?"
-msgstr "Czy chcesz zamienić wszystkie wystąpienia tego stylu na podaną nową nazwę?"
+msgstr "Czy chcesz zmienić nazwę stylu na nową we wszystkich liniach z tym stylem?"
#: dialog_style_editor.cpp:452
msgid "Update script?"
msgstr "Zaktualizować skrypt?"
-#: dialog_style_editor.cpp:486
-#: subs_edit_box.cpp:595
+#: dialog_style_editor.cpp:486 subs_edit_box.cpp:595
msgid "style change"
msgstr "zmiana stylu"
@@ -2528,16 +2430,15 @@ msgid ""
"I must urge you to reconsider. Comic Sans is the most abused font in the history\n"
"of computing, so please avoid using it unless it's REALLY suitable. Thanks."
msgstr ""
-"Postanowiłeś użyć czcionki \"Comic Sans\". Jako programista i typesetter, muszę nalegać żebyś rozważył to ponownie.\n"
-"Comic Sans jest najbardziej nadużywaną czcionką w historii informatyki, więc proszę\n"
+"Postanowiłeś użyć czcionki \"Comic Sans\". Jako programista i typesetter, muszę nalegać żebyś rozważył to ponownie.\n"
+"Comic Sans jest najbardziej nadużywaną czcionką w historii informatyki, więc proszę\n"
"unikaj używania jej chyba, że jest NAPRAWDĘ stosowna."
#: dialog_style_editor.cpp:583
msgid "Warning"
msgstr "Ostrzeżenie"
-#: dialog_style_manager.cpp:60
-#: frame_main.cpp:252
+#: dialog_style_manager.cpp:60 frame_main.cpp:252
msgid "Styles Manager"
msgstr "Menedżer stylów"
@@ -2545,17 +2446,13 @@ msgstr "Menedżer stylów"
msgid "Catalog of available storages"
msgstr "Katalog dostępnych magazynów"
-#: dialog_style_manager.cpp:71
-#: dialog_style_manager.cpp:84
-#: dialog_style_manager.cpp:129
-#: frame_main.cpp:221
+#: dialog_style_manager.cpp:71 dialog_style_manager.cpp:84
+#: dialog_style_manager.cpp:129 frame_main.cpp:221
msgid "New"
msgstr "Nowy"
-#: dialog_style_manager.cpp:72
-#: dialog_style_manager.cpp:87
-#: dialog_style_manager.cpp:132
-#: subs_grid.cpp:204
+#: dialog_style_manager.cpp:72 dialog_style_manager.cpp:87
+#: dialog_style_manager.cpp:132 subs_grid.cpp:204
msgid "Delete"
msgstr "Usuń"
@@ -2565,47 +2462,39 @@ msgstr "Magazyn"
#: dialog_style_manager.cpp:83
msgid "Copy to current script ->"
-msgstr "Kopiuj do bieżącego skryptu ->"
+msgstr "Kopiuj do bieżących napisów ->"
-#: dialog_style_manager.cpp:85
-#: dialog_style_manager.cpp:130
+#: dialog_style_manager.cpp:85 dialog_style_manager.cpp:130
msgid "Edit"
msgstr "Edytuj"
-#: dialog_style_manager.cpp:86
-#: dialog_style_manager.cpp:131
-#: hotkeys.cpp:357
+#: dialog_style_manager.cpp:86 dialog_style_manager.cpp:131 hotkeys.cpp:357
msgid "Copy"
msgstr "Kopiuj"
-#: dialog_style_manager.cpp:97
-#: dialog_style_manager.cpp:142
+#: dialog_style_manager.cpp:97 dialog_style_manager.cpp:142
msgid "Move style up"
msgstr "Przesuń w górę"
-#: dialog_style_manager.cpp:98
-#: dialog_style_manager.cpp:143
+#: dialog_style_manager.cpp:98 dialog_style_manager.cpp:143
msgid "Move style down"
msgstr "Przesuń w dół"
-#: dialog_style_manager.cpp:99
-#: dialog_style_manager.cpp:144
+#: dialog_style_manager.cpp:99 dialog_style_manager.cpp:144
msgid "Move style to top"
msgstr "Przenieś styl na górę"
-#: dialog_style_manager.cpp:100
-#: dialog_style_manager.cpp:145
+#: dialog_style_manager.cpp:100 dialog_style_manager.cpp:145
msgid "Move style to bottom"
msgstr "Przenieś styl na dół"
-#: dialog_style_manager.cpp:101
-#: dialog_style_manager.cpp:146
+#: dialog_style_manager.cpp:101 dialog_style_manager.cpp:146
msgid "Sort styles alphabetically"
msgstr "Sortuj style alfabetycznie"
#: dialog_style_manager.cpp:121
msgid "Current script"
-msgstr "Bieżący skrypt"
+msgstr "Bieżące napisy"
#: dialog_style_manager.cpp:126
msgid "<- Copy to storage"
@@ -2613,7 +2502,7 @@ msgstr "<- Kopiuj do magazynu"
#: dialog_style_manager.cpp:128
msgid "Import from script..."
-msgstr "Importuj ze skryptu..."
+msgstr "Importuj z pliku..."
#: dialog_style_manager.cpp:393
msgid "New storage name:"
@@ -2653,13 +2542,11 @@ msgstr "Czy na pewno chcesz usunąć magazyn \"%s\" z katalogu?"
msgid "Confirm delete"
msgstr "Potwierdź usunięcie"
-#: dialog_style_manager.cpp:575
-#: dialog_style_manager.cpp:624
+#: dialog_style_manager.cpp:575 dialog_style_manager.cpp:624
msgid "style copy"
msgstr "kopiuj styl"
-#: dialog_style_manager.cpp:588
-#: dialog_style_manager.cpp:611
+#: dialog_style_manager.cpp:588 dialog_style_manager.cpp:611
msgid "Copy of "
msgstr "Kopia "
@@ -2667,25 +2554,20 @@ msgstr "Kopia "
msgid "style paste"
msgstr "wklej styl"
-#: dialog_style_manager.cpp:681
-#: dialog_style_manager.cpp:685
-#: dialog_style_manager.cpp:721
-#: dialog_style_manager.cpp:725
+#: dialog_style_manager.cpp:681 dialog_style_manager.cpp:685
+#: dialog_style_manager.cpp:721 dialog_style_manager.cpp:725
msgid "Could not parse style"
msgstr "Styl nie mógł zostać przetworzony"
-#: dialog_style_manager.cpp:766
-#: dialog_style_manager.cpp:799
+#: dialog_style_manager.cpp:766 dialog_style_manager.cpp:799
msgid "Are you sure you want to delete these "
msgstr "Czy na pewno chcesz usunąć te "
-#: dialog_style_manager.cpp:768
-#: dialog_style_manager.cpp:801
+#: dialog_style_manager.cpp:768 dialog_style_manager.cpp:801
msgid " styles?"
msgstr " style?"
-#: dialog_style_manager.cpp:770
-#: dialog_style_manager.cpp:803
+#: dialog_style_manager.cpp:770 dialog_style_manager.cpp:803
msgid "Are you sure you want to delete this style?"
msgstr "Czy na pewno chcesz usunąć ten styl?"
@@ -2695,14 +2577,13 @@ msgstr "Potwierdź usunięcie z magazynu"
#: dialog_style_manager.cpp:804
msgid "Confirm delete from current"
-msgstr "Potwierdź usunięcie z bieżącego skryptu"
+msgstr "Potwierdź usunięcie z bieżącego pliku"
#: dialog_style_manager.cpp:821
msgid "style delete"
msgstr "usuń styl"
-#: dialog_style_manager.cpp:831
-#: frame_main_events.cpp:722
+#: dialog_style_manager.cpp:831 frame_main_events.cpp:722
#: frame_main_events.cpp:740
msgid "Open subtitles file"
msgstr "Otwórz plik napisów"
@@ -2715,13 +2596,11 @@ msgstr "Wybrany plik nie ma żadnych stylów."
msgid "Error Importing Styles"
msgstr "Błąd podczas importowania stylów"
-#: dialog_style_manager.cpp:854
-#: dialog_style_manager.cpp:856
+#: dialog_style_manager.cpp:854 dialog_style_manager.cpp:856
msgid "Choose styles to import:"
msgstr "Wybierz style do zaimportowania:"
-#: dialog_style_manager.cpp:854
-#: dialog_style_manager.cpp:856
+#: dialog_style_manager.cpp:854 dialog_style_manager.cpp:856
msgid "Import Styles"
msgstr "Importuj style"
@@ -2745,8 +2624,7 @@ msgstr "przenoszenie stylu"
msgid "Styling assistant"
msgstr "Pomocnik stylizowania"
-#: dialog_styling_assistant.cpp:75
-#: dialog_styling_assistant.cpp:76
+#: dialog_styling_assistant.cpp:75 dialog_styling_assistant.cpp:76
msgid "Current line"
msgstr "Bieżąca linia"
@@ -2758,47 +2636,37 @@ msgstr "Dostępne style"
msgid "Set style"
msgstr "Ustaw styl"
-#: dialog_styling_assistant.cpp:87
-#: dialog_translation.cpp:101
+#: dialog_styling_assistant.cpp:87 dialog_translation.cpp:101
msgid "Keys"
msgstr "Klawisze"
-#: dialog_styling_assistant.cpp:88
-#: dialog_translation.cpp:124
+#: dialog_styling_assistant.cpp:88 dialog_translation.cpp:124
msgid "Actions"
msgstr "Akcje"
-#: dialog_styling_assistant.cpp:96
-#: dialog_translation.cpp:104
+#: dialog_styling_assistant.cpp:96 dialog_translation.cpp:104
msgid "Accept changes"
msgstr "Zatwierdź zmiany"
-#: dialog_styling_assistant.cpp:98
-#: dialog_translation.cpp:106
+#: dialog_styling_assistant.cpp:98 dialog_translation.cpp:106
msgid "Preview changes"
msgstr "Podejrzyj zmiany"
-#: dialog_styling_assistant.cpp:100
-#: dialog_translation.cpp:108
+#: dialog_styling_assistant.cpp:100 dialog_translation.cpp:108
msgid "Previous line"
msgstr "Poprzednia linia"
-#: dialog_styling_assistant.cpp:102
-#: dialog_translation.cpp:110
+#: dialog_styling_assistant.cpp:102 dialog_translation.cpp:110
msgid "Next line"
msgstr "Następna linia"
-#: dialog_styling_assistant.cpp:104
-#: dialog_styling_assistant.cpp:118
-#: dialog_translation.cpp:114
-#: dialog_translation.cpp:125
+#: dialog_styling_assistant.cpp:104 dialog_styling_assistant.cpp:118
+#: dialog_translation.cpp:114 dialog_translation.cpp:125
msgid "Play Video"
msgstr "Odtwarzaj wideo"
-#: dialog_styling_assistant.cpp:106
-#: dialog_styling_assistant.cpp:119
-#: dialog_translation.cpp:116
-#: dialog_translation.cpp:126
+#: dialog_styling_assistant.cpp:106 dialog_styling_assistant.cpp:119
+#: dialog_translation.cpp:116 dialog_translation.cpp:126
msgid "Play Audio"
msgstr "Odtwarzaj audio"
@@ -2818,8 +2686,7 @@ msgstr "Włącz podgląd (wolne)"
msgid "style changes"
msgstr "zmiany stylu"
-#: dialog_styling_assistant.cpp:223
-#: dialog_styling_assistant.cpp:252
+#: dialog_styling_assistant.cpp:223 dialog_styling_assistant.cpp:252
msgid "styling assistant"
msgstr "pomocnik stylizowania"
@@ -2835,8 +2702,7 @@ msgstr "Separator aktora:"
msgid "Comment starter:"
msgstr "Początek komentarza:"
-#: dialog_timing_processor.cpp:57
-#: frame_main.cpp:273
+#: dialog_timing_processor.cpp:57 frame_main.cpp:273
msgid "Timing Post-Processor"
msgstr "Timing Post-Processor"
@@ -2892,8 +2758,7 @@ msgstr "Zakres za do dodania, w milisekundach"
msgid "Make adjacent subtitles continuous"
msgstr "Ustaw sąsiednie napisy ciągłymi."
-#: dialog_timing_processor.cpp:108
-#: dialog_timing_processor.cpp:126
+#: dialog_timing_processor.cpp:108 dialog_timing_processor.cpp:126
msgid "Enable"
msgstr "Włącz"
@@ -2915,7 +2780,7 @@ msgstr "Ustawia jak ustawić sąsiednie linie. Jeśli ustawione po lewej, zostan
#: dialog_timing_processor.cpp:119
msgid "Bias: Start <- "
-msgstr "Odchylenie : Początek <-"
+msgstr "Odchylenie: Początek <-"
#: dialog_timing_processor.cpp:121
msgid " -> End"
@@ -3016,7 +2881,7 @@ msgstr "Kiedy skończysz ze swoimi napisami i będziesz gotowy do ich dystrybucj
#: dialog_tip.cpp:62
msgid "Much like anything loaded via DirectShow, certain files may have a strange structure (such as h.264 into AVI or XviD will null frames) which may cause unreliable seeking (that is, video frames might be off by one frame). This is not an Aegisub bug - you may consider reencoding those videos before working with them."
-msgstr "Przy ładowaniu czegokolwiek przez DirectShow, pewne pliki mogą mieć dziwną strukturę (takie jak h.264 w avi albo XviD z pustymi klatkami) co może powodować niepewne przeglądanie (to jest, może być różnica jednej klatki w wideo). To nie jest bug Aegisub'a - mógłbyś przemyśleć przekodowanie tych plików przed praca z nimi. "
+msgstr "Niektóre pliki załadowane przez DirectShow, np. H.264 w AVI, bądź XviD z pustymi klatkami, mogą mieć problemy z przewijaniem i być przesunięte o jedną klatkę. To nie jest wina Aegisuba, zalecane jest abyś przed pracą nad tymi plikami przekodował je do innego formatu."
#: dialog_tip.cpp:63
msgid "Try the spectrum mode for the audio display, it can make it much easier to spot where the important points in the audio are."
@@ -3028,7 +2893,7 @@ msgstr "Jeśli zdekodujesz swoje audio do PCM WAV przed załadowaniem go do Aegi
#: dialog_tip.cpp:65
msgid "Having video open is often more a nuisance than a help when timing subtitles. Timing with only audio open is often much easier. You can always adjust the subtitles to match the video later on."
-msgstr "Otwarte wideo częściej przeszkadza niż pomaga przy timingowaniu napisów. Timing z otwartym samym audio jest dużo łatwiejszy. Zawsze możesz później dopasować napisy do wideo. "
+msgstr "Otwarte wideo częściej przeszkadza niż pomaga przy timingowaniu napisów. Timing z samym audio jest dla wielu łatwiejszy. Zawsze możesz dopasować napisy do wideo później. "
#: dialog_tip.cpp:66
msgid "If the audio doesn't seem to work properly during video playback, try loading audio separately. Just select Audio->Load from video, that usually makes the audio much more reliable."
@@ -3036,10 +2901,9 @@ msgstr "Jeśli audio nie działa poprawnie podczas odtwarzania wideo, spróbuj z
#: dialog_tip.cpp:67
msgid "If anything goes wrong, blame movax."
-msgstr "Jeśli coś idzie nie tak, obwiniajcie movax'a(Czytaj Faq'u na stronie aegisuba)"
+msgstr "Jeśli coś idzie nie tak, wińcie movaxa (Czytaj FAQ na stronie)"
-#: dialog_translation.cpp:61
-#: frame_main.cpp:271
+#: dialog_translation.cpp:61 frame_main.cpp:271
msgid "Translation Assistant"
msgstr "Pomocnik tłumaczenia"
@@ -3084,14 +2948,14 @@ msgid ""
"\n"
"If other applications can access the Internet fine, this is probably a temporary server problem on our end."
msgstr ""
-"Wystąpił błąd podczas sprawdzania aktualizacji Aegisub'a:\n"
+"Wystąpił błąd podczas sprawdzania aktualizacji:\n"
"%s\n"
"\n"
-"Jeśli inne aplikacje mogą łączyć się bez problemu z internetem, to pewnie jest to chwilowy problem z serwerem po naszej stronie."
+"Jeżeli masz aktywne połączenie z siecią, jest to najprawdopodobniej tymczasowy problem z naszym serwerem."
#: dialog_version_check.cpp:182
msgid "An unknown error occurred while checking for updates to Aegisub."
-msgstr "Wystąpił nieznany błąd podczas sprawdzania aktualizacji Aegisub'a."
+msgstr "Wystąpił nieznany błąd podczas sprawdzania aktualizacji."
#: dialog_version_check.cpp:346
msgid "Could not connect to updates server."
@@ -3099,7 +2963,7 @@ msgstr "Nie udało się połączyć z serwerem aktualizacji."
#: dialog_version_check.cpp:350
msgid "Could not download from updates server."
-msgstr "Nie można pobierać z serwera aktualizacji."
+msgstr "Wystąpił problem podczas pobierania aktualizacji z serwera."
#: dialog_version_check.cpp:353
#, c-format
@@ -3108,15 +2972,15 @@ msgstr "Żądanie HTTP nie powiodło się, otrzymana odpowiedź HTTP %d"
#: dialog_version_check.cpp:426
msgid "An update to Aegisub was found."
-msgstr "Znaleziono aktualizację dla Aegisub'a."
+msgstr "Znaleziono aktualizację."
#: dialog_version_check.cpp:430
msgid "Several possible updates to Aegisub were found."
-msgstr "Znaleziono klika możliwych aktualizacji dla Aegisub'a."
+msgstr "Znaleziono klika możliwych aktualizacji."
#: dialog_version_check.cpp:434
msgid "There are no updates to Aegisub."
-msgstr "Nie ma aktualizacji dla Aegisub'a"
+msgstr "Brak dostępnych aktualizacji."
#: dialog_version_check.cpp:468
msgid "Version Checker"
@@ -3152,11 +3016,11 @@ msgstr "Dekoder:"
#: export_clean_info.cpp:60
msgid "Clean Script Info"
-msgstr "Wyczyść informacje o skrypcie"
+msgstr "Wyczyść właściwości pliku"
#: export_clean_info.cpp:61
msgid "Removes all but the absolutely required fields from the Script Info section. You might want to run this on files that you plan to distribute in original form."
-msgstr "Usuwa wszystko za wyjątkiem absolutnie potrzebnych pól z sekcji informacji o skrypcie. Możesz chcieć to uruchomić na plikach, których planujesz dystrybucję w oryginalnej formie."
+msgstr "Usuwa wszystkie opcjonalne wartości z właściwości pliku. Przydatne jeśli planujesz dystrybucję plikow w oryginalnej formie."
#: export_fixstyle.cpp:60
msgid "Fix Styles"
@@ -3200,7 +3064,7 @@ msgstr "Transformacja odwrotna"
#: export_framerate.cpp:129
msgid "Input framerate: "
-msgstr "Wejściowe FPS: "
+msgstr "Wejściowe FPS: "
#: export_framerate.cpp:131
msgid "Output: "
@@ -3245,9 +3109,7 @@ msgstr "Chcesz żeby Aegisub przy każdym uruchomieniu sprawdzał czy są dostę
msgid "Check for updates?"
msgstr "Sprawdzić czy są dostępne aktualizacje?"
-#: frame_main.cpp:221
-#: frame_main.cpp:320
-#: hotkeys.cpp:327
+#: frame_main.cpp:221 frame_main.cpp:320 hotkeys.cpp:327
msgid "New subtitles"
msgstr "Nowe napisy"
@@ -3255,8 +3117,7 @@ msgstr "Nowe napisy"
msgid "Open"
msgstr "Otwórz"
-#: frame_main.cpp:222
-#: hotkeys.cpp:328
+#: frame_main.cpp:222 hotkeys.cpp:328
msgid "Open subtitles"
msgstr "Otwórz napisy"
@@ -3264,8 +3125,7 @@ msgstr "Otwórz napisy"
msgid "Save"
msgstr "Zapisz"
-#: frame_main.cpp:223
-#: hotkeys.cpp:329
+#: frame_main.cpp:223 hotkeys.cpp:329
msgid "Save subtitles"
msgstr "Zapisz napisy"
@@ -3297,8 +3157,7 @@ msgstr "Pomniejsza wideo"
msgid "Jump video to start"
msgstr "Przewiń wideo do początku linii"
-#: frame_main.cpp:242
-#: frame_main.cpp:468
+#: frame_main.cpp:242 frame_main.cpp:468
msgid "Jumps the video to the start frame of current subtitle"
msgstr "Przewija wideo do początkowej klatki bieżącej linii napisów"
@@ -3306,8 +3165,7 @@ msgstr "Przewija wideo do początkowej klatki bieżącej linii napisów"
msgid "Jump video to end"
msgstr "Przewiń wideo do końca linii"
-#: frame_main.cpp:243
-#: frame_main.cpp:469
+#: frame_main.cpp:243 frame_main.cpp:469
msgid "Jumps the video to the end frame of current subtitle"
msgstr "Przewija wideo do końcowej klatki bieżącej linii napisów"
@@ -3315,19 +3173,17 @@ msgstr "Przewija wideo do końcowej klatki bieżącej linii napisów"
msgid "Snap start to video"
msgstr "Wyrównaj początek do wideo"
-#: frame_main.cpp:244
-#: frame_main.cpp:408
+#: frame_main.cpp:244 frame_main.cpp:408
msgid "Set start of selected subtitles to current video frame"
-msgstr "Ustawia początek wybranej linii napisów na bieżącą klatkę wideo."
+msgstr "Ustawia początek wybranych linii napisów na bieżącą klatkę wideo"
#: frame_main.cpp:245
msgid "Snap end to video"
msgstr "Wyrównaj koniec do wideo"
-#: frame_main.cpp:245
-#: frame_main.cpp:409
+#: frame_main.cpp:245 frame_main.cpp:409
msgid "Set end of selected subtitles to current video frame"
-msgstr "Ustawia koniec wybranej linii napisów na bieżącą klatkę wideo."
+msgstr "Ustawia koniec wybranych linii napisów na bieżącą klatkę wideo."
#: frame_main.cpp:246
msgid "Select visible"
@@ -3381,8 +3237,7 @@ msgstr "Otwórz kolekcjonera czcionek"
msgid "Open Automation manager"
msgstr "Otwórz menedżera automatyzacji"
-#: frame_main.cpp:266
-#: frame_main.cpp:373
+#: frame_main.cpp:266 frame_main.cpp:373
msgid "Launches ai-chan's \"ASSDraw3\" tool for vector drawing."
msgstr "Uruchamia narzędzie \"ASSDraw3\" do rysowania wektorowego autorstwa ai-chan."
@@ -3408,7 +3263,7 @@ msgstr "Przelicz"
#: frame_main.cpp:272
msgid "Resample Script Resolution"
-msgstr "Przelicz rozdzielczość skryptu"
+msgstr "Przelicz rozdzielczość pliku"
#: frame_main.cpp:273
msgid "Open Timing Post-processor dialog"
@@ -3426,10 +3281,9 @@ msgstr "Otwórz okno kanji timer'a"
msgid "Open Spell checker"
msgstr "Otwórz sprawdzanie pisowni"
-#: frame_main.cpp:279
-#: frame_main.cpp:497
+#: frame_main.cpp:279 frame_main.cpp:497
msgid "Configure Aegisub"
-msgstr "Konfiguruj Aegisub'a"
+msgstr "Konfiguruj Aegisuba"
#: frame_main.cpp:280
msgid "Cycle Tag Hiding Mode"
@@ -3439,8 +3293,7 @@ msgstr "Przełączaj tryby ukrywania tagów"
msgid "Cycle through tag hiding modes"
msgstr "Przełącza tryby ukrywania tagów"
-#: frame_main.cpp:305
-#: frame_main.cpp:528
+#: frame_main.cpp:305 frame_main.cpp:528
msgid "&Help"
msgstr "P&omoc"
@@ -3488,10 +3341,7 @@ msgstr "Eksportuj napisy"
msgid "Saves a copy of subtitles with processing applied to it"
msgstr "Zapisuje kopię napisów z zastosowaną obróbką"
-#: frame_main.cpp:326
-#: frame_main.cpp:427
-#: frame_main.cpp:435
-#: frame_main.cpp:441
+#: frame_main.cpp:326 frame_main.cpp:427 frame_main.cpp:435 frame_main.cpp:441
#: frame_main.cpp:477
msgid "Recent"
msgstr "Ostatnie"
@@ -3502,7 +3352,7 @@ msgstr "&Właściwości..."
#: frame_main.cpp:332
msgid "Open script properties window"
-msgstr "Otwiera okno właściwości skryptu"
+msgstr "Otwiera okno właściwości pliku"
#: frame_main.cpp:333
msgid "&Attachments..."
@@ -3540,9 +3390,7 @@ msgstr "Zamyka program"
msgid "&File"
msgstr "&Plik"
-#: frame_main.cpp:346
-#: frame_main_events.cpp:429
-#: subs_edit_ctrl.cpp:951
+#: frame_main.cpp:346 frame_main_events.cpp:429 subs_edit_ctrl.cpp:951
msgid "&Undo"
msgstr "&Cofnij"
@@ -3550,8 +3398,7 @@ msgstr "&Cofnij"
msgid "Undoes last action"
msgstr "Cofa ostatnią akcję"
-#: frame_main.cpp:347
-#: frame_main_events.cpp:435
+#: frame_main.cpp:347 frame_main_events.cpp:435
msgid "&Redo"
msgstr "&Powtórz"
@@ -3599,9 +3446,7 @@ msgstr "&Znajdź..."
msgid "Find words in subtitles"
msgstr "Wyszukuje słowa w napisach"
-#: frame_main.cpp:355
-#: hotkeys.cpp:350
-#: hotkeys.cpp:353
+#: frame_main.cpp:355 hotkeys.cpp:350 hotkeys.cpp:353
msgid "Find Next"
msgstr "Znajdź następne"
@@ -3701,8 +3546,7 @@ msgstr "Wstawia linię po bieżącej, rozpoczyna się od czasu wideo"
msgid "&Duplicate Lines"
msgstr "P&owiel linie"
-#: frame_main.cpp:381
-#: subs_grid.cpp:167
+#: frame_main.cpp:381 subs_grid.cpp:167
msgid "Duplicate the selected lines"
msgstr "Powiela wybrane linie"
@@ -3710,8 +3554,7 @@ msgstr "Powiela wybrane linie"
msgid "&Duplicate and Shift by 1 Frame"
msgstr "Po&wiel i przesuń o jedna klatkę"
-#: frame_main.cpp:382
-#: subs_grid.cpp:168
+#: frame_main.cpp:382 subs_grid.cpp:168
msgid "Duplicate lines and shift by one frame"
msgstr "Powiela i przesuwa o jedna klatkę"
@@ -3719,8 +3562,7 @@ msgstr "Powiela i przesuwa o jedna klatkę"
msgid "Delete Lines"
msgstr "Usuń linie"
-#: frame_main.cpp:383
-#: subs_grid.cpp:204
+#: frame_main.cpp:383 subs_grid.cpp:204
msgid "Delete currently selected lines"
msgstr "Usuwa zaznaczone linie"
@@ -3732,8 +3574,7 @@ msgstr "Połącz linie"
msgid "&Concatenate"
msgstr "&Złącz"
-#: frame_main.cpp:390
-#: subs_grid.cpp:177
+#: frame_main.cpp:390 subs_grid.cpp:177
msgid "Joins selected lines in a single one, concatenating text together"
msgstr "Łączy zaznaczone linie w jedną, łącząc razem teksty."
@@ -3741,8 +3582,7 @@ msgstr "Łączy zaznaczone linie w jedną, łącząc razem teksty."
msgid "Keep &First"
msgstr "Zatrzymaj &pierwszą."
-#: frame_main.cpp:391
-#: subs_grid.cpp:178
+#: frame_main.cpp:391 subs_grid.cpp:178
msgid "Joins selected lines in a single one, keeping text of first and discarding remaining"
msgstr "Łączy zaznaczone linie w jedną zachowując tekst pierwszej i odrzucając resztę"
@@ -3754,13 +3594,11 @@ msgstr "Jako &karaoke"
msgid "Joins selected lines in a single one, as karaoke"
msgstr "Łączy zaznaczone linie w jedną, jako karaoke"
-#: frame_main.cpp:394
-#: subs_grid.cpp:188
+#: frame_main.cpp:394 subs_grid.cpp:188
msgid "Recombine Lines"
msgstr "Rozplącz linie"
-#: frame_main.cpp:394
-#: subs_grid.cpp:188
+#: frame_main.cpp:394 subs_grid.cpp:188
msgid "Recombine subtitles when they have been split and merged"
msgstr "Rozplątuje linie gdy zostały podzielone i połączone"
@@ -3768,8 +3606,7 @@ msgstr "Rozplątuje linie gdy zostały podzielone i połączone"
msgid "Split Lines (by karaoke)"
msgstr "Podziel linie (po karaoke)"
-#: frame_main.cpp:395
-#: subs_grid.cpp:169
+#: frame_main.cpp:395 subs_grid.cpp:169
msgid "Uses karaoke timing to split line into multiple smaller lines"
msgstr "Używa bloków karaoke do rozbicia linii na kilka mniejszych linii"
@@ -3777,8 +3614,7 @@ msgstr "Używa bloków karaoke do rozbicia linii na kilka mniejszych linii"
msgid "Swap Lines"
msgstr "Zamień linie"
-#: frame_main.cpp:397
-#: subs_grid.cpp:173
+#: frame_main.cpp:397 subs_grid.cpp:173
msgid "Swaps the two selected lines"
msgstr "Zamienia dwie zaznaczone linie"
@@ -3834,8 +3670,7 @@ msgstr "Wyrównaj początek do wideo"
msgid "Snap End to Video"
msgstr "Wyrównaj koniec do wideo"
-#: frame_main.cpp:410
-#: hotkeys.cpp:371
+#: frame_main.cpp:410 hotkeys.cpp:371
msgid "Snap to Scene"
msgstr "Wyrównaj do sceny"
@@ -3859,8 +3694,7 @@ msgstr "Ustaw czasy ciągłymi"
msgid "Change &Start"
msgstr "Zmień &początek"
-#: frame_main.cpp:418
-#: subs_grid.cpp:183
+#: frame_main.cpp:418 subs_grid.cpp:183
msgid "Changes times of subs so start times begin on previous's end time"
msgstr "Zmienia czasy napisów tak, że początek ustawiony jest na końcu poprzedniej linii"
@@ -3868,8 +3702,7 @@ msgstr "Zmienia czasy napisów tak, że początek ustawiony jest na końcu poprz
msgid "Change &End"
msgstr "Zmień &koniec"
-#: frame_main.cpp:419
-#: subs_grid.cpp:184
+#: frame_main.cpp:419 subs_grid.cpp:184
msgid "Changes times of subs so end times begin on next's start time"
msgstr "Zmienia czasy napisów tak, że koniec ustawiony jest na początku następnej linii"
@@ -3999,7 +3832,7 @@ msgstr "&Fullscreen (4:3)"
#: frame_main.cpp:460
msgid "Forces video to 4:3 aspect ratio"
-msgstr "Wymusza na wideo proporcje obrazu 4:3"
+msgstr "Wymusza na wideo proporcje obrazu 4:3"
#: frame_main.cpp:461
msgid "&Widescreen (16:9)"
@@ -4007,7 +3840,7 @@ msgstr "&Widescreen (16:9)"
#: frame_main.cpp:461
msgid "Forces video to 16:9 aspect ratio"
-msgstr "Wymusza na wideo proporcje obrazu 16:9"
+msgstr "Wymusza na wideo proporcje obrazu 16:9"
#: frame_main.cpp:462
msgid "&Cinematic (2.35)"
@@ -4015,7 +3848,7 @@ msgstr "&Cinematic (2.35)"
#: frame_main.cpp:462
msgid "Forces video to 2.35 aspect ratio"
-msgstr "Wymusza na wideo proporcje obrazu 2.35"
+msgstr "Wymusza na wideo proporcje obrazu 2.35"
#: frame_main.cpp:463
msgid "Custom"
@@ -4041,13 +3874,11 @@ msgstr "&Skocz do..."
msgid "Jump to frame or time"
msgstr "Skocz do klatki lub czasu"
-#: frame_main.cpp:468
-#: hotkeys.cpp:367
+#: frame_main.cpp:468 hotkeys.cpp:367
msgid "Jump Video to Start"
msgstr "Przewiń wideo do początku"
-#: frame_main.cpp:469
-#: hotkeys.cpp:368
+#: frame_main.cpp:469 hotkeys.cpp:368
msgid "Jump Video to End"
msgstr "Przewiń wideo do końca"
@@ -4097,7 +3928,7 @@ msgstr "A&utomatyzacja"
#: frame_main.cpp:496
msgid "Select Aegisub interface language"
-msgstr "Wybierz język interfejsu Aegisub'a"
+msgstr "Wybierz język interfejsu Aegisuba"
#: frame_main.cpp:497
msgid "&Options..."
@@ -4177,7 +4008,7 @@ msgstr "Strona &www"
#: frame_main.cpp:519
msgid "Visit Aegisub's official website"
-msgstr "Odwiedź oficjalną stronę Aegisub'a"
+msgstr "Odwiedź oficjalną stronę Aegisuba"
#: frame_main.cpp:520
msgid "&Forums"
@@ -4185,7 +4016,7 @@ msgstr "&Forum"
#: frame_main.cpp:520
msgid "Visit Aegisub's forums"
-msgstr "Odwiedź forum Aegisub'a"
+msgstr "Odwiedź forum Aegisuba"
#: frame_main.cpp:521
msgid "&Bug Tracker..."
@@ -4193,7 +4024,7 @@ msgstr "&Bug tracker..."
#: frame_main.cpp:521
msgid "Visit Aegisub's bug tracker to report bugs and request new features"
-msgstr "Odwiedź bug tracker Aegisub'a by zgłaszać bugi i proponować nowe funkcje"
+msgstr "Odwiedź bug tracker Aegisuba by zgłaszać bugi i proponować nowe funkcje"
#: frame_main.cpp:522
msgid "&IRC Channel"
@@ -4201,7 +4032,7 @@ msgstr "Kanał &IRC"
#: frame_main.cpp:522
msgid "Visit Aegisub's official IRC channel"
-msgstr "Odwiedź oficjalny kanał IRC Aegisub'a"
+msgstr "Odwiedź oficjalny kanał IRC Aegisuba"
#: frame_main.cpp:526
msgid "&Check for Updates..."
@@ -4209,7 +4040,7 @@ msgstr "&Sprawdź dostępność aktualizacji..."
#: frame_main.cpp:526
msgid "Check to see if there is a new version of Aegisub available"
-msgstr "Sprawdza czy jest dostępna nowa wersja Aegisub'a"
+msgstr "Sprawdza czy jest dostępna nowa wersja Aegisuba"
#: frame_main.cpp:527
msgid "&About"
@@ -4219,8 +4050,7 @@ msgstr "&O programie"
msgid "Save subtitles file"
msgstr "Zapisz plik napisów"
-#: frame_main.cpp:759
-#: frame_main_events.cpp:742
+#: frame_main.cpp:759 frame_main_events.cpp:742
msgid "Choose charset code:"
msgstr "Wybierz kod kodowania znaków"
@@ -4266,20 +4096,20 @@ msgid ""
"\n"
"Change subtitles resolution to match video?"
msgstr ""
-"Rozdzielczość wczytanego wideo oraz rozdzielczość opisana w skrypcie nie pasują\n"
+"Wczytane wideo ma inną rozdzielczość niż ta podana we właściwościach pliku.\n"
"\n"
"Rozdzielczość wideo:\t%d x %d\n"
"Rozdzielczość skryptu:\t%d x %d\n"
"\n"
-"Dopasować rozdzielczość do wideo?"
+"Czy chcesz zmienić rozdzielczość we właściwościach na tą z wideo?"
#: frame_main.cpp:1117
msgid "Resolution mismatch"
-msgstr "Niezgodność rozdzielczość"
+msgstr "Niezgodność rozdzielczości"
#: frame_main.cpp:1124
msgid "Change script resolution"
-msgstr "Przelicz rozdzielczość skryptu"
+msgstr "Przelicz rozdzielczość pliku"
#: frame_main_events.cpp:274
msgid "Empty"
@@ -4289,13 +4119,11 @@ msgstr "Puste"
msgid "No Automation macros loaded"
msgstr "Brak załadowanych makr automatyzacji"
-#: frame_main_events.cpp:665
-#: frame_main_events.cpp:688
+#: frame_main_events.cpp:665 frame_main_events.cpp:688
msgid "Video Formats"
msgstr "Formaty wideo"
-#: frame_main_events.cpp:666
-#: frame_main_events.cpp:816
+#: frame_main_events.cpp:666 frame_main_events.cpp:816
#: frame_main_events.cpp:831
msgid "All Files"
msgstr "Wszystkie pliki"
@@ -4320,8 +4148,7 @@ msgstr "Otwórz plik audio"
msgid "Charset"
msgstr "Kodowanie znaków"
-#: frame_main_events.cpp:815
-#: frame_main_events.cpp:830
+#: frame_main_events.cpp:815 frame_main_events.cpp:830
msgid "All Supported Types"
msgstr "Wszystkie wspierane typy"
@@ -4389,14 +4216,11 @@ msgstr "uprość tagi."
msgid "hide tags."
msgstr "ukryj tagi."
-#: hotkeys.cpp:331
-#: hotkeys.cpp:335
+#: hotkeys.cpp:331 hotkeys.cpp:335
msgid "Exit"
msgstr "Wyjście"
-#: hotkeys.cpp:332
-#: hotkeys.cpp:336
-#: video_box.cpp:124
+#: hotkeys.cpp:332 hotkeys.cpp:336 video_box.cpp:124
msgid "Help"
msgstr "Pomoc"
@@ -4408,8 +4232,7 @@ msgstr "Pole edycji Zatwierdź"
msgid "Undo"
msgstr "Cofnij"
-#: hotkeys.cpp:343
-#: hotkeys.cpp:345
+#: hotkeys.cpp:343 hotkeys.cpp:345
msgid "Redo"
msgstr "Ponów"
@@ -4429,8 +4252,7 @@ msgstr "Wklej"
msgid "Paste Over"
msgstr "Wklej na"
-#: hotkeys.cpp:363
-#: hotkeys.cpp:365
+#: hotkeys.cpp:363 hotkeys.cpp:365
msgid "Video Jump"
msgstr "Wideo Skocz do"
@@ -4502,8 +4324,7 @@ msgstr "Siatka, przenieś wiersz w dół"
msgid "Grid move row up"
msgstr "Siatka, przenieś wiersz w górę"
-#: hotkeys.cpp:390
-#: hotkeys.cpp:392
+#: hotkeys.cpp:390 hotkeys.cpp:392
msgid "Grid delete rows"
msgstr "Siatka, usuń wiersze"
@@ -4723,8 +4544,7 @@ msgstr "Ładowanie klatek kluczowych"
msgid "Reading keyframes from video"
msgstr "Odczytywanie klatek kluczowych z wideo"
-#: mkv_wrap.cpp:170
-#: mkv_wrap.cpp:398
+#: mkv_wrap.cpp:170 mkv_wrap.cpp:398
msgid "Parsing Matroska"
msgstr "Przetwarzanie Matroski"
@@ -4840,8 +4660,7 @@ msgstr "Czas w klatkach"
msgid "actor change"
msgstr "zmiana aktora"
-#: subs_edit_box.cpp:653
-#: subs_edit_box.cpp:679
+#: subs_edit_box.cpp:653 subs_edit_box.cpp:679
msgid "layer change"
msgstr "zmiana warstwy"
@@ -4880,7 +4699,7 @@ msgstr "Brak propozycji poprawek."
#: subs_edit_ctrl.cpp:812
#, c-format
msgid "Add \"%s\" to dictionary"
-msgstr "Dodaj \"%s\" do słownika"
+msgstr "Dodaj \"%s\" do słownika"
#: subs_edit_ctrl.cpp:820
msgid "No spell checker suggestions"
@@ -4891,8 +4710,7 @@ msgstr "Brak sugestii"
msgid "Spell checker suggestions for \"%s\""
msgstr "Sprawdzania pisowni, sugestie dla \"%s\""
-#: subs_edit_ctrl.cpp:847
-#: subs_edit_ctrl.cpp:933
+#: subs_edit_ctrl.cpp:847 subs_edit_ctrl.cpp:933
msgid "Disable"
msgstr "Wyłącz"
@@ -4903,11 +4721,11 @@ msgstr "Język sprawdzania pisowni"
#: subs_edit_ctrl.cpp:911
#, c-format
msgid "Thesaurus suggestions for \"%s\""
-msgstr "Tezaurus, sugestie dla \"%s\""
+msgstr "Tezaurus, sugestie dla \"%s\""
#: subs_edit_ctrl.cpp:918
msgid "No thesaurus suggestions"
-msgstr "Tezaurus, brak propozycji."
+msgstr "Tezaurus: brak propozycji."
#: subs_edit_ctrl.cpp:946
msgid "Thesaurus language"
@@ -4917,15 +4735,11 @@ msgstr "Język tezaurusa"
msgid "Cu&t"
msgstr "W&ytnij"
-#: subs_edit_ctrl.cpp:954
-#: subs_grid.cpp:198
-#: timeedit_ctrl.cpp:307
+#: subs_edit_ctrl.cpp:954 subs_grid.cpp:198 timeedit_ctrl.cpp:307
msgid "&Copy"
msgstr "&Kopiuj"
-#: subs_edit_ctrl.cpp:955
-#: subs_grid.cpp:200
-#: timeedit_ctrl.cpp:308
+#: subs_edit_ctrl.cpp:955 subs_grid.cpp:200 timeedit_ctrl.cpp:308
msgid "&Paste"
msgstr "&Wklej"
@@ -5049,8 +4863,7 @@ msgstr "Zapisz klip audio"
msgid "Couldn't allocate memory."
msgstr "Nie można przydzielić pamięci."
-#: subs_grid.cpp:813
-#: subs_grid.cpp:814
+#: subs_grid.cpp:813 subs_grid.cpp:814
msgid "load"
msgstr "ładuj"
@@ -5194,8 +5007,7 @@ msgstr "Standard"
msgid "Standard mode, double click sets position"
msgstr "Tryb standardowy, dwuklik ustawia pozycje"
-#: video_box.cpp:115
-#: visual_tool_vector_clip.cpp:70
+#: video_box.cpp:115 visual_tool_vector_clip.cpp:70
msgid "Drag"
msgstr "Przeciągnij"
@@ -5279,25 +5091,20 @@ msgstr "Kopiuj współrzędne do schowka"
msgid "Unknown"
msgstr "Nieznany"
-#: video_provider_avs.cpp:289
-#: video_provider_dshow.cpp:311
+#: video_provider_avs.cpp:289 video_provider_dshow.cpp:311
msgid "You already have timecodes loaded. Replace them with the timecodes from the Matroska file?"
msgstr "Masz już załadowane timekody. Zamienić je z timekodami z pliku Matroski?"
-#: video_provider_avs.cpp:289
-#: video_provider_dshow.cpp:311
-#: video_provider_ffmpegsource.cpp:269
-#: video_provider_lavc.cpp:149
+#: video_provider_avs.cpp:289 video_provider_dshow.cpp:311
+#: video_provider_ffmpegsource.cpp:269 video_provider_lavc.cpp:149
msgid "Replace timecodes?"
msgstr "Zamienić timekody?"
-#: video_provider_ffmpegsource.cpp:269
-#: video_provider_lavc.cpp:149
+#: video_provider_ffmpegsource.cpp:269 video_provider_lavc.cpp:149
msgid "You already have timecodes loaded. Would you like to replace them with timecodes from the video file?"
msgstr "Masz już załadowane timekody. Zamienić je z timekodami z pliku wideo?"
-#: visual_tool.cpp:285
-#: visual_tool_drag.cpp:117
+#: visual_tool.cpp:285 visual_tool_drag.cpp:117
msgid "visual typesetting"
msgstr "visual typesetting"
@@ -5339,7 +5146,7 @@ msgstr "Wstaw"
#: visual_tool_vector_clip.cpp:75
msgid "Inserts a control point"
-msgstr "Wstawia punk kontrolny"
+msgstr "Wstawia punkt kontrolny"
#: visual_tool_vector_clip.cpp:76
msgid "Remove"
@@ -5421,7 +5228,7 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgstr "Narzędzia wizualne Wycinek wektorowy"
#~ msgid "This build of Aegisub uses the following C/C++ libraries:\n"
-#~ msgstr "Ten build Aegisub'a używa następujących bibliotek C/C++ :\n"
+#~ msgstr "Ten build Aegisuba używa następujących bibliotek C/C++:\n"
#~ msgid "Manual by:"
#~ msgstr "Manual:"
@@ -5511,14 +5318,8 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgid "Video Screenshot Path"
#~ msgstr "Ścieżka screenshotów video"
-#~ msgid ""
-#~ "Warning! The file is being opened using Avisynth's DirectShowSource, "
-#~ "which has unreliable seeking. Frame numbers might not match the real "
-#~ "number. PROCEED AT YOUR OWN RISK!"
-#~ msgstr ""
-#~ "Uwaga! Plik jest otwierany przy użyciu DirectShowSource z Avisynth, "
-#~ "który ma zawodne wyszukiwanie. Ilość klatek może się nie zgadzać z "
-#~ "rzeczywistością. "
+#~ msgid "Warning! The file is being opened using Avisynth's DirectShowSource, which has unreliable seeking. Frame numbers might not match the real number. PROCEED AT YOUR OWN RISK!"
+#~ msgstr "Uwaga! Plik jest otwierany przy użyciu DirectShowSource z Avisynth, który ma zawodne wyszukiwanie. Ilość klatek może się nie zgadzać z rzeczywistością. "
#~ msgid "DirectShow"
#~ msgstr "DirectShow"
@@ -5526,28 +5327,17 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgid "Dummy Video Provider"
#~ msgstr "Provider atrapy wideo"
-#~ msgid ""
-#~ "Automation module is Copyright (c) 2005-2006 Niels Martin Hansen (aka "
-#~ "jfs).\n"
-#~ msgstr ""
-#~ "Moduł Automatyzacji - Copyright (c) 2005-2006 Niels Martin Hansen (aka "
-#~ "jfs).\n"
+#~ msgid "Automation module is Copyright (c) 2005-2006 Niels Martin Hansen (aka jfs).\n"
+#~ msgstr "Moduł Automatyzacji - Copyright (c) 2005-2006 Niels Martin Hansen (aka jfs).\n"
-#~ msgid ""
-#~ "Motion tracker module is Copyright (c) 2006 Hajo Krabbenhoeft (aka "
-#~ "Tentacle).\n"
-#~ msgstr ""
-#~ "Moduł Motion tracker - Copyright (c) 2006 Hajo Krabbenhoeft (aka "
-#~ "Tentacle).\n"
+#~ msgid "Motion tracker module is Copyright (c) 2006 Hajo Krabbenhoeft (aka Tentacle).\n"
+#~ msgstr "Moduł Motion tracker - Copyright (c) 2006 Hajo Krabbenhoeft (aka Tentacle).\n"
-#~ msgid ""
-#~ "Coding by ArchMageZeratuL, jfs, Myrsloik, equinox, Tentacle and nmap.\n"
-#~ msgstr ""
-#~ "Kodowanie: ArchMageZeratuL, jfs, Myrsloik, equinox, Tentacle and nmap.\n"
+#~ msgid "Coding by ArchMageZeratuL, jfs, Myrsloik, equinox, Tentacle and nmap.\n"
+#~ msgstr "Kodowanie: ArchMageZeratuL, jfs, Myrsloik, equinox, Tentacle and nmap.\n"
#~ msgid "Manual by ArchMage ZeratuL, jfs, movax, Kobi, TheFluff and Jcubed.\n"
-#~ msgstr ""
-#~ "Instrukcja: ArchMage ZeratuL, jfs, movax, Kobi, TheFluff and Jcubed.\n"
+#~ msgstr "Instrukcja: ArchMage ZeratuL, jfs, movax, Kobi, TheFluff and Jcubed.\n"
#~ msgid "SVN hosting by BerliOS and Mentar.\n"
#~ msgstr "Hosting SVN: BerliOS and Mentar.\n"
@@ -5555,9 +5345,8 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgid "Stop"
#~ msgstr "Stop"
-#~ msgid ""
-#~ "Substation Alpha Mode - Left click sets start and right click sets end"
-#~ msgstr "Tryb Substation Alpha - LPM ustawia początek a PPM koniec"
+#~ msgid "Substation Alpha Mode - Left click sets start and right click sets end"
+#~ msgstr "Tryb Substation Alpha - LPM ustawia początek a PPM koniec"
#~ msgid "&Create..."
#~ msgstr "U&twórz"
@@ -5577,7 +5366,7 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgid "Number of points to track:"
#~ msgstr "Liczba punktów do wyśledzenia"
-#~ msgid "Minimal (squared) distance between two points: "
+#~ msgid "Minimal (squared) distance between two points: "
#~ msgstr "Minimalna (spotęgowana) odległość pomiędzy dwoma punktami:"
#~ msgid "Maximum feature movement:"
@@ -5607,12 +5396,8 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgid "Go!"
#~ msgstr "Start!"
-#~ msgid ""
-#~ "List of all hotkeys (shortcuts) available in Aegisub. Double click on any "
-#~ "item to reassign it."
-#~ msgstr ""
-#~ "Lista wszystkich skrótów klawiszowych dostępnych w Aegisub. Kliknij "
-#~ "dwukrotnie na któryś z nich aby go zmodyfikować."
+#~ msgid "List of all hotkeys (shortcuts) available in Aegisub. Double click on any item to reassign it."
+#~ msgstr "Lista wszystkich skrótów klawiszowych dostępnych w Aegisub. Kliknij dwukrotnie na któryś z nich aby go zmodyfikować."
#~ msgid "Choose"
#~ msgstr "Wybierz"
@@ -5705,7 +5490,7 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgstr "Wymusza na wideo proporcje obrazu (4:3)"
#~ msgid "Forces video to widescreen aspect ratio"
-#~ msgstr "Wymusza na wideo proporcje obrazu (16:9)"
+#~ msgstr "Wymusza na wideo proporcje obrazu (16:9)"
#~ msgid "&2.35 Aspect Ratio"
#~ msgstr "Proporcje obrazu 2.35"
@@ -5717,7 +5502,7 @@ msgstr "Rysuje wygładzoną odręczną figurę"
#~ msgstr "&Narzędzia"
#~ msgid "Visit Aegisub's bug tracker"
-#~ msgstr "Odwiedź bug tracker Aegisub'a"
+#~ msgstr "Odwiedź bug tracker Aegisuba"
#~ msgid "Save file"
#~ msgstr "Zapisz plik"
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644
index 38a809c06..000000000
--- a/src/Makefile
+++ /dev/null
@@ -1,208 +0,0 @@
-include $(dir $(lastword $(MAKEFILE_LIST)))../header.mk
-
-PROGRAM += $(d)src
-
-src_CPPFLAGS := -I$(d) -I.. -I$(d)include -I$(TOP)libaegisub/include -I$(TOP)build \
- $(CFLAGS_PTHREAD) $(CFLAGS_FFTW3) $(CFLAGS_ICU) $(CPPFLAGS_BOOST)
-src_CXXFLAGS := $(CXXFLAGS_WX)
-src_LIBS := $(LIBS_GL) $(LIBS_PTHREAD) $(LIBS_WX) $(LIBS_FREETYPE) \
- $(LIBS_LIBASS) $(LIBS_FONTCONFIG) $(LIBS_FFTW3) $(LIBS_BOOST) $(LIBS_ICU)
-src_PCH := $(d)agi_pre.h
-src_INSTALLNAME := $(AEGISUB_COMMAND)
-
-src_OBJ := \
- $(patsubst %.cpp,%.o,$(sort $(wildcard $(d)command/*.cpp))) \
- $(patsubst %.cpp,%.o,$(sort $(wildcard $(d)dialog_*.cpp))) \
- $(patsubst %.cpp,%.o,$(sort $(wildcard $(d)subtitle_format*.cpp))) \
- $(patsubst %.cpp,%.o,$(sort $(wildcard $(d)visual_tool*.cpp))) \
- $(d)MatroskaParser.o \
- $(d)aegisublocale.o \
- $(d)ass_attachment.o \
- $(d)ass_dialogue.o \
- $(d)ass_entry.o \
- $(d)ass_export_filter.o \
- $(d)ass_exporter.o \
- $(d)ass_file.o \
- $(d)ass_karaoke.o \
- $(d)ass_override.o \
- $(d)ass_parser.o \
- $(d)ass_style.o \
- $(d)ass_style_storage.o \
- $(d)async_video_provider.o \
- $(d)audio_box.o \
- $(d)audio_colorscheme.o \
- $(d)audio_controller.o \
- $(d)audio_display.o \
- $(d)audio_karaoke.o \
- $(d)audio_marker.o \
- $(d)audio_player.o \
- $(d)audio_provider_factory.o \
- $(d)audio_renderer.o \
- $(d)audio_renderer_spectrum.o \
- $(d)audio_renderer_waveform.o \
- $(d)audio_timing_dialogue.o \
- $(d)audio_timing_karaoke.o \
- $(d)auto4_base.o \
- $(d)auto4_lua.o \
- $(d)auto4_lua_assfile.o \
- $(d)auto4_lua_dialog.o \
- $(d)auto4_lua_progresssink.o \
- $(d)avisynth_wrap.o \
- $(d)base_grid.o \
- $(d)charset_detect.o \
- $(d)colorspace.o \
- $(d)colour_button.o \
- $(d)compat.o \
- $(d)context.o \
- $(d)crash_writer.o \
- $(d)export_fixstyle.o \
- $(d)export_framerate.o \
- $(d)fft.o \
- $(d)font_file_lister.o \
- $(d)frame_main.o \
- $(d)gl_text.o \
- $(d)gl_wrap.o \
- $(d)grid_column.o \
- $(d)help_button.o \
- $(d)hotkey.o \
- $(d)hotkey_data_view_model.o \
- $(d)initial_line_state.o \
- $(d)main.o \
- $(d)menu.o \
- $(d)mkv_wrap.o \
- $(d)pen.o \
- $(d)persist_location.o \
- $(d)preferences.o \
- $(d)preferences_base.o \
- $(d)project.o \
- $(d)resolution_resampler.o \
- $(d)search_replace_engine.o \
- $(d)selection_controller.o \
- $(d)spellchecker.o \
- $(d)spline.o \
- $(d)spline_curve.o \
- $(d)string_codec.o \
- $(d)subs_controller.o \
- $(d)subs_edit_box.o \
- $(d)subs_edit_ctrl.o \
- $(d)subs_preview.o \
- $(d)subtitles_provider.o \
- $(d)subtitles_provider_libass.o \
- $(d)text_file_reader.o \
- $(d)text_file_writer.o \
- $(d)text_selection_controller.o \
- $(d)thesaurus.o \
- $(d)timeedit_ctrl.o \
- $(d)toggle_bitmap.o \
- $(d)toolbar.o \
- $(d)tooltip_manager.o \
- $(d)utils.o \
- $(d)validators.o \
- $(d)vector2d.o \
- $(d)version.o \
- $(d)video_box.o \
- $(d)video_controller.o \
- $(d)video_display.o \
- $(d)video_frame.o \
- $(d)video_out_gl.o \
- $(d)video_provider_cache.o \
- $(d)video_provider_dummy.o \
- $(d)video_provider_manager.o \
- $(d)video_provider_yuv4mpeg.o \
- $(d)video_slider.o \
- $(d)visual_feature.o \
- $(LIBS_LUA) \
- $(TOP)lib/libaegisub.a \
- $(TOP)lib/libluabins.a \
- $(TOP)lib/libresrc.a \
-
-ifeq (yes, $(BUILD_DARWIN))
-src_OBJ += $(d)font_file_lister_coretext.o
-src_OBJ += $(patsubst %.mm,%.o,$(sort $(wildcard $(d)osx/*.mm)))
-$(d)font_file_lister_coretext.o_FLAGS := -fobjc-arc
-else
-src_OBJ += $(d)font_file_lister_fontconfig.o
-endif
-
-###############
-# AUDIO PLAYERS
-###############
-$(d)audio_player_alsa.o_FLAGS := $(CFLAGS_ALSA)
-$(d)audio_player_portaudio.o_FLAGS := $(CFLAGS_PORTAUDIO)
-$(d)audio_player_pulse.o_FLAGS := $(CFLAGS_LIBPULSE)
-$(d)audio_player_openal.o_FLAGS := $(CFLAGS_OPENAL)
-$(d)audio_player_oss.o_FLAGS := $(CFLAGS_OSS)
-
-ifeq (yes, $(HAVE_ALSA))
-src_LIBS += $(LIBS_ALSA)
-src_OBJ += $(d)audio_player_alsa.o
-endif
-
-ifeq (yes, $(HAVE_PORTAUDIO))
-src_LIBS += $(LIBS_PORTAUDIO)
-src_OBJ += $(d)audio_player_portaudio.o
-endif
-
-ifeq (yes, $(HAVE_LIBPULSE))
-src_LIBS += $(LIBS_LIBPULSE)
-src_OBJ += $(d)audio_player_pulse.o
-endif
-
-ifeq (yes, $(HAVE_OPENAL))
-src_LIBS += $(LIBS_OPENAL)
-src_OBJ += $(d)audio_player_openal.o
-endif
-
-ifeq (yes, $(HAVE_OSS))
-src_OBJ += $(d)audio_player_oss.o
-endif
-
-#######################
-# AUDIO / VIDEO SUPPORT
-#######################
-ifeq (yes, $(HAVE_FFMS2))
-$(d)audio_provider_ffmpegsource.o_FLAGS := $(CFLAGS_FFMS2)
-$(d)video_provider_ffmpegsource.o_FLAGS := $(CFLAGS_FFMS2)
-$(d)ffmpegsource_common.o_FLAGS := $(CFLAGS_FFMS2)
-$(d)preferences.o_FLAGS := $(CFLAGS_FFMS2)
-src_LIBS += $(LIBS_FFMS2)
-src_OBJ += \
- $(d)audio_provider_ffmpegsource.o \
- $(d)video_provider_ffmpegsource.o \
- $(d)ffmpegsource_common.o
-endif
-
-##############
-# MISCELLANOUS
-##############
-ifeq (yes, $(HAVE_HUNSPELL))
-$(d)spellchecker_hunspell.o_FLAGS := $(CFLAGS_HUNSPELL)
-src_LIBS += $(LIBS_HUNSPELL)
-src_OBJ += $(d)spellchecker_hunspell.o
-endif
-
-ifeq (yes, $(HAVE_UCHARDET))
-src_LIBS += $(LIBS_UCHARDET)
-endif
-
-#####################
-# SOURCE-LEVEL CFLAGS
-#####################
-$(d)MatroskaParser.o_FLAGS := -Wno-sometimes-uninitialized
-$(d)audio_player.o_FLAGS := $(CFLAGS_ALSA) $(CFLAGS_PORTAUDIO) $(CFLAGS_LIBPULSE) $(CFLAGS_OPENAL)
-$(d)audio_provider_factory.o_FLAGS := $(CFLAGS_FFMS2)
-$(d)auto4_base.o_FLAGS := $(CFLAGS_FREETYPE)
-$(d)charset_detect.o_FLAGS := -D_X86_
-$(d)font_file_lister_fontconfig.o_FLAGS := $(CFLAGS_FONTCONFIG)
-$(d)subtitles_provider.o_FLAGS := $(CFLAGS_LIBASS)
-$(d)subtitles_provider_libass.o_FLAGS := $(CFLAGS_LIBASS) -Wno-c++11-narrowing
-$(d)text_file_reader.o_FLAGS := -D_X86_
-$(d)video_provider_manager.o_FLAGS := $(CFLAGS_FFMS2)
-$(d)auto4_lua.o_FLAGS := $(CFLAGS_LUA)
-$(d)auto4_lua_assfile.o_FLAGS := $(CFLAGS_LUA)
-$(d)auto4_lua_dialog.o_FLAGS := $(CFLAGS_LUA)
-$(d)auto4_lua_progresssink.o_FLAGS := $(CFLAGS_LUA)
-
-$(src_OBJ): $(d)libresrc/bitmap.h $(d)libresrc/default_config.h
-
-include $(d)libresrc/Makefile
diff --git a/src/aegisublocale.cpp b/src/aegisublocale.cpp
index de8df7296..cc5f4e10d 100644
--- a/src/aegisublocale.cpp
+++ b/src/aegisublocale.cpp
@@ -55,6 +55,9 @@ wxTranslations *AegisubLocale::GetTranslations() {
if (!translations) {
wxTranslations::Set(translations = new wxTranslations);
wxFileTranslationsLoader::AddCatalogLookupPathPrefix(config::path->Decode("?data/locale/").wstring());
+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(APPIMAGE_BUILD)
+ wxFileTranslationsLoader::AddCatalogLookupPathPrefix(P_LOCALE);
+#endif
}
return translations;
}
diff --git a/src/agi_pre.cpp b/src/agi_pre.cpp
deleted file mode 100644
index a9486c83e..000000000
--- a/src/agi_pre.cpp
+++ /dev/null
@@ -1 +0,0 @@
-// A dummy file for compiling the precompiled header with VC++
diff --git a/src/ass_dialogue.cpp b/src/ass_dialogue.cpp
index 88ce9386a..518e4d4fe 100644
--- a/src/ass_dialogue.cpp
+++ b/src/ass_dialogue.cpp
@@ -118,7 +118,7 @@ void AssDialogue::Parse(std::string const& raw) {
Style = tkn.next_str_trim();
Actor = tkn.next_str_trim();
for (int& margin : Margin)
- margin = mid(0, boost::lexical_cast(tkn.next_str()), 9999);
+ margin = mid(-9999, boost::lexical_cast(tkn.next_str()), 99999);
Effect = tkn.next_str_trim();
std::string text{tkn.next_tok().begin(), str.end()};
diff --git a/src/ass_style.cpp b/src/ass_style.cpp
index 37645c043..0b778b328 100644
--- a/src/ass_style.cpp
+++ b/src/ass_style.cpp
@@ -158,9 +158,9 @@ AssStyle::AssStyle(std::string const& str, int version) {
if (version == 0)
alignment = SsaToAss(alignment);
- Margin[0] = mid(0, p.next_int(), 9999);
- Margin[1] = mid(0, p.next_int(), 9999);
- Margin[2] = mid(0, p.next_int(), 9999);
+ Margin[0] = mid(-9999, p.next_int(), 99999);
+ Margin[1] = mid(-9999, p.next_int(), 99999);
+ Margin[2] = mid(-9999, p.next_int(), 99999);
// Skip alpha level
if (version == 0)
diff --git a/src/ass_style.h b/src/ass_style.h
index bbbf94787..d366880d4 100644
--- a/src/ass_style.h
+++ b/src/ass_style.h
@@ -41,7 +41,7 @@ class AssStyle final : public AssEntry, public AssEntryListHook {
public:
std::string name = "Default"; ///< Name of the style; must be case-insensitively unique within a file despite being case-sensitive
std::string font = "Arial"; ///< Font face name
- double fontsize = 20.; ///< Font size
+ double fontsize = 48.; ///< Font size
agi::Color primary{ 255, 255, 255 }; ///< Default text color
agi::Color secondary{ 255, 0, 0 }; ///< Text color for not-yet-reached karaoke syllables
diff --git a/src/audio_box.cpp b/src/audio_box.cpp
index 4d1f1518f..dea20cd31 100644
--- a/src/audio_box.cpp
+++ b/src/audio_box.cpp
@@ -129,10 +129,9 @@ END_EVENT_TABLE()
void AudioBox::OnMouseWheel(wxMouseEvent &evt) {
if (!ForwardMouseWheelEvent(audioDisplay, evt))
return;
-
bool zoom = evt.CmdDown() != OPT_GET("Audio/Wheel Default to Zoom")->GetBool();
if (!zoom) {
- int amount = -evt.GetWheelRotation() * GetClientSize().GetWidth() / (evt.GetWheelDelta() * 3);
+ int amount = -evt.GetWheelRotation();
// If the user did a horizontal scroll the amount should be inverted
// for it to be natural.
if (evt.GetWheelAxis() == 1) amount = -amount;
diff --git a/src/audio_colorscheme.cpp b/src/audio_colorscheme.cpp
index a7a1142c9..c918ffb97 100644
--- a/src/audio_colorscheme.cpp
+++ b/src/audio_colorscheme.cpp
@@ -37,7 +37,7 @@
AudioColorScheme::AudioColorScheme(int prec, std::string const& scheme_name, int audio_rendering_style)
: palette((3<(audio_rendering_style))
diff --git a/src/audio_karaoke.cpp b/src/audio_karaoke.cpp
index 6d3d16fa9..2abeb79d8 100644
--- a/src/audio_karaoke.cpp
+++ b/src/audio_karaoke.cpp
@@ -280,8 +280,7 @@ void AudioKaraoke::OnMouse(wxMouseEvent &event) {
split_area->Refresh(false);
scroll_timer.Start(50);
split_area->CaptureMouse();
- wxTimerEvent evt;
- OnScrollTimer(evt);
+ OnScrollTimer();
}
return;
}
@@ -317,7 +316,7 @@ void AudioKaraoke::OnMouse(wxMouseEvent &event) {
split_area->Refresh(false);
}
-void AudioKaraoke::OnScrollTimer(wxTimerEvent &) {
+void AudioKaraoke::OnScrollTimer() {
scroll_x += scroll_dir * char_width * 3;
int max_scroll = rendered_line.GetWidth() + 20 - split_area->GetClientSize().GetWidth();
@@ -329,6 +328,10 @@ void AudioKaraoke::OnScrollTimer(wxTimerEvent &) {
split_area->Refresh(false);
}
+void AudioKaraoke::OnScrollTimer(wxTimerEvent&) {
+ OnScrollTimer();
+}
+
void AudioKaraoke::LoadFromLine() {
scroll_x = 0;
scroll_timer.Stop();
diff --git a/src/audio_karaoke.h b/src/audio_karaoke.h
index 2d14207d0..520f48682 100644
--- a/src/audio_karaoke.h
+++ b/src/audio_karaoke.h
@@ -142,7 +142,8 @@ class AudioKaraoke final : public wxWindow {
void OnPaint(wxPaintEvent &event);
void OnSize(wxSizeEvent &event);
void OnAudioOpened(agi::AudioProvider *provider);
- void OnScrollTimer(wxTimerEvent &event);
+ void OnScrollTimer();
+ void OnScrollTimer(wxTimerEvent& event);
public:
/// Constructor
diff --git a/src/audio_renderer_spectrum.cpp b/src/audio_renderer_spectrum.cpp
index 2022a9475..217090a6f 100644
--- a/src/audio_renderer_spectrum.cpp
+++ b/src/audio_renderer_spectrum.cpp
@@ -208,7 +208,7 @@ void AudioSpectrumRenderer::FillBlock(size_t block_index, float *block)
assert(block);
int64_t first_sample = (((int64_t)block_index) << derivation_dist) - ((int64_t)1 << derivation_size);
- provider->GetAudio(audio_scratch.data(), first_sample, 2 << derivation_size);
+ provider->GetAudio(&audio_scratch[0], first_sample, 2 << derivation_size);
// Because the FFTs used here are unnormalized DFTs, we have to compensate
// the possible length difference between derivation_size used in the
@@ -263,7 +263,7 @@ void AudioSpectrumRenderer::Render(wxBitmap &bmp, int start, AudioRenderingStyle
return;
assert(bmp.IsOk());
- assert(bmp.GetDepth() == 24);
+ assert(bmp.GetDepth() == 24 || bmp.GetDepth() == 32);
int end = start + bmp.GetWidth();
diff --git a/src/colour_button.cpp b/src/colour_button.cpp
index f7ff956b4..83671ebf3 100644
--- a/src/colour_button.cpp
+++ b/src/colour_button.cpp
@@ -18,10 +18,10 @@
#include "dialogs.h"
-#if (BOOST_VERSION / 100000) <= 1 && ((BOOST_VERSION / 100) % 1000) <= 67
-#include
-#else
+#if BOOST_VERSION >= 106900
#include
+#else
+#include
#endif
AGI_DEFINE_EVENT(EVT_COLOR, agi::Color);
diff --git a/src/command/command.h b/src/command/command.h
index 38ea38f8a..08752adbe 100644
--- a/src/command/command.h
+++ b/src/command/command.h
@@ -34,12 +34,12 @@ namespace agi { struct Context; }
#define STR_HELP(a) wxString StrHelp() const override { return _(a); }
#define CMD_TYPE(a) int Type() const override { using namespace cmd; return a; }
-#define CMD_ICON(icon) wxBitmap Icon(int size, wxLayoutDirection dir = wxLayout_LeftToRight) const override { \
- if (size == 64) return GETIMAGEDIR(icon##_64, dir); \
- if (size == 48) return GETIMAGEDIR(icon##_48, dir); \
- if (size == 32) return GETIMAGEDIR(icon##_32, dir); \
- if (size == 24) return GETIMAGEDIR(icon##_24, dir); \
- return GETIMAGEDIR(icon##_16, dir); \
+#define CMD_ICON(icon) wxBitmap Icon(int size, double scale = 1.0, wxLayoutDirection dir = wxLayout_LeftToRight) const override { \
+ if (size * scale >= 64) return GETIMAGEDIR(icon##_64, scale, dir); \
+ if (size * scale >= 48) return GETIMAGEDIR(icon##_48, scale, dir); \
+ if (size * scale >= 32) return GETIMAGEDIR(icon##_32, scale, dir); \
+ if (size * scale >= 24) return GETIMAGEDIR(icon##_24, scale, dir); \
+ return GETIMAGEDIR(icon##_16, scale, dir); \
}
#define COMMAND_GROUP(cname, cmdname, menu, disp, help) \
@@ -107,7 +107,7 @@ DEFINE_EXCEPTION(CommandNotFound, CommandError);
/// Request icon.
/// @param size Icon size.
- virtual wxBitmap Icon(int size, wxLayoutDirection = wxLayout_LeftToRight) const { return wxBitmap{}; }
+ virtual wxBitmap Icon(int size, double scale = 1.0, wxLayoutDirection = wxLayout_LeftToRight) const { return wxBitmap{}; }
/// Command function
virtual void operator()(agi::Context *c)=0;
diff --git a/src/dialog_about.cpp b/src/dialog_about.cpp
index efbc0080f..ebc3f8bdc 100644
--- a/src/dialog_about.cpp
+++ b/src/dialog_about.cpp
@@ -49,10 +49,11 @@ void ShowAboutDialog(wxWindow *parent) {
// Generate about string
wxString aboutString = wxString("Aegisub ") + GetAegisubShortVersionString() + ".\n"
- "Copyright (c) 2005-2014 Rodrigo Braz Monteiro, Niels Martin Hansen, Thomas Goyne et al.\n\n"
+ "Copyright (c) 2005-2019 Rodrigo Braz Monteiro, Niels Martin Hansen, Thomas Goyne et al.\n\n"
"Programmers:\n"
" Alysson Souza e Silva\n"
" Amar Takhar\n"
+ " Charlie Jiang\n"
" Dan Donovan\n"
" Daniel Moscoviter\n"
" David Conrad\n"
@@ -67,6 +68,7 @@ void ShowAboutDialog(wxWindow *parent) {
" Muhammad Lukman Nasaruddin\n"
" Niels Martin Hansen\n"
" Patryk Pomykalski\n"
+ " Qirui Wang\n"
" Ravi Pinjala\n"
" Rodrigo Braz Monteiro\n"
" Simone Cociancich\n"
diff --git a/src/dialog_dummy_video.cpp b/src/dialog_dummy_video.cpp
index 23b32ce17..d6e61b6d6 100644
--- a/src/dialog_dummy_video.cpp
+++ b/src/dialog_dummy_video.cpp
@@ -72,9 +72,11 @@ static ResolutionShortcut resolutions[] = {
{"704x396 (SD widescreen)", 704, 396},
{"640x352 (SD widescreen MOD16)", 640, 352},
{"704x400 (SD widescreen MOD16)", 704, 400},
+ {"1024x576 (SuperPAL widescreen)", 1024, 576},
{"1280x720 (HD 720p)", 1280, 720},
- {"1920x1080 (HD 1080p)", 1920, 1080},
- {"1024x576 (SuperPAL widescreen)", 1024, 576}
+ {"1920x1080 (FHD 1080p)", 1920, 1080},
+ {"2560x1440 (QHD 1440p)", 2560, 1440},
+ {"3840x2160 (4K UHD 2160p)", 3840, 2160},
};
wxSpinCtrl *spin_ctrl(wxWindow *parent, int min, int max, int *value) {
diff --git a/src/dialog_fonts_collector.cpp b/src/dialog_fonts_collector.cpp
index 78ac20ef5..bc97c152d 100644
--- a/src/dialog_fonts_collector.cpp
+++ b/src/dialog_fonts_collector.cpp
@@ -243,7 +243,7 @@ DialogFontsCollector::DialogFontsCollector(agi::Context *c)
wxStaticBoxSizer *destination_box = new wxStaticBoxSizer(wxVERTICAL, this, _("Destination"));
dest_label = new wxStaticText(this, -1, " ");
- dest_ctrl = new wxTextCtrl(this, -1, c->path->Decode(OPT_GET("Path/Fonts Collector Destination")->GetString()).wstring());
+ dest_ctrl = new wxTextCtrl(this, -1, to_wx(OPT_GET("Path/Fonts Collector Destination")->GetString()));
dest_browse_button = new wxButton(this, -1, _("&Browse..."));
wxSizer *dest_browse_sizer = new wxBoxSizer(wxHORIZONTAL);
@@ -294,29 +294,29 @@ void DialogFontsCollector::OnStart(wxCommandEvent &) {
collection_log->ClearAll();
collection_log->SetReadOnly(true);
- agi::fs::path dest;
+ agi::fs::path dest_path;
if (mode != FcMode::CheckFontsOnly) {
- dest = path.Decode(mode == FcMode::CopyToScriptFolder ? "?script/" : from_wx(dest_ctrl->GetValue()));
+ auto dest = mode == FcMode::CopyToScriptFolder ? "?script/" : from_wx(dest_ctrl->GetValue());
+ dest_path = path.Decode(dest);
if (mode != FcMode::CopyToZip) {
- if (agi::fs::FileExists(dest))
+ if (agi::fs::FileExists(dest_path))
wxMessageBox(_("Invalid destination."), _("Error"), wxOK | wxICON_ERROR | wxCENTER, this);
try {
- agi::fs::CreateDirectory(dest);
+ agi::fs::CreateDirectory(dest_path);
}
catch (agi::Exception const&) {
wxMessageBox(_("Could not create destination folder."), _("Error"), wxOK | wxICON_ERROR | wxCENTER, this);
return;
}
}
- else if (agi::fs::DirectoryExists(dest) || dest.filename().empty()) {
+ else if (agi::fs::DirectoryExists(dest_path) || dest_path.filename().empty()) {
wxMessageBox(_("Invalid path for .zip file."), _("Error"), wxOK | wxICON_ERROR | wxCENTER, this);
return;
}
- }
- if (mode != FcMode::CheckFontsOnly)
- OPT_SET("Path/Fonts Collector Destination")->SetString(dest.string());
+ OPT_SET("Path/Fonts Collector Destination")->SetString(dest);
+ }
// Disable the UI while it runs as we don't support canceling
EnableCloseButton(false);
@@ -327,7 +327,7 @@ void DialogFontsCollector::OnStart(wxCommandEvent &) {
collection_mode->Enable(false);
dest_label->Enable(false);
- FontsCollectorThread(subs, dest, mode, GetEventHandler());
+ FontsCollectorThread(subs, dest_path, mode, GetEventHandler());
}
void DialogFontsCollector::OnBrowse(wxCommandEvent &) {
@@ -400,7 +400,11 @@ void DialogFontsCollector::OnAddText(ValueEvent &event) {
auto const& utf8 = str.second.utf8_str();
collection_log->AppendTextRaw(utf8.data(), utf8.length());
if (str.first) {
- collection_log->StartStyling(pos, 31);
+#if wxVERSION_NUMBER >= 3100
+ collection_log->StartStyling(pos);
+#else
+ collection_log->StartStyling(pos, 255);
+#endif
collection_log->SetStyling(utf8.length(), str.first);
}
collection_log->GotoPos(pos + utf8.length());
@@ -415,8 +419,7 @@ void DialogFontsCollector::OnCollectionComplete(wxThreadEvent &) {
if (path.Decode("?script") == "?script")
collection_mode->Enable(2, false);
- wxCommandEvent evt;
- OnRadio(evt);
+ UpdateControls();
}
}
diff --git a/src/dialog_properties.cpp b/src/dialog_properties.cpp
index 501a96f19..76d7477cd 100644
--- a/src/dialog_properties.cpp
+++ b/src/dialog_properties.cpp
@@ -91,6 +91,14 @@ DialogProperties::DialogProperties(agi::Context *c)
{
d.SetIcon(GETICON(properties_toolbutton_16));
+ // Button sizer
+ // Create buttons first. See:
+ // https://github.com/wangqr/Aegisub/issues/6
+ // https://trac.wxwidgets.org/ticket/18472#comment:9
+ auto ButtonSizer = d.CreateStdDialogButtonSizer(wxOK | wxCANCEL | wxHELP);
+ d.Bind(wxEVT_BUTTON, &DialogProperties::OnOK, this, wxID_OK);
+ d.Bind(wxEVT_BUTTON, std::bind(&HelpButton::OpenPage, "Properties"), wxID_HELP);
+
// Script details crap
wxSizer *TopSizer = new wxStaticBoxSizer(wxHORIZONTAL,&d,_("Script"));
auto TopSizerGrid = new wxFlexGridSizer(0,2,5,5);
@@ -108,8 +116,8 @@ DialogProperties::DialogProperties(agi::Context *c)
TopSizer->Add(TopSizerGrid,1,wxALL | wxEXPAND,0);
// Resolution box
- ResX = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxSize(50,20),0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResX")));
- ResY = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxSize(50,20),0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResY")));
+ ResX = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxSize(50, -1),0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResX")));
+ ResY = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxSize(50, -1),0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResY")));
wxButton *FromVideo = new wxButton(&d,-1,_("From &video"));
if (!c->project->VideoProvider())
@@ -156,11 +164,6 @@ DialogProperties::DialogProperties(agi::Context *c)
optionsGrid->AddGrowableCol(1,1);
optionsBox->Add(optionsGrid,1,wxEXPAND,0);
- // Button sizer
- auto ButtonSizer = d.CreateStdDialogButtonSizer(wxOK | wxCANCEL | wxHELP);
- d.Bind(wxEVT_BUTTON, &DialogProperties::OnOK, this, wxID_OK);
- d.Bind(wxEVT_BUTTON, std::bind(&HelpButton::OpenPage, "Properties"), wxID_HELP);
-
// MainSizer
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
MainSizer->Add(TopSizer,0,wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND,5);
@@ -173,7 +176,7 @@ DialogProperties::DialogProperties(agi::Context *c)
}
void DialogProperties::AddProperty(wxSizer *sizer, wxString const& label, std::string const& property) {
- wxTextCtrl *ctrl = new wxTextCtrl(&d, -1, to_wx(c->ass->GetScriptInfo(property)), wxDefaultPosition, wxSize(200, 20));
+ wxTextCtrl *ctrl = new wxTextCtrl(&d, -1, to_wx(c->ass->GetScriptInfo(property)), wxDefaultPosition, wxSize(200, -1));
sizer->Add(new wxStaticText(&d, -1, label), wxSizerFlags().Center().Left());
sizer->Add(ctrl, wxSizerFlags(1).Expand());
properties.push_back({property, ctrl});
diff --git a/src/dialog_resample.cpp b/src/dialog_resample.cpp
index bf616cb83..2b7d40ee9 100644
--- a/src/dialog_resample.cpp
+++ b/src/dialog_resample.cpp
@@ -170,7 +170,7 @@ DialogResample::DialogResample(agi::Context *c, ResampleSettings &settings)
auto source_matrix_sizer = new wxBoxSizer(wxHORIZONTAL);
source_matrix_sizer->Add(new wxStaticText(&d, -1, _("YCbCr Matrix:")), wxSizerFlags().Border(wxRIGHT).Center());
- source_matrix_sizer->Add(source_matrix, wxSizerFlags(1).Center().Right());
+ source_matrix_sizer->Add(source_matrix, wxSizerFlags(1).Center());
auto source_res_box = new wxStaticBoxSizer(wxVERTICAL, &d, _("Source Resolution"));
source_res_box->Add(source_res_sizer, wxSizerFlags(1).Expand().Border(wxBOTTOM));
@@ -184,7 +184,7 @@ DialogResample::DialogResample(agi::Context *c, ResampleSettings &settings)
auto dest_matrix_sizer = new wxBoxSizer(wxHORIZONTAL);
dest_matrix_sizer->Add(new wxStaticText(&d, -1, _("YCbCr Matrix:")), wxSizerFlags().Border(wxRIGHT).Center());
- dest_matrix_sizer->Add(dest_matrix, wxSizerFlags(1).Center().Right());
+ dest_matrix_sizer->Add(dest_matrix, wxSizerFlags(1).Center());
auto dest_res_box = new wxStaticBoxSizer(wxVERTICAL, &d, _("Destination Resolution"));
dest_res_box->Add(dest_res_sizer, wxSizerFlags(1).Expand().Border(wxBOTTOM));
diff --git a/src/dialog_style_editor.cpp b/src/dialog_style_editor.cpp
index 039caee17..b186e5fd7 100644
--- a/src/dialog_style_editor.cpp
+++ b/src/dialog_style_editor.cpp
@@ -200,7 +200,7 @@ DialogStyleEditor::DialogStyleEditor(wxWindow *parent, AssStyle *style, agi::Con
for (int i = 0; i < 3; i++)
margin[i] = new wxSpinCtrl(this, -1, std::to_wstring(style->Margin[i]),
wxDefaultPosition, wxSize(60, -1),
- wxSP_ARROW_KEYS, 0, 9999, style->Margin[i]);
+ wxSP_ARROW_KEYS, -9999, 99999, style->Margin[i]);
Alignment = new wxRadioBox(this, -1, _("Alignment"), wxDefaultPosition, wxDefaultSize, 9, alignValues, 3, wxRA_SPECIFY_COLS);
auto Outline = num_text_ctrl(&work->outline_w, 0.0, 1000.0, 0.1);
diff --git a/src/dialog_translation.cpp b/src/dialog_translation.cpp
index c953b6874..b47d01b4c 100644
--- a/src/dialog_translation.cpp
+++ b/src/dialog_translation.cpp
@@ -246,7 +246,11 @@ void DialogTranslation::UpdateDisplay() {
int initial_pos = original_text->GetLength();
original_text->AppendTextRaw(block->GetText().c_str());
if (i == cur_block) {
- original_text->StartStyling(initial_pos, 31);
+#if wxVERSION_NUMBER >= 3100
+ original_text->StartStyling(initial_pos);
+#else
+ original_text->StartStyling(initial_pos, 255);
+#endif
original_text->SetStyling(block->GetText().size(), 1);
}
}
diff --git a/src/font_file_lister_fontconfig.cpp b/src/font_file_lister_fontconfig.cpp
index 408d596ee..a361dea73 100644
--- a/src/font_file_lister_fontconfig.cpp
+++ b/src/font_file_lister_fontconfig.cpp
@@ -63,8 +63,8 @@ CollectionResult FontConfigFontFileLister::GetFontPaths(std::string const& facen
std::string family = facename[0] == '@' ? facename.substr(1) : facename;
boost::to_lower(family);
- int weight = bold == 0 ? 80 :
- bold == 1 ? 200 :
+ int weight = bold == 0 ? 400 :
+ bold == 1 ? 700 :
bold;
int slant = italic ? 110 : 0;
@@ -74,7 +74,7 @@ CollectionResult FontConfigFontFileLister::GetFontPaths(std::string const& facen
FcPatternAddBool(pat, FC_OUTLINE, true);
FcPatternAddInteger(pat, FC_SLANT, slant);
- FcPatternAddInteger(pat, FC_WEIGHT, weight);
+ FcPatternAddInteger(pat, FC_WEIGHT, FcWeightFromOpenType(weight));
FcDefaultSubstitute(pat);
if (!FcConfigSubstitute(config, pat, FcMatchPattern)) return ret;
@@ -109,11 +109,9 @@ CollectionResult FontConfigFontFileLister::GetFontPaths(std::string const& facen
}
}
- if (weight > 80) {
- int actual_weight = weight;
- if (FcPatternGetInteger(match, FC_WEIGHT, 0, &actual_weight) == FcResultMatch)
- ret.fake_bold = actual_weight <= 80;
- }
+ int actual_weight = 0;
+ if (FcPatternGetInteger(match, FC_WEIGHT, 0, &actual_weight) == FcResultMatch)
+ ret.fake_bold = weight > FcWeightToOpenType(actual_weight) + 150;
int actual_slant = slant;
if (FcPatternGetInteger(match, FC_SLANT, 0, &actual_slant) == FcResultMatch)
diff --git a/src/frame_main.cpp b/src/frame_main.cpp
index b35c32960..df115b27c 100644
--- a/src/frame_main.cpp
+++ b/src/frame_main.cpp
@@ -240,8 +240,6 @@ void FrameMain::SetDisplayMode(int video, int audio) {
TopSizer->Show(videoBox, showVideo, true);
ToolsSizer->Show(audioBox, showAudio, true);
- MainSizer->CalcMin();
- MainSizer->RecalcSizes();
MainSizer->Layout();
Layout();
diff --git a/src/agi_pre.h b/src/include/agi_pre.h
similarity index 99%
rename from src/agi_pre.h
rename to src/include/agi_pre.h
index 63e045dca..e82216b88 100644
--- a/src/agi_pre.h
+++ b/src/include/agi_pre.h
@@ -48,9 +48,7 @@
#define _CRT_SECURE_NO_WARNINGS
#endif
-#ifndef _WIN32
-#include "../acconf.h"
-#endif
+#include "../../acconf.h"
#define WIN32_LEAN_AND_MEAN
diff --git a/src/include/agi_pre_c.h b/src/include/agi_pre_c.h
new file mode 100644
index 000000000..c4d6924f4
--- /dev/null
+++ b/src/include/agi_pre_c.h
@@ -0,0 +1,46 @@
+// Copyright (c) 2006, Rodrigo Braz Monteiro
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+// * Neither the name of the Aegisub Group nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// Aegisub Project http://www.aegisub.org/
+
+#include "../../acconf.h"
+
+#define WIN32_LEAN_AND_MEAN
+
+#ifdef _WIN32
+#include
+#include
+#else
+#include
+#endif
+
+#ifdef HAVE_OPENGL_GL_H
+#include
+#else
+#include
+#endif
+
diff --git a/src/initial_line_state.h b/src/initial_line_state.h
index a92724b34..c3918c8c6 100644
--- a/src/initial_line_state.h
+++ b/src/initial_line_state.h
@@ -31,5 +31,5 @@ public:
InitialLineState(agi::Context *c);
std::string const& GetInitialText() const { return initial_text; }
- DEFINE_SIGNAL_ADDERS(InitialStateChanged, AddChangeListener);
+ DEFINE_SIGNAL_ADDERS(InitialStateChanged, AddChangeListener)
};
diff --git a/src/libass_gdi_fontselect.cpp b/src/libass_gdi_fontselect.cpp
index 3623968e5..dcba736ef 100644
--- a/src/libass_gdi_fontselect.cpp
+++ b/src/libass_gdi_fontselect.cpp
@@ -23,7 +23,6 @@ extern "C" {
#include
#define WIN32_LEAN_AND_MEAN
-#define NOMINMAX
#include
namespace {
diff --git a/src/libresrc/Makefile b/src/libresrc/Makefile
deleted file mode 100644
index 8b6d19595..000000000
--- a/src/libresrc/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-include $(dir $(lastword $(MAKEFILE_LIST)))../../header.mk
-
-LIB += resrc
-
-resrc_CPPFLAGS := -I$(TOP) -I$(d) $(CPPFLAGS_WX)
-resrc_OBJ := \
- $(d)bitmap.o \
- $(d)default_config.o \
- $(d)libresrc.o
-
-$(resrc_OBJ): $(d)default_config.h $(d)bitmap.h $(d)default_config.cpp $(d)bitmap.cpp
-
-RESPACK := cd $(TOP)src/libresrc; $(BIN_LUA) $(TOP)tools/respack.lua
-
-$(d)bitmap.cpp: $(d)bitmap.h
-$(d)default_config.cpp: $(d)default_config.h
-
-$(d)bitmap.h: $(TOP)tools/respack.lua $(d)../bitmaps/button
- $(RESPACK) ../bitmaps/manifest.respack bitmap.cpp bitmap.h
-
-ifeq (yes, $(BUILD_DARWIN))
-$(d)default_config.h: $(TOP)tools/respack.lua $(d)*.json $(d)osx/*.json
- $(RESPACK) manifest_osx.respack default_config.cpp default_config.h
-else
-$(d)default_config.h: $(TOP)tools/respack.lua $(d)*.json
- $(RESPACK) manifest.respack default_config.cpp default_config.h
-endif
-
-CLEANFILES += \
- $(d)bitmap.cpp \
- $(d)bitmap.h \
- $(d)default_config.cpp \
- $(d)default_config.h
-
-DISTCLEANFILES += $(d)default_config_platform.json
-
-include $(TOP)Makefile.target
diff --git a/src/libresrc/libresrc.cpp b/src/libresrc/libresrc.cpp
index cb204ecb2..f42bf0e05 100644
--- a/src/libresrc/libresrc.cpp
+++ b/src/libresrc/libresrc.cpp
@@ -20,11 +20,18 @@
#include
#include
-wxBitmap libresrc_getimage(const unsigned char *buff, size_t size, int dir) {
+wxBitmap libresrc_getimage(const unsigned char *buff, size_t size, double scale, int dir) {
wxMemoryInputStream mem(buff, size);
if (dir != wxLayout_RightToLeft)
+#if wxCHECK_VERSION(3, 1, 0)
+ // Since wxWidgets 3.1.0, there is an undocumented third parameter in the ctor of wxBitmap from wxImage
+ // This "scale" parameter sets the logical scale factor of the created wxBitmap
+ return wxBitmap(wxImage(mem), wxBITMAP_SCREEN_DEPTH, scale);
+ return wxBitmap(wxImage(mem).Mirror(), wxBITMAP_SCREEN_DEPTH, scale);
+#else
return wxBitmap(wxImage(mem));
return wxBitmap(wxImage(mem).Mirror());
+#endif
}
wxIcon libresrc_geticon(const unsigned char *buff, size_t size) {
diff --git a/src/libresrc/libresrc.h b/src/libresrc/libresrc.h
index 020b8ccd8..ce3977c4a 100644
--- a/src/libresrc/libresrc.h
+++ b/src/libresrc/libresrc.h
@@ -21,10 +21,10 @@
class wxBitmap;
class wxIcon;
-wxBitmap libresrc_getimage(const unsigned char *image, size_t size, int dir=0);
+wxBitmap libresrc_getimage(const unsigned char *image, size_t size, double scale=1.0, int dir=0);
wxIcon libresrc_geticon(const unsigned char *image, size_t size);
#define GETIMAGE(a) libresrc_getimage(a, sizeof(a))
-#define GETIMAGEDIR(a, d) libresrc_getimage(a, sizeof(a), d)
+#define GETIMAGEDIR(a, s, d) libresrc_getimage(a, sizeof(a), s, d)
#define GETICON(a) libresrc_geticon(a, sizeof(a))
#define GET_DEFAULT_CONFIG(a) std::make_pair(reinterpret_cast(a), sizeof(a))
diff --git a/src/libresrc/meson.build b/src/libresrc/meson.build
new file mode 100644
index 000000000..d4be467d7
--- /dev/null
+++ b/src/libresrc/meson.build
@@ -0,0 +1,28 @@
+respack = find_program(meson.project_source_root() / 'tools/respack.py')
+
+resrc = [
+ custom_target('bitmap.{cpp,h}',
+ command: [respack, '@INPUT@', '@OUTPUT@'],
+ input: files('../bitmaps/manifest.respack'),
+ output: ['bitmap.cpp', 'bitmap.h'])
+]
+
+conf_platform_json = configure_file(input: 'default_config_platform.json.in',
+ output: '@BASENAME@',
+ configuration: conf_platform)
+
+if host_machine.system() == 'darwin'
+ resrc += custom_target('default_config.{cpp,h}',
+ command: [respack, '@INPUT0@', '@OUTPUT@'],
+ input: [files('manifest_osx.respack'), conf_platform_json],
+ output: ['default_config.cpp', 'default_config.h'])
+else
+ resrc += custom_target('default_config.{cpp,h}',
+ command: [respack, '@INPUT0@', '@OUTPUT@'],
+ input: [files('manifest.respack'), conf_platform_json],
+ output: ['default_config.cpp', 'default_config.h'])
+endif
+
+
+libresrc_inc = include_directories('.')
+libresrc = static_library('resrc', 'libresrc.cpp', resrc, include_directories: deps_inc, dependencies: deps)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 000000000..72587d366
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,247 @@
+subdir('libresrc')
+
+aegisub_src = files(
+ 'MatroskaParser.c',
+ 'aegisublocale.cpp',
+ 'ass_attachment.cpp',
+ 'ass_dialogue.cpp',
+ 'ass_entry.cpp',
+ 'ass_export_filter.cpp',
+ 'ass_exporter.cpp',
+ 'ass_file.cpp',
+ 'ass_karaoke.cpp',
+ 'ass_override.cpp',
+ 'ass_parser.cpp',
+ 'ass_style.cpp',
+ 'ass_style_storage.cpp',
+ 'async_video_provider.cpp',
+ 'audio_box.cpp',
+ 'audio_colorscheme.cpp',
+ 'audio_controller.cpp',
+ 'audio_display.cpp',
+ 'audio_karaoke.cpp',
+ 'audio_marker.cpp',
+ 'audio_player.cpp',
+ 'audio_provider_factory.cpp',
+ 'audio_renderer.cpp',
+ 'audio_renderer_spectrum.cpp',
+ 'audio_renderer_waveform.cpp',
+ 'audio_timing_dialogue.cpp',
+ 'audio_timing_karaoke.cpp',
+ 'auto4_base.cpp',
+ 'auto4_lua.cpp',
+ 'auto4_lua_assfile.cpp',
+ 'auto4_lua_dialog.cpp',
+ 'auto4_lua_progresssink.cpp',
+ 'base_grid.cpp',
+ 'charset_detect.cpp',
+ 'colorspace.cpp',
+ 'colour_button.cpp',
+ 'command/app.cpp',
+ 'command/audio.cpp',
+ 'command/automation.cpp',
+ 'command/command.cpp',
+ 'command/edit.cpp',
+ 'command/grid.cpp',
+ 'command/help.cpp',
+ 'command/keyframe.cpp',
+ 'command/recent.cpp',
+ 'command/subtitle.cpp',
+ 'command/time.cpp',
+ 'command/timecode.cpp',
+ 'command/tool.cpp',
+ 'command/video.cpp',
+ 'command/vis_tool.cpp',
+ 'compat.cpp',
+ 'context.cpp',
+ 'crash_writer.cpp',
+ 'dialog_about.cpp',
+ 'dialog_attachments.cpp',
+ 'dialog_automation.cpp',
+ 'dialog_autosave.cpp',
+ 'dialog_colorpicker.cpp',
+ 'dialog_detached_video.cpp',
+ 'dialog_dummy_video.cpp',
+ 'dialog_export.cpp',
+ 'dialog_export_ebu3264.cpp',
+ 'dialog_fonts_collector.cpp',
+ 'dialog_jumpto.cpp',
+ 'dialog_kara_timing_copy.cpp',
+ 'dialog_log.cpp',
+ 'dialog_paste_over.cpp',
+ 'dialog_progress.cpp',
+ 'dialog_properties.cpp',
+ 'dialog_resample.cpp',
+ 'dialog_search_replace.cpp',
+ 'dialog_selected_choices.cpp',
+ 'dialog_selection.cpp',
+ 'dialog_shift_times.cpp',
+ 'dialog_spellchecker.cpp',
+ 'dialog_style_editor.cpp',
+ 'dialog_style_manager.cpp',
+ 'dialog_styling_assistant.cpp',
+ 'dialog_text_import.cpp',
+ 'dialog_timing_processor.cpp',
+ 'dialog_translation.cpp',
+ 'dialog_version_check.cpp',
+ 'dialog_video_details.cpp',
+ 'dialog_video_properties.cpp',
+ 'export_fixstyle.cpp',
+ 'export_framerate.cpp',
+ 'fft.cpp',
+ 'font_file_lister.cpp',
+ 'frame_main.cpp',
+ 'gl_text.cpp',
+ 'gl_wrap.cpp',
+ 'grid_column.cpp',
+ 'help_button.cpp',
+ 'hotkey.cpp',
+ 'hotkey_data_view_model.cpp',
+ 'initial_line_state.cpp',
+ 'main.cpp',
+ 'menu.cpp',
+ 'mkv_wrap.cpp',
+ 'pen.cpp',
+ 'persist_location.cpp',
+ 'preferences.cpp',
+ 'preferences_base.cpp',
+ 'project.cpp',
+ 'resolution_resampler.cpp',
+ 'search_replace_engine.cpp',
+ 'selection_controller.cpp',
+ 'spellchecker.cpp',
+ 'spline.cpp',
+ 'spline_curve.cpp',
+ 'string_codec.cpp',
+ 'subs_controller.cpp',
+ 'subs_edit_box.cpp',
+ 'subs_edit_ctrl.cpp',
+ 'subs_preview.cpp',
+ 'subtitle_format.cpp',
+ 'subtitle_format_ass.cpp',
+ 'subtitle_format_ebu3264.cpp',
+ 'subtitle_format_encore.cpp',
+ 'subtitle_format_microdvd.cpp',
+ 'subtitle_format_mkv.cpp',
+ 'subtitle_format_srt.cpp',
+ 'subtitle_format_ssa.cpp',
+ 'subtitle_format_transtation.cpp',
+ 'subtitle_format_ttxt.cpp',
+ 'subtitle_format_txt.cpp',
+ 'subtitles_provider.cpp',
+ 'subtitles_provider_libass.cpp',
+ 'text_file_reader.cpp',
+ 'text_file_writer.cpp',
+ 'text_selection_controller.cpp',
+ 'thesaurus.cpp',
+ 'timeedit_ctrl.cpp',
+ 'toggle_bitmap.cpp',
+ 'toolbar.cpp',
+ 'tooltip_manager.cpp',
+ 'utils.cpp',
+ 'validators.cpp',
+ 'vector2d.cpp',
+ 'version.cpp',
+ 'video_box.cpp',
+ 'video_controller.cpp',
+ 'video_display.cpp',
+ 'video_frame.cpp',
+ 'video_out_gl.cpp',
+ 'video_provider_cache.cpp',
+ 'video_provider_dummy.cpp',
+ 'video_provider_manager.cpp',
+ 'video_provider_yuv4mpeg.cpp',
+ 'video_slider.cpp',
+ 'visual_feature.cpp',
+ 'visual_tool.cpp',
+ 'visual_tool_clip.cpp',
+ 'visual_tool_cross.cpp',
+ 'visual_tool_drag.cpp',
+ 'visual_tool_rotatexy.cpp',
+ 'visual_tool_rotatez.cpp',
+ 'visual_tool_scale.cpp',
+ 'visual_tool_vector_clip.cpp',
+)
+
+if host_machine.system() == 'darwin'
+ aegisub_src += files(
+ 'font_file_lister_coretext.mm',
+ 'osx/osx_utils.mm',
+ 'osx/retina_helper.mm',
+ )
+elif host_machine.system() == 'windows'
+ aegisub_src += files(
+ 'avisynth_wrap.cpp',
+ 'font_file_lister_gdi.cpp',
+ # 'libass_gdi_fontselect.cpp',
+ 'video_provider_avs.cpp',
+ )
+
+ if cc.has_header('wingdi.h')
+ deps += cc.find_library('gdi32', required: true)
+ else
+ error('Missing Windows SDK GDI Library (wingdi.h / gdi32.lib)')
+ endif
+ if cc.has_header('usp10.h')
+ deps += cc.find_library('usp10', required: true)
+ else
+ error('Missing Windows SDK Uniscribe Library (usp10.h / usp10.lib)')
+ endif
+
+ res_inc = include_directories('bitmaps/windows')
+ res_dep_files = files(
+ 'bitmaps/windows/icon.ico',
+ 'bitmaps/windows/eyedropper.cur',
+ )
+ windows = import('windows')
+ if wx_dep.type_name() != 'not-found' # system wx
+ raw_wx_windres_args = wx_dep.get_variable(configtool: 'rescomp').split()
+ wx_windres_args = []
+ foreach arg: raw_wx_windres_args
+ if arg != 'windres'
+ wx_windres_args += arg
+ endif
+ endforeach
+ aegisub_src += windows.compile_resources('res/res.rc',
+ args: wx_windres_args,
+ depend_files: res_dep_files,
+ depends: version_h,
+ include_directories: [res_inc, version_inc])
+ else # subproject
+ wx_inc = wx.include_directories('wxmono')
+ aegisub_src += windows.compile_resources('res/res.rc',
+ depend_files: res_dep_files,
+ depends: version_h,
+ include_directories: [res_inc, version_inc, wx_inc])
+ endif
+endif
+
+if conf.has('WITH_FONTCONFIG')
+ aegisub_src += files('font_file_lister_fontconfig.cpp')
+endif
+
+if conf.has('WITH_CSRI')
+ aegisub_src += files('subtitles_provider_csri.cpp')
+endif
+
+opt_src = [
+ ['ALSA', 'audio_player_alsa.cpp'],
+ ['PortAudio', 'audio_player_portaudio.cpp'],
+ ['PulseAudio', 'audio_player_pulse.cpp'],
+ ['OpenAL', 'audio_player_openal.cpp'],
+ ['OSS', 'audio_player_oss.cpp'],
+ ['DirectSound', ['audio_player_dsound.cpp',
+ 'audio_player_dsound2.cpp']],
+
+ ['FFMS2', ['audio_provider_ffmpegsource.cpp',
+ 'video_provider_ffmpegsource.cpp',
+ 'ffmpegsource_common.cpp']],
+
+ ['Hunspell', 'spellchecker_hunspell.cpp'],
+]
+
+foreach opt: opt_src
+ if dep_avail.contains(opt[0])
+ aegisub_src += files(opt[1])
+ endif
+endforeach
diff --git a/src/osx/scintilla_ime.mm b/src/osx/scintilla_ime.mm
deleted file mode 100644
index 4806d1797..000000000
--- a/src/osx/scintilla_ime.mm
+++ /dev/null
@@ -1,212 +0,0 @@
-// Copyright (c) 2014, Thomas Goyne
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-// Aegisub Project http://www.aegisub.org/
-
-#import
-#import
-#import
-
-// from src/osx/cocoa/window.mm
-@interface wxNSView : NSView {
- BOOL _hasToolTip;
- NSTrackingRectTag _lastToolTipTrackTag;
- id _lastToolTipOwner;
- void *_lastUserData;
-}
-@end
-
-@interface IMEState : NSObject
-@property (nonatomic) NSRange markedRange;
-@property (nonatomic) bool undoActive;
-@end
-
-@implementation IMEState
-- (id)init {
- self = [super init];
- self.markedRange = NSMakeRange(NSNotFound, 0);
- self.undoActive = false;
- return self;
-}
-@end
-
-@interface ScintillaNSView : wxNSView
-@property (nonatomic, readonly) wxStyledTextCtrl *stc;
-@property (nonatomic, readonly) IMEState *state;
-@end
-
-@implementation ScintillaNSView
-- (Class)superclass {
- return [wxNSView superclass];
-}
-
-- (wxStyledTextCtrl *)stc {
- return static_cast(wxWidgetImpl::FindFromWXWidget(self)->GetWXPeer());
-}
-
-- (IMEState *)state {
- return objc_getAssociatedObject(self, [IMEState class]);
-}
-
-- (void)invalidate {
- self.state.markedRange = NSMakeRange(NSNotFound, 0);
- [self.inputContext discardMarkedText];
-}
-
-#pragma mark - NSTextInputClient
-
-- (NSAttributedString *)attributedSubstringForProposedRange:(NSRange)aRange
- actualRange:(NSRangePointer)actualRange
-{
- return nil;
-}
-
-- (NSUInteger)characterIndexForPoint:(NSPoint)point {
- return self.stc->PositionFromPoint(wxPoint(point.x, point.y));
-}
-
-- (BOOL)drawsVerticallyForCharacterAtIndex:(NSUInteger)charIndex {
- return NO;
-}
-
-- (NSRect)firstRectForCharacterRange:(NSRange)range
- actualRange:(NSRangePointer)actualRange
-{
- auto stc = self.stc;
- int line = stc->LineFromPosition(range.location);
- int height = stc->TextHeight(line);
- auto pt = stc->PointFromPosition(range.location);
-
- int width = 0;
- if (range.length > 0) {
- // If the end of the range is on the next line, the range should be
- // truncated to the current line and actualRange should be set to the
- // truncated range
- int end_line = stc->LineFromPosition(range.location + range.length);
- if (end_line > line) {
- range.length = stc->PositionFromLine(line + 1) - 1 - range.location;
- *actualRange = range;
- }
-
- auto end_pt = stc->PointFromPosition(range.location + range.length);
- width = end_pt.x - pt.x;
- }
-
- auto rect = NSMakeRect(pt.x, pt.y, width, height);
- rect = [self convertRect:rect toView:nil];
- return [self.window convertRectToScreen:rect];
-}
-
-- (BOOL)hasMarkedText {
- return self.state.markedRange.length > 0;
-}
-
-- (void)insertText:(id)str replacementRange:(NSRange)replacementRange {
- [self unmarkText];
- [super insertText:str replacementRange:replacementRange];
-}
-
-- (NSRange)markedRange {
- return self.state.markedRange;
-}
-
-- (NSRange)selectedRange {
- long from = 0, to = 0;
- self.stc->GetSelection(&from, &to);
- return NSMakeRange(from, to - from);
-}
-
-- (void)setMarkedText:(id)str
- selectedRange:(NSRange)range
- replacementRange:(NSRange)replacementRange
-{
- if ([str isKindOfClass:[NSAttributedString class]])
- str = [str string];
-
- auto stc = self.stc;
- auto state = self.state;
-
- int pos = stc->GetInsertionPoint();
- if (state.markedRange.length > 0) {
- pos = state.markedRange.location;
- stc->DeleteRange(pos, state.markedRange.length);
- stc->SetSelection(pos, pos);
- } else {
- state.undoActive = stc->GetUndoCollection();
- if (state.undoActive)
- stc->SetUndoCollection(false);
- }
-
- auto utf8 = [str UTF8String];
- auto utf8len = strlen(utf8);
- stc->AddTextRaw(utf8, utf8len);
-
- state.markedRange = NSMakeRange(pos, utf8len);
-
- stc->SetIndicatorCurrent(1);
- stc->IndicatorFillRange(pos, utf8len);
-
- // Re-enable undo if we got a zero-length string as that means we're done
- if (!utf8len && state.undoActive)
- stc->SetUndoCollection(true);
- else {
- int start = pos;
- // Range is in utf-16 code units
- if (range.location > 0)
- start += [[str substringToIndex:range.location] lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
- int length = [[str substringWithRange:range] lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
- stc->SetSelection(start, start + length);
- }
-}
-
-- (void)unmarkText {
- auto state = self.state;
- if (state.markedRange.length > 0) {
- self.stc->DeleteRange(state.markedRange.location, state.markedRange.length);
- state.markedRange = NSMakeRange(NSNotFound, 0);
- if (state.undoActive)
- self.stc->SetUndoCollection(true);
- }
-}
-
-- (NSArray *)validAttributesForMarkedText {
- return @[];
-}
-@end
-
-namespace osx { namespace ime {
-void inject(wxStyledTextCtrl *ctrl) {
- id view = (id)ctrl->GetHandle();
- object_setClass(view, [ScintillaNSView class]);
-
- auto state = [IMEState new];
- objc_setAssociatedObject(view, [IMEState class], state,
- OBJC_ASSOCIATION_RETAIN_NONATOMIC);
- [state release];
-}
-
-void invalidate(wxStyledTextCtrl *ctrl) {
- [(ScintillaNSView *)ctrl->GetHandle() invalidate];
-}
-
-bool process_key_event(wxStyledTextCtrl *ctrl, wxKeyEvent &evt) {
- if (evt.GetModifiers() != 0) return false;
- if (evt.GetKeyCode() != WXK_RETURN && evt.GetKeyCode() != WXK_TAB) return false;
- if (![(ScintillaNSView *)ctrl->GetHandle() hasMarkedText]) return false;
-
- evt.Skip();
- return true;
-}
-
-} }
diff --git a/src/preferences.cpp b/src/preferences.cpp
index 08c7495e7..36c89ce73 100644
--- a/src/preferences.cpp
+++ b/src/preferences.cpp
@@ -611,8 +611,7 @@ Interface_Hotkeys::Interface_Hotkeys(wxTreebook *book, Preferences *parent)
dvc->AppendTextColumn("Description", 2, wxDATAVIEW_CELL_INERT, 300, wxALIGN_LEFT, wxCOL_SORTABLE | wxCOL_RESIZABLE);
wxSizer *buttons = new wxBoxSizer(wxHORIZONTAL);
- buttons->Add(quick_search, wxSizerFlags().Border());
- buttons->AddStretchSpacer(1);
+ buttons->Add(quick_search, wxSizerFlags(1).Expand().Border());
buttons->Add(new_button, wxSizerFlags().Border());
buttons->Add(edit_button, wxSizerFlags().Border());
buttons->Add(delete_button, wxSizerFlags().Border());
diff --git a/src/res/res.rc b/src/res/res.rc
index 45616b8cb..26f268165 100644
--- a/src/res/res.rc
+++ b/src/res/res.rc
@@ -23,23 +23,9 @@ eyedropper_cursor CURSOR "../bitmaps/windows/eyedropper.cur"
#define wxUSE_NO_MANIFEST 1
#include "wx/msw/wx.rc"
-#include "../../build/git_version.h"
+#include "git_version.h"
#include
-#ifdef _DEBUG
- #ifdef _WIN64
- #define AGI_RC_FILENAME "aegisub64d"
- #else
- #define AGI_RC_FILENAME "aegisub32d"
- #endif
-#else
- #ifdef _WIN64
- #define AGI_RC_FILENAME "aegisub64"
- #else
- #define AGI_RC_FILENAME "aegisub32"
- #endif
-#endif
-
#ifdef _DEBUG
#define AGI_RC_FLAG_DEBUG VS_FF_DEBUG
#else
@@ -68,8 +54,8 @@ BEGIN
VALUE "CompanyName", "Aegisub"
VALUE "FileDescription", "Aegisub subtitle editor"
VALUE "FileVersion", BUILD_GIT_VERSION_STRING
- VALUE "InternalName", AGI_RC_FILENAME
- VALUE "OriginalFilename", AGI_RC_FILENAME ".exe"
+ VALUE "InternalName", "aegisub"
+ VALUE "OriginalFilename", "aegisub.exe"
VALUE "ProductName", "Aegisub"
VALUE "ProductVersion", BUILD_GIT_VERSION_STRING
END
diff --git a/src/spellchecker.cpp b/src/spellchecker.cpp
index 4e328ab22..3d99d4de1 100644
--- a/src/spellchecker.cpp
+++ b/src/spellchecker.cpp
@@ -22,10 +22,12 @@
#include
#include
+#ifdef __APPLE__
namespace agi {
class OptionValue;
std::unique_ptr CreateCocoaSpellChecker(OptionValue *opt);
}
+#endif
std::unique_ptr SpellCheckerFactory::GetSpellChecker() {
#ifdef __APPLE__
diff --git a/src/spellchecker_hunspell.cpp b/src/spellchecker_hunspell.cpp
index ddb6c4339..64c3d9284 100644
--- a/src/spellchecker_hunspell.cpp
+++ b/src/spellchecker_hunspell.cpp
@@ -29,7 +29,6 @@
#include
-#define HUNSPELL_STATIC
#undef near
#include
diff --git a/src/subs_edit_box.cpp b/src/subs_edit_box.cpp
index ca08b4177..9c4bb1f49 100644
--- a/src/subs_edit_box.cpp
+++ b/src/subs_edit_box.cpp
@@ -45,17 +45,18 @@
#include "include/aegisub/hotkey.h"
#include "initial_line_state.h"
#include "options.h"
-#include "project.h"
#include "placeholder_ctrl.h"
+#include "project.h"
+#include "retina_helper.h"
#include "selection_controller.h"
#include "subs_edit_ctrl.h"
#include "text_selection_controller.h"
#include "timeedit_ctrl.h"
#include "tooltip_manager.h"
-#include "utils.h"
#include "validators.h"
#include
+#include
#include
#include
@@ -105,6 +106,7 @@ const auto AssDialogue_Effect = &AssDialogue::Effect;
SubsEditBox::SubsEditBox(wxWindow *parent, agi::Context *context)
: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxRAISED_BORDER, "SubsEditBox")
, c(context)
+, retina_helper(agi::make_unique(parent))
, undo_timer(GetEventHandler())
{
using std::bind;
@@ -248,13 +250,13 @@ SubsEditBox::~SubsEditBox() {
}
wxTextCtrl *SubsEditBox::MakeMarginCtrl(wxString const& tooltip, int margin, wxString const& commit_msg) {
- wxTextCtrl *ctrl = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(40,-1), wxTE_CENTRE | wxTE_PROCESS_ENTER, IntValidator());
- ctrl->SetMaxLength(4);
+ wxTextCtrl *ctrl = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(40,-1), wxTE_CENTRE | wxTE_PROCESS_ENTER, IntValidator(0, true));
+ ctrl->SetMaxLength(5);
ctrl->SetToolTip(tooltip);
middle_left_sizer->Add(ctrl, wxSizerFlags().Center());
Bind(wxEVT_TEXT, [=](wxCommandEvent&) {
- int value = agi::util::mid(0, atoi(ctrl->GetValue().utf8_str()), 9999);
+ int value = agi::util::mid(-9999, atoi(ctrl->GetValue().utf8_str()), 99999);
SetSelectedRows([&](AssDialogue *d) { d->Margin[margin] = value; },
commit_msg, AssFile::COMMIT_DIAG_META);
}, ctrl->GetId());
@@ -273,7 +275,7 @@ TimeEdit *SubsEditBox::MakeTimeCtrl(wxString const& tooltip, TimeField field) {
void SubsEditBox::MakeButton(const char *cmd_name) {
cmd::Command *command = cmd::get(cmd_name);
- wxBitmapButton *btn = new wxBitmapButton(this, -1, command->Icon(16));
+ wxBitmapButton *btn = new wxBitmapButton(this, -1, command->Icon(16, retina_helper->GetScaleFactor()));
ToolTipManager::Bind(btn, command->StrHelp(), "Subtitle Edit Box", cmd_name);
middle_right_sizer->Add(btn, wxSizerFlags().Expand());
@@ -427,8 +429,7 @@ void SubsEditBox::UpdateFrameTiming(agi::vfr::Framerate const& fps) {
}
void SubsEditBox::OnKeyDown(wxKeyEvent &event) {
- if (!osx::ime::process_key_event(edit_ctrl, event))
- hotkey::check("Subtitle Edit Box", c, event);
+ hotkey::check("Subtitle Edit Box", c, event);
}
void SubsEditBox::OnChange(wxStyledTextEvent &event) {
diff --git a/src/subs_edit_box.h b/src/subs_edit_box.h
index 3cf9497e1..0443adbdc 100644
--- a/src/subs_edit_box.h
+++ b/src/subs_edit_box.h
@@ -43,6 +43,7 @@ namespace agi { struct Context; }
namespace agi { class Time; }
class AssDialogue;
class AssStyle;
+class RetinaHelper;
class SubsTextEditCtrl;
class TimeEdit;
class wxButton;
@@ -103,6 +104,8 @@ class SubsEditBox final : public wxPanel {
wxSizer *middle_left_sizer;
wxSizer *bottom_sizer;
+ std::unique_ptr retina_helper;
+
void SetControlsState(bool state);
/// @brief Update times of selected lines
/// @param field Field which changed
diff --git a/src/subs_edit_ctrl.cpp b/src/subs_edit_ctrl.cpp
index 4618ea409..9d1fc6a01 100644
--- a/src/subs_edit_ctrl.cpp
+++ b/src/subs_edit_ctrl.cpp
@@ -56,6 +56,10 @@
#include
#include
+// Maximum number of languages (locales)
+// It should be above 100 (at least 242) and probably not more than 1000
+#define LANGS_MAX 1000
+
/// Event ids
enum {
EDIT_MENU_SPLIT_PRESERVE = 1400,
@@ -73,7 +77,7 @@ enum {
EDIT_MENU_THESAURUS_SUGS,
EDIT_MENU_DIC_LANGUAGE = 1600,
EDIT_MENU_DIC_LANGS,
- EDIT_MENU_THES_LANGUAGE = 1700,
+ EDIT_MENU_THES_LANGUAGE = EDIT_MENU_DIC_LANGUAGE + LANGS_MAX,
EDIT_MENU_THES_LANGS
};
@@ -83,8 +87,6 @@ SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxSize wsize, long style, a
, thesaurus(agi::make_unique())
, context(context)
{
- osx::ime::inject(this);
-
// Set properties
SetWrapMode(wxSTC_WRAP_WORD);
SetMarginWidth(1,0);
@@ -178,7 +180,7 @@ BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxStyledTextCtrl)
EVT_MENU_RANGE(EDIT_MENU_SUGGESTIONS,EDIT_MENU_THESAURUS-1,SubsTextEditCtrl::OnUseSuggestion)
EVT_MENU_RANGE(EDIT_MENU_THESAURUS_SUGS,EDIT_MENU_DIC_LANGUAGE-1,SubsTextEditCtrl::OnUseSuggestion)
EVT_MENU_RANGE(EDIT_MENU_DIC_LANGS,EDIT_MENU_THES_LANGUAGE-1,SubsTextEditCtrl::OnSetDicLanguage)
- EVT_MENU_RANGE(EDIT_MENU_THES_LANGS,EDIT_MENU_THES_LANGS+100,SubsTextEditCtrl::OnSetThesLanguage)
+ EVT_MENU_RANGE(EDIT_MENU_THES_LANGS,EDIT_MENU_THES_LANGS+LANGS_MAX,SubsTextEditCtrl::OnSetThesLanguage)
END_EVENT_TABLE()
void SubsTextEditCtrl::OnLoseFocus(wxFocusEvent &event) {
@@ -187,7 +189,6 @@ void SubsTextEditCtrl::OnLoseFocus(wxFocusEvent &event) {
}
void SubsTextEditCtrl::OnKeyDown(wxKeyEvent &event) {
- if (osx::ime::process_key_event(this, event)) return;
event.Skip();
// Workaround for wxSTC eating tabs.
@@ -245,10 +246,6 @@ void SubsTextEditCtrl::SetStyles() {
// Misspelling indicator
IndicatorSetStyle(0,wxSTC_INDIC_SQUIGGLE);
IndicatorSetForeground(0,wxColour(255,0,0));
-
- // IME pending text indicator
- IndicatorSetStyle(1, wxSTC_INDIC_PLAIN);
- IndicatorSetUnder(1, true);
}
void SubsTextEditCtrl::UpdateStyle() {
@@ -261,7 +258,11 @@ void SubsTextEditCtrl::UpdateStyle() {
cursor_pos = -1;
UpdateCallTip();
- StartStyling(0,255);
+#if wxVERSION_NUMBER >= 3100
+ StartStyling(0);
+#else
+ StartStyling(0, 255);
+#endif
if (!OPT_GET("Subtitle/Highlight/Syntax")->GetBool()) {
SetStyling(line_text.size(), 0);
@@ -309,7 +310,6 @@ void SubsTextEditCtrl::UpdateCallTip() {
}
void SubsTextEditCtrl::SetTextTo(std::string const& text) {
- osx::ime::invalidate(this);
SetEvtHandlerEnabled(false);
Freeze();
@@ -366,15 +366,16 @@ void SubsTextEditCtrl::OnContextMenu(wxContextMenuEvent &event) {
currentWord = line_text.substr(currentWordPos.first, currentWordPos.second);
wxMenu menu;
- if (spellchecker)
+ if (spellchecker) {
AddSpellCheckerEntries(menu);
- // Append language list
- menu.Append(-1,_("Spell checker language"), GetLanguagesMenu(
- EDIT_MENU_DIC_LANGS,
- to_wx(OPT_GET("Tool/Spell Checker/Language")->GetString()),
- to_wx(spellchecker->GetLanguageList())));
- menu.AppendSeparator();
+ // Append language list
+ menu.Append(-1, _("Spell checker language"), GetLanguagesMenu(
+ EDIT_MENU_DIC_LANGS,
+ to_wx(OPT_GET("Tool/Spell Checker/Language")->GetString()),
+ to_wx(spellchecker->GetLanguageList())));
+ menu.AppendSeparator();
+ }
AddThesaurusEntries(menu);
diff --git a/src/subtitle_format_srt.cpp b/src/subtitle_format_srt.cpp
index 981137a6d..764557271 100644
--- a/src/subtitle_format_srt.cpp
+++ b/src/subtitle_format_srt.cpp
@@ -279,7 +279,7 @@ public:
std::string WriteSRTTime(agi::Time const& ts)
{
- return agi::format("%02d:%02d:%02d,%03d", ts.GetTimeHours(), ts.GetTimeMinutes(), ts.GetTimeSeconds(), ts.GetTimeMiliseconds());
+ return ts.GetSrtFormatted();
}
}
diff --git a/src/subtitles_provider.cpp b/src/subtitles_provider.cpp
index 057bbbdbd..6d4801324 100644
--- a/src/subtitles_provider.cpp
+++ b/src/subtitles_provider.cpp
@@ -88,7 +88,7 @@ void SubtitlesProvider::LoadSubtitles(AssFile *subs, int time) {
push_line(line.GetEntryData());
if (!subs->Attachments.empty()) {
- // TODO: some scripts may have a lot of attachments,
+ // TODO: some scripts may have a lot of attachments,
// so ideally we'd want to write only those actually used on the requested video frame,
// but this would require some pre-parsing of the attached font files with FreeType,
// which isn't probably trivial.
diff --git a/src/subtitles_provider_libass.cpp b/src/subtitles_provider_libass.cpp
index f424c0177..815c820da 100644
--- a/src/subtitles_provider_libass.cpp
+++ b/src/subtitles_provider_libass.cpp
@@ -46,10 +46,10 @@
#include
#include
-#if (BOOST_VERSION / 100000) <= 1 && ((BOOST_VERSION / 100) % 1000) <= 67
-#include
-#else
+#if BOOST_VERSION >= 106900
#include
+#else
+#include
#endif
#include
#include
diff --git a/src/toolbar.cpp b/src/toolbar.cpp
index 5718b19d5..40c0a7769 100644
--- a/src/toolbar.cpp
+++ b/src/toolbar.cpp
@@ -68,6 +68,9 @@ namespace {
/// Listener for icon size change signal
agi::signal::Connection icon_size_slot;
+ /// Listener for scale factor change signal
+ agi::signal::Connection scale_factor_slot;
+
/// Listener for hotkey change signal
agi::signal::Connection hotkeys_changed_slot;
@@ -139,7 +142,7 @@ namespace {
flags & cmd::COMMAND_TOGGLE ? wxITEM_CHECK :
wxITEM_NORMAL;
- wxBitmap const& bitmap = command->Icon(icon_size, GetLayoutDirection());
+ wxBitmap const& bitmap = command->Icon(icon_size, retina_helper.GetScaleFactor(), GetLayoutDirection());
AddTool(TOOL_ID_BASE + commands.size(), command->StrDisplay(context), bitmap, GetTooltip(command), kind);
commands.push_back(command);
@@ -173,6 +176,9 @@ namespace {
, retina_helper(parent)
, icon_size(OPT_GET("App/Toolbar Icon Size")->GetInt())
, icon_size_slot(OPT_SUB("App/Toolbar Icon Size", &Toolbar::OnIconSizeChange, this))
+ , scale_factor_slot(retina_helper.AddScaleFactorListener([=](double scale) {
+ RegenerateToolbar();
+ }))
, hotkeys_changed_slot(hotkey::inst->AddHotkeyChangeListener(&Toolbar::RegenerateToolbar, this))
{
Populate();
@@ -189,9 +195,8 @@ namespace {
, icon_size(OPT_GET("App/Toolbar Icon Size")->GetInt())
, icon_size_slot(OPT_SUB("App/Toolbar Icon Size", &Toolbar::OnIconSizeChange, this))
#else
- , icon_size(32 * retina_helper.GetScaleFactor())
+ , icon_size(32)
, icon_size_slot(retina_helper.AddScaleFactorListener([=](double scale) {
- icon_size = 32 * retina_helper.GetScaleFactor();
RegenerateToolbar();
}))
#endif
diff --git a/src/utils.cpp b/src/utils.cpp
index 2416aa7a2..a014b0a29 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -217,13 +217,6 @@ void SetFloatOnParent(wxWindow *) { }
RetinaHelper::RetinaHelper(wxWindow *) { }
RetinaHelper::~RetinaHelper() { }
int RetinaHelper::GetScaleFactor() const { return 1; }
-
-// OS X implementation in scintilla_ime.mm
-namespace osx { namespace ime {
- void inject(wxStyledTextCtrl *) { }
- void invalidate(wxStyledTextCtrl *) { }
- bool process_key_event(wxStyledTextCtrl *, wxKeyEvent&) { return false; }
-} }
#endif
wxString FontFace(std::string opt_prefix) {
@@ -275,7 +268,7 @@ wxString LocalizedLanguageName(wxString const& lang) {
icu::UnicodeString ustr;
iculoc.getDisplayName(iculoc, ustr);
#ifdef _MSC_VER
- return wxString(ustr.getBuffer());
+ return wxString((const wchar_t*)ustr.getBuffer());
#else
std::string utf8;
ustr.toUTF8String(utf8);
diff --git a/src/utils.h b/src/utils.h
index 269100de8..02ef78aac 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -106,13 +106,4 @@ namespace osx {
bool activate_top_window_other_than(wxFrame *wx);
// Bring all windows to the front, maintaining relative z-order
void bring_to_front();
-
-namespace ime {
- /// Inject the IME helper into the given wxSTC
- void inject(wxStyledTextCtrl *ctrl);
- /// Invalidate any pending text from the IME
- void invalidate(wxStyledTextCtrl *ctrl);
- /// Give the IME a chance to process a key event and return whether it did
- bool process_key_event(wxStyledTextCtrl *ctrl, wxKeyEvent &);
-}
}
diff --git a/src/video_box.cpp b/src/video_box.cpp
index 49fff80aa..086aa1ce0 100644
--- a/src/video_box.cpp
+++ b/src/video_box.cpp
@@ -58,10 +58,10 @@ VideoBox::VideoBox(wxWindow *parent, bool isDetached, agi::Context *context)
auto mainToolbar = toolbar::GetToolbar(this, "video", context, "Video", false);
- VideoPosition = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(110, 20), wxTE_READONLY);
+ VideoPosition = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(110, -1), wxTE_READONLY);
VideoPosition->SetToolTip(_("Current frame time and number"));
- VideoSubsPos = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(110, 20), wxTE_READONLY);
+ VideoSubsPos = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(110, -1), wxTE_READONLY);
VideoSubsPos->SetToolTip(_("Time of this frame relative to start and end of current subs"));
wxArrayString choices;
@@ -70,7 +70,7 @@ VideoBox::VideoBox(wxWindow *parent, bool isDetached, agi::Context *context)
auto zoomBox = new wxComboBox(this, -1, "75%", wxDefaultPosition, wxDefaultSize, choices, wxCB_DROPDOWN | wxTE_PROCESS_ENTER);
auto visualToolBar = toolbar::GetToolbar(this, "visual_tools", context, "Video", true);
- auto visualSubToolBar = new wxToolBar(this, -1, wxDefaultPosition, wxDefaultSize, wxTB_VERTICAL | wxTB_BOTTOM | wxTB_FLAT);
+ auto visualSubToolBar = new wxToolBar(this, -1, wxDefaultPosition, wxDefaultSize, wxTB_VERTICAL | wxTB_BOTTOM | wxTB_NODIVIDER | wxTB_FLAT);
auto videoDisplay = new VideoDisplay(visualSubToolBar, isDetached, zoomBox, this, context);
videoDisplay->MoveBeforeInTabOrder(videoSlider);
diff --git a/src/video_display.cpp b/src/video_display.cpp
index 2df9ec3c0..8d85311a6 100644
--- a/src/video_display.cpp
+++ b/src/video_display.cpp
@@ -409,11 +409,12 @@ void VideoDisplay::SetZoomFromBoxText(wxCommandEvent &) {
}
void VideoDisplay::SetTool(std::unique_ptr new_tool) {
- toolBar->ClearTools();
- toolBar->Realize();
- toolBar->Show(false);
-
+ // Set the tool first to prevent repeated initialization from VideoDisplay::Render
tool = std::move(new_tool);
+
+ // Hide the tool bar first to eliminate unecessary size changes
+ toolBar->Show(false);
+ toolBar->ClearTools();
tool->SetToolbar(toolBar);
// Update size as the new typesetting tool may have changed the subtoolbar size
diff --git a/src/video_frame.cpp b/src/video_frame.cpp
index 9f22f5063..c7957d964 100644
--- a/src/video_frame.cpp
+++ b/src/video_frame.cpp
@@ -16,10 +16,10 @@
#include "video_frame.h"
-#if (BOOST_VERSION / 100000) <= 1 && ((BOOST_VERSION / 100) % 1000) <= 67
-#include
-#else
+#if BOOST_VERSION >= 106900
#include
+#else
+#include
#endif
#include
diff --git a/src/video_provider_dummy.cpp b/src/video_provider_dummy.cpp
index da3b4a0a4..17a1508b5 100644
--- a/src/video_provider_dummy.cpp
+++ b/src/video_provider_dummy.cpp
@@ -45,10 +45,10 @@
#include
#include
#include
-#if (BOOST_VERSION / 100000) <= 1 && ((BOOST_VERSION / 100) % 1000) <= 67
-#include
-#else
+#if BOOST_VERSION >= 106900
#include
+#else
+#include
#endif
DummyVideoProvider::DummyVideoProvider(double fps, int frames, int width, int height, agi::Color colour, bool pattern)
diff --git a/src/video_provider_ffmpegsource.cpp b/src/video_provider_ffmpegsource.cpp
index 0b4853c21..de3304576 100644
--- a/src/video_provider_ffmpegsource.cpp
+++ b/src/video_provider_ffmpegsource.cpp
@@ -101,9 +101,17 @@ public:
}
int GetFrameCount() const override { return VideoInfo->NumFrames; }
+
+#if FFMS_VERSION >= ((2 << 24) | (24 << 16) | (0 << 8) | 0)
+ int GetWidth() const override { return (VideoInfo->Rotation % 180 == 90 || VideoInfo->Rotation % 180 == -90) ? Height : Width; }
+ int GetHeight() const override { return (VideoInfo->Rotation % 180 == 90 || VideoInfo->Rotation % 180 == -90) ? Width : Height; }
+ double GetDAR() const override { return (VideoInfo->Rotation % 180 == 90 || VideoInfo->Rotation % 180 == -90) ? 1 / DAR : DAR; }
+#else
int GetWidth() const override { return Width; }
int GetHeight() const override { return Height; }
double GetDAR() const override { return DAR; }
+#endif
+
agi::vfr::Framerate GetFPS() const override { return Timecodes; }
std::string GetColorSpace() const override { return ColorSpace; }
std::string GetRealColorSpace() const override { return RealColorSpace; }
@@ -221,6 +229,10 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path const& filename, std::st
// set thread count
int Threads = OPT_GET("Provider/Video/FFmpegSource/Decoding Threads")->GetInt();
+#if FFMS_VERSION < ((2 << 24) | (30 << 16) | (0 << 8) | 0)
+ if (FFMS_GetVersion() < ((2 << 24) | (17 << 16) | (2 << 8) | 1) && FFMS_GetSourceType(Index) == FFMS_SOURCE_LAVF)
+ Threads = 1;
+#endif
// set seekmode
// TODO: give this its own option?
@@ -257,7 +269,7 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path const& filename, std::st
if (CS != AGI_CS_RGB && CS != AGI_CS_BT470BG && ColorSpace != colormatrix && colormatrix == "TV.601") {
CS = AGI_CS_BT470BG;
- ColorSpace = colormatrix_description(CS, CR);
+ ColorSpace = colormatrix_description(AGI_CS_BT470BG, CR);
}
if (CS != VideoCS) {
@@ -310,6 +322,54 @@ void FFmpegSourceVideoProvider::GetFrame(int n, VideoFrame &out) {
out.width = Width;
out.height = Height;
out.pitch = frame->Linesize[0];
+#if FFMS_VERSION >= ((2 << 24) | (31 << 16) | (0 << 8) | 0)
+ // Handle flip
+ if (VideoInfo->Flip > 0)
+ for (int x = 0; x < Height; ++x)
+ for (int y = 0; y < Width / 2; ++y)
+ for (int ch = 0; ch < 4; ++ch)
+ std::swap(out.data[frame->Linesize[0] * x + 4 * y + ch], out.data[frame->Linesize[0] * x + 4 * (Width - 1 - y) + ch]);
+
+ else if (VideoInfo->Flip < 0)
+ for (int x = 0; x < Height / 2; ++x)
+ for (int y = 0; y < Width; ++y)
+ for (int ch = 0; ch < 4; ++ch)
+ std::swap(out.data[frame->Linesize[0] * x + 4 * y + ch], out.data[frame->Linesize[0] * (Height - 1 - x) + 4 * y + ch]);
+#endif
+#if FFMS_VERSION >= ((2 << 24) | (24 << 16) | (0 << 8) | 0)
+ // Handle rotation
+ if (VideoInfo->Rotation % 360 == 180 || VideoInfo->Rotation % 360 == -180) {
+ std::vector data(std::move(out.data));
+ out.data.resize(Width * Height * 4);
+ for (int x = 0; x < Height; ++x)
+ for (int y = 0; y < Width; ++y)
+ for (int ch = 0; ch < 4; ++ch)
+ out.data[4 * (Width * x + y) + ch] = data[frame->Linesize[0] * (Height - 1 - x) + 4 * (Width - 1 - y) + ch];
+ out.pitch = 4 * Width;
+ }
+ else if (VideoInfo->Rotation % 180 == 90 || VideoInfo->Rotation % 360 == -270) {
+ std::vector data(std::move(out.data));
+ out.data.resize(Width * Height * 4);
+ for (int x = 0; x < Width; ++x)
+ for (int y = 0; y < Height; ++y)
+ for (int ch = 0; ch < 4; ++ch)
+ out.data[4 * (Height * x + y) + ch] = data[frame->Linesize[0] * y + 4 * (Width - 1 - x) + ch];
+ out.width = Height;
+ out.height = Width;
+ out.pitch = 4 * Height;
+ }
+ else if (VideoInfo->Rotation % 180 == 270 || VideoInfo->Rotation % 360 == -90) {
+ std::vector data(std::move(out.data));
+ out.data.resize(Width * Height * 4);
+ for (int x = 0; x < Width; ++x)
+ for (int y = 0; y < Height; ++y)
+ for (int ch = 0; ch < 4; ++ch)
+ out.data[4 * (Height * x + y) + ch] = data[frame->Linesize[0] * (Height - 1 - y) + 4 * x + ch];
+ out.width = Height;
+ out.height = Width;
+ out.pitch = 4 * Height;
+ }
+#endif
}
}
diff --git a/src/visual_tool_drag.cpp b/src/visual_tool_drag.cpp
index 9d8aa6594..96212da7f 100644
--- a/src/visual_tool_drag.cpp
+++ b/src/visual_tool_drag.cpp
@@ -54,6 +54,7 @@ VisualToolDrag::VisualToolDrag(VideoDisplay *parent, agi::Context *context)
void VisualToolDrag::SetToolbar(wxToolBar *tb) {
toolbar = tb;
+ toolbar->AddSeparator();
toolbar->AddTool(-1, _("Toggle between \\move and \\pos"), ICON(visual_move_conv_move));
toolbar->Realize();
toolbar->Show(true);
@@ -71,7 +72,7 @@ void VisualToolDrag::UpdateToggleButtons() {
if (to_move == button_is_move) return;
- toolbar->SetToolNormalBitmap(toolbar->GetToolByPos(0)->GetId(),
+ toolbar->SetToolNormalBitmap(toolbar->GetToolByPos(1)->GetId(),
to_move ? ICON(visual_move_conv_move) : ICON(visual_move_conv_pos));
button_is_move = to_move;
}
diff --git a/src/visual_tool_vector_clip.cpp b/src/visual_tool_vector_clip.cpp
index bbe00d8e9..701937798 100644
--- a/src/visual_tool_vector_clip.cpp
+++ b/src/visual_tool_vector_clip.cpp
@@ -52,6 +52,8 @@ VisualToolVectorClip::VisualToolVectorClip(VideoDisplay *parent, agi::Context *c
void VisualToolVectorClip::SetToolbar(wxToolBar *toolBar) {
this->toolBar = toolBar;
+ toolBar->AddSeparator();
+
int icon_size = OPT_GET("App/Toolbar Icon Size")->GetInt();
#define ICON(name) icon_size == 16 ? GETIMAGE(name ## _16) : GETIMAGE(name ## _24)
diff --git a/subprojects/boost.wrap b/subprojects/boost.wrap
new file mode 100644
index 000000000..1b2019981
--- /dev/null
+++ b/subprojects/boost.wrap
@@ -0,0 +1,6 @@
+[wrap-file]
+directory = boost_1_74_0
+source_url = https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.gz
+source_filename = boost_1_74_0.tar.gz
+source_hash = afff36d392885120bcac079148c177d1f6f7730ec3d47233aa51b0afa4db94a5
+patch_directory = boost
diff --git a/vendor/csri/Doxyfile b/subprojects/csri/Doxyfile
similarity index 100%
rename from vendor/csri/Doxyfile
rename to subprojects/csri/Doxyfile
diff --git a/vendor/csri/LICENSE b/subprojects/csri/LICENSE
similarity index 100%
rename from vendor/csri/LICENSE
rename to subprojects/csri/LICENSE
diff --git a/vendor/csri/Makefile.am b/subprojects/csri/Makefile.am
similarity index 100%
rename from vendor/csri/Makefile.am
rename to subprojects/csri/Makefile.am
diff --git a/vendor/csri/ac/Makefile.am b/subprojects/csri/ac/Makefile.am
similarity index 100%
rename from vendor/csri/ac/Makefile.am
rename to subprojects/csri/ac/Makefile.am
diff --git a/vendor/csri/acinclude.m4 b/subprojects/csri/acinclude.m4
similarity index 100%
rename from vendor/csri/acinclude.m4
rename to subprojects/csri/acinclude.m4
diff --git a/vendor/csri/backends/Makefile.am b/subprojects/csri/backends/Makefile.am
similarity index 100%
rename from vendor/csri/backends/Makefile.am
rename to subprojects/csri/backends/Makefile.am
diff --git a/vendor/csri/backends/libass/Makefile.am b/subprojects/csri/backends/libass/Makefile.am
similarity index 100%
rename from vendor/csri/backends/libass/Makefile.am
rename to subprojects/csri/backends/libass/Makefile.am
diff --git a/vendor/csri/backends/libass/libass_csri.c b/subprojects/csri/backends/libass/libass_csri.c
similarity index 100%
rename from vendor/csri/backends/libass/libass_csri.c
rename to subprojects/csri/backends/libass/libass_csri.c
diff --git a/vendor/csri/bootstrap b/subprojects/csri/bootstrap
old mode 100755
new mode 100644
similarity index 100%
rename from vendor/csri/bootstrap
rename to subprojects/csri/bootstrap
diff --git a/vendor/csri/configure.ac b/subprojects/csri/configure.ac
similarity index 100%
rename from vendor/csri/configure.ac
rename to subprojects/csri/configure.ac
diff --git a/vendor/csri/csri.pc.in b/subprojects/csri/csri.pc.in
similarity index 100%
rename from vendor/csri/csri.pc.in
rename to subprojects/csri/csri.pc.in
diff --git a/vendor/csri/csri_2008.vcproj b/subprojects/csri/csri_2008.vcproj
similarity index 100%
rename from vendor/csri/csri_2008.vcproj
rename to subprojects/csri/csri_2008.vcproj
diff --git a/vendor/csri/frontends/Makefile.am b/subprojects/csri/frontends/Makefile.am
similarity index 100%
rename from vendor/csri/frontends/Makefile.am
rename to subprojects/csri/frontends/Makefile.am
diff --git a/vendor/csri/frontends/avisynth25/Makefile.am b/subprojects/csri/frontends/avisynth25/Makefile.am
similarity index 100%
rename from vendor/csri/frontends/avisynth25/Makefile.am
rename to subprojects/csri/frontends/avisynth25/Makefile.am
diff --git a/vendor/csri/frontends/avisynth25/avisynth.cpp b/subprojects/csri/frontends/avisynth25/avisynth.cpp
similarity index 100%
rename from vendor/csri/frontends/avisynth25/avisynth.cpp
rename to subprojects/csri/frontends/avisynth25/avisynth.cpp
diff --git a/vendor/csri/frontends/avisynth25/avisynth.h b/subprojects/csri/frontends/avisynth25/avisynth.h
similarity index 100%
rename from vendor/csri/frontends/avisynth25/avisynth.h
rename to subprojects/csri/frontends/avisynth25/avisynth.h
diff --git a/vendor/csri/frontends/cmdline/Makefile.am b/subprojects/csri/frontends/cmdline/Makefile.am
similarity index 100%
rename from vendor/csri/frontends/cmdline/Makefile.am
rename to subprojects/csri/frontends/cmdline/Makefile.am
diff --git a/vendor/csri/frontends/cmdline/cmdmain.c b/subprojects/csri/frontends/cmdline/cmdmain.c
similarity index 100%
rename from vendor/csri/frontends/cmdline/cmdmain.c
rename to subprojects/csri/frontends/cmdline/cmdmain.c
diff --git a/vendor/csri/frontends/cmdline/render.c b/subprojects/csri/frontends/cmdline/render.c
similarity index 100%
rename from vendor/csri/frontends/cmdline/render.c
rename to subprojects/csri/frontends/cmdline/render.c
diff --git a/vendor/csri/frontends/cmdline/render.h b/subprojects/csri/frontends/cmdline/render.h
similarity index 100%
rename from vendor/csri/frontends/cmdline/render.h
rename to subprojects/csri/frontends/cmdline/render.h
diff --git a/vendor/csri/include/Makefile.am b/subprojects/csri/include/Makefile.am
similarity index 100%
rename from vendor/csri/include/Makefile.am
rename to subprojects/csri/include/Makefile.am
diff --git a/vendor/csri/include/csri/csri.h b/subprojects/csri/include/csri/csri.h
similarity index 100%
rename from vendor/csri/include/csri/csri.h
rename to subprojects/csri/include/csri/csri.h
diff --git a/vendor/csri/include/csri/fmtids.h b/subprojects/csri/include/csri/fmtids.h
similarity index 100%
rename from vendor/csri/include/csri/fmtids.h
rename to subprojects/csri/include/csri/fmtids.h
diff --git a/vendor/csri/include/csri/logging.h b/subprojects/csri/include/csri/logging.h
similarity index 100%
rename from vendor/csri/include/csri/logging.h
rename to subprojects/csri/include/csri/logging.h
diff --git a/vendor/csri/include/csri/openerr.h b/subprojects/csri/include/csri/openerr.h
similarity index 100%
rename from vendor/csri/include/csri/openerr.h
rename to subprojects/csri/include/csri/openerr.h
diff --git a/vendor/csri/include/csri/stream.h b/subprojects/csri/include/csri/stream.h
similarity index 100%
rename from vendor/csri/include/csri/stream.h
rename to subprojects/csri/include/csri/stream.h
diff --git a/vendor/csri/include/subhelp.h b/subprojects/csri/include/subhelp.h
similarity index 100%
rename from vendor/csri/include/subhelp.h
rename to subprojects/csri/include/subhelp.h
diff --git a/vendor/csri/include/visibility.h b/subprojects/csri/include/visibility.h
similarity index 100%
rename from vendor/csri/include/visibility.h
rename to subprojects/csri/include/visibility.h
diff --git a/vendor/csri/lib/Makefile.am b/subprojects/csri/lib/Makefile.am
similarity index 100%
rename from vendor/csri/lib/Makefile.am
rename to subprojects/csri/lib/Makefile.am
diff --git a/vendor/csri/lib/csrilib.h b/subprojects/csri/lib/csrilib.h
similarity index 100%
rename from vendor/csri/lib/csrilib.h
rename to subprojects/csri/lib/csrilib.h
diff --git a/vendor/csri/lib/list.c b/subprojects/csri/lib/list.c
similarity index 100%
rename from vendor/csri/lib/list.c
rename to subprojects/csri/lib/list.c
diff --git a/vendor/csri/lib/posix/csrilib_os.h b/subprojects/csri/lib/posix/csrilib_os.h
similarity index 100%
rename from vendor/csri/lib/posix/csrilib_os.h
rename to subprojects/csri/lib/posix/csrilib_os.h
diff --git a/vendor/csri/lib/posix/enumerate.c b/subprojects/csri/lib/posix/enumerate.c
similarity index 100%
rename from vendor/csri/lib/posix/enumerate.c
rename to subprojects/csri/lib/posix/enumerate.c
diff --git a/vendor/csri/lib/win32/csrilib_os.h b/subprojects/csri/lib/win32/csrilib_os.h
similarity index 100%
rename from vendor/csri/lib/win32/csrilib_os.h
rename to subprojects/csri/lib/win32/csrilib_os.h
diff --git a/vendor/csri/lib/win32/enumerate.c b/subprojects/csri/lib/win32/enumerate.c
similarity index 100%
rename from vendor/csri/lib/win32/enumerate.c
rename to subprojects/csri/lib/win32/enumerate.c
diff --git a/vendor/csri/lib/wrap.c b/subprojects/csri/lib/wrap.c
similarity index 100%
rename from vendor/csri/lib/wrap.c
rename to subprojects/csri/lib/wrap.c
diff --git a/subprojects/csri/meson.build b/subprojects/csri/meson.build
new file mode 100644
index 000000000..f5d338843
--- /dev/null
+++ b/subprojects/csri/meson.build
@@ -0,0 +1,20 @@
+project('csri', 'c')
+
+csri_sources = [
+ 'lib/list.c',
+ 'lib/wrap.c',
+ 'subhelp/logging.c',
+]
+
+csri_inc = [include_directories('include')]
+
+if host_machine.system() == 'windows'
+ csri_inc += include_directories('lib/win32')
+ csri_sources += ['lib/win32/enumerate.c', 'subhelp/win32/openfile.c']
+else
+ csri_inc += include_directories('lib/posix')
+ csri_sources += ['lib/posix/enumerate.c', 'subhelp/posix/openfile.c']
+endif
+
+csri = library('csri', csri_sources, include_directories: csri_inc)
+csri_dep = declare_dependency(link_with: csri, include_directories: csri_inc)
diff --git a/vendor/csri/subhelp/Makefile.am b/subprojects/csri/subhelp/Makefile.am
similarity index 100%
rename from vendor/csri/subhelp/Makefile.am
rename to subprojects/csri/subhelp/Makefile.am
diff --git a/vendor/csri/subhelp/logging.c b/subprojects/csri/subhelp/logging.c
similarity index 92%
rename from vendor/csri/subhelp/logging.c
rename to subprojects/csri/subhelp/logging.c
index e34978d05..08b9960e1 100644
--- a/vendor/csri/subhelp/logging.c
+++ b/subprojects/csri/subhelp/logging.c
@@ -81,8 +81,11 @@ void subhelp_vlog(enum csri_logging_severity severity,
n = vsnprintf(buffer, size, msg, args);
if (n >= 0 && (unsigned)n < size)
break;
- size = n > 0 ? (unsigned)n + 1 : size * 2;
- buffer = (char *)realloc(buffer, size);
+ size = n > 0 ? (size_t)n + 1 : size * 2;
+ char* old_buffer = buffer;
+ buffer = (char *)realloc(old_buffer, size);
+ if (!buffer)
+ free(old_buffer);
}
final = buffer ? buffer : "";
subhelp_slog(severity, final);
@@ -95,8 +98,8 @@ void subhelp_slog(enum csri_logging_severity severity, const char *msg)
if (logfunc)
logfunc(appdata, severity, msg);
else {
- fprintf(stderr, msg);
- fprintf(stderr, "\n");
+ fputs(msg, stderr);
+ fputc('\n', stderr);
}
}
diff --git a/vendor/csri/subhelp/posix/openfile.c b/subprojects/csri/subhelp/posix/openfile.c
similarity index 100%
rename from vendor/csri/subhelp/posix/openfile.c
rename to subprojects/csri/subhelp/posix/openfile.c
diff --git a/vendor/csri/subhelp/win32/openfile.c b/subprojects/csri/subhelp/win32/openfile.c
similarity index 100%
rename from vendor/csri/subhelp/win32/openfile.c
rename to subprojects/csri/subhelp/win32/openfile.c
diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
new file mode 100644
index 000000000..0a605d019
--- /dev/null
+++ b/subprojects/expat.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = expat-2.2.6
+
+source_url = https://github.com/libexpat/libexpat/releases/download/R_2_2_6/expat-2.2.6.tar.bz2
+source_filename = expat-2.2.6.tar.bz2
+source_hash = 17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/expat/2.2.6/1/get_zip
+patch_filename = expat-2.2.6-1-wrap.zip
+patch_hash = b8312fae757c7bff6f0cb430108104441a3da7a0a333809f5c80b354157eaa4d
diff --git a/subprojects/ffmpeg.wrap b/subprojects/ffmpeg.wrap
new file mode 100644
index 000000000..0a59585ad
--- /dev/null
+++ b/subprojects/ffmpeg.wrap
@@ -0,0 +1,11 @@
+[wrap-git]
+directory = ffmpeg
+url = https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg.git
+revision = meson-4.3
+
+[provide]
+libavformat = libavformat_dep
+libavcodec = libavcodec_dep
+libswscale = libswscale_dep
+libavutil = libavutil_dep
+libswresample = libswresample_dep
diff --git a/subprojects/ffms2.wrap b/subprojects/ffms2.wrap
new file mode 100644
index 000000000..9cb18212f
--- /dev/null
+++ b/subprojects/ffms2.wrap
@@ -0,0 +1,9 @@
+[wrap-file]
+directory = ffms2-2.40
+source_url = https://github.com/FFMS/ffms2/archive/2.40.tar.gz
+source_filename = 2.40.tar.gz
+source_hash = 82e95662946f3d6e1b529eadbd72bed196adfbc41368b2d50493efce6e716320
+patch_directory = ffms2
+
+[provide]
+ffms2 = ffms2_dep
diff --git a/subprojects/fribidi.wrap b/subprojects/fribidi.wrap
new file mode 100644
index 000000000..55458fca9
--- /dev/null
+++ b/subprojects/fribidi.wrap
@@ -0,0 +1,7 @@
+[wrap-git]
+directory = fribidi
+url = https://github.com/fribidi/fribidi.git
+revision = master
+
+[provide]
+fribidi = libfribidi_dep
diff --git a/subprojects/gtest.wrap b/subprojects/gtest.wrap
new file mode 100644
index 000000000..ba9c9b95f
--- /dev/null
+++ b/subprojects/gtest.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = googletest-release-1.8.1
+
+source_url = https://github.com/google/googletest/archive/release-1.8.1.zip
+source_filename = gtest-1.8.1.zip
+source_hash = 927827c183d01734cc5cfef85e0ff3f5a92ffe6188e0d18e909c5efebf28a0c7
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/gtest/1.8.1/1/get_zip
+patch_filename = gtest-1.8.1-1-wrap.zip
+patch_hash = f79f5fd46e09507b3f2e09a51ea6eb20020effe543335f5aee59f30cc8d15805
diff --git a/subprojects/harfbuzz.wrap b/subprojects/harfbuzz.wrap
new file mode 100644
index 000000000..10caa4b4a
--- /dev/null
+++ b/subprojects/harfbuzz.wrap
@@ -0,0 +1,7 @@
+[wrap-git]
+directory = harfbuzz
+url = https://github.com/harfbuzz/harfbuzz
+revision = main
+
+[provide]
+harfbuzz = libharfbuzz_dep
diff --git a/subprojects/hunspell.wrap b/subprojects/hunspell.wrap
new file mode 100644
index 000000000..aad4741bd
--- /dev/null
+++ b/subprojects/hunspell.wrap
@@ -0,0 +1,9 @@
+[wrap-file]
+directory = hunspell-1.7.0
+source_url = https://github.com/hunspell/hunspell/files/2573619/hunspell-1.7.0.tar.gz
+source_filename = hunspell-1.7.0.tar.gz
+source_hash = 57be4e03ae9dd62c3471f667a0d81a14513e314d4d92081292b90435944ff951
+patch_directory = hunspell
+
+[provides]
+hunspell = hunspell_dep
diff --git a/vendor/iconv/AUTHORS b/subprojects/iconv/AUTHORS
similarity index 100%
rename from vendor/iconv/AUTHORS
rename to subprojects/iconv/AUTHORS
diff --git a/vendor/iconv/COPYING b/subprojects/iconv/COPYING
similarity index 100%
rename from vendor/iconv/COPYING
rename to subprojects/iconv/COPYING
diff --git a/vendor/iconv/ChangeLog b/subprojects/iconv/ChangeLog
similarity index 100%
rename from vendor/iconv/ChangeLog
rename to subprojects/iconv/ChangeLog
diff --git a/vendor/iconv/DEPENDENCIES b/subprojects/iconv/DEPENDENCIES
similarity index 100%
rename from vendor/iconv/DEPENDENCIES
rename to subprojects/iconv/DEPENDENCIES
diff --git a/vendor/iconv/DESIGN b/subprojects/iconv/DESIGN
similarity index 100%
rename from vendor/iconv/DESIGN
rename to subprojects/iconv/DESIGN
diff --git a/vendor/iconv/HACKING b/subprojects/iconv/HACKING
similarity index 100%
rename from vendor/iconv/HACKING
rename to subprojects/iconv/HACKING
diff --git a/vendor/iconv/NEWS b/subprojects/iconv/NEWS
similarity index 100%
rename from vendor/iconv/NEWS
rename to subprojects/iconv/NEWS
diff --git a/vendor/iconv/NOTES b/subprojects/iconv/NOTES
similarity index 100%
rename from vendor/iconv/NOTES
rename to subprojects/iconv/NOTES
diff --git a/vendor/iconv/PORTS b/subprojects/iconv/PORTS
similarity index 100%
rename from vendor/iconv/PORTS
rename to subprojects/iconv/PORTS
diff --git a/vendor/iconv/README b/subprojects/iconv/README
similarity index 100%
rename from vendor/iconv/README
rename to subprojects/iconv/README
diff --git a/vendor/iconv/THANKS b/subprojects/iconv/THANKS
similarity index 100%
rename from vendor/iconv/THANKS
rename to subprojects/iconv/THANKS
diff --git a/vendor/iconv/include/iconv.h b/subprojects/iconv/include/iconv.h
similarity index 100%
rename from vendor/iconv/include/iconv.h
rename to subprojects/iconv/include/iconv.h
diff --git a/vendor/iconv/include/libcharset.h b/subprojects/iconv/include/libcharset.h
similarity index 100%
rename from vendor/iconv/include/libcharset.h
rename to subprojects/iconv/include/libcharset.h
diff --git a/vendor/iconv/include/localcharset.h b/subprojects/iconv/include/localcharset.h
similarity index 100%
rename from vendor/iconv/include/localcharset.h
rename to subprojects/iconv/include/localcharset.h
diff --git a/vendor/iconv/include/stdbool.h b/subprojects/iconv/include/stdbool.h
similarity index 100%
rename from vendor/iconv/include/stdbool.h
rename to subprojects/iconv/include/stdbool.h
diff --git a/vendor/iconv/libcharset/config.h b/subprojects/iconv/libcharset/config.h
similarity index 100%
rename from vendor/iconv/libcharset/config.h
rename to subprojects/iconv/libcharset/config.h
diff --git a/vendor/iconv/libcharset/localcharset.c b/subprojects/iconv/libcharset/localcharset.c
similarity index 100%
rename from vendor/iconv/libcharset/localcharset.c
rename to subprojects/iconv/libcharset/localcharset.c
diff --git a/vendor/iconv/libcharset/relocatable.c b/subprojects/iconv/libcharset/relocatable.c
similarity index 100%
rename from vendor/iconv/libcharset/relocatable.c
rename to subprojects/iconv/libcharset/relocatable.c
diff --git a/vendor/iconv/libcharset/relocatable.h b/subprojects/iconv/libcharset/relocatable.h
similarity index 100%
rename from vendor/iconv/libcharset/relocatable.h
rename to subprojects/iconv/libcharset/relocatable.h
diff --git a/vendor/iconv/libiconv/aliases.h b/subprojects/iconv/libiconv/aliases.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases.h
rename to subprojects/iconv/libiconv/aliases.h
diff --git a/vendor/iconv/libiconv/aliases2.h b/subprojects/iconv/libiconv/aliases2.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases2.h
rename to subprojects/iconv/libiconv/aliases2.h
diff --git a/vendor/iconv/libiconv/aliases_aix.h b/subprojects/iconv/libiconv/aliases_aix.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_aix.h
rename to subprojects/iconv/libiconv/aliases_aix.h
diff --git a/vendor/iconv/libiconv/aliases_aix_sysaix.h b/subprojects/iconv/libiconv/aliases_aix_sysaix.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_aix_sysaix.h
rename to subprojects/iconv/libiconv/aliases_aix_sysaix.h
diff --git a/vendor/iconv/libiconv/aliases_dos.h b/subprojects/iconv/libiconv/aliases_dos.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_dos.h
rename to subprojects/iconv/libiconv/aliases_dos.h
diff --git a/vendor/iconv/libiconv/aliases_extra.h b/subprojects/iconv/libiconv/aliases_extra.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_extra.h
rename to subprojects/iconv/libiconv/aliases_extra.h
diff --git a/vendor/iconv/libiconv/aliases_osf1.h b/subprojects/iconv/libiconv/aliases_osf1.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_osf1.h
rename to subprojects/iconv/libiconv/aliases_osf1.h
diff --git a/vendor/iconv/libiconv/aliases_osf1_sysosf1.h b/subprojects/iconv/libiconv/aliases_osf1_sysosf1.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_osf1_sysosf1.h
rename to subprojects/iconv/libiconv/aliases_osf1_sysosf1.h
diff --git a/vendor/iconv/libiconv/aliases_sysaix.h b/subprojects/iconv/libiconv/aliases_sysaix.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_sysaix.h
rename to subprojects/iconv/libiconv/aliases_sysaix.h
diff --git a/vendor/iconv/libiconv/aliases_syshpux.h b/subprojects/iconv/libiconv/aliases_syshpux.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_syshpux.h
rename to subprojects/iconv/libiconv/aliases_syshpux.h
diff --git a/vendor/iconv/libiconv/aliases_sysosf1.h b/subprojects/iconv/libiconv/aliases_sysosf1.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_sysosf1.h
rename to subprojects/iconv/libiconv/aliases_sysosf1.h
diff --git a/vendor/iconv/libiconv/aliases_syssolaris.h b/subprojects/iconv/libiconv/aliases_syssolaris.h
similarity index 100%
rename from vendor/iconv/libiconv/aliases_syssolaris.h
rename to subprojects/iconv/libiconv/aliases_syssolaris.h
diff --git a/vendor/iconv/libiconv/armscii_8.h b/subprojects/iconv/libiconv/armscii_8.h
similarity index 100%
rename from vendor/iconv/libiconv/armscii_8.h
rename to subprojects/iconv/libiconv/armscii_8.h
diff --git a/vendor/iconv/libiconv/ascii.h b/subprojects/iconv/libiconv/ascii.h
similarity index 100%
rename from vendor/iconv/libiconv/ascii.h
rename to subprojects/iconv/libiconv/ascii.h
diff --git a/vendor/iconv/libiconv/atarist.h b/subprojects/iconv/libiconv/atarist.h
similarity index 100%
rename from vendor/iconv/libiconv/atarist.h
rename to subprojects/iconv/libiconv/atarist.h
diff --git a/vendor/iconv/libiconv/big5.h b/subprojects/iconv/libiconv/big5.h
similarity index 100%
rename from vendor/iconv/libiconv/big5.h
rename to subprojects/iconv/libiconv/big5.h
diff --git a/vendor/iconv/libiconv/big5_2003.h b/subprojects/iconv/libiconv/big5_2003.h
similarity index 100%
rename from vendor/iconv/libiconv/big5_2003.h
rename to subprojects/iconv/libiconv/big5_2003.h
diff --git a/vendor/iconv/libiconv/big5hkscs1999.h b/subprojects/iconv/libiconv/big5hkscs1999.h
similarity index 100%
rename from vendor/iconv/libiconv/big5hkscs1999.h
rename to subprojects/iconv/libiconv/big5hkscs1999.h
diff --git a/vendor/iconv/libiconv/big5hkscs2001.h b/subprojects/iconv/libiconv/big5hkscs2001.h
similarity index 100%
rename from vendor/iconv/libiconv/big5hkscs2001.h
rename to subprojects/iconv/libiconv/big5hkscs2001.h
diff --git a/vendor/iconv/libiconv/big5hkscs2004.h b/subprojects/iconv/libiconv/big5hkscs2004.h
similarity index 100%
rename from vendor/iconv/libiconv/big5hkscs2004.h
rename to subprojects/iconv/libiconv/big5hkscs2004.h
diff --git a/vendor/iconv/libiconv/c99.h b/subprojects/iconv/libiconv/c99.h
similarity index 100%
rename from vendor/iconv/libiconv/c99.h
rename to subprojects/iconv/libiconv/c99.h
diff --git a/vendor/iconv/libiconv/canonical.h b/subprojects/iconv/libiconv/canonical.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical.h
rename to subprojects/iconv/libiconv/canonical.h
diff --git a/vendor/iconv/libiconv/canonical_aix.h b/subprojects/iconv/libiconv/canonical_aix.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_aix.h
rename to subprojects/iconv/libiconv/canonical_aix.h
diff --git a/vendor/iconv/libiconv/canonical_aix_sysaix.h b/subprojects/iconv/libiconv/canonical_aix_sysaix.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_aix_sysaix.h
rename to subprojects/iconv/libiconv/canonical_aix_sysaix.h
diff --git a/vendor/iconv/libiconv/canonical_dos.h b/subprojects/iconv/libiconv/canonical_dos.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_dos.h
rename to subprojects/iconv/libiconv/canonical_dos.h
diff --git a/vendor/iconv/libiconv/canonical_extra.h b/subprojects/iconv/libiconv/canonical_extra.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_extra.h
rename to subprojects/iconv/libiconv/canonical_extra.h
diff --git a/vendor/iconv/libiconv/canonical_local.h b/subprojects/iconv/libiconv/canonical_local.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_local.h
rename to subprojects/iconv/libiconv/canonical_local.h
diff --git a/vendor/iconv/libiconv/canonical_local_sysaix.h b/subprojects/iconv/libiconv/canonical_local_sysaix.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_local_sysaix.h
rename to subprojects/iconv/libiconv/canonical_local_sysaix.h
diff --git a/vendor/iconv/libiconv/canonical_local_syshpux.h b/subprojects/iconv/libiconv/canonical_local_syshpux.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_local_syshpux.h
rename to subprojects/iconv/libiconv/canonical_local_syshpux.h
diff --git a/vendor/iconv/libiconv/canonical_local_sysosf1.h b/subprojects/iconv/libiconv/canonical_local_sysosf1.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_local_sysosf1.h
rename to subprojects/iconv/libiconv/canonical_local_sysosf1.h
diff --git a/vendor/iconv/libiconv/canonical_local_syssolaris.h b/subprojects/iconv/libiconv/canonical_local_syssolaris.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_local_syssolaris.h
rename to subprojects/iconv/libiconv/canonical_local_syssolaris.h
diff --git a/vendor/iconv/libiconv/canonical_osf1.h b/subprojects/iconv/libiconv/canonical_osf1.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_osf1.h
rename to subprojects/iconv/libiconv/canonical_osf1.h
diff --git a/vendor/iconv/libiconv/canonical_osf1_sysosf1.h b/subprojects/iconv/libiconv/canonical_osf1_sysosf1.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_osf1_sysosf1.h
rename to subprojects/iconv/libiconv/canonical_osf1_sysosf1.h
diff --git a/vendor/iconv/libiconv/canonical_sysaix.h b/subprojects/iconv/libiconv/canonical_sysaix.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_sysaix.h
rename to subprojects/iconv/libiconv/canonical_sysaix.h
diff --git a/vendor/iconv/libiconv/canonical_syshpux.h b/subprojects/iconv/libiconv/canonical_syshpux.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_syshpux.h
rename to subprojects/iconv/libiconv/canonical_syshpux.h
diff --git a/vendor/iconv/libiconv/canonical_sysosf1.h b/subprojects/iconv/libiconv/canonical_sysosf1.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_sysosf1.h
rename to subprojects/iconv/libiconv/canonical_sysosf1.h
diff --git a/vendor/iconv/libiconv/canonical_syssolaris.h b/subprojects/iconv/libiconv/canonical_syssolaris.h
similarity index 100%
rename from vendor/iconv/libiconv/canonical_syssolaris.h
rename to subprojects/iconv/libiconv/canonical_syssolaris.h
diff --git a/vendor/iconv/libiconv/ces_big5.h b/subprojects/iconv/libiconv/ces_big5.h
similarity index 100%
rename from vendor/iconv/libiconv/ces_big5.h
rename to subprojects/iconv/libiconv/ces_big5.h
diff --git a/vendor/iconv/libiconv/ces_gbk.h b/subprojects/iconv/libiconv/ces_gbk.h
similarity index 100%
rename from vendor/iconv/libiconv/ces_gbk.h
rename to subprojects/iconv/libiconv/ces_gbk.h
diff --git a/vendor/iconv/libiconv/charset.alias b/subprojects/iconv/libiconv/charset.alias
similarity index 100%
rename from vendor/iconv/libiconv/charset.alias
rename to subprojects/iconv/libiconv/charset.alias
diff --git a/vendor/iconv/libiconv/cjk_variants.h b/subprojects/iconv/libiconv/cjk_variants.h
similarity index 100%
rename from vendor/iconv/libiconv/cjk_variants.h
rename to subprojects/iconv/libiconv/cjk_variants.h
diff --git a/vendor/iconv/libiconv/cns11643.h b/subprojects/iconv/libiconv/cns11643.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643.h
rename to subprojects/iconv/libiconv/cns11643.h
diff --git a/vendor/iconv/libiconv/cns11643_1.h b/subprojects/iconv/libiconv/cns11643_1.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_1.h
rename to subprojects/iconv/libiconv/cns11643_1.h
diff --git a/vendor/iconv/libiconv/cns11643_15.h b/subprojects/iconv/libiconv/cns11643_15.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_15.h
rename to subprojects/iconv/libiconv/cns11643_15.h
diff --git a/vendor/iconv/libiconv/cns11643_2.h b/subprojects/iconv/libiconv/cns11643_2.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_2.h
rename to subprojects/iconv/libiconv/cns11643_2.h
diff --git a/vendor/iconv/libiconv/cns11643_3.h b/subprojects/iconv/libiconv/cns11643_3.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_3.h
rename to subprojects/iconv/libiconv/cns11643_3.h
diff --git a/vendor/iconv/libiconv/cns11643_4.h b/subprojects/iconv/libiconv/cns11643_4.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_4.h
rename to subprojects/iconv/libiconv/cns11643_4.h
diff --git a/vendor/iconv/libiconv/cns11643_4a.h b/subprojects/iconv/libiconv/cns11643_4a.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_4a.h
rename to subprojects/iconv/libiconv/cns11643_4a.h
diff --git a/vendor/iconv/libiconv/cns11643_4b.h b/subprojects/iconv/libiconv/cns11643_4b.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_4b.h
rename to subprojects/iconv/libiconv/cns11643_4b.h
diff --git a/vendor/iconv/libiconv/cns11643_5.h b/subprojects/iconv/libiconv/cns11643_5.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_5.h
rename to subprojects/iconv/libiconv/cns11643_5.h
diff --git a/vendor/iconv/libiconv/cns11643_6.h b/subprojects/iconv/libiconv/cns11643_6.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_6.h
rename to subprojects/iconv/libiconv/cns11643_6.h
diff --git a/vendor/iconv/libiconv/cns11643_7.h b/subprojects/iconv/libiconv/cns11643_7.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_7.h
rename to subprojects/iconv/libiconv/cns11643_7.h
diff --git a/vendor/iconv/libiconv/cns11643_inv.h b/subprojects/iconv/libiconv/cns11643_inv.h
similarity index 100%
rename from vendor/iconv/libiconv/cns11643_inv.h
rename to subprojects/iconv/libiconv/cns11643_inv.h
diff --git a/vendor/iconv/libiconv/config.h b/subprojects/iconv/libiconv/config.h
similarity index 100%
rename from vendor/iconv/libiconv/config.h
rename to subprojects/iconv/libiconv/config.h
diff --git a/vendor/iconv/libiconv/converters.h b/subprojects/iconv/libiconv/converters.h
similarity index 100%
rename from vendor/iconv/libiconv/converters.h
rename to subprojects/iconv/libiconv/converters.h
diff --git a/vendor/iconv/libiconv/cp1046.h b/subprojects/iconv/libiconv/cp1046.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1046.h
rename to subprojects/iconv/libiconv/cp1046.h
diff --git a/vendor/iconv/libiconv/cp1124.h b/subprojects/iconv/libiconv/cp1124.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1124.h
rename to subprojects/iconv/libiconv/cp1124.h
diff --git a/vendor/iconv/libiconv/cp1125.h b/subprojects/iconv/libiconv/cp1125.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1125.h
rename to subprojects/iconv/libiconv/cp1125.h
diff --git a/vendor/iconv/libiconv/cp1129.h b/subprojects/iconv/libiconv/cp1129.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1129.h
rename to subprojects/iconv/libiconv/cp1129.h
diff --git a/vendor/iconv/libiconv/cp1131.h b/subprojects/iconv/libiconv/cp1131.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1131.h
rename to subprojects/iconv/libiconv/cp1131.h
diff --git a/vendor/iconv/libiconv/cp1133.h b/subprojects/iconv/libiconv/cp1133.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1133.h
rename to subprojects/iconv/libiconv/cp1133.h
diff --git a/vendor/iconv/libiconv/cp1161.h b/subprojects/iconv/libiconv/cp1161.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1161.h
rename to subprojects/iconv/libiconv/cp1161.h
diff --git a/vendor/iconv/libiconv/cp1162.h b/subprojects/iconv/libiconv/cp1162.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1162.h
rename to subprojects/iconv/libiconv/cp1162.h
diff --git a/vendor/iconv/libiconv/cp1163.h b/subprojects/iconv/libiconv/cp1163.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1163.h
rename to subprojects/iconv/libiconv/cp1163.h
diff --git a/vendor/iconv/libiconv/cp1250.h b/subprojects/iconv/libiconv/cp1250.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1250.h
rename to subprojects/iconv/libiconv/cp1250.h
diff --git a/vendor/iconv/libiconv/cp1251.h b/subprojects/iconv/libiconv/cp1251.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1251.h
rename to subprojects/iconv/libiconv/cp1251.h
diff --git a/vendor/iconv/libiconv/cp1252.h b/subprojects/iconv/libiconv/cp1252.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1252.h
rename to subprojects/iconv/libiconv/cp1252.h
diff --git a/vendor/iconv/libiconv/cp1253.h b/subprojects/iconv/libiconv/cp1253.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1253.h
rename to subprojects/iconv/libiconv/cp1253.h
diff --git a/vendor/iconv/libiconv/cp1254.h b/subprojects/iconv/libiconv/cp1254.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1254.h
rename to subprojects/iconv/libiconv/cp1254.h
diff --git a/vendor/iconv/libiconv/cp1255.h b/subprojects/iconv/libiconv/cp1255.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1255.h
rename to subprojects/iconv/libiconv/cp1255.h
diff --git a/vendor/iconv/libiconv/cp1256.h b/subprojects/iconv/libiconv/cp1256.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1256.h
rename to subprojects/iconv/libiconv/cp1256.h
diff --git a/vendor/iconv/libiconv/cp1257.h b/subprojects/iconv/libiconv/cp1257.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1257.h
rename to subprojects/iconv/libiconv/cp1257.h
diff --git a/vendor/iconv/libiconv/cp1258.h b/subprojects/iconv/libiconv/cp1258.h
similarity index 100%
rename from vendor/iconv/libiconv/cp1258.h
rename to subprojects/iconv/libiconv/cp1258.h
diff --git a/vendor/iconv/libiconv/cp437.h b/subprojects/iconv/libiconv/cp437.h
similarity index 100%
rename from vendor/iconv/libiconv/cp437.h
rename to subprojects/iconv/libiconv/cp437.h
diff --git a/vendor/iconv/libiconv/cp737.h b/subprojects/iconv/libiconv/cp737.h
similarity index 100%
rename from vendor/iconv/libiconv/cp737.h
rename to subprojects/iconv/libiconv/cp737.h
diff --git a/vendor/iconv/libiconv/cp775.h b/subprojects/iconv/libiconv/cp775.h
similarity index 100%
rename from vendor/iconv/libiconv/cp775.h
rename to subprojects/iconv/libiconv/cp775.h
diff --git a/vendor/iconv/libiconv/cp850.h b/subprojects/iconv/libiconv/cp850.h
similarity index 100%
rename from vendor/iconv/libiconv/cp850.h
rename to subprojects/iconv/libiconv/cp850.h
diff --git a/vendor/iconv/libiconv/cp852.h b/subprojects/iconv/libiconv/cp852.h
similarity index 100%
rename from vendor/iconv/libiconv/cp852.h
rename to subprojects/iconv/libiconv/cp852.h
diff --git a/vendor/iconv/libiconv/cp853.h b/subprojects/iconv/libiconv/cp853.h
similarity index 100%
rename from vendor/iconv/libiconv/cp853.h
rename to subprojects/iconv/libiconv/cp853.h
diff --git a/vendor/iconv/libiconv/cp855.h b/subprojects/iconv/libiconv/cp855.h
similarity index 100%
rename from vendor/iconv/libiconv/cp855.h
rename to subprojects/iconv/libiconv/cp855.h
diff --git a/vendor/iconv/libiconv/cp856.h b/subprojects/iconv/libiconv/cp856.h
similarity index 100%
rename from vendor/iconv/libiconv/cp856.h
rename to subprojects/iconv/libiconv/cp856.h
diff --git a/vendor/iconv/libiconv/cp857.h b/subprojects/iconv/libiconv/cp857.h
similarity index 100%
rename from vendor/iconv/libiconv/cp857.h
rename to subprojects/iconv/libiconv/cp857.h
diff --git a/vendor/iconv/libiconv/cp858.h b/subprojects/iconv/libiconv/cp858.h
similarity index 100%
rename from vendor/iconv/libiconv/cp858.h
rename to subprojects/iconv/libiconv/cp858.h
diff --git a/vendor/iconv/libiconv/cp860.h b/subprojects/iconv/libiconv/cp860.h
similarity index 100%
rename from vendor/iconv/libiconv/cp860.h
rename to subprojects/iconv/libiconv/cp860.h
diff --git a/vendor/iconv/libiconv/cp861.h b/subprojects/iconv/libiconv/cp861.h
similarity index 100%
rename from vendor/iconv/libiconv/cp861.h
rename to subprojects/iconv/libiconv/cp861.h
diff --git a/vendor/iconv/libiconv/cp862.h b/subprojects/iconv/libiconv/cp862.h
similarity index 100%
rename from vendor/iconv/libiconv/cp862.h
rename to subprojects/iconv/libiconv/cp862.h
diff --git a/vendor/iconv/libiconv/cp863.h b/subprojects/iconv/libiconv/cp863.h
similarity index 100%
rename from vendor/iconv/libiconv/cp863.h
rename to subprojects/iconv/libiconv/cp863.h
diff --git a/vendor/iconv/libiconv/cp864.h b/subprojects/iconv/libiconv/cp864.h
similarity index 100%
rename from vendor/iconv/libiconv/cp864.h
rename to subprojects/iconv/libiconv/cp864.h
diff --git a/vendor/iconv/libiconv/cp865.h b/subprojects/iconv/libiconv/cp865.h
similarity index 100%
rename from vendor/iconv/libiconv/cp865.h
rename to subprojects/iconv/libiconv/cp865.h
diff --git a/vendor/iconv/libiconv/cp866.h b/subprojects/iconv/libiconv/cp866.h
similarity index 100%
rename from vendor/iconv/libiconv/cp866.h
rename to subprojects/iconv/libiconv/cp866.h
diff --git a/vendor/iconv/libiconv/cp869.h b/subprojects/iconv/libiconv/cp869.h
similarity index 100%
rename from vendor/iconv/libiconv/cp869.h
rename to subprojects/iconv/libiconv/cp869.h
diff --git a/vendor/iconv/libiconv/cp874.h b/subprojects/iconv/libiconv/cp874.h
similarity index 100%
rename from vendor/iconv/libiconv/cp874.h
rename to subprojects/iconv/libiconv/cp874.h
diff --git a/vendor/iconv/libiconv/cp922.h b/subprojects/iconv/libiconv/cp922.h
similarity index 100%
rename from vendor/iconv/libiconv/cp922.h
rename to subprojects/iconv/libiconv/cp922.h
diff --git a/vendor/iconv/libiconv/cp932.h b/subprojects/iconv/libiconv/cp932.h
similarity index 100%
rename from vendor/iconv/libiconv/cp932.h
rename to subprojects/iconv/libiconv/cp932.h
diff --git a/vendor/iconv/libiconv/cp932ext.h b/subprojects/iconv/libiconv/cp932ext.h
similarity index 100%
rename from vendor/iconv/libiconv/cp932ext.h
rename to subprojects/iconv/libiconv/cp932ext.h
diff --git a/vendor/iconv/libiconv/cp936.h b/subprojects/iconv/libiconv/cp936.h
similarity index 100%
rename from vendor/iconv/libiconv/cp936.h
rename to subprojects/iconv/libiconv/cp936.h
diff --git a/vendor/iconv/libiconv/cp936ext.h b/subprojects/iconv/libiconv/cp936ext.h
similarity index 100%
rename from vendor/iconv/libiconv/cp936ext.h
rename to subprojects/iconv/libiconv/cp936ext.h
diff --git a/vendor/iconv/libiconv/cp943.h b/subprojects/iconv/libiconv/cp943.h
similarity index 100%
rename from vendor/iconv/libiconv/cp943.h
rename to subprojects/iconv/libiconv/cp943.h
diff --git a/vendor/iconv/libiconv/cp949.h b/subprojects/iconv/libiconv/cp949.h
similarity index 100%
rename from vendor/iconv/libiconv/cp949.h
rename to subprojects/iconv/libiconv/cp949.h
diff --git a/vendor/iconv/libiconv/cp950.h b/subprojects/iconv/libiconv/cp950.h
similarity index 100%
rename from vendor/iconv/libiconv/cp950.h
rename to subprojects/iconv/libiconv/cp950.h
diff --git a/vendor/iconv/libiconv/cp950ext.h b/subprojects/iconv/libiconv/cp950ext.h
similarity index 100%
rename from vendor/iconv/libiconv/cp950ext.h
rename to subprojects/iconv/libiconv/cp950ext.h
diff --git a/vendor/iconv/libiconv/dec_hanyu.h b/subprojects/iconv/libiconv/dec_hanyu.h
similarity index 100%
rename from vendor/iconv/libiconv/dec_hanyu.h
rename to subprojects/iconv/libiconv/dec_hanyu.h
diff --git a/vendor/iconv/libiconv/dec_kanji.h b/subprojects/iconv/libiconv/dec_kanji.h
similarity index 100%
rename from vendor/iconv/libiconv/dec_kanji.h
rename to subprojects/iconv/libiconv/dec_kanji.h
diff --git a/vendor/iconv/libiconv/encodings.def b/subprojects/iconv/libiconv/encodings.def
similarity index 100%
rename from vendor/iconv/libiconv/encodings.def
rename to subprojects/iconv/libiconv/encodings.def
diff --git a/vendor/iconv/libiconv/encodings_aix.def b/subprojects/iconv/libiconv/encodings_aix.def
similarity index 100%
rename from vendor/iconv/libiconv/encodings_aix.def
rename to subprojects/iconv/libiconv/encodings_aix.def
diff --git a/vendor/iconv/libiconv/encodings_dos.def b/subprojects/iconv/libiconv/encodings_dos.def
similarity index 100%
rename from vendor/iconv/libiconv/encodings_dos.def
rename to subprojects/iconv/libiconv/encodings_dos.def
diff --git a/vendor/iconv/libiconv/encodings_extra.def b/subprojects/iconv/libiconv/encodings_extra.def
similarity index 100%
rename from vendor/iconv/libiconv/encodings_extra.def
rename to subprojects/iconv/libiconv/encodings_extra.def
diff --git a/vendor/iconv/libiconv/encodings_local.def b/subprojects/iconv/libiconv/encodings_local.def
similarity index 100%
rename from vendor/iconv/libiconv/encodings_local.def
rename to subprojects/iconv/libiconv/encodings_local.def
diff --git a/vendor/iconv/libiconv/encodings_osf1.def b/subprojects/iconv/libiconv/encodings_osf1.def
similarity index 100%
rename from vendor/iconv/libiconv/encodings_osf1.def
rename to subprojects/iconv/libiconv/encodings_osf1.def
diff --git a/vendor/iconv/libiconv/euc_cn.h b/subprojects/iconv/libiconv/euc_cn.h
similarity index 100%
rename from vendor/iconv/libiconv/euc_cn.h
rename to subprojects/iconv/libiconv/euc_cn.h
diff --git a/vendor/iconv/libiconv/euc_jisx0213.h b/subprojects/iconv/libiconv/euc_jisx0213.h
similarity index 100%
rename from vendor/iconv/libiconv/euc_jisx0213.h
rename to subprojects/iconv/libiconv/euc_jisx0213.h
diff --git a/vendor/iconv/libiconv/euc_jp.h b/subprojects/iconv/libiconv/euc_jp.h
similarity index 100%
rename from vendor/iconv/libiconv/euc_jp.h
rename to subprojects/iconv/libiconv/euc_jp.h
diff --git a/vendor/iconv/libiconv/euc_kr.h b/subprojects/iconv/libiconv/euc_kr.h
similarity index 100%
rename from vendor/iconv/libiconv/euc_kr.h
rename to subprojects/iconv/libiconv/euc_kr.h
diff --git a/vendor/iconv/libiconv/euc_tw.h b/subprojects/iconv/libiconv/euc_tw.h
similarity index 100%
rename from vendor/iconv/libiconv/euc_tw.h
rename to subprojects/iconv/libiconv/euc_tw.h
diff --git a/vendor/iconv/libiconv/flags.h b/subprojects/iconv/libiconv/flags.h
similarity index 100%
rename from vendor/iconv/libiconv/flags.h
rename to subprojects/iconv/libiconv/flags.h
diff --git a/vendor/iconv/libiconv/flushwc.h b/subprojects/iconv/libiconv/flushwc.h
similarity index 100%
rename from vendor/iconv/libiconv/flushwc.h
rename to subprojects/iconv/libiconv/flushwc.h
diff --git a/vendor/iconv/libiconv/gb12345.h b/subprojects/iconv/libiconv/gb12345.h
similarity index 100%
rename from vendor/iconv/libiconv/gb12345.h
rename to subprojects/iconv/libiconv/gb12345.h
diff --git a/vendor/iconv/libiconv/gb12345ext.h b/subprojects/iconv/libiconv/gb12345ext.h
similarity index 100%
rename from vendor/iconv/libiconv/gb12345ext.h
rename to subprojects/iconv/libiconv/gb12345ext.h
diff --git a/vendor/iconv/libiconv/gb18030.h b/subprojects/iconv/libiconv/gb18030.h
similarity index 100%
rename from vendor/iconv/libiconv/gb18030.h
rename to subprojects/iconv/libiconv/gb18030.h
diff --git a/vendor/iconv/libiconv/gb18030ext.h b/subprojects/iconv/libiconv/gb18030ext.h
similarity index 100%
rename from vendor/iconv/libiconv/gb18030ext.h
rename to subprojects/iconv/libiconv/gb18030ext.h
diff --git a/vendor/iconv/libiconv/gb18030uni.h b/subprojects/iconv/libiconv/gb18030uni.h
similarity index 100%
rename from vendor/iconv/libiconv/gb18030uni.h
rename to subprojects/iconv/libiconv/gb18030uni.h
diff --git a/vendor/iconv/libiconv/gb2312.h b/subprojects/iconv/libiconv/gb2312.h
similarity index 100%
rename from vendor/iconv/libiconv/gb2312.h
rename to subprojects/iconv/libiconv/gb2312.h
diff --git a/vendor/iconv/libiconv/gbk.h b/subprojects/iconv/libiconv/gbk.h
similarity index 100%
rename from vendor/iconv/libiconv/gbk.h
rename to subprojects/iconv/libiconv/gbk.h
diff --git a/vendor/iconv/libiconv/gbkext1.h b/subprojects/iconv/libiconv/gbkext1.h
similarity index 100%
rename from vendor/iconv/libiconv/gbkext1.h
rename to subprojects/iconv/libiconv/gbkext1.h
diff --git a/vendor/iconv/libiconv/gbkext2.h b/subprojects/iconv/libiconv/gbkext2.h
similarity index 100%
rename from vendor/iconv/libiconv/gbkext2.h
rename to subprojects/iconv/libiconv/gbkext2.h
diff --git a/vendor/iconv/libiconv/gbkext_inv.h b/subprojects/iconv/libiconv/gbkext_inv.h
similarity index 100%
rename from vendor/iconv/libiconv/gbkext_inv.h
rename to subprojects/iconv/libiconv/gbkext_inv.h
diff --git a/vendor/iconv/libiconv/genaliases.c b/subprojects/iconv/libiconv/genaliases.c
similarity index 100%
rename from vendor/iconv/libiconv/genaliases.c
rename to subprojects/iconv/libiconv/genaliases.c
diff --git a/vendor/iconv/libiconv/genaliases2.c b/subprojects/iconv/libiconv/genaliases2.c
similarity index 100%
rename from vendor/iconv/libiconv/genaliases2.c
rename to subprojects/iconv/libiconv/genaliases2.c
diff --git a/vendor/iconv/libiconv/genflags.c b/subprojects/iconv/libiconv/genflags.c
similarity index 100%
rename from vendor/iconv/libiconv/genflags.c
rename to subprojects/iconv/libiconv/genflags.c
diff --git a/vendor/iconv/libiconv/gentranslit.c b/subprojects/iconv/libiconv/gentranslit.c
similarity index 100%
rename from vendor/iconv/libiconv/gentranslit.c
rename to subprojects/iconv/libiconv/gentranslit.c
diff --git a/vendor/iconv/libiconv/georgian_academy.h b/subprojects/iconv/libiconv/georgian_academy.h
similarity index 100%
rename from vendor/iconv/libiconv/georgian_academy.h
rename to subprojects/iconv/libiconv/georgian_academy.h
diff --git a/vendor/iconv/libiconv/georgian_ps.h b/subprojects/iconv/libiconv/georgian_ps.h
similarity index 100%
rename from vendor/iconv/libiconv/georgian_ps.h
rename to subprojects/iconv/libiconv/georgian_ps.h
diff --git a/vendor/iconv/libiconv/hkscs1999.h b/subprojects/iconv/libiconv/hkscs1999.h
similarity index 100%
rename from vendor/iconv/libiconv/hkscs1999.h
rename to subprojects/iconv/libiconv/hkscs1999.h
diff --git a/vendor/iconv/libiconv/hkscs2001.h b/subprojects/iconv/libiconv/hkscs2001.h
similarity index 100%
rename from vendor/iconv/libiconv/hkscs2001.h
rename to subprojects/iconv/libiconv/hkscs2001.h
diff --git a/vendor/iconv/libiconv/hkscs2004.h b/subprojects/iconv/libiconv/hkscs2004.h
similarity index 100%
rename from vendor/iconv/libiconv/hkscs2004.h
rename to subprojects/iconv/libiconv/hkscs2004.h
diff --git a/vendor/iconv/libiconv/hp_roman8.h b/subprojects/iconv/libiconv/hp_roman8.h
similarity index 100%
rename from vendor/iconv/libiconv/hp_roman8.h
rename to subprojects/iconv/libiconv/hp_roman8.h
diff --git a/vendor/iconv/libiconv/hz.h b/subprojects/iconv/libiconv/hz.h
similarity index 100%
rename from vendor/iconv/libiconv/hz.h
rename to subprojects/iconv/libiconv/hz.h
diff --git a/vendor/iconv/libiconv/iconv.c b/subprojects/iconv/libiconv/iconv.c
similarity index 100%
rename from vendor/iconv/libiconv/iconv.c
rename to subprojects/iconv/libiconv/iconv.c
diff --git a/vendor/iconv/libiconv/iconv_open1.h b/subprojects/iconv/libiconv/iconv_open1.h
similarity index 100%
rename from vendor/iconv/libiconv/iconv_open1.h
rename to subprojects/iconv/libiconv/iconv_open1.h
diff --git a/vendor/iconv/libiconv/iconv_open2.h b/subprojects/iconv/libiconv/iconv_open2.h
similarity index 100%
rename from vendor/iconv/libiconv/iconv_open2.h
rename to subprojects/iconv/libiconv/iconv_open2.h
diff --git a/vendor/iconv/libiconv/iso2022_cn.h b/subprojects/iconv/libiconv/iso2022_cn.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_cn.h
rename to subprojects/iconv/libiconv/iso2022_cn.h
diff --git a/vendor/iconv/libiconv/iso2022_cnext.h b/subprojects/iconv/libiconv/iso2022_cnext.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_cnext.h
rename to subprojects/iconv/libiconv/iso2022_cnext.h
diff --git a/vendor/iconv/libiconv/iso2022_jp.h b/subprojects/iconv/libiconv/iso2022_jp.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_jp.h
rename to subprojects/iconv/libiconv/iso2022_jp.h
diff --git a/vendor/iconv/libiconv/iso2022_jp1.h b/subprojects/iconv/libiconv/iso2022_jp1.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_jp1.h
rename to subprojects/iconv/libiconv/iso2022_jp1.h
diff --git a/vendor/iconv/libiconv/iso2022_jp2.h b/subprojects/iconv/libiconv/iso2022_jp2.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_jp2.h
rename to subprojects/iconv/libiconv/iso2022_jp2.h
diff --git a/vendor/iconv/libiconv/iso2022_jp3.h b/subprojects/iconv/libiconv/iso2022_jp3.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_jp3.h
rename to subprojects/iconv/libiconv/iso2022_jp3.h
diff --git a/vendor/iconv/libiconv/iso2022_kr.h b/subprojects/iconv/libiconv/iso2022_kr.h
similarity index 100%
rename from vendor/iconv/libiconv/iso2022_kr.h
rename to subprojects/iconv/libiconv/iso2022_kr.h
diff --git a/vendor/iconv/libiconv/iso646_cn.h b/subprojects/iconv/libiconv/iso646_cn.h
similarity index 100%
rename from vendor/iconv/libiconv/iso646_cn.h
rename to subprojects/iconv/libiconv/iso646_cn.h
diff --git a/vendor/iconv/libiconv/iso646_jp.h b/subprojects/iconv/libiconv/iso646_jp.h
similarity index 100%
rename from vendor/iconv/libiconv/iso646_jp.h
rename to subprojects/iconv/libiconv/iso646_jp.h
diff --git a/vendor/iconv/libiconv/iso8859_1.h b/subprojects/iconv/libiconv/iso8859_1.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_1.h
rename to subprojects/iconv/libiconv/iso8859_1.h
diff --git a/vendor/iconv/libiconv/iso8859_10.h b/subprojects/iconv/libiconv/iso8859_10.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_10.h
rename to subprojects/iconv/libiconv/iso8859_10.h
diff --git a/vendor/iconv/libiconv/iso8859_11.h b/subprojects/iconv/libiconv/iso8859_11.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_11.h
rename to subprojects/iconv/libiconv/iso8859_11.h
diff --git a/vendor/iconv/libiconv/iso8859_13.h b/subprojects/iconv/libiconv/iso8859_13.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_13.h
rename to subprojects/iconv/libiconv/iso8859_13.h
diff --git a/vendor/iconv/libiconv/iso8859_14.h b/subprojects/iconv/libiconv/iso8859_14.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_14.h
rename to subprojects/iconv/libiconv/iso8859_14.h
diff --git a/vendor/iconv/libiconv/iso8859_15.h b/subprojects/iconv/libiconv/iso8859_15.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_15.h
rename to subprojects/iconv/libiconv/iso8859_15.h
diff --git a/vendor/iconv/libiconv/iso8859_16.h b/subprojects/iconv/libiconv/iso8859_16.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_16.h
rename to subprojects/iconv/libiconv/iso8859_16.h
diff --git a/vendor/iconv/libiconv/iso8859_2.h b/subprojects/iconv/libiconv/iso8859_2.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_2.h
rename to subprojects/iconv/libiconv/iso8859_2.h
diff --git a/vendor/iconv/libiconv/iso8859_3.h b/subprojects/iconv/libiconv/iso8859_3.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_3.h
rename to subprojects/iconv/libiconv/iso8859_3.h
diff --git a/vendor/iconv/libiconv/iso8859_4.h b/subprojects/iconv/libiconv/iso8859_4.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_4.h
rename to subprojects/iconv/libiconv/iso8859_4.h
diff --git a/vendor/iconv/libiconv/iso8859_5.h b/subprojects/iconv/libiconv/iso8859_5.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_5.h
rename to subprojects/iconv/libiconv/iso8859_5.h
diff --git a/vendor/iconv/libiconv/iso8859_6.h b/subprojects/iconv/libiconv/iso8859_6.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_6.h
rename to subprojects/iconv/libiconv/iso8859_6.h
diff --git a/vendor/iconv/libiconv/iso8859_7.h b/subprojects/iconv/libiconv/iso8859_7.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_7.h
rename to subprojects/iconv/libiconv/iso8859_7.h
diff --git a/vendor/iconv/libiconv/iso8859_8.h b/subprojects/iconv/libiconv/iso8859_8.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_8.h
rename to subprojects/iconv/libiconv/iso8859_8.h
diff --git a/vendor/iconv/libiconv/iso8859_9.h b/subprojects/iconv/libiconv/iso8859_9.h
similarity index 100%
rename from vendor/iconv/libiconv/iso8859_9.h
rename to subprojects/iconv/libiconv/iso8859_9.h
diff --git a/vendor/iconv/libiconv/isoir165.h b/subprojects/iconv/libiconv/isoir165.h
similarity index 100%
rename from vendor/iconv/libiconv/isoir165.h
rename to subprojects/iconv/libiconv/isoir165.h
diff --git a/vendor/iconv/libiconv/isoir165ext.h b/subprojects/iconv/libiconv/isoir165ext.h
similarity index 100%
rename from vendor/iconv/libiconv/isoir165ext.h
rename to subprojects/iconv/libiconv/isoir165ext.h
diff --git a/vendor/iconv/libiconv/java.h b/subprojects/iconv/libiconv/java.h
similarity index 100%
rename from vendor/iconv/libiconv/java.h
rename to subprojects/iconv/libiconv/java.h
diff --git a/vendor/iconv/libiconv/jisx0201.h b/subprojects/iconv/libiconv/jisx0201.h
similarity index 100%
rename from vendor/iconv/libiconv/jisx0201.h
rename to subprojects/iconv/libiconv/jisx0201.h
diff --git a/vendor/iconv/libiconv/jisx0208.h b/subprojects/iconv/libiconv/jisx0208.h
similarity index 100%
rename from vendor/iconv/libiconv/jisx0208.h
rename to subprojects/iconv/libiconv/jisx0208.h
diff --git a/vendor/iconv/libiconv/jisx0212.h b/subprojects/iconv/libiconv/jisx0212.h
similarity index 100%
rename from vendor/iconv/libiconv/jisx0212.h
rename to subprojects/iconv/libiconv/jisx0212.h
diff --git a/vendor/iconv/libiconv/jisx0213.h b/subprojects/iconv/libiconv/jisx0213.h
similarity index 100%
rename from vendor/iconv/libiconv/jisx0213.h
rename to subprojects/iconv/libiconv/jisx0213.h
diff --git a/vendor/iconv/libiconv/johab.h b/subprojects/iconv/libiconv/johab.h
similarity index 100%
rename from vendor/iconv/libiconv/johab.h
rename to subprojects/iconv/libiconv/johab.h
diff --git a/vendor/iconv/libiconv/johab_hangul.h b/subprojects/iconv/libiconv/johab_hangul.h
similarity index 100%
rename from vendor/iconv/libiconv/johab_hangul.h
rename to subprojects/iconv/libiconv/johab_hangul.h
diff --git a/vendor/iconv/libiconv/koi8_r.h b/subprojects/iconv/libiconv/koi8_r.h
similarity index 100%
rename from vendor/iconv/libiconv/koi8_r.h
rename to subprojects/iconv/libiconv/koi8_r.h
diff --git a/vendor/iconv/libiconv/koi8_ru.h b/subprojects/iconv/libiconv/koi8_ru.h
similarity index 100%
rename from vendor/iconv/libiconv/koi8_ru.h
rename to subprojects/iconv/libiconv/koi8_ru.h
diff --git a/vendor/iconv/libiconv/koi8_t.h b/subprojects/iconv/libiconv/koi8_t.h
similarity index 100%
rename from vendor/iconv/libiconv/koi8_t.h
rename to subprojects/iconv/libiconv/koi8_t.h
diff --git a/vendor/iconv/libiconv/koi8_u.h b/subprojects/iconv/libiconv/koi8_u.h
similarity index 100%
rename from vendor/iconv/libiconv/koi8_u.h
rename to subprojects/iconv/libiconv/koi8_u.h
diff --git a/vendor/iconv/libiconv/ksc5601.h b/subprojects/iconv/libiconv/ksc5601.h
similarity index 100%
rename from vendor/iconv/libiconv/ksc5601.h
rename to subprojects/iconv/libiconv/ksc5601.h
diff --git a/vendor/iconv/libiconv/libcharset.h b/subprojects/iconv/libiconv/libcharset.h
similarity index 100%
rename from vendor/iconv/libiconv/libcharset.h
rename to subprojects/iconv/libiconv/libcharset.h
diff --git a/vendor/iconv/libiconv/localcharset.h b/subprojects/iconv/libiconv/localcharset.h
similarity index 100%
rename from vendor/iconv/libiconv/localcharset.h
rename to subprojects/iconv/libiconv/localcharset.h
diff --git a/vendor/iconv/libiconv/loop_unicode.h b/subprojects/iconv/libiconv/loop_unicode.h
similarity index 100%
rename from vendor/iconv/libiconv/loop_unicode.h
rename to subprojects/iconv/libiconv/loop_unicode.h
diff --git a/vendor/iconv/libiconv/loop_wchar.h b/subprojects/iconv/libiconv/loop_wchar.h
similarity index 100%
rename from vendor/iconv/libiconv/loop_wchar.h
rename to subprojects/iconv/libiconv/loop_wchar.h
diff --git a/vendor/iconv/libiconv/loops.h b/subprojects/iconv/libiconv/loops.h
similarity index 100%
rename from vendor/iconv/libiconv/loops.h
rename to subprojects/iconv/libiconv/loops.h
diff --git a/vendor/iconv/libiconv/mac_arabic.h b/subprojects/iconv/libiconv/mac_arabic.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_arabic.h
rename to subprojects/iconv/libiconv/mac_arabic.h
diff --git a/vendor/iconv/libiconv/mac_centraleurope.h b/subprojects/iconv/libiconv/mac_centraleurope.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_centraleurope.h
rename to subprojects/iconv/libiconv/mac_centraleurope.h
diff --git a/vendor/iconv/libiconv/mac_croatian.h b/subprojects/iconv/libiconv/mac_croatian.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_croatian.h
rename to subprojects/iconv/libiconv/mac_croatian.h
diff --git a/vendor/iconv/libiconv/mac_cyrillic.h b/subprojects/iconv/libiconv/mac_cyrillic.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_cyrillic.h
rename to subprojects/iconv/libiconv/mac_cyrillic.h
diff --git a/vendor/iconv/libiconv/mac_greek.h b/subprojects/iconv/libiconv/mac_greek.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_greek.h
rename to subprojects/iconv/libiconv/mac_greek.h
diff --git a/vendor/iconv/libiconv/mac_hebrew.h b/subprojects/iconv/libiconv/mac_hebrew.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_hebrew.h
rename to subprojects/iconv/libiconv/mac_hebrew.h
diff --git a/vendor/iconv/libiconv/mac_iceland.h b/subprojects/iconv/libiconv/mac_iceland.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_iceland.h
rename to subprojects/iconv/libiconv/mac_iceland.h
diff --git a/vendor/iconv/libiconv/mac_roman.h b/subprojects/iconv/libiconv/mac_roman.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_roman.h
rename to subprojects/iconv/libiconv/mac_roman.h
diff --git a/vendor/iconv/libiconv/mac_romania.h b/subprojects/iconv/libiconv/mac_romania.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_romania.h
rename to subprojects/iconv/libiconv/mac_romania.h
diff --git a/vendor/iconv/libiconv/mac_thai.h b/subprojects/iconv/libiconv/mac_thai.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_thai.h
rename to subprojects/iconv/libiconv/mac_thai.h
diff --git a/vendor/iconv/libiconv/mac_turkish.h b/subprojects/iconv/libiconv/mac_turkish.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_turkish.h
rename to subprojects/iconv/libiconv/mac_turkish.h
diff --git a/vendor/iconv/libiconv/mac_ukraine.h b/subprojects/iconv/libiconv/mac_ukraine.h
similarity index 100%
rename from vendor/iconv/libiconv/mac_ukraine.h
rename to subprojects/iconv/libiconv/mac_ukraine.h
diff --git a/vendor/iconv/libiconv/mulelao.h b/subprojects/iconv/libiconv/mulelao.h
similarity index 100%
rename from vendor/iconv/libiconv/mulelao.h
rename to subprojects/iconv/libiconv/mulelao.h
diff --git a/vendor/iconv/libiconv/nextstep.h b/subprojects/iconv/libiconv/nextstep.h
similarity index 100%
rename from vendor/iconv/libiconv/nextstep.h
rename to subprojects/iconv/libiconv/nextstep.h
diff --git a/vendor/iconv/libiconv/pt154.h b/subprojects/iconv/libiconv/pt154.h
similarity index 100%
rename from vendor/iconv/libiconv/pt154.h
rename to subprojects/iconv/libiconv/pt154.h
diff --git a/vendor/iconv/libiconv/relocatable.c b/subprojects/iconv/libiconv/relocatable.c
similarity index 100%
rename from vendor/iconv/libiconv/relocatable.c
rename to subprojects/iconv/libiconv/relocatable.c
diff --git a/vendor/iconv/libiconv/relocatable.h b/subprojects/iconv/libiconv/relocatable.h
similarity index 100%
rename from vendor/iconv/libiconv/relocatable.h
rename to subprojects/iconv/libiconv/relocatable.h
diff --git a/vendor/iconv/libiconv/riscos1.h b/subprojects/iconv/libiconv/riscos1.h
similarity index 100%
rename from vendor/iconv/libiconv/riscos1.h
rename to subprojects/iconv/libiconv/riscos1.h
diff --git a/vendor/iconv/libiconv/rk1048.h b/subprojects/iconv/libiconv/rk1048.h
similarity index 100%
rename from vendor/iconv/libiconv/rk1048.h
rename to subprojects/iconv/libiconv/rk1048.h
diff --git a/vendor/iconv/libiconv/shift_jisx0213.h b/subprojects/iconv/libiconv/shift_jisx0213.h
similarity index 100%
rename from vendor/iconv/libiconv/shift_jisx0213.h
rename to subprojects/iconv/libiconv/shift_jisx0213.h
diff --git a/vendor/iconv/libiconv/sjis.h b/subprojects/iconv/libiconv/sjis.h
similarity index 100%
rename from vendor/iconv/libiconv/sjis.h
rename to subprojects/iconv/libiconv/sjis.h
diff --git a/vendor/iconv/libiconv/tcvn.h b/subprojects/iconv/libiconv/tcvn.h
similarity index 100%
rename from vendor/iconv/libiconv/tcvn.h
rename to subprojects/iconv/libiconv/tcvn.h
diff --git a/vendor/iconv/libiconv/tds565.h b/subprojects/iconv/libiconv/tds565.h
similarity index 100%
rename from vendor/iconv/libiconv/tds565.h
rename to subprojects/iconv/libiconv/tds565.h
diff --git a/vendor/iconv/libiconv/tis620.h b/subprojects/iconv/libiconv/tis620.h
similarity index 100%
rename from vendor/iconv/libiconv/tis620.h
rename to subprojects/iconv/libiconv/tis620.h
diff --git a/vendor/iconv/libiconv/translit.h b/subprojects/iconv/libiconv/translit.h
similarity index 100%
rename from vendor/iconv/libiconv/translit.h
rename to subprojects/iconv/libiconv/translit.h
diff --git a/vendor/iconv/libiconv/ucs2.h b/subprojects/iconv/libiconv/ucs2.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs2.h
rename to subprojects/iconv/libiconv/ucs2.h
diff --git a/vendor/iconv/libiconv/ucs2be.h b/subprojects/iconv/libiconv/ucs2be.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs2be.h
rename to subprojects/iconv/libiconv/ucs2be.h
diff --git a/vendor/iconv/libiconv/ucs2internal.h b/subprojects/iconv/libiconv/ucs2internal.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs2internal.h
rename to subprojects/iconv/libiconv/ucs2internal.h
diff --git a/vendor/iconv/libiconv/ucs2le.h b/subprojects/iconv/libiconv/ucs2le.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs2le.h
rename to subprojects/iconv/libiconv/ucs2le.h
diff --git a/vendor/iconv/libiconv/ucs2swapped.h b/subprojects/iconv/libiconv/ucs2swapped.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs2swapped.h
rename to subprojects/iconv/libiconv/ucs2swapped.h
diff --git a/vendor/iconv/libiconv/ucs4.h b/subprojects/iconv/libiconv/ucs4.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs4.h
rename to subprojects/iconv/libiconv/ucs4.h
diff --git a/vendor/iconv/libiconv/ucs4be.h b/subprojects/iconv/libiconv/ucs4be.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs4be.h
rename to subprojects/iconv/libiconv/ucs4be.h
diff --git a/vendor/iconv/libiconv/ucs4internal.h b/subprojects/iconv/libiconv/ucs4internal.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs4internal.h
rename to subprojects/iconv/libiconv/ucs4internal.h
diff --git a/vendor/iconv/libiconv/ucs4le.h b/subprojects/iconv/libiconv/ucs4le.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs4le.h
rename to subprojects/iconv/libiconv/ucs4le.h
diff --git a/vendor/iconv/libiconv/ucs4swapped.h b/subprojects/iconv/libiconv/ucs4swapped.h
similarity index 100%
rename from vendor/iconv/libiconv/ucs4swapped.h
rename to subprojects/iconv/libiconv/ucs4swapped.h
diff --git a/vendor/iconv/libiconv/uhc_1.h b/subprojects/iconv/libiconv/uhc_1.h
similarity index 100%
rename from vendor/iconv/libiconv/uhc_1.h
rename to subprojects/iconv/libiconv/uhc_1.h
diff --git a/vendor/iconv/libiconv/uhc_2.h b/subprojects/iconv/libiconv/uhc_2.h
similarity index 100%
rename from vendor/iconv/libiconv/uhc_2.h
rename to subprojects/iconv/libiconv/uhc_2.h
diff --git a/vendor/iconv/libiconv/utf16.h b/subprojects/iconv/libiconv/utf16.h
similarity index 100%
rename from vendor/iconv/libiconv/utf16.h
rename to subprojects/iconv/libiconv/utf16.h
diff --git a/vendor/iconv/libiconv/utf16be.h b/subprojects/iconv/libiconv/utf16be.h
similarity index 100%
rename from vendor/iconv/libiconv/utf16be.h
rename to subprojects/iconv/libiconv/utf16be.h
diff --git a/vendor/iconv/libiconv/utf16le.h b/subprojects/iconv/libiconv/utf16le.h
similarity index 100%
rename from vendor/iconv/libiconv/utf16le.h
rename to subprojects/iconv/libiconv/utf16le.h
diff --git a/vendor/iconv/libiconv/utf32.h b/subprojects/iconv/libiconv/utf32.h
similarity index 100%
rename from vendor/iconv/libiconv/utf32.h
rename to subprojects/iconv/libiconv/utf32.h
diff --git a/vendor/iconv/libiconv/utf32be.h b/subprojects/iconv/libiconv/utf32be.h
similarity index 100%
rename from vendor/iconv/libiconv/utf32be.h
rename to subprojects/iconv/libiconv/utf32be.h
diff --git a/vendor/iconv/libiconv/utf32le.h b/subprojects/iconv/libiconv/utf32le.h
similarity index 100%
rename from vendor/iconv/libiconv/utf32le.h
rename to subprojects/iconv/libiconv/utf32le.h
diff --git a/vendor/iconv/libiconv/utf7.h b/subprojects/iconv/libiconv/utf7.h
similarity index 100%
rename from vendor/iconv/libiconv/utf7.h
rename to subprojects/iconv/libiconv/utf7.h
diff --git a/vendor/iconv/libiconv/utf8.h b/subprojects/iconv/libiconv/utf8.h
similarity index 100%
rename from vendor/iconv/libiconv/utf8.h
rename to subprojects/iconv/libiconv/utf8.h
diff --git a/vendor/iconv/libiconv/vietcomb.h b/subprojects/iconv/libiconv/vietcomb.h
similarity index 100%
rename from vendor/iconv/libiconv/vietcomb.h
rename to subprojects/iconv/libiconv/vietcomb.h
diff --git a/vendor/iconv/libiconv/viscii.h b/subprojects/iconv/libiconv/viscii.h
similarity index 100%
rename from vendor/iconv/libiconv/viscii.h
rename to subprojects/iconv/libiconv/viscii.h
diff --git a/subprojects/iconv/meson.build b/subprojects/iconv/meson.build
new file mode 100644
index 000000000..458cd9d51
--- /dev/null
+++ b/subprojects/iconv/meson.build
@@ -0,0 +1,21 @@
+project('iconv', 'c', license: 'LGPL',
+ meson_version: '>=0.54.0')
+
+iconv_src = [
+ 'libcharset/localcharset.c',
+ 'libiconv/iconv.c'
+]
+
+iconv_headers = ['include/iconv.h']
+
+iconv_incs = include_directories(
+ 'include',
+ 'libcharset',
+ 'libiconv'
+)
+
+libiconv = static_library('iconv', iconv_src, include_directories: iconv_incs)
+libiconv_dep = declare_dependency(link_with: libiconv,
+ include_directories: iconv_incs)
+
+meson.override_dependency('iconv', libiconv_dep)
diff --git a/subprojects/icu.wrap b/subprojects/icu.wrap
new file mode 100644
index 000000000..3aaf822c6
--- /dev/null
+++ b/subprojects/icu.wrap
@@ -0,0 +1,11 @@
+[wrap-file]
+directory = icu
+source_url = https://github.com/unicode-org/icu/releases/download/release-67-1/icu4c-67_1-src.tgz
+source_filename = icu4c-67_1-src.tgz
+source_hash = 94a80cd6f251a53bd2a997f6f1b5ac6653fe791dfab66e1eb0227740fb86d5dc
+patch_directory = icu
+
+[provide]
+icu-uc = icuuc_dep
+icu-io = icuio_dep
+icu-i18n = icui18n_dep
diff --git a/subprojects/libass.wrap b/subprojects/libass.wrap
new file mode 100644
index 000000000..3e64a4ab2
--- /dev/null
+++ b/subprojects/libass.wrap
@@ -0,0 +1,4 @@
+[wrap-git]
+directory = libass
+url = https://github.com/TypesettingTools/libass.git
+revision = meson-pr
diff --git a/subprojects/libpng.wrap b/subprojects/libpng.wrap
new file mode 100644
index 000000000..8c7e3fdce
--- /dev/null
+++ b/subprojects/libpng.wrap
@@ -0,0 +1,12 @@
+[wrap-file]
+directory = libpng-1.6.37
+source_url = https://github.com/glennrp/libpng/archive/v1.6.37.tar.gz
+source_filename = libpng-1.6.37.tar.gz
+source_hash = ca74a0dace179a8422187671aee97dd3892b53e168627145271cad5b5ac81307
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/libpng/1.6.37/3/get_zip
+patch_filename = libpng-1.6.37-3-wrap.zip
+patch_hash = 6c9f32fd9150b3a96ab89be52af664e32207e10aa9f5fb9aa015989ee2dd7100
+
+[provide]
+libpng = libpng_dep
+
diff --git a/vendor/luabins/AUTHORS b/subprojects/luabins/AUTHORS
similarity index 100%
rename from vendor/luabins/AUTHORS
rename to subprojects/luabins/AUTHORS
diff --git a/vendor/luabins/BENCHMARK b/subprojects/luabins/BENCHMARK
similarity index 100%
rename from vendor/luabins/BENCHMARK
rename to subprojects/luabins/BENCHMARK
diff --git a/vendor/luabins/COPYRIGHT b/subprojects/luabins/COPYRIGHT
similarity index 100%
rename from vendor/luabins/COPYRIGHT
rename to subprojects/luabins/COPYRIGHT
diff --git a/vendor/luabins/HISTORY b/subprojects/luabins/HISTORY
similarity index 100%
rename from vendor/luabins/HISTORY
rename to subprojects/luabins/HISTORY
diff --git a/vendor/luabins/README.md b/subprojects/luabins/README.md
similarity index 100%
rename from vendor/luabins/README.md
rename to subprojects/luabins/README.md
diff --git a/vendor/luabins/TODO b/subprojects/luabins/TODO
similarity index 100%
rename from vendor/luabins/TODO
rename to subprojects/luabins/TODO
diff --git a/vendor/luabins/etc/benchmark.lua b/subprojects/luabins/etc/benchmark.lua
similarity index 100%
rename from vendor/luabins/etc/benchmark.lua
rename to subprojects/luabins/etc/benchmark.lua
diff --git a/vendor/luabins/etc/checkfmt.lua b/subprojects/luabins/etc/checkfmt.lua
similarity index 100%
rename from vendor/luabins/etc/checkfmt.lua
rename to subprojects/luabins/etc/checkfmt.lua
diff --git a/vendor/luabins/etc/dataset.lua b/subprojects/luabins/etc/dataset.lua
similarity index 100%
rename from vendor/luabins/etc/dataset.lua
rename to subprojects/luabins/etc/dataset.lua
diff --git a/vendor/luabins/etc/tolua.lua b/subprojects/luabins/etc/tolua.lua
similarity index 100%
rename from vendor/luabins/etc/tolua.lua
rename to subprojects/luabins/etc/tolua.lua
diff --git a/vendor/luabins/etc/toluabins.lua b/subprojects/luabins/etc/toluabins.lua
similarity index 100%
rename from vendor/luabins/etc/toluabins.lua
rename to subprojects/luabins/etc/toluabins.lua
diff --git a/vendor/luabins/rockspec/luabins-0.1.1-1.rockspec b/subprojects/luabins/rockspec/luabins-0.1.1-1.rockspec
similarity index 100%
rename from vendor/luabins/rockspec/luabins-0.1.1-1.rockspec
rename to subprojects/luabins/rockspec/luabins-0.1.1-1.rockspec
diff --git a/vendor/luabins/rockspec/luabins-0.1.1-2.rockspec b/subprojects/luabins/rockspec/luabins-0.1.1-2.rockspec
similarity index 100%
rename from vendor/luabins/rockspec/luabins-0.1.1-2.rockspec
rename to subprojects/luabins/rockspec/luabins-0.1.1-2.rockspec
diff --git a/vendor/luabins/rockspec/luabins-0.2-1.rockspec b/subprojects/luabins/rockspec/luabins-0.2-1.rockspec
similarity index 100%
rename from vendor/luabins/rockspec/luabins-0.2-1.rockspec
rename to subprojects/luabins/rockspec/luabins-0.2-1.rockspec
diff --git a/vendor/luabins/rockspec/luabins-0.3-1.rockspec b/subprojects/luabins/rockspec/luabins-0.3-1.rockspec
similarity index 100%
rename from vendor/luabins/rockspec/luabins-0.3-1.rockspec
rename to subprojects/luabins/rockspec/luabins-0.3-1.rockspec
diff --git a/vendor/luabins/rockspec/luabins-scm-1.rockspec b/subprojects/luabins/rockspec/luabins-scm-1.rockspec
similarity index 100%
rename from vendor/luabins/rockspec/luabins-scm-1.rockspec
rename to subprojects/luabins/rockspec/luabins-scm-1.rockspec
diff --git a/vendor/luabins/rockspec/luabins-scm-2.rockspec b/subprojects/luabins/rockspec/luabins-scm-2.rockspec
similarity index 100%
rename from vendor/luabins/rockspec/luabins-scm-2.rockspec
rename to subprojects/luabins/rockspec/luabins-scm-2.rockspec
diff --git a/vendor/luabins/src/fwrite.c b/subprojects/luabins/src/fwrite.c
similarity index 100%
rename from vendor/luabins/src/fwrite.c
rename to subprojects/luabins/src/fwrite.c
diff --git a/vendor/luabins/src/fwrite.h b/subprojects/luabins/src/fwrite.h
similarity index 100%
rename from vendor/luabins/src/fwrite.h
rename to subprojects/luabins/src/fwrite.h
diff --git a/vendor/luabins/src/load.c b/subprojects/luabins/src/load.c
similarity index 100%
rename from vendor/luabins/src/load.c
rename to subprojects/luabins/src/load.c
diff --git a/vendor/luabins/src/luabins.c b/subprojects/luabins/src/luabins.c
similarity index 98%
rename from vendor/luabins/src/luabins.c
rename to subprojects/luabins/src/luabins.c
index 60668213f..35b177629 100644
--- a/vendor/luabins/src/luabins.c
+++ b/subprojects/luabins/src/luabins.c
@@ -54,7 +54,7 @@ static int l_load(lua_State * L)
}
/* luabins Lua module API */
-static const struct luaL_reg R[] =
+static const struct luaL_Reg R[] =
{
{ "save", l_save },
{ "load", l_load },
diff --git a/vendor/luabins/src/luabins.h b/subprojects/luabins/src/luabins.h
similarity index 100%
rename from vendor/luabins/src/luabins.h
rename to subprojects/luabins/src/luabins.h
diff --git a/vendor/luabins/src/luaheaders.h b/subprojects/luabins/src/luaheaders.h
similarity index 100%
rename from vendor/luabins/src/luaheaders.h
rename to subprojects/luabins/src/luaheaders.h
diff --git a/vendor/luabins/src/luainternals.c b/subprojects/luabins/src/luainternals.c
similarity index 100%
rename from vendor/luabins/src/luainternals.c
rename to subprojects/luabins/src/luainternals.c
diff --git a/vendor/luabins/src/luainternals.h b/subprojects/luabins/src/luainternals.h
similarity index 100%
rename from vendor/luabins/src/luainternals.h
rename to subprojects/luabins/src/luainternals.h
diff --git a/vendor/luabins/src/lualess.h b/subprojects/luabins/src/lualess.h
similarity index 100%
rename from vendor/luabins/src/lualess.h
rename to subprojects/luabins/src/lualess.h
diff --git a/subprojects/luabins/src/meson.build b/subprojects/luabins/src/meson.build
new file mode 100644
index 000000000..3861eb6d2
--- /dev/null
+++ b/subprojects/luabins/src/meson.build
@@ -0,0 +1,11 @@
+luabins_src = files(
+ 'fwrite.c',
+ 'load.c',
+ 'luabins.c',
+ 'luainternals.c',
+ 'savebuffer.c',
+ 'save.c',
+ 'write.c',
+)
+
+libluabins = static_library('luabins', luabins_src, include_directories: luajit_inc)
diff --git a/vendor/luabins/src/save.c b/subprojects/luabins/src/save.c
similarity index 100%
rename from vendor/luabins/src/save.c
rename to subprojects/luabins/src/save.c
diff --git a/vendor/luabins/src/savebuffer.c b/subprojects/luabins/src/savebuffer.c
similarity index 100%
rename from vendor/luabins/src/savebuffer.c
rename to subprojects/luabins/src/savebuffer.c
diff --git a/vendor/luabins/src/savebuffer.h b/subprojects/luabins/src/savebuffer.h
similarity index 100%
rename from vendor/luabins/src/savebuffer.h
rename to subprojects/luabins/src/savebuffer.h
diff --git a/vendor/luabins/src/saveload.h b/subprojects/luabins/src/saveload.h
similarity index 100%
rename from vendor/luabins/src/saveload.h
rename to subprojects/luabins/src/saveload.h
diff --git a/vendor/luabins/src/write.c b/subprojects/luabins/src/write.c
similarity index 100%
rename from vendor/luabins/src/write.c
rename to subprojects/luabins/src/write.c
diff --git a/vendor/luabins/src/write.h b/subprojects/luabins/src/write.h
similarity index 100%
rename from vendor/luabins/src/write.h
rename to subprojects/luabins/src/write.h
diff --git a/vendor/luabins/test/large_data.lua b/subprojects/luabins/test/large_data.lua
similarity index 100%
rename from vendor/luabins/test/large_data.lua
rename to subprojects/luabins/test/large_data.lua
diff --git a/vendor/luabins/test/large_data.luabins b/subprojects/luabins/test/large_data.luabins
similarity index 100%
rename from vendor/luabins/test/large_data.luabins
rename to subprojects/luabins/test/large_data.luabins
diff --git a/vendor/luabins/test/test.c b/subprojects/luabins/test/test.c
similarity index 100%
rename from vendor/luabins/test/test.c
rename to subprojects/luabins/test/test.c
diff --git a/vendor/luabins/test/test.h b/subprojects/luabins/test/test.h
similarity index 100%
rename from vendor/luabins/test/test.h
rename to subprojects/luabins/test/test.h
diff --git a/vendor/luabins/test/test.lua b/subprojects/luabins/test/test.lua
similarity index 100%
rename from vendor/luabins/test/test.lua
rename to subprojects/luabins/test/test.lua
diff --git a/vendor/luabins/test/test_api.c b/subprojects/luabins/test/test_api.c
similarity index 100%
rename from vendor/luabins/test/test_api.c
rename to subprojects/luabins/test/test_api.c
diff --git a/vendor/luabins/test/test_fwrite_api.c b/subprojects/luabins/test/test_fwrite_api.c
similarity index 100%
rename from vendor/luabins/test/test_fwrite_api.c
rename to subprojects/luabins/test/test_fwrite_api.c
diff --git a/vendor/luabins/test/test_savebuffer.c b/subprojects/luabins/test/test_savebuffer.c
similarity index 100%
rename from vendor/luabins/test/test_savebuffer.c
rename to subprojects/luabins/test/test_savebuffer.c
diff --git a/vendor/luabins/test/test_write_api.c b/subprojects/luabins/test/test_write_api.c
similarity index 100%
rename from vendor/luabins/test/test_write_api.c
rename to subprojects/luabins/test/test_write_api.c
diff --git a/vendor/luabins/test/util.c b/subprojects/luabins/test/util.c
similarity index 100%
rename from vendor/luabins/test/util.c
rename to subprojects/luabins/test/util.c
diff --git a/vendor/luabins/test/util.h b/subprojects/luabins/test/util.h
similarity index 100%
rename from vendor/luabins/test/util.h
rename to subprojects/luabins/test/util.h
diff --git a/vendor/luabins/test/write_tests.inc b/subprojects/luabins/test/write_tests.inc
similarity index 100%
rename from vendor/luabins/test/write_tests.inc
rename to subprojects/luabins/test/write_tests.inc
diff --git a/subprojects/luajit.wrap b/subprojects/luajit.wrap
new file mode 100644
index 000000000..e1daad5ab
--- /dev/null
+++ b/subprojects/luajit.wrap
@@ -0,0 +1,8 @@
+[wrap-git]
+directory = luajit
+url = https://github.com/LuaJIT/LuaJIT.git
+revision = v2.1
+patch_directory = luajit
+
+[provide]
+luajit = luajit_dep
diff --git a/subprojects/nasm.wrap b/subprojects/nasm.wrap
new file mode 100644
index 000000000..6f1ad8dab
--- /dev/null
+++ b/subprojects/nasm.wrap
@@ -0,0 +1,6 @@
+[wrap-file]
+directory = nasm-2.15.05
+source_url = https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/nasm-2.15.05-win64.zip
+source_filename = nasm-2.15.05-win64.zip
+source_hash = f5c93c146f52b4f1664fa3ce6579f961a910e869ab0dae431bd871bdd2584ef2
+patch_directory = nasm
diff --git a/subprojects/packagefiles/boost/libs/chrono/meson.build b/subprojects/packagefiles/boost/libs/chrono/meson.build
new file mode 100644
index 000000000..b2dfc4d22
--- /dev/null
+++ b/subprojects/packagefiles/boost/libs/chrono/meson.build
@@ -0,0 +1,15 @@
+chrono_sources = files([
+ 'src/chrono.cpp',
+ 'src/thread_clock.cpp',
+ 'src/process_cpu_clocks.cpp',
+])
+
+boost_chrono = library('boost_chrono', chrono_sources,
+ include_directories: inc,
+ cpp_args: is_static ? '-DBOOST_All_STATIC_LINK=1' : '-DBOOST_All_DYN_LINK=1',
+ dependencies: thread_dep)
+
+boost_chrono_dep = declare_dependency(link_with: boost_chrono, include_directories: inc,
+ compile_args: [is_static ? '-DBOOST_CHRONO_STATIC_LINK=1'
+ : '-DBOOST_CHRONO_DYN_LINK=1',
+ '-DBOOST_ALL_NO_LIB=1'])
diff --git a/subprojects/packagefiles/boost/libs/filesystem/meson.build b/subprojects/packagefiles/boost/libs/filesystem/meson.build
new file mode 100644
index 000000000..b255d4c97
--- /dev/null
+++ b/subprojects/packagefiles/boost/libs/filesystem/meson.build
@@ -0,0 +1,37 @@
+filesystem_sources = files([
+ 'src/codecvt_error_category.cpp',
+ 'src/exception.cpp',
+ 'src/directory.cpp',
+ 'src/operations.cpp',
+ 'src/path.cpp',
+ 'src/path_traits.cpp',
+ 'src/portability.cpp',
+ 'src/unique_path.cpp',
+ 'src/utf8_codecvt_facet.cpp',
+ 'src/windows_file_codecvt.cpp',
+])
+
+filesystem_args = ['-DBOOST_FILESYSTEM_SOURCE',
+ is_static ? '-DBOOST_FILESYSTEM_STATIC_LINK=1' : '-DBOOST_FILESYSTEM_DYN_LINK=1']
+
+filesystem_deps = []
+if host_machine.system() == 'windows'
+ bcrypt_dep = dependency('bcrypt', required: false)
+ if bcrypt_dep.found()
+ filesystem_deps += bcrypt_dep
+ filesystem_args += '-DBOOST_FILESYSTEM_HAS_BCRYPT'
+ else
+ filesystem_deps += cpp.find_library('advapi32')
+ filesystem_args += '-DBOOST_FILESYSTEM_HAS_WINCRYPT'
+ endif
+endif
+
+boost_filesystem = library('boost_filesystem', filesystem_sources,
+ include_directories: inc,
+ cpp_args: filesystem_args,
+ dependencies: [thread_dep, filesystem_deps])
+
+boost_filesystem_dep = declare_dependency(link_with: boost_filesystem, include_directories: inc,
+ compile_args: [is_static ? '-DBOOST_FILESYSTEM_STATIC_LINK=1'
+ : '-DBOOST_FILESYSTEM_DYN_LINK=1',
+ '-DBOOST_ALL_NO_LIB=1'])
diff --git a/subprojects/packagefiles/boost/libs/locale/meson.build b/subprojects/packagefiles/boost/libs/locale/meson.build
new file mode 100644
index 000000000..c52b18f7a
--- /dev/null
+++ b/subprojects/packagefiles/boost/libs/locale/meson.build
@@ -0,0 +1,81 @@
+locale_sources = files([
+ 'src/encoding/codepage.cpp',
+ 'src/shared/date_time.cpp',
+ 'src/shared/format.cpp',
+ 'src/shared/formatting.cpp',
+ 'src/shared/generator.cpp',
+ 'src/shared/ids.cpp',
+ 'src/shared/localization_backend.cpp',
+ 'src/shared/message.cpp',
+ 'src/shared/mo_lambda.cpp',
+ 'src/util/codecvt_converter.cpp',
+ 'src/util/default_locale.cpp',
+ 'src/util/info.cpp',
+ 'src/util/locale_data.cpp',
+ # icu
+ 'src/icu/boundary.cpp',
+ 'src/icu/codecvt.cpp',
+ 'src/icu/collator.cpp',
+ 'src/icu/conversion.cpp',
+ 'src/icu/date_time.cpp',
+ 'src/icu/formatter.cpp',
+ 'src/icu/icu_backend.cpp',
+ 'src/icu/numeric.cpp',
+ 'src/icu/time_zone.cpp',
+ # std - docs say disabled by default on windows and solaris,
+ # but jamfile seemingly only disables on solaris
+ 'src/std/codecvt.cpp',
+ 'src/std/collate.cpp',
+ 'src/std/converter.cpp',
+ 'src/std/numeric.cpp',
+ 'src/std/std_backend.cpp',
+ # included if using posix, win32 or std backend (ie always)
+ 'src/util/gregorian.cpp',
+])
+
+locale_args = ['-DBOOST_THREAD_NO_LIB=1']
+locale_deps = []
+
+if not is_static
+ locale_args += '-DBOOST_LOCALE_DYN_LINK=1'
+endif
+
+if host_machine.system() == 'windows'
+ locale_sources += files([
+ 'src/win32/collate.cpp',
+ 'src/win32/converter.cpp',
+ 'src/win32/numeric.cpp',
+ 'src/win32/win_backend.cpp',
+ # included on windows/cygwin if std *or* win32 included
+ 'src/win32/lcid.cpp',
+ ])
+ locale_args += '-DBOOST_LOCALE_NO_POSIX_BACKEND=1'
+else
+ locale_sources += files([
+ 'src/posix/collate.cpp',
+ 'src/posix/converter.cpp',
+ 'src/posix/numeric.cpp',
+ 'src/posix/codecvt.cpp',
+ 'src/posix/posix_backend.cpp',
+ ])
+ locale_args += '-DBOOST_LOCALE_NO_WINAPI_BACKEND=1'
+endif
+
+cxx = meson.get_compiler('cpp')
+iconv_dep = cxx.find_library('iconv', required: false)
+if not (iconv_dep.found() or cxx.has_function('iconv_open'))
+ iconv_dep = dependency('iconv')
+endif
+locale_deps += iconv_dep
+locale_args += '-DBOOST_LOCALE_WITH_ICONV=1'
+
+locale_deps += icu_deps
+locale_args += '-DBOOST_LOCALE_WITH_ICU=1'
+
+boost_locale = library('boost_locale', locale_sources,
+ include_directories: inc,
+ cpp_args: locale_args,
+ dependencies: [thread_dep, locale_deps, boost_thread_dep])
+
+boost_locale_dep = declare_dependency(link_with: boost_locale, include_directories: inc,
+ compile_args: '-DBOOST_ALL_NO_LIB=1')
diff --git a/subprojects/packagefiles/boost/libs/program_options/meson.build b/subprojects/packagefiles/boost/libs/program_options/meson.build
new file mode 100644
index 000000000..9ee11eb29
--- /dev/null
+++ b/subprojects/packagefiles/boost/libs/program_options/meson.build
@@ -0,0 +1,28 @@
+program_options_sources = files([
+ 'src/cmdline.cpp',
+ 'src/config_file.cpp',
+ 'src/options_description.cpp',
+ 'src/parsers.cpp',
+ 'src/variables_map.cpp',
+ 'src/value_semantic.cpp',
+ 'src/positional_options.cpp',
+ 'src/utf8_codecvt_facet.cpp',
+ 'src/convert.cpp',
+ 'src/winmain.cpp',
+ 'src/split.cpp',
+])
+
+program_options_args = []
+if not is_static
+ program_options_args += '-DBOOST_PROGRAM_OPTIONS_DYN_LINK=1'
+endif
+
+boost_program_options = library('boost_program_options', program_options_sources,
+ cpp_args: program_options_args,
+ include_directories: inc,
+ dependencies: thread_dep)
+
+boost_program_options_dep = declare_dependency(link_with: boost_program_options,
+ include_directories: inc,
+ compile_args: program_options_args +
+ ['-DBOOST_ALL_NO_LIB=1'])
diff --git a/subprojects/packagefiles/boost/libs/regex/meson.build b/subprojects/packagefiles/boost/libs/regex/meson.build
new file mode 100644
index 000000000..f073f33d8
--- /dev/null
+++ b/subprojects/packagefiles/boost/libs/regex/meson.build
@@ -0,0 +1,33 @@
+regex_sources = files([
+ 'src/c_regex_traits.cpp',
+ 'src/cpp_regex_traits.cpp',
+ 'src/cregex.cpp',
+ 'src/fileiter.cpp',
+ 'src/icu.cpp',
+ 'src/instances.cpp',
+ 'src/posix_api.cpp',
+ 'src/regex.cpp',
+ 'src/regex_debug.cpp',
+ 'src/regex_raw_buffer.cpp',
+ 'src/regex_traits_defaults.cpp',
+ 'src/static_mutex.cpp',
+ 'src/w32_regex_traits.cpp',
+ 'src/wc_regex_traits.cpp',
+ 'src/wide_posix_api.cpp',
+ 'src/winstances.cpp',
+ 'src/usinstances.cpp',
+])
+
+regex_args = ['-DBOOST_HAS_ICU=1']
+
+if not is_static
+ regex_args += '-DBOOST_REGEX_DYN_LINK=1'
+endif
+
+boost_regex = library('boost_regex', regex_sources,
+ include_directories: inc,
+ cpp_args: regex_args,
+ dependencies: [thread_dep, icu_deps])
+
+boost_regex_dep = declare_dependency(link_with: boost_regex, include_directories: inc,
+ compile_args: '-DBOOST_ALL_NO_LIB=1')
diff --git a/subprojects/packagefiles/boost/libs/thread/meson.build b/subprojects/packagefiles/boost/libs/thread/meson.build
new file mode 100644
index 000000000..e14d344dd
--- /dev/null
+++ b/subprojects/packagefiles/boost/libs/thread/meson.build
@@ -0,0 +1,30 @@
+thread_args = [is_static ? '-DBOOST_THREAD_BUILD_LIB=1' : '-DBOOST_THREAD_BUILD_DLL=1']
+
+if host_machine.system() == 'windows'
+ thread_sources = files([
+ 'src/win32/thread.cpp',
+ 'src/win32/tss_dll.cpp',
+ 'src/win32/tss_pe.cpp',
+ 'src/win32/thread_primitives.cpp',
+ 'src/future.cpp',
+ ])
+ thread_args += ['-DWIN32_LEAN_AND_MEAN', '-DBOOST_USE_WINDOWS_H', '-DBOOST_THREAD_WIN32',
+ '-DBOOST_THREAD_USES_CHRONO']
+else
+ thread_sources = files([
+ 'src/pthread/thread.cpp',
+ 'src/pthread/once.cpp',
+ 'src/future.cpp',
+ ])
+ thread_args += ['-DBOOST_THREAD_POSIX', '-DBOOST_THREAD_DONT_USE_CHRONO']
+endif
+
+boost_thread = library('boost_thread', thread_sources,
+ include_directories: inc,
+ cpp_args: thread_args,
+ dependencies: [thread_dep, boost_chrono_dep])
+
+boost_thread_dep = declare_dependency(link_with: boost_thread, include_directories: inc,
+ compile_args: [is_static ? '-DBOOST_THREAD_BUILD_LIB=1'
+ : '-DBOOST_THREAD_BUILD_DLL=1',
+ '-DBOOST_ALL_NO_LIB=1'])
diff --git a/subprojects/packagefiles/boost/meson.build b/subprojects/packagefiles/boost/meson.build
new file mode 100644
index 000000000..a0a9881d8
--- /dev/null
+++ b/subprojects/packagefiles/boost/meson.build
@@ -0,0 +1,26 @@
+project('boost', 'cpp',
+ version: '1.74.0',
+ meson_version: '>=0.55.0')
+
+cpp = meson.get_compiler('cpp')
+thread_dep = dependency('threads')
+inc = include_directories('.')
+is_static = get_option('default_library') == 'static'
+
+add_project_arguments('-DBOOST_ALL_NO_LIB=1', language: 'cpp')
+
+if get_option('buildtype').startswith('release')
+ add_project_arguments('-DNDEBUG', language: 'cpp')
+endif
+
+if host_machine.system() == 'windows'
+ add_project_arguments('-DWIN32', language: 'cpp')
+endif
+
+icu_deps = [dependency('icu-uc'),
+ dependency('icu-i18n')]
+
+modules = ['chrono', 'thread', 'filesystem', 'locale', 'regex', 'program_options']
+foreach module: modules
+ subdir('libs/' + module)
+endforeach
diff --git a/subprojects/packagefiles/ffms2/meson.build b/subprojects/packagefiles/ffms2/meson.build
new file mode 100644
index 000000000..8c6a07851
--- /dev/null
+++ b/subprojects/packagefiles/ffms2/meson.build
@@ -0,0 +1,45 @@
+project('ffms2', 'cpp', version: '2.40.0')
+
+deps = []
+
+deps += dependency('zlib')
+deps += dependency('libavformat', default_options: ['tests=disabled'])
+deps += dependency('libavcodec', default_options: ['tests=disabled'])
+deps += dependency('libswscale', default_options: ['tests=disabled'])
+deps += dependency('libavutil', default_options: ['tests=disabled'])
+deps += dependency('libswresample', default_options: ['tests=disabled'])
+
+args = ['-D_FILE_OFFSET_BITNS=64', '-DFFMS_EXPORTS', '-D__STDC_CONSTANT_MACROS']
+usage_args = []
+
+if get_option('default_library') == 'static'
+ usage_args += '-DFFMS_STATIC'
+endif
+
+ffms2_sources = [
+ 'src/core/audiosource.cpp',
+ #'src/core/audiosource.h',
+ 'src/core/ffms.cpp',
+ 'src/core/filehandle.cpp',
+ #'src/core/filehandle.h',
+ 'src/core/indexing.cpp',
+ #'src/core/indexing.h',
+ 'src/core/track.cpp',
+ #'src/core/track.h',
+ 'src/core/utils.cpp',
+ #'src/core/utils.h',
+ 'src/core/videosource.cpp',
+ #'src/core/videosource.h',
+ 'src/core/videoutils.cpp',
+ #'src/core/videoutils.h',
+ 'src/core/zipfile.cpp',
+ #'src/core/zipfile.h',
+]
+
+deps_inc = include_directories('include')
+
+ffms2 = library('ffms2', ffms2_sources, include_directories: deps_inc, dependencies: deps,
+ cpp_args: args + usage_args)
+ffms2_dep = declare_dependency(link_with: ffms2,
+ include_directories: deps_inc,
+ compile_args: usage_args)
diff --git a/subprojects/packagefiles/hunspell/meson.build b/subprojects/packagefiles/hunspell/meson.build
new file mode 100644
index 000000000..e0ad04e9f
--- /dev/null
+++ b/subprojects/packagefiles/hunspell/meson.build
@@ -0,0 +1,9 @@
+project('Hunspell', 'cpp', version: '1.7.0', meson_version: '>=0.57.0')
+
+subdir('src/hunspell')
+
+inc = include_directories('src')
+
+hunspell_dep = declare_dependency(link_with: hunspell,
+ include_directories: inc,
+ compile_args: compile_args)
diff --git a/subprojects/packagefiles/hunspell/src/hunspell/meson.build b/subprojects/packagefiles/hunspell/src/hunspell/meson.build
new file mode 100644
index 000000000..d15f0c2d9
--- /dev/null
+++ b/subprojects/packagefiles/hunspell/src/hunspell/meson.build
@@ -0,0 +1,23 @@
+hunspell_sources = files([
+ 'affentry.cxx',
+ 'affixmgr.cxx',
+ 'csutil.cxx',
+ 'filemgr.cxx',
+ 'hashmgr.cxx',
+ 'hunspell.cxx',
+ 'hunzip.cxx',
+ 'phonet.cxx',
+ 'replist.cxx',
+ 'suggestmgr.cxx',
+])
+
+if get_option('default_library') == 'static'
+ cpp_args = []
+ compile_args = ['-DHUNSPELL_STATIC']
+else
+ cpp_args = ['-DBUILDING_LIBHUNSPELL']
+ compile_args = []
+endif
+
+hunspell = library('hunspell', hunspell_sources,
+ cpp_args: cpp_args + compile_args)
diff --git a/subprojects/packagefiles/icu/meson.build b/subprojects/packagefiles/icu/meson.build
new file mode 100644
index 000000000..11e1cc25b
--- /dev/null
+++ b/subprojects/packagefiles/icu/meson.build
@@ -0,0 +1,32 @@
+project('icu', 'c', 'cpp',
+ version: '67.1',
+ meson_version: '>=0.55.0',
+ default_options: 'cpp_std=c++17')
+
+cpp = meson.get_compiler('cpp')
+
+if host_machine.system() == 'windows'
+ add_project_arguments('-DWIN32', '-DWIN64', '-D_MBCS', '/utf-8', language : 'cpp')
+ add_project_arguments('-DWIN32', '-DWIN64', '-D_MBCS', '/utf-8', language : 'c')
+endif
+
+if cpp.has_header('elf.h')
+ add_project_arguments('-DU_HAVE_ELF_H=1', language: 'c')
+ add_project_arguments('-DU_HAVE_ELF_H=1', language: 'cpp')
+endif
+
+dl_dep = cpp.find_library('dl', required: false)
+thread_dep = dependency('threads')
+
+# Compiler flags the users of this library must use.
+usage_args = []
+
+if get_option('default_library') == 'static'
+ add_project_arguments('-DU_STATIC_IMPLEMENTATION', language : 'c')
+ add_project_arguments('-DU_STATIC_IMPLEMENTATION', language : 'cpp')
+ usage_args = ['-DU_STATIC_IMPLEMENTATION']
+elif host_machine.system() == 'windows'
+ error('Shared library build not supported on Windows. Set default_library to static.')
+endif
+
+subdir('source')
diff --git a/subprojects/packagefiles/icu/source/common/meson.build b/subprojects/packagefiles/icu/source/common/meson.build
new file mode 100644
index 000000000..6dad1a77a
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/common/meson.build
@@ -0,0 +1,202 @@
+uc_sources = files(
+ 'errorcode.cpp',
+ 'putil.cpp',
+ 'umath.cpp',
+ 'utypes.cpp',
+ 'uinvchar.cpp',
+ 'umutex.cpp',
+ 'ucln_cmn.cpp',
+ 'uinit.cpp',
+ 'uobject.cpp',
+ 'cmemory.cpp',
+ 'charstr.cpp',
+ 'cstr.cpp',
+ 'udata.cpp',
+ 'ucmndata.cpp',
+ 'udatamem.cpp',
+ 'umapfile.cpp',
+ 'udataswp.cpp',
+ 'utrie_swap.cpp',
+ 'ucol_swp.cpp',
+ 'utrace.cpp',
+ 'uhash.cpp',
+ 'uhash_us.cpp',
+ 'uenum.cpp',
+ 'ustrenum.cpp',
+ 'uvector.cpp',
+ 'ustack.cpp',
+ 'uvectr32.cpp',
+ 'uvectr64.cpp',
+ 'ucnv.cpp',
+ 'ucnv_bld.cpp',
+ 'ucnv_cnv.cpp',
+ 'ucnv_io.cpp',
+ 'ucnv_cb.cpp',
+ 'ucnv_err.cpp',
+ 'ucnvlat1.cpp',
+ 'ucnv_u7.cpp',
+ 'ucnv_u8.cpp',
+ 'ucnv_u16.cpp',
+ 'ucnv_u32.cpp',
+ 'ucnvscsu.cpp',
+ 'ucnvbocu.cpp',
+ 'ucnv_ext.cpp',
+ 'ucnvmbcs.cpp',
+ 'ucnv2022.cpp',
+ 'ucnvhz.cpp',
+ 'ucnv_lmb.cpp',
+ 'ucnvisci.cpp',
+ 'ucnvdisp.cpp',
+ 'ucnv_set.cpp',
+ 'ucnv_ct.cpp',
+ 'resource.cpp',
+ 'uresbund.cpp',
+ 'ures_cnv.cpp',
+ 'uresdata.cpp',
+ 'resbund.cpp',
+ 'resbund_cnv.cpp',
+ 'ucurr.cpp',
+ 'localebuilder.cpp',
+ 'localeprioritylist.cpp',
+ 'messagepattern.cpp',
+ 'ucat.cpp',
+ 'locmap.cpp',
+ 'uloc.cpp',
+ 'locid.cpp',
+ 'locutil.cpp',
+ 'locavailable.cpp',
+ 'locdispnames.cpp',
+ 'locdspnm.cpp',
+ 'loclikely.cpp',
+ 'locresdata.cpp',
+ 'lsr.cpp',
+ 'loclikelysubtags.cpp',
+ 'locdistance.cpp',
+ 'localematcher.cpp',
+ 'bytestream.cpp',
+ 'stringpiece.cpp',
+ 'bytesinkutil.cpp',
+ 'stringtriebuilder.cpp',
+ 'bytestriebuilder.cpp',
+ 'bytestrie.cpp',
+ 'bytestrieiterator.cpp',
+ 'ucharstrie.cpp',
+ 'ucharstriebuilder.cpp',
+ 'ucharstrieiterator.cpp',
+ 'dictionarydata.cpp',
+ 'edits.cpp',
+ 'appendable.cpp',
+ 'ustr_cnv.cpp',
+ 'unistr_cnv.cpp',
+ 'unistr.cpp',
+ 'unistr_case.cpp',
+ 'unistr_props.cpp',
+ 'utf_impl.cpp',
+ 'ustring.cpp',
+ 'ustrcase.cpp',
+ 'ucasemap.cpp',
+ 'ucasemap_titlecase_brkiter.cpp',
+ 'cstring.cpp',
+ 'ustrfmt.cpp',
+ 'ustrtrns.cpp',
+ 'ustr_wcs.cpp',
+ 'utext.cpp',
+ 'unistr_case_locale.cpp',
+ 'ustrcase_locale.cpp',
+ 'unistr_titlecase_brkiter.cpp',
+ 'ustr_titlecase_brkiter.cpp',
+ 'normalizer2impl.cpp',
+ 'normalizer2.cpp',
+ 'filterednormalizer2.cpp',
+ 'normlzr.cpp',
+ 'unorm.cpp',
+ 'unormcmp.cpp',
+ 'loadednormalizer2impl.cpp',
+ 'chariter.cpp',
+ 'schriter.cpp',
+ 'uchriter.cpp',
+ 'uiter.cpp',
+ 'patternprops.cpp',
+ 'uchar.cpp',
+ 'uprops.cpp',
+ 'ucase.cpp',
+ 'propname.cpp',
+ 'ubidi_props.cpp',
+ 'characterproperties.cpp',
+ 'ubidi.cpp',
+ 'ubidiwrt.cpp',
+ 'ubidiln.cpp',
+ 'ushape.cpp',
+ 'uscript.cpp',
+ 'uscript_props.cpp',
+ 'usc_impl.cpp',
+ 'unames.cpp',
+ 'utrie.cpp',
+ 'utrie2.cpp',
+ 'utrie2_builder.cpp',
+ 'ucptrie.cpp',
+ 'umutablecptrie.cpp',
+ 'bmpset.cpp',
+ 'unisetspan.cpp',
+ 'uset_props.cpp',
+ 'uniset_props.cpp',
+ 'uniset_closure.cpp',
+ 'uset.cpp',
+ 'uniset.cpp',
+ 'usetiter.cpp',
+ 'ruleiter.cpp',
+ 'caniter.cpp',
+ 'unifilt.cpp',
+ 'unifunct.cpp',
+ 'uarrsort.cpp',
+ 'brkiter.cpp',
+ 'ubrk.cpp',
+ 'brkeng.cpp',
+ 'dictbe.cpp',
+ 'filteredbrk.cpp',
+ 'rbbi.cpp',
+ 'rbbidata.cpp',
+ 'rbbinode.cpp',
+ 'rbbirb.cpp',
+ 'rbbiscan.cpp',
+ 'rbbisetb.cpp',
+ 'rbbistbl.cpp',
+ 'rbbitblb.cpp',
+ 'rbbi_cache.cpp',
+ 'serv.cpp',
+ 'servnotf.cpp',
+ 'servls.cpp',
+ 'servlk.cpp',
+ 'servlkf.cpp',
+ 'servrbf.cpp',
+ 'servslkf.cpp',
+ 'uidna.cpp',
+ 'usprep.cpp',
+ 'uts46.cpp',
+ 'punycode.cpp',
+ 'util.cpp',
+ 'util_props.cpp',
+ 'parsepos.cpp',
+ 'locbased.cpp',
+ 'cwchar.cpp',
+ 'wintz.cpp',
+ 'dtintrv.cpp',
+ 'ucnvsel.cpp',
+ 'propsvec.cpp',
+ 'ulist.cpp',
+ 'uloc_tag.cpp',
+ 'icudataver.cpp',
+ 'icuplug.cpp',
+ 'sharedobject.cpp',
+ 'simpleformatter.cpp',
+ 'unifiedcache.cpp',
+ 'uloc_keytype.cpp',
+ 'ubiditransform.cpp',
+ 'pluralmap.cpp',
+ 'static_unicode_sets.cpp',
+ 'restrace.cpp',
+)
+
+uc_args = ['-DU_COMMON_IMPLEMENTATION']
+uc_link = []
+uc_deps = dl_dep
diff --git a/subprojects/packagefiles/icu/source/data/generate_icupkg_inc.py b/subprojects/packagefiles/icu/source/data/generate_icupkg_inc.py
new file mode 100755
index 000000000..c4265c686
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/data/generate_icupkg_inc.py
@@ -0,0 +1,53 @@
+import json
+import sys
+
+host = sys.argv[1]
+cpu_family = sys.argv[2]
+outfile = sys.argv[3]
+
+with open('meson-info/intro-targets.json', 'r') as f:
+ targets = json.load(f)
+
+def get_arguments(name):
+ target = next(target for target in targets
+ if target['name'] == name)
+ sources = next(sources for sources in target['target_sources']
+ if sources['language'] == 'c')
+ return sources['compiler'] + sources['parameters']
+
+def quote(arguments):
+ return " ".join(json.dumps(arg) for arg in arguments)
+
+obj_arguments = get_arguments("pkgdata") + ['-c']
+lib_arguments = get_arguments("icutest") + ['-Wl,-Bsymbolic']
+
+config = {
+ 'A': 'a',
+ 'LIBPREFIX': 'lib',
+ 'LIB_EXT_ORDER': '.',
+ 'COMPILE': quote(obj_arguments),
+ 'LIBFLAGS': '', # already included in COMPILE
+ 'LDICUDTFLAGS': '-nodefaultlibs -nostdlib',
+ 'RPATH_FLAGS': '',
+ 'BIR_LDFLAGS': '-Wl,-Bsymbolic',
+ 'AR': 'ar',
+ 'ARFLAGS': 'r',
+ 'RANLIB': 'ranlib',
+ 'LD_SONAME': '',
+ 'INSTALL_CMD': ''
+}
+
+if host == 'darwin':
+ config['GENCCODE_ASSEMBLY_TYPE'] = '-a gcc-darwin'
+ config['SO'] = 'dylib'
+ config['SOBJ'] = 'dylib'
+ config['GENLIB'] = quote(lib_arguments + ['-dynamiclib', '-dynamic'])
+else:
+ config['GENCCODE_ASSEMBLY_TYPE'] = '-a gcc'
+ config['SO'] = 'so'
+ config['SOBJ'] = 'so'
+ config['GENLIB'] = quote(lib_arguments + ['-shared'])
+
+with open(outfile, 'w') as f:
+ for k, v in config.items():
+ f.write("{}={}\n".format(k, v))
diff --git a/subprojects/packagefiles/icu/source/data/meson.build b/subprojects/packagefiles/icu/source/data/meson.build
new file mode 100644
index 000000000..ebac3b413
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/data/meson.build
@@ -0,0 +1,44 @@
+icudata_lst = custom_target('icudata.lst',
+ # not sure how to ensure that @PRIVATE_DIR@ exists
+ #command: [icupkg, '-d', '@PRIVATE_DIR@', '--list', '-x', '*', '@INPUT@', '-o', '@OUTPUT@'],
+ command: [icupkg, '-d', '@OUTDIR@', '--list', '-x', '*', '@INPUT@', '-o', '@OUTPUT@'],
+ input: files('in/icudt67l.dat'),
+ output: 'icudata.lst')
+
+is_static = get_option('default_library') == 'static'
+
+if host_machine.system() == 'windows' # only msvc supported
+ data_lib_static = custom_target(
+ 'icudata_static', command: [pkgdata, '-q', '-c', '-e', 'icudt67', '-L', 'icudata_static',
+ '-d', '@OUTDIR@', '-s', '@OUTDIR@', '-p', 'icudt67l',
+ '-m', 'static', '@INPUT@'],
+ input: icudata_lst, output: 'icudata_static.lib')
+else
+ if host_machine.system() == 'darwin'
+ suffix = is_static ? '.a' : '.dylib'
+ else
+ suffix = is_static ? '.a' : '.so'
+ endif
+ suffix = '.a'
+
+ icupkg_inc = custom_target('icupkg.inc',
+ command: [python3, '@INPUT@', host_machine.system(),
+ host_machine.cpu_family(), '@OUTPUT@'],
+ input: 'generate_icupkg_inc.py',
+ output: 'icupkg.inc')
+ data_lib_static = custom_target(
+ 'icudata_static', command: [pkgdata, '-q', '-c', '-e', 'icudt67', '-L', 'icudata_static',
+ '-d', '@OUTDIR@', '-s', '@OUTDIR@',
+ '-p', 'icudt67l', '-O', icupkg_inc,
+ '-m', 'static', '@INPUT@'],
+ input: icudata_lst, output: 'libicudata_static' + suffix)
+endif
+
+if is_static
+ data_lib = data_lib_static
+else
+ # convert to proper library object to make sure rpath gets set properly
+ data_lib = library('icudata', link_whole: data_lib_static)
+endif
+
+# -nodefaultlibs -nostdlib for stubdata
diff --git a/subprojects/packagefiles/icu/source/i18n/meson.build b/subprojects/packagefiles/icu/source/i18n/meson.build
new file mode 100644
index 000000000..916e39622
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/i18n/meson.build
@@ -0,0 +1,239 @@
+i18n_sources = files(
+ 'ucln_in.cpp',
+ 'fmtable.cpp',
+ 'format.cpp',
+ 'msgfmt.cpp',
+ 'umsg.cpp',
+ 'numfmt.cpp',
+ 'unum.cpp',
+ 'decimfmt.cpp',
+ 'dcfmtsym.cpp',
+ 'fmtable_cnv.cpp',
+ 'choicfmt.cpp',
+ 'datefmt.cpp',
+ 'smpdtfmt.cpp',
+ 'reldtfmt.cpp',
+ 'dtfmtsym.cpp',
+ 'udat.cpp',
+ 'dtptngen.cpp',
+ 'udatpg.cpp',
+ 'nfrs.cpp',
+ 'nfrule.cpp',
+ 'nfsubs.cpp',
+ 'rbnf.cpp',
+ 'numsys.cpp',
+ 'unumsys.cpp',
+ 'ucsdet.cpp',
+ 'ucal.cpp',
+ 'calendar.cpp',
+ 'gregocal.cpp',
+ 'timezone.cpp',
+ 'simpletz.cpp',
+ 'olsontz.cpp',
+ 'astro.cpp',
+ 'taiwncal.cpp',
+ 'buddhcal.cpp',
+ 'persncal.cpp',
+ 'islamcal.cpp',
+ 'japancal.cpp',
+ 'gregoimp.cpp',
+ 'hebrwcal.cpp',
+ 'indiancal.cpp',
+ 'chnsecal.cpp',
+ 'cecal.cpp',
+ 'coptccal.cpp',
+ 'dangical.cpp',
+ 'ethpccal.cpp',
+ 'coleitr.cpp',
+ 'coll.cpp',
+ 'sortkey.cpp',
+ 'bocsu.cpp',
+ 'ucoleitr.cpp',
+ 'ucol.cpp',
+ 'ucol_res.cpp',
+ 'ucol_sit.cpp',
+ 'collation.cpp',
+ 'collationsettings.cpp',
+ 'collationdata.cpp',
+ 'collationtailoring.cpp',
+ 'collationdatareader.cpp',
+ 'collationdatawriter.cpp',
+ 'collationfcd.cpp',
+ 'collationiterator.cpp',
+ 'utf16collationiterator.cpp',
+ 'utf8collationiterator.cpp',
+ 'uitercollationiterator.cpp',
+ 'collationsets.cpp',
+ 'collationcompare.cpp',
+ 'collationfastlatin.cpp',
+ 'collationkeys.cpp',
+ 'rulebasedcollator.cpp',
+ 'collationroot.cpp',
+ 'collationrootelements.cpp',
+ 'collationdatabuilder.cpp',
+ 'collationweights.cpp',
+ 'collationruleparser.cpp',
+ 'collationbuilder.cpp',
+ 'collationfastlatinbuilder.cpp',
+ 'listformatter.cpp',
+ 'ulistformatter.cpp',
+ 'strmatch.cpp',
+ 'usearch.cpp',
+ 'search.cpp',
+ 'stsearch.cpp',
+ 'translit.cpp',
+ 'utrans.cpp',
+ 'esctrn.cpp',
+ 'unesctrn.cpp',
+ 'funcrepl.cpp',
+ 'strrepl.cpp',
+ 'tridpars.cpp',
+ 'cpdtrans.cpp',
+ 'rbt.cpp',
+ 'rbt_data.cpp',
+ 'rbt_pars.cpp',
+ 'rbt_rule.cpp',
+ 'rbt_set.cpp',
+ 'nultrans.cpp',
+ 'remtrans.cpp',
+ 'casetrn.cpp',
+ 'titletrn.cpp',
+ 'tolowtrn.cpp',
+ 'toupptrn.cpp',
+ 'anytrans.cpp',
+ 'name2uni.cpp',
+ 'uni2name.cpp',
+ 'nortrans.cpp',
+ 'quant.cpp',
+ 'transreg.cpp',
+ 'brktrans.cpp',
+ 'regexcmp.cpp',
+ 'rematch.cpp',
+ 'repattrn.cpp',
+ 'regexst.cpp',
+ 'regextxt.cpp',
+ 'regeximp.cpp',
+ 'uregex.cpp',
+ 'uregexc.cpp',
+ 'ulocdata.cpp',
+ 'measfmt.cpp',
+ 'currfmt.cpp',
+ 'curramt.cpp',
+ 'currunit.cpp',
+ 'measure.cpp',
+ 'utmscale.cpp',
+ 'csdetect.cpp',
+ 'csmatch.cpp',
+ 'csr2022.cpp',
+ 'csrecog.cpp',
+ 'csrmbcs.cpp',
+ 'csrsbcs.cpp',
+ 'csrucode.cpp',
+ 'csrutf8.cpp',
+ 'inputext.cpp',
+ 'wintzimpl.cpp',
+ 'windtfmt.cpp',
+ 'winnmfmt.cpp',
+ 'basictz.cpp',
+ 'dtrule.cpp',
+ 'rbtz.cpp',
+ 'tzrule.cpp',
+ 'tztrans.cpp',
+ 'vtzone.cpp',
+ 'zonemeta.cpp',
+ 'standardplural.cpp',
+ 'upluralrules.cpp',
+ 'plurrule.cpp',
+ 'plurfmt.cpp',
+ 'selfmt.cpp',
+ 'dtitvfmt.cpp',
+ 'dtitvinf.cpp',
+ 'udateintervalformat.cpp',
+ 'tmunit.cpp',
+ 'tmutamt.cpp',
+ 'tmutfmt.cpp',
+ 'currpinf.cpp',
+ 'uspoof.cpp',
+ 'uspoof_impl.cpp',
+ 'uspoof_build.cpp',
+ 'uspoof_conf.cpp',
+ 'smpdtfst.cpp',
+ 'ztrans.cpp',
+ 'zrule.cpp',
+ 'vzone.cpp',
+ 'fphdlimp.cpp',
+ 'fpositer.cpp',
+ 'ufieldpositer.cpp',
+ 'decNumber.cpp',
+ 'decContext.cpp',
+ 'alphaindex.cpp',
+ 'tznames.cpp',
+ 'tznames_impl.cpp',
+ 'tzgnames.cpp',
+ 'tzfmt.cpp',
+ 'compactdecimalformat.cpp',
+ 'gender.cpp',
+ 'region.cpp',
+ 'scriptset.cpp',
+ 'uregion.cpp',
+ 'reldatefmt.cpp',
+ 'quantityformatter.cpp',
+ 'measunit.cpp',
+ 'measunit_extra.cpp',
+ 'sharedbreakiterator.cpp',
+ 'scientificnumberformatter.cpp',
+ 'dayperiodrules.cpp',
+ 'nounit.cpp',
+ 'number_affixutils.cpp',
+ 'number_compact.cpp',
+ 'number_decimalquantity.cpp',
+ 'number_decimfmtprops.cpp',
+ 'number_fluent.cpp',
+ 'number_formatimpl.cpp',
+ 'number_grouping.cpp',
+ 'number_integerwidth.cpp',
+ 'number_longnames.cpp',
+ 'number_modifiers.cpp',
+ 'number_notation.cpp',
+ 'number_output.cpp',
+ 'number_padding.cpp',
+ 'number_patternmodifier.cpp',
+ 'number_patternstring.cpp',
+ 'number_rounding.cpp',
+ 'number_scientific.cpp',
+ 'number_utils.cpp',
+ 'number_asformat.cpp',
+ 'number_mapper.cpp',
+ 'number_multiplier.cpp',
+ 'number_currencysymbols.cpp',
+ 'number_skeletons.cpp',
+ 'number_capi.cpp',
+ 'double-conversion-string-to-double.cpp',
+ 'double-conversion-double-to-string.cpp',
+ 'double-conversion-bignum-dtoa.cpp',
+ 'double-conversion-bignum.cpp',
+ 'double-conversion-cached-powers.cpp',
+ 'double-conversion-fast-dtoa.cpp',
+ 'double-conversion-strtod.cpp',
+ 'string_segment.cpp',
+ 'numparse_parsednumber.cpp',
+ 'numparse_impl.cpp',
+ 'numparse_symbols.cpp',
+ 'numparse_decimal.cpp',
+ 'numparse_scientific.cpp',
+ 'numparse_currency.cpp',
+ 'numparse_affixes.cpp',
+ 'numparse_compositions.cpp',
+ 'numparse_validators.cpp',
+ 'numrange_fluent.cpp',
+ 'numrange_impl.cpp',
+ 'erarules.cpp',
+ 'formattedvalue.cpp',
+ 'formattedval_iterimpl.cpp',
+ 'formattedval_sbimpl.cpp',
+ 'formatted_string_builder.cpp',
+)
+
+i18n_args = '-DU_I18N_IMPLEMENTATION'
+i18n_link = ['uc']
+i18n_deps = []
diff --git a/subprojects/packagefiles/icu/source/io/meson.build b/subprojects/packagefiles/icu/source/io/meson.build
new file mode 100644
index 000000000..514c0924d
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/io/meson.build
@@ -0,0 +1,18 @@
+io_sources = files(
+ 'locbund.cpp',
+ 'ufile.cpp',
+ 'ufmt_cmn.cpp',
+ 'uprintf.cpp',
+ 'uprntf_p.cpp',
+ 'uscanf.cpp',
+ 'uscanf_p.cpp',
+ 'ustdio.cpp',
+ 'sprintf.cpp',
+ 'sscanf.cpp',
+ 'ustream.cpp',
+ 'ucln_io.cpp',
+)
+
+io_args = '-DU_IO_IMPLEMENTATION'
+io_link = ['i18n', 'uc']
+io_deps = []
diff --git a/subprojects/packagefiles/icu/source/meson.build b/subprojects/packagefiles/icu/source/meson.build
new file mode 100644
index 000000000..a144c9db3
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/meson.build
@@ -0,0 +1,80 @@
+python3 = import('python').find_installation('python3')
+
+incdir = include_directories('common', 'i18n')
+toolinc = include_directories('tools/toolutil')
+ctestinc = include_directories('tools/ctestfw')
+
+subdir('stubdata')
+
+# get sources and dependencies for required libraries
+subdir('common')
+subdir('i18n')
+subdir('io')
+subdir('tools/toolutil')
+
+# create [library name]_lib_stub artifacts linking against stub data
+icu_libs = ['uc', 'i18n', 'io', 'tu']
+foreach lib: icu_libs
+ liblinks = []
+ foreach link: get_variable(lib + '_link')
+ liblinks += get_variable(link + '_lib_stub')
+ endforeach
+ set_variable(lib + '_lib_stub', library(
+ 'icu' + lib + '_stub',
+ get_variable(lib + '_sources'),
+ include_directories: incdir,
+ c_args: get_variable(lib + '_args'),
+ cpp_args: get_variable(lib + '_args'),
+ link_with: liblinks + [stubdata_lib],
+ dependencies: get_variable(lib + '_deps')
+ ))
+endforeach
+
+# build tools and full data library using the libraries linked with the stub library
+subdir('tools/icupkg')
+subdir('tools/pkgdata')
+subdir('data')
+
+# rebuild libraries linking with the full data library
+foreach lib: icu_libs
+ liblinks = []
+ foreach link: get_variable(lib + '_link')
+ liblinks += get_variable(link + '_lib')
+ endforeach
+ set_variable(lib + '_lib', library(
+ 'icu' + lib,
+ get_variable(lib + '_sources'),
+ include_directories: incdir,
+ c_args: get_variable(lib + '_args'),
+ cpp_args: get_variable(lib + '_args'),
+ link_with: liblinks + [data_lib],
+ dependencies: get_variable(lib + '_deps')
+ ))
+endforeach
+
+# icutest not needed for bootstrapping, link with non-boostrap libs
+subdir('tools/ctestfw')
+
+icudata_dep = declare_dependency(link_with: [data_lib],
+ compile_args: usage_args,
+ include_directories: incdir)
+
+icuuc_dep = declare_dependency(link_with: [uc_lib],
+ compile_args: usage_args,
+ include_directories: incdir)
+
+icuio_dep = declare_dependency(link_with: [io_lib],
+ compile_args: usage_args,
+ include_directories: incdir)
+
+icui18n_dep = declare_dependency(link_with: [i18n_lib],
+ compile_args: usage_args,
+ include_directories: incdir)
+
+icutu_dep = declare_dependency(link_with: [tu_lib],
+ compile_args: usage_args,
+ include_directories: incdir)
+
+icutest_dep = declare_dependency(link_with: [test_lib],
+ compile_args: usage_args,
+ include_directories: [incdir, ctestinc])
diff --git a/subprojects/packagefiles/icu/source/stubdata/meson.build b/subprojects/packagefiles/icu/source/stubdata/meson.build
new file mode 100644
index 000000000..599aac88c
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/stubdata/meson.build
@@ -0,0 +1 @@
+stubdata_lib = library('icudata', 'stubdata.cpp', include_directories: incdir)
diff --git a/subprojects/packagefiles/icu/source/tools/ctestfw/meson.build b/subprojects/packagefiles/icu/source/tools/ctestfw/meson.build
new file mode 100644
index 000000000..0deee6d85
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/tools/ctestfw/meson.build
@@ -0,0 +1,18 @@
+test_sources = files(
+ 'ctest.c',
+ 'tstdtmod.cpp',
+ 'testdata.cpp',
+ 'datamap.cpp',
+ 'uperf.cpp',
+ 'ucln_ct.c',
+)
+
+test_args = '-DT_CTEST_IMPLEMENTATION'
+
+test_lib = library('icutest',
+ test_sources,
+ include_directories: [incdir, toolinc],
+ c_args: test_args,
+ cpp_args: test_args,
+ link_with: [data_lib, tu_lib, uc_lib],
+)
diff --git a/subprojects/packagefiles/icu/source/tools/icupkg/meson.build b/subprojects/packagefiles/icu/source/tools/icupkg/meson.build
new file mode 100644
index 000000000..ef96ae33a
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/tools/icupkg/meson.build
@@ -0,0 +1,3 @@
+icupkg = executable('icupkg', 'icupkg.cpp',
+ include_directories: [incdir, toolinc],
+ link_with: [tu_lib_stub, i18n_lib_stub, uc_lib_stub, stubdata_lib])
diff --git a/subprojects/packagefiles/icu/source/tools/pkgdata/meson.build b/subprojects/packagefiles/icu/source/tools/pkgdata/meson.build
new file mode 100644
index 000000000..2bacac6ac
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/tools/pkgdata/meson.build
@@ -0,0 +1,3 @@
+pkgdata = executable('pkgdata', 'pkgdata.cpp', 'pkgtypes.c',
+ include_directories: [incdir, toolinc],
+ link_with: [tu_lib_stub, i18n_lib_stub, uc_lib_stub, stubdata_lib])
diff --git a/subprojects/packagefiles/icu/source/tools/toolutil/meson.build b/subprojects/packagefiles/icu/source/tools/toolutil/meson.build
new file mode 100644
index 000000000..cdbecb231
--- /dev/null
+++ b/subprojects/packagefiles/icu/source/tools/toolutil/meson.build
@@ -0,0 +1,30 @@
+tu_sources = files(
+ 'filestrm.cpp',
+ 'package.cpp',
+ 'pkgitems.cpp',
+ 'swapimpl.cpp',
+ 'toolutil.cpp',
+ 'unewdata.cpp',
+ 'collationinfo.cpp',
+ 'denseranges.cpp',
+ 'ucm.cpp',
+ 'ucmstate.cpp',
+ 'uoptions.cpp',
+ 'uparse.cpp',
+ 'ucbuf.cpp',
+ 'xmlparser.cpp',
+ 'writesrc.cpp',
+ 'pkg_icu.cpp',
+ 'pkg_genc.cpp',
+ 'pkg_gencmn.cpp',
+ 'ppucd.cpp',
+ 'flagparser.cpp',
+ 'filetools.cpp',
+ 'udbgutil.cpp',
+ 'dbgutil.cpp',
+ 'ucln_tu.cpp',
+)
+
+tu_args = ['-DU_TOOLUTIL_IMPLEMENTATION']
+tu_link = ['uc', 'i18n']
+tu_deps = []
diff --git a/subprojects/packagefiles/luajit/meson.build b/subprojects/packagefiles/luajit/meson.build
new file mode 100644
index 000000000..526d1c675
--- /dev/null
+++ b/subprojects/packagefiles/luajit/meson.build
@@ -0,0 +1,40 @@
+project('luajit', 'c', version: '2.1.0', license: 'MIT')
+
+cc = meson.get_compiler('c')
+
+system_deps = [
+ cc.find_library('dl', required: false),
+ cc.find_library('m', required: false)
+]
+
+# compat flag is needed for both the buildvm code generator (compiled natively) and luajit itself
+add_project_arguments('-DLUAJIT_ENABLE_LUA52COMPAT', '-DENDIAN_LE', language: 'c', native: true)
+add_project_arguments('-DLUAJIT_ENABLE_LUA52COMPAT', '-DENDIAN_LE', language: 'c', native: false)
+if host_machine.system() == 'linux'
+ add_project_arguments('-DLUAJIT_OS=LUAJIT_OS_LINUX', language: 'c', native: true)
+ add_project_arguments('-DLUAJIT_UNWIND_EXTERNAL', language: 'c', native: false)
+ readline_dep = cc.find_library('readline')
+ ljvm_mode = 'elfasm'
+ ljvm_bout = 'lj_vm.s'
+elif host_machine.system() == 'darwin'
+ add_project_arguments('-DLUAJIT_OS=LUAJIT_OS_OSX', language: 'c', native: true)
+ add_project_arguments('-DLUAJIT_UNWIND_EXTERNAL', language: 'c', native: false)
+ readline_dep = cc.find_library('readline')
+ ljvm_mode = 'machasm'
+ ljvm_bout = 'lj_vm.s'
+elif host_machine.system() == 'windows'
+ add_project_arguments('-DLUAJIT_OS=LUAJIT_OS_WINDOWS', language: 'c', native: true)
+ if cc.get_id() != 'msvc'
+ add_project_arguments('-malign-double', language: 'c', native: true)
+ endif
+ readline_dep = []
+ ljvm_mode = 'peobj'
+ ljvm_bout = 'lj_vm.o'
+else
+ readline_dep = []
+ error('Unsupported platform')
+endif
+
+subdir('src')
+
+luajit_dep = declare_dependency(link_with: luajit_lib, include_directories: src_inc)
diff --git a/subprojects/packagefiles/luajit/src/host/meson.build b/subprojects/packagefiles/luajit/src/host/meson.build
new file mode 100644
index 000000000..c7b825bb8
--- /dev/null
+++ b/subprojects/packagefiles/luajit/src/host/meson.build
@@ -0,0 +1,60 @@
+minilua = executable('minilua', 'minilua.c',
+ dependencies: system_deps,
+ native: true)
+
+cpu_family = host_machine.cpu_family()
+if cpu_family == 'x86_64'
+ dynasm_arch = 'x64'
+elif cpu_family == 'aarch64'
+ dynasm_arch = 'arm64'
+else
+ dynasm_arch = cpu_family
+endif
+
+dynasm_dasc = files('../vm_@0@.dasc'.format(dynasm_arch))
+dasm = [minilua, files('../../dynasm/dynasm.lua')]
+
+if cc.get_id() == 'msvc'
+ # the cl.exe preprocessor seemingly removes/expands macros, so hardcode flags
+ dasm += ['-D', 'WIN', '-D', 'JIT', '-D', 'FFI']
+ if host_machine.cpu_family() == 'x86_64'
+ dasm += ['-D', 'P64']
+ endif
+else
+ # BUG: meson does not resolve paths correctly for subprojects
+ hpre = '#include "@0@/../lj_arch.h"'.format(meson.current_source_dir())
+
+ checkdefs = [
+ ['LJ_ARCH_BITS', '64', ['-D', 'P64']],
+ ['LJ_HASJIT', '1', ['-D', 'JIT']],
+ ['LJ_HASFFI', '1', ['-D', 'FFI']],
+ ]
+
+ if host_machine.cpu_family() == 'x86'
+ checkdefs += ['__SSE2__', '1', ['-D', 'SSE']]
+ endif
+
+ foreach def: checkdefs
+ if cc.get_define(def[0], prefix: hpre) == def[1]
+ dasm += def[2]
+ endif
+ endforeach
+endif
+
+buildvm_src = files(
+ 'buildvm.c',
+ 'buildvm_asm.c',
+ 'buildvm_peobj.c',
+ 'buildvm_lib.c',
+ 'buildvm_fold.c',
+)
+
+buildvm_arch = custom_target('buildvm_arch.h',
+ command: dasm + ['-o', '@OUTPUT@', '@INPUT@'],
+ input: dynasm_dasc,
+ output: 'buildvm_arch.h')
+
+buildvm = executable('buildvm', buildvm_src, buildvm_arch,
+ dependencies: system_deps,
+ include_directories: src_inc,
+ native: true)
diff --git a/subprojects/packagefiles/luajit/src/meson.build b/subprojects/packagefiles/luajit/src/meson.build
new file mode 100644
index 000000000..b1aeb0ca1
--- /dev/null
+++ b/subprojects/packagefiles/luajit/src/meson.build
@@ -0,0 +1,103 @@
+ljlib_src = files(
+ 'lib_base.c',
+ 'lib_bit.c',
+ 'lib_buffer.c',
+ 'lib_debug.c',
+ 'lib_ffi.c',
+ 'lib_io.c',
+ 'lib_jit.c',
+ 'lib_math.c',
+ 'lib_os.c',
+ 'lib_package.c',
+ 'lib_string.c',
+ 'lib_table.c',
+)
+
+ljcore_src = files(
+ 'lib_aux.c',
+ 'lib_init.c',
+ 'lj_alloc.c',
+ 'lj_api.c',
+ 'lj_asm.c',
+ 'lj_assert.c',
+ 'lj_bc.c',
+ 'lj_bcread.c',
+ 'lj_bcwrite.c',
+ 'lj_buf.c',
+ 'lj_carith.c',
+ 'lj_ccall.c',
+ 'lj_ccallback.c',
+ 'lj_cconv.c',
+ 'lj_cdata.c',
+ 'lj_char.c',
+ 'lj_clib.c',
+ 'lj_cparse.c',
+ 'lj_crecord.c',
+ 'lj_ctype.c',
+ 'lj_debug.c',
+ 'lj_dispatch.c',
+ 'lj_err.c',
+ 'lj_ffrecord.c',
+ 'lj_func.c',
+ 'lj_gc.c',
+ 'lj_gdbjit.c',
+ 'lj_ir.c',
+ 'lj_lex.c',
+ 'lj_lib.c',
+ 'lj_load.c',
+ 'lj_mcode.c',
+ 'lj_meta.c',
+ 'lj_obj.c',
+ 'lj_opt_dce.c',
+ 'lj_opt_fold.c',
+ 'lj_opt_loop.c',
+ 'lj_opt_mem.c',
+ 'lj_opt_narrow.c',
+ 'lj_opt_sink.c',
+ 'lj_opt_split.c',
+ 'lj_parse.c',
+ 'lj_prng.c',
+ 'lj_profile.c',
+ 'lj_record.c',
+ 'lj_serialize.c',
+ 'lj_snap.c',
+ 'lj_state.c',
+ 'lj_str.c',
+ 'lj_strfmt.c',
+ 'lj_strfmt_num.c',
+ 'lj_strscan.c',
+ 'lj_tab.c',
+ 'lj_trace.c',
+ 'lj_udata.c',
+ 'lj_vmevent.c',
+ 'lj_vmmath.c',
+)
+
+src_inc = include_directories('.')
+
+subdir('host')
+
+hdrgen = [
+ 'bcdef',
+ 'ffdef',
+ 'libdef',
+ 'recdef',
+]
+
+genheaders = []
+foreach h: hdrgen
+ genheaders += custom_target(h,
+ command: [buildvm, '-m', h, '-o', '@OUTPUT@', ljlib_src],
+ output: 'lj_@0@.h'.format(h))
+endforeach
+
+genheaders += custom_target('folddef',
+ command: [buildvm, '-m', 'folddef', '-o', '@OUTPUT@', files('lj_opt_fold.c')],
+ output: 'lj_folddef.h')
+
+ljvm = custom_target(ljvm_bout,
+ command: [buildvm, '-m', ljvm_mode, '-o', '@OUTPUT@'],
+ output: ljvm_bout)
+
+luajit_lib = static_library('luajit', ljlib_src, ljcore_src, genheaders, ljvm,
+ dependencies: system_deps)
diff --git a/subprojects/packagefiles/nasm/meson.build b/subprojects/packagefiles/nasm/meson.build
new file mode 100644
index 000000000..0f2b11986
--- /dev/null
+++ b/subprojects/packagefiles/nasm/meson.build
@@ -0,0 +1,3 @@
+project('nasm', version: '2.15.05')
+
+nasm = find_program('nasm.exe', dirs: meson.current_source_dir())
diff --git a/subprojects/packagefiles/uchardet/meson.build b/subprojects/packagefiles/uchardet/meson.build
new file mode 100644
index 000000000..85732e17f
--- /dev/null
+++ b/subprojects/packagefiles/uchardet/meson.build
@@ -0,0 +1,16 @@
+project('uchardet', 'cpp', version: '0.0.7', meson_version: '>=0.57.0')
+
+inc = include_directories('src')
+
+cpp = meson.get_compiler('cpp')
+
+if cpp.has_argument('-msse2') and cpp.has_argument('-mfpmath=sse')
+ add_project_arguments('-msse2', '-mfpmath=sse', language: 'cpp')
+elif cpp.has_argument('-ffloat-store')
+ add_project_arguments('-ffloat-store', language: 'cpp')
+endif
+
+subdir('src')
+
+uchardet_dep = declare_dependency(link_with: uchardet,
+ include_directories: inc)
diff --git a/subprojects/packagefiles/uchardet/src/meson.build b/subprojects/packagefiles/uchardet/src/meson.build
new file mode 100644
index 000000000..cf5dd2a38
--- /dev/null
+++ b/subprojects/packagefiles/uchardet/src/meson.build
@@ -0,0 +1,54 @@
+
+uchardet_sources = files([
+ 'CharDistribution.cpp',
+ 'JpCntx.cpp',
+ 'LangModels/LangArabicModel.cpp',
+ 'LangModels/LangBulgarianModel.cpp',
+ 'LangModels/LangCroatianModel.cpp',
+ 'LangModels/LangCzechModel.cpp',
+ 'LangModels/LangEsperantoModel.cpp',
+ 'LangModels/LangEstonianModel.cpp',
+ 'LangModels/LangFinnishModel.cpp',
+ 'LangModels/LangFrenchModel.cpp',
+ 'LangModels/LangDanishModel.cpp',
+ 'LangModels/LangGermanModel.cpp',
+ 'LangModels/LangGreekModel.cpp',
+ 'LangModels/LangHungarianModel.cpp',
+ 'LangModels/LangHebrewModel.cpp',
+ 'LangModels/LangIrishModel.cpp',
+ 'LangModels/LangItalianModel.cpp',
+ 'LangModels/LangLithuanianModel.cpp',
+ 'LangModels/LangLatvianModel.cpp',
+ 'LangModels/LangMalteseModel.cpp',
+ 'LangModels/LangPolishModel.cpp',
+ 'LangModels/LangPortugueseModel.cpp',
+ 'LangModels/LangRomanianModel.cpp',
+ 'LangModels/LangRussianModel.cpp',
+ 'LangModels/LangSlovakModel.cpp',
+ 'LangModels/LangSloveneModel.cpp',
+ 'LangModels/LangSwedishModel.cpp',
+ 'LangModels/LangSpanishModel.cpp',
+ 'LangModels/LangThaiModel.cpp',
+ 'LangModels/LangTurkishModel.cpp',
+ 'LangModels/LangVietnameseModel.cpp',
+ 'nsHebrewProber.cpp',
+ 'nsCharSetProber.cpp',
+ 'nsBig5Prober.cpp',
+ 'nsEUCJPProber.cpp',
+ 'nsEUCKRProber.cpp',
+ 'nsEUCTWProber.cpp',
+ 'nsEscCharsetProber.cpp',
+ 'nsEscSM.cpp',
+ 'nsGB2312Prober.cpp',
+ 'nsMBCSGroupProber.cpp',
+ 'nsMBCSSM.cpp',
+ 'nsSBCSGroupProber.cpp',
+ 'nsSBCharSetProber.cpp',
+ 'nsSJISProber.cpp',
+ 'nsUTF8Prober.cpp',
+ 'nsLatin1Prober.cpp',
+ 'nsUniversalDetector.cpp',
+ 'uchardet.cpp',
+])
+
+uchardet = library('uchardet', uchardet_sources)
diff --git a/subprojects/tronkko-dirent.wrap b/subprojects/tronkko-dirent.wrap
new file mode 100644
index 000000000..17abc0c19
--- /dev/null
+++ b/subprojects/tronkko-dirent.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = dirent-1.23.2
+
+source_url = https://github.com/tronkko/dirent/archive/1.23.2.tar.gz
+source_filename = dirent-1.23.2.tar.gz
+source_hash = f72d39e3c39610b6901e391b140aa69b51e0eb99216939ed5e547b5dad03afb1
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/tronkko-dirent/1.23.2/1/get_zip
+patch_filename = tronkko-dirent-1.23.2-1-wrap.zip
+patch_hash = 036957f6dee31d0b92f14cf3676d13baf44e9a1be950c248468440ffc40c78a4
diff --git a/subprojects/uchardet.wrap b/subprojects/uchardet.wrap
new file mode 100644
index 000000000..052c757c3
--- /dev/null
+++ b/subprojects/uchardet.wrap
@@ -0,0 +1,9 @@
+[wrap-file]
+directory = uchardet-0.0.7
+source_url = https://www.freedesktop.org/software/uchardet/releases/uchardet-0.0.7.tar.xz
+source_filename = uchardet-0.0.7.tar.gz
+source_hash = 3fc79408ae1d84b406922fa9319ce005631c95ca0f34b205fad867e8b30e45b1
+patch_directory = uchardet
+
+[provides]
+uchardet = uchardet_dep
diff --git a/subprojects/wxWidgets.wrap b/subprojects/wxWidgets.wrap
new file mode 100644
index 000000000..949a03927
--- /dev/null
+++ b/subprojects/wxWidgets.wrap
@@ -0,0 +1,5 @@
+[wrap-git]
+directory = wxWidgets
+url = https://github.com/wxWidgets/wxWidgets.git
+revision = v3.1.4
+clone-recursive = true
diff --git a/subprojects/zlib.wrap b/subprojects/zlib.wrap
new file mode 100644
index 000000000..ce20fb053
--- /dev/null
+++ b/subprojects/zlib.wrap
@@ -0,0 +1,12 @@
+[wrap-file]
+directory = zlib-1.2.11
+source_url = http://zlib.net/fossils/zlib-1.2.11.tar.gz
+source_filename = zlib-1.2.11.tar.gz
+source_hash = c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/zlib/1.2.11/5/get_zip
+patch_filename = zlib-1.2.11-5-wrap.zip
+patch_hash = 728c8e24acbc2e6682fbd950fec39e2fc77528af361adb87259f8a8511434004
+
+[provide]
+zlib = zlib_dep
+
diff --git a/tests/Makefile b/tests/Makefile
deleted file mode 100644
index 137430854..000000000
--- a/tests/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-include $(dir $(lastword $(MAKEFILE_LIST)))../header.mk
-
-GTEST_ROOT ?= $(TOP)vendor/googletest
-GTEST_FILE := ${GTEST_ROOT}/src/gtest-all
-
-run_PCH := $(d)support/tests_pre.h
-run_CPPFLAGS := -I$(TOP)libaegisub/include -I$(TOP) -I$(d)support \
- -I$(GTEST_ROOT) -I$(GTEST_ROOT)/include $(CPPFLAGS_BOOST) $(CFLAGS_LUA)
-run_CXXFLAGS := -Wno-unused-value -Wno-sign-compare
-run_LIBS := $(LIBS_BOOST) $(LIBS_ICU) $(LIBS_UCHARDET) $(LIBS_PTHREAD)
-run_OBJ := \
- $(patsubst %.cpp,%.o,$(wildcard $(d)tests/*.cpp)) \
- $(d)support/main.o \
- $(d)support/util.o \
- $(TOP)lib/libaegisub.a \
- $(GTEST_FILE).o
-
-# This bit of goofiness is to make it only try to build the tests if google
-# test can be found and silently skip it if not, by using $(wildcard) to check
-# for file existence
-PROGRAM += $(subst $(GTEST_FILE).cc,$(d)run,$(wildcard $(GTEST_FILE).cc))
-
-ifeq (yes, $(BUILD_DARWIN))
-run_LIBS += -framework ApplicationServices -framework Foundation
-endif
-
-$(d)data: $(d)setup.sh
- cd $(TOP)tests; ./setup.sh
-
-gtest_filter ?= *
-test-libaegisub: $(d)run $(d)data
- cd $(TOP)tests; ./run --gtest_filter="$(gtest_filter)"
-
-test: $(subst $(GTEST_FILE).cc,test-libaegisub,$(wildcard $(GTEST_FILE).cc))
-
-include $(TOP)Makefile.target
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 000000000..32eaa677b
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,88 @@
+all_test_deps = []
+all_test_dep_libs = []
+all_test_sources = []
+
+
+gtest_proj = subproject('gtest')
+gtest_dep = gtest_proj.get_variable('gtest_dep')
+gmock_dep = gtest_proj.get_variable('gmock_dep')
+
+
+all_test_deps += [
+ gtest_dep,
+ gmock_dep,
+ iconv_dep,
+ boost_dep
+]
+all_test_dep_libs += [
+ libaegisub
+]
+all_test_sources += [
+ 'support/main.cpp',
+ 'support/util.cpp',
+
+ 'tests/access.cpp',
+ 'tests/audio.cpp',
+ 'tests/cajun.cpp',
+ 'tests/calltip_provider.cpp',
+ 'tests/character_count.cpp',
+ 'tests/color.cpp',
+ 'tests/dialogue_lexer.cpp',
+ 'tests/format.cpp',
+ 'tests/fs.cpp',
+ 'tests/hotkey.cpp',
+ 'tests/iconv.cpp',
+ 'tests/ifind.cpp',
+ 'tests/karaoke_matcher.cpp',
+ 'tests/keyframe.cpp',
+ 'tests/line_iterator.cpp',
+ 'tests/line_wrap.cpp',
+ 'tests/mru.cpp',
+ 'tests/option.cpp',
+ 'tests/path.cpp',
+ 'tests/signals.cpp',
+ 'tests/split.cpp',
+ 'tests/syntax_highlight.cpp',
+ 'tests/thesaurus.cpp',
+ 'tests/time.cpp',
+ 'tests/type_name.cpp',
+ 'tests/util.cpp',
+ 'tests/uuencode.cpp',
+ 'tests/vfr.cpp',
+ 'tests/word_split.cpp'
+]
+
+test_inc = include_directories('support')
+
+# force UTF8 for MSVC
+if host_machine.system() == 'windows'
+ extra_args = ['/utf-8']
+else
+ extra_args = []
+endif
+
+runner = executable(
+ 'gtest-main',
+ all_test_sources,
+ include_directories : [test_inc, libaegisub_inc, deps_inc],
+ dependencies : all_test_deps,
+ cpp_args : extra_args,
+ link_with : all_test_dep_libs,
+)
+test('gtest main', runner)
+
+
+# setup test env
+if host_machine.system() == 'windows'
+ setup_sh = find_program('setup.bat')
+else
+ setup_sh = find_program('setup.sh')
+endif
+
+test_data_des = meson.project_build_root()
+custom_target('setup-test-data',
+ input: runner,
+ output: 'applied_test_setup',
+ command: [setup_sh, test_data_des],
+ build_by_default: true
+)
diff --git a/tests/setup.bat b/tests/setup.bat
index d2a6ec564..e66aa27a4 100644
--- a/tests/setup.bat
+++ b/tests/setup.bat
@@ -4,13 +4,13 @@ icacls data /grant:r %USERNAME%:F /T
rd /s /q data
mkdir data
-echo '' > data/file
+copy nul data\file
mkdir data\dir
-echo > data/file_access_denied
+copy nul data\file_access_denied
icacls data\file_access_denied /deny %USERNAME%:F
-echo > data/file_read_only
+copy nul data\file_read_only
icacls data\file_read_only /deny %USERNAME%:W
@@ -24,17 +24,14 @@ echo {"Video" : ["Entry One", "Entry Two"]} > data/mru_ok.json
echo {"Video" : [1, 3]} > data/mru_invalid.json
-echo '1234567890' > data\ten_bytes
-echo '' > data\touch_mod_time
-
-mkdir data/options
-cp options/* data/options
+< nul set /p ="1234567890" > data\ten_bytes
+copy nul data\touch_mod_time
mkdir data\dir_iterator
-echo '' > data\dir_iterator\1.a
-echo '' > data\dir_iterator\2.a
-echo '' > data\dir_iterator\1.b
-echo '' > data\dir_iterator\2.b
+copy nul data\dir_iterator\1.a
+copy nul data\dir_iterator\2.a
+copy nul data\dir_iterator\1.b
+copy nul data\dir_iterator\2.b
mkdir data\options
xcopy "%~dp0\options" data\options
@@ -47,3 +44,5 @@ xcopy "%~dp0\vfr" data\vfr\in
mkdir data\keyframe
xcopy "%~dp0\keyframe" data\keyframe
+
+ping -n 2 127.0.0.1 > nul
diff --git a/tests/tests/audio.cpp b/tests/tests/audio.cpp
index 4e0853315..23255c042 100644
--- a/tests/tests/audio.cpp
+++ b/tests/tests/audio.cpp
@@ -30,7 +30,7 @@ TEST(lagi_audio, dummy_blank) {
auto provider = agi::CreateDummyAudioProvider("dummy-audio:", nullptr);
char buff[1024];
- memset(buff, sizeof(buff), 1);
+ memset(buff, 1, sizeof(buff));
provider->GetAudio(buff, 12356, 512);
for (size_t i = 0; i < sizeof(buff); ++i) ASSERT_EQ(0, buff[i]);
}
@@ -39,7 +39,7 @@ TEST(lagi_audio, dummy_noise) {
auto provider = agi::CreateDummyAudioProvider("dummy-audio:noise?", nullptr);
char buff[1024];
- memset(buff, sizeof(buff), 0);
+ memset(buff, 0, sizeof(buff));
provider->GetAudio(buff, 12356, 512);
for (size_t i = 0; i < sizeof(buff); ++i) {
if (buff[i] != 0)
@@ -78,7 +78,7 @@ TEST(lagi_audio, before_sample_zero) {
TestAudioProvider<> provider;
uint16_t buff[16];
- memset(buff, sizeof(buff), 1);
+ memset(buff, 1, sizeof(buff));
provider.GetAudio(buff, -8, 16);
for (int i = 0; i < 8; ++i)
@@ -92,7 +92,7 @@ TEST(lagi_audio, before_sample_zero_8bit) {
provider.bias = 128;
uint8_t buff[16];
- memset(buff, sizeof(buff), 1);
+ memset(buff, 1, sizeof(buff));
provider.GetAudio(buff, -8, 16);
for (int i = 0; i < 8; ++i)
@@ -105,7 +105,7 @@ TEST(lagi_audio, after_end) {
TestAudioProvider<> provider(1);
uint16_t buff[16];
- memset(buff, sizeof(buff), 1);
+ memset(buff, 1, sizeof(buff));
provider.GetAudio(buff, provider.GetNumSamples() - 8, 16);
for (int i = 0; i < 8; ++i)
@@ -122,7 +122,7 @@ TEST(lagi_audio, save_audio_clip) {
agi::SaveAudioClip(*provider, path, 60 * 60 * 1000, (60 * 60 + 10) * 1000);
{
- bfs::ifstream s(path);
+ bfs::ifstream s(path, std::ios_base::binary);
ASSERT_TRUE(s.good());
s.seekg(0, std::ios::end);
// 10 seconds of 44.1 kHz samples per second of 16-bit mono, plus 44 bytes of header
@@ -141,7 +141,7 @@ TEST(lagi_audio, save_audio_clip_out_of_audio_range) {
// Start time after end of clip: empty file
agi::SaveAudioClip(*provider, path, end_time, end_time + 1);
{
- bfs::ifstream s(path);
+ bfs::ifstream s(path, std::ios_base::binary);
ASSERT_TRUE(s.good());
s.seekg(0, std::ios::end);
EXPECT_EQ(44, s.tellg());
@@ -151,7 +151,7 @@ TEST(lagi_audio, save_audio_clip_out_of_audio_range) {
// Start time >= end time: empty file
agi::SaveAudioClip(*provider, path, end_time - 1, end_time - 1);
{
- bfs::ifstream s(path);
+ bfs::ifstream s(path, std::ios_base::binary);
ASSERT_TRUE(s.good());
s.seekg(0, std::ios::end);
EXPECT_EQ(44, s.tellg());
@@ -161,7 +161,7 @@ TEST(lagi_audio, save_audio_clip_out_of_audio_range) {
// Start time during clip, end time after end of clip: save only the part that exists
agi::SaveAudioClip(*provider, path, end_time - 1000, end_time + 1000);
{
- bfs::ifstream s(path);
+ bfs::ifstream s(path, std::ios_base::binary);
ASSERT_TRUE(s.good());
s.seekg(0, std::ios::end);
// 1 second of 44.1 kHz samples per second of 16-bit mono, plus 44 bytes of header
@@ -365,18 +365,20 @@ TEST(lagi_audio, pcm_simple) {
agi::SaveAudioClip(provider, path, 0, 1000);
}
- auto provider = agi::CreatePCMAudioProvider(path, nullptr);
- EXPECT_EQ(1, provider->GetChannels());
- EXPECT_EQ(48000, provider->GetNumSamples());
- EXPECT_EQ(48000, provider->GetSampleRate());
- EXPECT_EQ(2, provider->GetBytesPerSample());
- EXPECT_EQ(false, provider->AreSamplesFloat());
- EXPECT_EQ(false, provider->NeedsCache());
+ {
+ auto provider = agi::CreatePCMAudioProvider(path, nullptr);
+ EXPECT_EQ(1, provider->GetChannels());
+ EXPECT_EQ(48000, provider->GetNumSamples());
+ EXPECT_EQ(48000, provider->GetSampleRate());
+ EXPECT_EQ(2, provider->GetBytesPerSample());
+ EXPECT_EQ(false, provider->AreSamplesFloat());
+ EXPECT_EQ(false, provider->NeedsCache());
- for (int i = 0; i < 100; ++i) {
- uint16_t sample;
- provider->GetAudio(&sample, i, 1);
- ASSERT_EQ(i, sample);
+ for (int i = 0; i < 100; ++i) {
+ uint16_t sample;
+ provider->GetAudio(&sample, i, 1);
+ ASSERT_EQ(i, sample);
+ }
}
agi::fs::Remove(path);
@@ -391,31 +393,33 @@ TEST(lagi_audio, pcm_truncated) {
char file[1000];
- { bfs::ifstream s(path); s.read(file, sizeof file); }
- { bfs::ofstream s(path); s.write(file, sizeof file); }
+ { bfs::ifstream s(path, std::ios_base::binary); s.read(file, sizeof file); }
+ { bfs::ofstream s(path, std::ios_base::binary); s.write(file, sizeof file); }
- auto provider = agi::CreatePCMAudioProvider(path, nullptr);
+ {
+ auto provider = agi::CreatePCMAudioProvider(path, nullptr);
- // Should still report full duration
- EXPECT_EQ(48000, provider->GetNumSamples());
+ // Should still report full duration
+ EXPECT_EQ(48000, provider->GetNumSamples());
- // And should zero-pad past the end
- auto sample_count = (1000 - 44) / 2;
- uint16_t sample;
+ // And should zero-pad past the end
+ int64_t sample_count = (1000 - 44) / 2;
+ uint16_t sample;
- provider->GetAudio(&sample, sample_count - 1, 1);
- EXPECT_EQ(sample_count - 1, sample);
+ provider->GetAudio(&sample, sample_count - 1, 1);
+ EXPECT_EQ(sample_count - 1, sample);
- provider->GetAudio(&sample, sample_count, 1);
- EXPECT_EQ(0, sample);
+ provider->GetAudio(&sample, sample_count, 1);
+ EXPECT_EQ(0, sample);
+ }
agi::fs::Remove(path);
}
#define RIFF "RIFF\0\0\0\x60WAVE"
-#define FMT_VALID "fmt \20\0\0\0\1\0\1\0\20\0\0\0\0\0\0\0\0\0\20\0"
+#define FMT_VALID "fmt \x10\0\0\0\1\0\1\0\x10\0\0\0\x20\0\0\0\2\0\x10\0"
#define DATA_VALID "data\1\0\0\0\0\0"
-#define WRITE(str) do { bfs::ofstream s(path); s.write(str, sizeof(str) - 1); } while (false)
+#define WRITE(str) do { bfs::ofstream s(path, std::ios_base::binary); s.write(str, sizeof(str) - 1); } while (false)
TEST(lagi_audio, pcm_incomplete) {
auto path = agi::Path().Decode("?temp/pcm_incomplete");
@@ -423,7 +427,7 @@ TEST(lagi_audio, pcm_incomplete) {
agi::fs::Remove(path);
ASSERT_THROW(agi::CreatePCMAudioProvider(path, nullptr), agi::fs::FileNotFound);
- bfs::ofstream{path};
+ {bfs::ofstream(path, std::ios_base::binary); }
ASSERT_THROW(agi::CreatePCMAudioProvider(path, nullptr), agi::AudioDataNotFound);
// Invalid tags
@@ -434,12 +438,14 @@ TEST(lagi_audio, pcm_incomplete) {
ASSERT_THROW(agi::CreatePCMAudioProvider(path, nullptr), agi::AudioDataNotFound);
// Incomplete files
- auto valid_file = RIFF FMT_VALID DATA_VALID;
+ const char valid_file[] = RIFF FMT_VALID DATA_VALID;
// -1 for nul term, -3 so that longest file is still invalid
for (size_t i = 0; i < sizeof(valid_file) - 4; ++i) {
- bfs::ofstream s(path);
- s.write(valid_file, i);
+ {
+ bfs::ofstream s(path, std::ios_base::binary);
+ s.write(valid_file, i);
+ }
ASSERT_THROW(agi::CreatePCMAudioProvider(path, nullptr), agi::AudioDataNotFound);
}
@@ -463,28 +469,30 @@ TEST(lagi_audio, multiple_data_chunks) {
WRITE(RIFF FMT_VALID "data\2\0\0\0\1\0" "data\2\0\0\0\2\0" "data\2\0\0\0\3\0");
- auto provider = agi::CreatePCMAudioProvider(path, nullptr);
- ASSERT_EQ(3, provider->GetNumSamples());
+ {
+ auto provider = agi::CreatePCMAudioProvider(path, nullptr);
+ ASSERT_EQ(3, provider->GetNumSamples());
- uint16_t samples[3];
+ uint16_t samples[3];
- provider->GetAudio(samples, 0, 3);
- EXPECT_EQ(1, samples[0]);
- EXPECT_EQ(2, samples[1]);
- EXPECT_EQ(3, samples[2]);
+ provider->GetAudio(samples, 0, 3);
+ EXPECT_EQ(1, samples[0]);
+ EXPECT_EQ(2, samples[1]);
+ EXPECT_EQ(3, samples[2]);
- samples[1] = 5;
- provider->GetAudio(samples, 2, 1);
- EXPECT_EQ(3, samples[0]);
- EXPECT_EQ(5, samples[1]);
+ samples[1] = 5;
+ provider->GetAudio(samples, 2, 1);
+ EXPECT_EQ(3, samples[0]);
+ EXPECT_EQ(5, samples[1]);
- provider->GetAudio(samples, 1, 1);
- EXPECT_EQ(2, samples[0]);
- EXPECT_EQ(5, samples[1]);
+ provider->GetAudio(samples, 1, 1);
+ EXPECT_EQ(2, samples[0]);
+ EXPECT_EQ(5, samples[1]);
- provider->GetAudio(samples, 0, 1);
- EXPECT_EQ(1, samples[0]);
- EXPECT_EQ(5, samples[1]);
+ provider->GetAudio(samples, 0, 1);
+ EXPECT_EQ(1, samples[0]);
+ EXPECT_EQ(5, samples[1]);
+ }
agi::fs::Remove(path);
}
@@ -504,13 +512,15 @@ TEST(lagi_audio, wave64_simple) {
auto path = agi::Path().Decode("?temp/w64_valid");
WRITE(WAVE64_FILE);
- auto provider = agi::CreatePCMAudioProvider(path, nullptr);
- ASSERT_EQ(2, provider->GetNumSamples());
+ {
+ auto provider = agi::CreatePCMAudioProvider(path, nullptr);
+ ASSERT_EQ(2, provider->GetNumSamples());
- uint16_t samples[2];
- provider->GetAudio(samples, 0, 2);
- EXPECT_EQ(1, samples[0]);
- EXPECT_EQ(2, samples[1]);
+ uint16_t samples[2];
+ provider->GetAudio(samples, 0, 2);
+ EXPECT_EQ(1, samples[0]);
+ EXPECT_EQ(2, samples[1]);
+ }
agi::fs::Remove(path);
}
@@ -520,13 +530,15 @@ TEST(lagi_audio, wave64_truncated) {
// Should be invalid until there's an entire sample
for (size_t i = 0; i < sizeof(WAVE64_FILE) - 4; ++i) {
- bfs::ofstream s(path);
- s.write(WAVE64_FILE, i);
+ {
+ bfs::ofstream s(path, std::ios_base::binary);
+ s.write(WAVE64_FILE, i);
+ }
ASSERT_THROW(agi::CreatePCMAudioProvider(path, nullptr), agi::AudioDataNotFound);
}
{
- bfs::ofstream s(path);
+ bfs::ofstream s(path, std::ios_base::binary);
s.write(WAVE64_FILE, sizeof(WAVE64_FILE) - 3);
}
ASSERT_NO_THROW(agi::CreatePCMAudioProvider(path, nullptr));
diff --git a/tests/tests/ifind.cpp b/tests/tests/ifind.cpp
index e165b9bbe..fea7a4fa9 100644
--- a/tests/tests/ifind.cpp
+++ b/tests/tests/ifind.cpp
@@ -84,6 +84,8 @@ TEST(lagi_skip_tags, tag_stripping) {
EXPECT_EQ("abc", helper.strip_tags("a{}bc", 0));
EXPECT_EQ("abc", helper.strip_tags("abc{}", 0));
EXPECT_EQ("abc", helper.strip_tags("{}a{}bc{}", 0));
+ EXPECT_EQ("rmofmat", helper.strip_tags("{\\i1}rmofmat{\\i}", 0));
+ EXPECT_EQ("rm of mat", helper.strip_tags("{\\i1}rm of mat{\\i}", 0));
EXPECT_EQ("abc", helper.strip_tags("{}abc", 1));
EXPECT_EQ("abc", helper.strip_tags("{}abc", 2));
@@ -112,6 +114,8 @@ TEST(lagi_skip_tags, range_mapping) {
EXPECT_RANGE("{cc}ab", 0, 1, 2, 5, 6);
EXPECT_RANGE("{cc}ab{cc}b", 0, 1, 2, 5, 6);
EXPECT_RANGE("{cc}ab{cc}b", 0, 1, 3, 5, 11);
+ EXPECT_RANGE("{\\i1}rmofmat{\\i}", 0, 4, 7, 9, 12);
+ EXPECT_RANGE("{\\i1}rm of mat{\\i}", 0, 6, 9, 11, 14);
EXPECT_RANGE("{cc}ab{cc}b", 3, 1, 3, 5, 11);
EXPECT_RANGE("{cc}ab{cc}b", 4, 1, 3, 5, 11);
diff --git a/tests/tests/keyframe.cpp b/tests/tests/keyframe.cpp
index e664b54b7..5b4e49788 100644
--- a/tests/tests/keyframe.cpp
+++ b/tests/tests/keyframe.cpp
@@ -41,8 +41,9 @@ TEST(lagi_keyframe, save) {
TEST(lagi_keyframe, bad_files) {
EXPECT_THROW(Load(""), agi::fs::FileSystemError);
- EXPECT_THROW(Load("data/keyframe/empty.txt"), Error);
- EXPECT_THROW(Load("data/keyframe/garbage.txt"), Error);
+ // TODO: use more clearly error type
+ EXPECT_THROW(Load("data/keyframe/empty.txt"), agi::InvalidInputException);
+ EXPECT_THROW(Load("data/keyframe/garbage.txt"), agi::InvalidInputException);
}
TEST(lagi_keyframe, xvid) {
diff --git a/tests/tests/path.cpp b/tests/tests/path.cpp
index 1f942bebb..c7a6e04f0 100644
--- a/tests/tests/path.cpp
+++ b/tests/tests/path.cpp
@@ -172,9 +172,18 @@ TEST(lagi_path, make_relative_on_dummy_url) {
EXPECT_UNCHANGED("?dummy:23.976000:40000:1280:720:47:163:254:", MakeRelative);
}
+#ifdef _WIN32
+TEST(lagi_path, encode) {
+ Path p;
+ p.SetToken("?user", "C:\\a\\b\\c");
+ p.SetToken("?local", "C:\\a\\b\\c\\d");
+ EXPECT_EQ("?local\\e", p.Encode("C:\\a\\b\\c\\d\\e"));
+}
+#else
TEST(lagi_path, encode) {
Path p;
p.SetToken("?user", "/a/b/c");
p.SetToken("?local", "/a/b/c/d");
EXPECT_EQ("?local/e", p.Encode("/a/b/c/d/e"));
}
+#endif
diff --git a/tests/tests/thesaurus.cpp b/tests/tests/thesaurus.cpp
index 0a003a002..5fa1d878b 100644
--- a/tests/tests/thesaurus.cpp
+++ b/tests/tests/thesaurus.cpp
@@ -26,13 +26,14 @@ protected:
std::string dat_path;
void SetUp() override {
- using std::endl;
+ // Use '\n' on all platforms, as we are mapping the file to memory as binary data, and readline can only handle '\n'
+ const char endl = '\n';
idx_path = "data/thes.idx";
dat_path = "data/thes.dat";
- std::ofstream idx(idx_path.c_str());
- std::ofstream dat(dat_path.c_str());
+ std::ofstream idx(idx_path.c_str(), std::ios_base::binary);
+ std::ofstream dat(dat_path.c_str(), std::ios_base::binary);
idx << "UTF-8" << endl;
dat << "UTF-8" << endl;
diff --git a/tests/tests/time.cpp b/tests/tests/time.cpp
index a9fcc8753..147a2d4d6 100644
--- a/tests/tests/time.cpp
+++ b/tests/tests/time.cpp
@@ -62,17 +62,9 @@ TEST(lagi_time, extra_garbage_is_ignored) {
EXPECT_STREQ("1:23:45.67", Time("1a:b2c3d:e4f5g.!6&7").GetAssFormatted().c_str());
}
-TEST(lagi_time, component_getters) {
- Time t("1:23:45.67");
- EXPECT_EQ(1, t.GetTimeHours());
- EXPECT_EQ(23, t.GetTimeMinutes());
- EXPECT_EQ(45, t.GetTimeSeconds());
- EXPECT_EQ(67, t.GetTimeCentiseconds());
- EXPECT_EQ(670, t.GetTimeMiliseconds());
-}
-
TEST(lagi_time, srt_time) {
EXPECT_STREQ("1:23:45.678", Time("1:23:45,678").GetAssFormatted(true).c_str());
+ EXPECT_STREQ("01:23:45,678", Time("1:23:45,678").GetSrtFormatted().c_str());
}
TEST(lagi_time, smpte_parse_valid) {
diff --git a/tests/unset.bat b/tests/unset.bat
new file mode 100644
index 000000000..28241512b
--- /dev/null
+++ b/tests/unset.bat
@@ -0,0 +1,23 @@
+@echo off
+
+IF [%1]==[] GOTO :help
+
+
+:main
+@REM Switch to the build directory
+cd %1
+
+@REM Restores all permissions to the four read-only and access denied files
+icacls data\file_access_denied /grant %USERNAME%:F
+icacls data\file_read_only /grant %USERNAME%:W
+icacls data\dir_access_denied /grant %USERNAME%:F
+icacls data\dir_read_only /grant %USERNAME%:W
+
+@REM Delete the entire test data folder
+rmdir /s/q data
+
+
+:help
+@REM Show help information
+ECHO Restore access and delete the test data folder.
+ECHO Usage: unset PATH_TO_BUILD_DIR
diff --git a/tools/Makefile b/tools/Makefile
deleted file mode 100644
index de6166a1e..000000000
--- a/tools/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-include $(dir $(lastword $(MAKEFILE_LIST)))../header.mk
-
-osx-bundle-restart-helper_OBJ := $(d)osx-bundle-restart-helper.o
-
-ifeq (yes, $(BUILD_DARWIN))
-PROGRAM += $(d)osx-bundle-restart-helper
-endif
-
-repack-thes-dict_OBJ := $(d)repack-thes-dict.o $(TOP)lib/libaegisub.a
-repack-thes-dict_LIBS := $(LIBS_BOOST) $(LIBS_ICU) $(LIBS_PTHREAD)
-repack-thes-dict_CPPFLAGS := -I$(TOP) -I$(TOP)libaegisub/include $(CFLAGS_ICU)
-
-PROGRAM += $(d)repack-thes-dict
-
-$(TOP)tools/respack.lua: $(shell command -v "$(BIN_LUA)")
-
-include $(TOP)Makefile.target
diff --git a/tools/apply-manifest.py b/tools/apply-manifest.py
new file mode 100644
index 000000000..3ea84624d
--- /dev/null
+++ b/tools/apply-manifest.py
@@ -0,0 +1,8 @@
+#!/usr/bin/env python3
+
+import sys, subprocess, pathlib, os
+
+mt_exe, executable = sys.argv[1:]
+
+subprocess.run([mt_exe, '-manifest', executable + '.manifest', '-outputresource:' + executable + ';1'])
+pathlib.Path(os.path.join(os.path.dirname(executable), 'applied_manifest')).touch()
diff --git a/tools/osx-bundle.sh b/tools/osx-bundle.sh
index eb82b554f..f8d4a682e 100755
--- a/tools/osx-bundle.sh
+++ b/tools/osx-bundle.sh
@@ -2,22 +2,25 @@
set -e
-PKG_DIR=Aegisub.app
-SKEL_DIR="packages/osx_bundle"
-AEGISUB_BIN="${1}"
-SRCDIR=`pwd`
-HOME_DIR=`echo ~`
-WX_PREFIX=`${2} --prefix`
-FONTCONFIG_CONF_DIR="${3}"
+SRC_DIR="${1}"
+BUILD_DIR="${2}"
+WX_PREFIX=""
+FONTCONFIG_CONF_DIR="${4}"
+DICT_DIR="${5}"
+MESON_BUILD_OSX_BUNDLE="${6}"
-if ! test -d packages/osx_bundle; then
- echo
- echo "Make sure you're in the toplevel source directory"
+if [ "${MESON_BUILD_OSX_BUNDLE}" != "TRUE" ]; then
+ echo "Project not built with \`build_osx_bundle\`"
+ echo "Please run \`meson configure -Dbuild_osx_bundle=true\` and rebuild"
exit 1
fi
+PKG_DIR="${BUILD_DIR}/Aegisub.app"
+SKEL_DIR="${SRC_DIR}/packages/osx_bundle"
+
if test -d "${PKG_DIR}"; then
rm -rf "${PKG_DIR}"
+ echo "Removing old Aegisub.app"
fi
echo
@@ -31,41 +34,34 @@ mkdir -v "${PKG_DIR}/Contents/SharedSupport/dictionaries"
echo
echo "---- Copying Skel Files ----"
-if ! test -f "tools/osx-bundle.sed"; then
+if ! test -f "${BUILD_DIR}/osx-bundle.sed"; then
echo
- echo "NOT FOUND: tools/osx-bundle.sed"
+ echo "NOT FOUND: ${BUILD_DIR}/osx-bundle.sed"
exit 1
fi
# used by osx-bundle.sed
-find po -name *.po | sed 's/.*\/\(.*\)\.po/ \1<\/string>/; s/RS/YU/' > languages
+find "${SRC_DIR}/po" -name *.po | sed 's/.*\/\(.*\)\.po/ \1<\/string>/; s/RS/YU/' > "${BUILD_DIR}/languages"
-find ${SKEL_DIR} -type f -not -regex ".*.svn.*"
-cp ${SKEL_DIR}/Contents/Resources/*.icns "${PKG_DIR}/Contents/Resources"
-cat ${SKEL_DIR}/Contents/Info.plist | sed -f tools/osx-bundle.sed > "${PKG_DIR}/Contents/Info.plist"
+#find "${SKEL_DIR}" -type f -not -regex ".*.svn.*"
+cp -v ${SKEL_DIR}/Contents/Resources/*.icns "${PKG_DIR}/Contents/Resources"
+cat "${SKEL_DIR}/Contents/Info.plist" | sed -f "${BUILD_DIR}/osx-bundle.sed" > "${PKG_DIR}/Contents/Info.plist"
-rm languages
+rm "${BUILD_DIR}/languages"
echo
echo "---- Installing files ----"
-make install \
- DESTDIR="${PKG_DIR}/Contents" \
- P_DATA="/SharedSupport" \
- P_DOC="/SharedSupport/doc" \
- P_LOCALE="/Resources" \
- P_BINDIR="/MacOS"
+CURRENT_DIR=`pwd`
+cd ${BUILD_DIR}
+ninja install
+cd ${CURRENT_DIR}
echo
echo "---- Copying dictionaries ----"
-if test -z "${DICT_DIR}"; then
- DICT_DIR="${HOME_DIR}/dict"
-fi
-
-if test -d "${DICT_DIR}"; then
- cp -v ${DICT_DIR}/* "${PKG_DIR}/Contents/SharedSupport/dictionaries"
+if test -f "${DICT_DIR}"; then
+ cp -v "${DICT_DIR}/*" "${PKG_DIR}/Contents/SharedSupport/dictionaries"
else
- echo "WARNING: Dictionaries not found, please set $$DICT_DIR to a directiory"
- echo " where the *.aff and *.dic files can be found"
+ echo "Specified dictionary directory ${DICT_DIR} not found!"
fi
echo
@@ -74,31 +70,33 @@ echo "---- Copying Aegisub locale files ----"
# internal so we don't need an aegisub.mo file.
mkdir -vp "${PKG_DIR}/Contents/Resources/en.lproj"
+# FIXME
# 10.8 wants sr_YU rather than sr_RS
-mv "${PKG_DIR}/Contents/Resources/sr_RS.lproj" "${PKG_DIR}/Contents/Resources/sr_YU.lproj"
-mv "${PKG_DIR}/Contents/Resources/sr_RS@latin.lproj" "${PKG_DIR}/Contents/Resources/sr_YU@latin.lproj"
+#mv "${PKG_DIR}/Contents/Resources/sr_RS.lproj" "${PKG_DIR}/Contents/Resources/sr_YU.lproj"
+#mv "${PKG_DIR}/Contents/Resources/sr_RS@latin.lproj" "${PKG_DIR}/Contents/Resources/sr_YU@latin.lproj"
+
+## TODO: rm those lines
+## xref: [Update and review translations · Issue #132 · TypesettingTools/Aegisub](https://github.com/TypesettingTools/Aegisub/issues/132)
+# echo
+# echo "---- Copying WX locale files ----"
+#
+# for i in `ls -1 ${SRC_DIR}/po/*.mo|sed "s|po/\(.*\).mo|\1|"`; do
+# WX_MO="${WX_PREFIX}/share/locale/${i}/LC_MESSAGES/wxstd.mo"
+#
+# if ! test -f "${WX_MO}"; then
+# WX_MO="${HOME_DIR}/wxstd/${i}.mo"
+# fi
+#
+# if test -f "${WX_MO}"; then
+# cp -v "${WX_MO}" "${PKG_DIR}/Contents/Resources/${i}.lproj/"
+# else
+# echo "WARNING: \"$i\" locale in aegisub but no WX catalog found!"
+# fi
+# done
echo
-echo "---- Copying WX locale files ----"
-
-for i in `ls -1 po/*.mo|sed "s|po/\(.*\).mo|\1|"`; do
- WX_MO="${WX_PREFIX}/share/locale/${i}/LC_MESSAGES/wxstd.mo"
-
- if ! test -f "${WX_MO}"; then
- WX_MO="${HOME_DIR}/wxstd/${i}.mo"
- fi
-
- if test -f "${WX_MO}"; then
- cp -v "${WX_MO}" "${PKG_DIR}/Contents/Resources/${i}.lproj/"
- else
- echo "WARNING: \"$i\" locale in aegisub but no WX catalog found!"
- fi
-done
-
+echo "---- Fixing libraries ----"
+sudo python3 "${SRC_DIR}/tools/osx-fix-libs.py" "${PKG_DIR}/Contents/MacOS/aegisub" || exit $?
echo
-echo "---- Libraries ----"
-python tools/osx-fix-libs.py "${PKG_DIR}/Contents/MacOS/aegisub" || exit $?
-
-echo
-echo "Done Creating \"${PKG_DIR}\""
+echo "Done creating \"${PKG_DIR}\""
diff --git a/tools/osx-dmg.sh b/tools/osx-dmg.sh
index 0f7b916b6..24a9ec64b 100755
--- a/tools/osx-dmg.sh
+++ b/tools/osx-dmg.sh
@@ -15,37 +15,46 @@
set -e
-TMP_DMG="temp_dmg"
-PKG_DIR="Aegisub.app"
-PKG_NAME="Aegisub-${1}"
-PKG_NAME_RW="Aegisub-${1}_rw.dmg"
-PKG_NAME_VOLUME="Aegisub-${1}"
+SRC_DIR="${1}"
+BUILD_DIR="${2}"
+AEGI_VER="${3}"
+
+PKG_NAME="Aegisub-${AEGI_VER}"
+PKG_NAME_VOLUME="${PKG_NAME}"
+
+PKG_DIR="${BUILD_DIR}/Aegisub.app"
+DMG_TMP_DIR="${BUILD_DIR}/temp_dmg"
+DMG_PATH="${BUILD_DIR}/${PKG_NAME}.dmg"
+DMG_RW_PATH="${BUILD_DIR}/${PKG_NAME}_rw.dmg"
+
if ! test -d "${PKG_DIR}"; then
echo "\"${PKG_DIR}\" does not exist, please run 'make osx-bundle'"
exit 1;
fi
-rm -rf "${TMP_DMG}" "${PKG_NAME}.dmg"
-mkdir -v "${TMP_DMG}"
echo
-echo "---- Copying ${1} into ${TMP_DMG}/ ----"
-cp -R "${PKG_DIR}" "${TMP_DMG}"
+echo "---- Removing old \"${DMG_TMP_DIR}\", \"${DMG_PATH}\", \"${DMG_RW_PATH}\" ----"
+rm -rf "${DMG_TMP_DIR}" "${DMG_PATH}" "${DMG_RW_PATH}"
+mkdir -v "${DMG_TMP_DIR}"
+echo
+echo "---- Copying ${AEGI_VER} into ${DMG_TMP_DIR}/ ----"
+cp -R "${PKG_DIR}" "${DMG_TMP_DIR}"
echo
echo "---- Setting up ----"
-ln -vsf /Applications "${TMP_DMG}"
-mkdir -v "${TMP_DMG}/.background"
-cp -v packages/osx_dmg/dmg_background.png "${TMP_DMG}/.background/background.png"
-cp -v packages/osx_bundle/Contents/Resources/Aegisub.icns "${TMP_DMG}/.VolumeIcon.icns"
+ln -vsf /Applications "${DMG_TMP_DIR}"
+mkdir -v "${DMG_TMP_DIR}/.background"
+cp -v "${SRC_DIR}/packages/osx_dmg/dmg_background.png" "${DMG_TMP_DIR}/.background/background.png"
+cp -v "${SRC_DIR}/packages/osx_bundle/Contents/Resources/Aegisub.icns" "${DMG_TMP_DIR}/.VolumeIcon.icns"
echo
echo "---- Creating image ----"
-/usr/bin/hdiutil create -srcfolder "${TMP_DMG}" -volname "${PKG_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "${PKG_NAME_RW}"
+/usr/bin/hdiutil create -srcfolder "${DMG_TMP_DIR}" -volname "${PKG_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "${DMG_RW_PATH}"
echo
echo "---- Mounting image ----"
-DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify -noautoopen "${PKG_NAME_RW}" |awk '/GUID_partition_scheme/ {print $1}'`
+DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify -noautoopen "${DMG_RW_PATH}" |awk '/GUID_partition_scheme/ {print $1}'`
echo "Device name: ${DEV_NAME}"
echo
@@ -61,7 +70,7 @@ if test -n "${SET_STYLE}"; then
echo "---- Running AppleScript to set style ----"
SCRIPT_TMP=`mktemp /tmp/aegisub_dmg_as.XXX`
- sed -f scripts/osx-bundle.sed packages/osx_dmg/dmg_set_style.applescript > ${SCRIPT_TMP}
+ sed -f "${SRC_DIR}/scripts/osx-bundle.sed" "${SRC_DIR}/packages/osx_dmg/dmg_set_style.applescript" > ${SCRIPT_TMP}
/usr/bin/osacompile -o ${SCRIPT_TMP}.scpt ${SCRIPT_TMP}
@@ -79,18 +88,18 @@ if test -n "${SET_STYLE}"; then
hdiutil detach "${DEV_NAME}"
- DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify -noautoopen "${PKG_NAME_RW}" |awk '/GUID_partition_scheme/ {print $1}'`
+ DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify -noautoopen "${DMG_RW_PATH}" |awk '/GUID_partition_scheme/ {print $1}'`
echo "Device name: ${DEV_NAME}"
- cp -v "/Volumes/${PKG_NAME_VOLUME}/.DS_Store" packages/osx_dmg/DS_Store
- SetFile -a v packages/osx_dmg/DS_Store
+ cp -v "/Volumes/${PKG_NAME_VOLUME}/.DS_Store" "${SRC_DIR}/packages/osx_dmg/DS_Store"
+ SetFile -a v "${SRC_DIR}/packages/osx_dmg/DS_Store"
hdiutil detach "${DEV_NAME}"
- rm -rf "${TMP_DMG}" "${PKG_NAME_RW}" ${SCRIPT_TMP}.scpt ${SCRIPT_TMP}
+ rm -rf "${DMG_TMP_DIR}" "${DMG_RW_PATH}" ${SCRIPT_TMP}.scpt ${SCRIPT_TMP}
exit 0
else
echo "---- Installing DS_Store ----"
- cp -v packages/osx_dmg/DS_Store "/Volumes/${PKG_NAME_VOLUME}/.DS_Store"
+ cp -v "${SRC_DIR}/packages/osx_dmg/DS_Store" "/Volumes/${PKG_NAME_VOLUME}/.DS_Store"
fi
echo
@@ -100,11 +109,10 @@ echo /usr/bin/hdiutil detach "${DEV_NAME}" -force
echo
echo "---- Compressing ----"
-/usr/bin/hdiutil convert "${PKG_NAME_RW}" -format UDBZ -imagekey bzip2-level=9 -o "${PKG_NAME}.dmg"
+/usr/bin/hdiutil convert "${DMG_RW_PATH}" -format UDBZ -imagekey bzip2-level=9 -o "${DMG_PATH}"
-echo
-echo "---- Removing \"${TMP_DMG}\", \"${PKG_NAME_RW}\" ----"
-rm -rf "${TMP_DMG}" "${PKG_NAME_RW}"
+echo "---- Removing temp dmg \"${DMG_RW_PATH}\" ----"
+rm -rf "${DMG_RW_PATH}"
echo
echo "Done!"
diff --git a/tools/osx-fix-libs.py b/tools/osx-fix-libs.py
index ac4327a9a..e29c8180f 100755
--- a/tools/osx-fix-libs.py
+++ b/tools/osx-fix-libs.py
@@ -1,103 +1,132 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
import re
import sys
import os
import shutil
import stat
+import subprocess
is_bad_lib = re.compile(r'(/usr/local|/opt)').match
is_sys_lib = re.compile(r'(/usr|/System)').match
-otool_libname_extract = re.compile(r'\s+(/.*?)[\(\s:]').search
+otool_libname_extract = re.compile(r'\s+(/.*?)[(\s:]').search
+otool_loader_path_extract = re.compile(r'\s+@loader_path/(.*?)[(\s:]').search
goodlist = []
badlist = []
link_map = {}
+
def otool(cmdline):
- pipe = os.popen("otool " + cmdline, 'r')
- output = pipe.readlines()
- pipe.close()
- return output
+ with subprocess.Popen(['otool'] + cmdline, stdout=subprocess.PIPE,
+ encoding='utf-8') as p:
+ return p.stdout.readlines()
+
def collectlibs(lib, masterlist, targetdir):
- global goodlist, link_map
- liblist = otool("-L '" + lib + "'")
- locallist = []
+ global goodlist, link_map
+ liblist = otool(['-L', lib])
+ locallist = []
- for l in liblist:
- lr = otool_libname_extract(l)
- if not lr: continue
- l = lr.group(1)
- if is_bad_lib(l) and not l in badlist:
- badlist.append(l)
- if ((not is_sys_lib(l)) or is_bad_lib(l)) and not l in masterlist:
- locallist.append(l)
- print("found %s:" % l)
+ for l in liblist:
+ lr = otool_libname_extract(l)
+ if lr:
+ l = lr.group(1)
+ else:
+ lr = otool_loader_path_extract(l)
+ if lr:
+ l = os.path.join(os.path.dirname(lib), lr.group(1))
+ else:
+ continue
+ if is_bad_lib(l) and l not in badlist:
+ badlist.append(l)
+ if ((not is_sys_lib(l)) or is_bad_lib(l)) and l not in masterlist:
+ locallist.append(l)
+ print("found %s:" % l)
- check = l
- link_list = []
- while check:
- if os.path.isfile(check) and not os.path.islink(check):
- os.system("cp '%s' '%s'" % (check, targetdir))
- print(" FILE %s ... copied to target" % check)
- if link_list:
- for link in link_list:
- link_map[link] = os.path.basename(check)
- break
-
- if os.path.islink(check):
- print(" LINK %s" % check)
- link_list.append(os.path.basename(check))
- check = os.path.dirname(check) + "/" + os.readlink(check)
+ check = l
+ link_list = []
+ while check:
+ basename = os.path.basename(check)
+ target = os.path.join(targetdir, basename)
- elif not l in goodlist and not l in masterlist:
- goodlist.append(l)
- masterlist.extend(locallist)
+ if os.path.isfile(check) and not os.path.islink(check):
+ try:
+ shutil.copy(check, target)
+ except PermissionError:
+ print(" FILE %s ... skipped" % check)
+ break
+ print(" FILE %s ... copied to target" % check)
+ if link_list:
+ for link in link_list:
+ link_map[link] = basename
+ break
- for l in locallist:
- collectlibs(l, masterlist, targetdir)
+ if os.path.islink(check):
+ link_dst = os.readlink(check)
+ try:
+ os.symlink(link_dst, target)
+ except FileExistsError:
+ print(" LINK %s ... existed" % check)
+ break
+ print(" LINK %s ... copied to target" % check)
+ link_list.append(basename)
+ check = os.path.join(os.path.dirname(check), link_dst)
-exit;
-binname = sys.argv[1]
-targetdir = os.path.dirname(binname)
-print("Searching for libraries in ", binname, "...")
-libs = [binname]
-collectlibs(sys.argv[1], libs, targetdir)
+ elif l not in goodlist and l not in masterlist:
+ goodlist.append(l)
+ masterlist.extend(locallist)
+
+ for l in locallist:
+ collectlibs(l, masterlist, targetdir)
-print()
-print("System libraries used...")
-goodlist.sort()
-for l in goodlist:
- print(l)
+if __name__ == '__main__':
+ binname = sys.argv[1]
+ targetdir = os.path.dirname(binname)
+ print("Searching for libraries in", binname, "...")
+ libs = [binname]
+ collectlibs(binname, libs, targetdir)
+ print()
+ print("System libraries used...")
+ goodlist.sort()
+ for l in goodlist:
+ print(l)
-print()
-print("Fixing library install names...")
-in_tool_cmdline = "install_name_tool "
-for lib in libs:
- libbase = os.path.basename(lib)
- if libbase in link_map:
- libbase = link_map[libbase]
- in_tool_cmdline = in_tool_cmdline + ("-change '%s' '@executable_path/%s' " % (lib, libbase))
-for lib in libs:
- libbase = os.path.basename(lib)
+ print()
+ print("Fixing library install names...")
+ in_tool_cmdline = ['install_name_tool']
+ for lib in libs:
+ libbase = os.path.basename(lib)
+ if libbase in link_map:
+ libbase = link_map[libbase]
+ in_tool_cmdline = in_tool_cmdline + ['-change', lib,
+ '@executable_path/' + libbase]
+ for lib in libs:
+ libbase = os.path.basename(lib)
- if libbase in link_map:
- libbase = link_map[libbase]
- print("%s -> @executable_path/%s (REMAPPED)" % (lib, libbase))
- else:
- print("%s -> @executable_path/%s" % (lib, libbase))
+ if libbase in link_map:
+ libbase = link_map[libbase]
+ print("%s -> @executable_path/%s (REMAPPED)" % (lib, libbase))
+ else:
+ print("%s -> @executable_path/%s" % (lib, libbase))
- os.system("%s -id '@executable_path/%s' '%s/%s'" % (in_tool_cmdline, libbase, targetdir, libbase))
- sys.stdout.flush()
+ targetlib = targetdir + '/' + libbase
+ orig_permission = os.stat(targetlib).st_mode
+ if not(orig_permission & stat.S_IWUSR):
+ os.chmod(targetlib, orig_permission | stat.S_IWUSR)
+ subprocess.run(in_tool_cmdline + ['-id', '@executable_path/' + libbase,
+ targetlib])
+ if not(orig_permission & stat.S_IWUSR):
+ os.chmod(targetlib, orig_permission)
-if badlist:
- print()
- print("WARNING: The following libraries have blacklisted paths:")
- for lib in sorted(badlist):
- print(lib)
- print("These paths normally have files from a package manager, which means that end result may not work if copied to another machine.")
+ if badlist:
+ print()
+ print("WARNING: The following libraries have blacklisted paths:")
+ for lib in sorted(badlist):
+ print(lib)
+ print(
+ "These paths normally have files from a package manager, which means that end result may not work if copied to another machine.")
-print()
-print("All done!")
+ print()
+ print("All done!")
diff --git a/tools/respack.py b/tools/respack.py
new file mode 100755
index 000000000..9e5902eb5
--- /dev/null
+++ b/tools/respack.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+
+import sys, os
+
+manifestfile, cppfile, hfile = sys.argv[1:]
+
+with open(manifestfile, 'r') as manifest:
+ files = dict((x.strip(), None) for x in manifest.readlines() if x.strip() != '')
+
+sourcepath = os.path.split(manifestfile)[0]
+buildpath = os.path.split(cppfile)[0]
+
+for k in files:
+ sf = os.path.join(sourcepath, k)
+ bf = os.path.join(buildpath, k)
+
+ if os.path.isfile(sf):
+ files[k] = sf
+ elif os.path.isfile(bf):
+ files[k] = bf
+ else:
+ print("{}: Failed to open '{}'".format(manifestfile, k))
+ sys.exit(1)
+
+with open(cppfile, 'w') as cpp:
+ cpp.write('#include "libresrc.h"\n')
+ with open(hfile, 'w') as h:
+
+ for k in files:
+ with open(files[k], 'rb') as f:
+ data = [str(int(x)) for x in f.read()]
+
+ datastr = ','.join(data)
+ name = os.path.splitext(os.path.basename(k))[0]
+ cpp.write('const unsigned char {}[] = {{{}}};\n'.format(name, datastr))
+ h.write('extern const unsigned char {}[{}];\n'.format(name, len(data)))
diff --git a/tools/version.ps1 b/tools/version.ps1
new file mode 100644
index 000000000..7a05b7bf5
--- /dev/null
+++ b/tools/version.ps1
@@ -0,0 +1,89 @@
+#!/usr/bin/env powershell
+
+param (
+ [Parameter(Position = 0, Mandatory = $false)]
+ [string]$BuildRoot = $null,
+ [Parameter(Position = 1, Mandatory = $false)]
+ [string]$SourceRoot = $null
+)
+
+$lastSvnRevision = 6962
+$lastSvnHash = '16cd907fe7482cb54a7374cd28b8501f138116be'
+$defineNumberMatch = [regex] '^#define\s+(\w+)\s+(\d+)$'
+$defineStringMatch = [regex] "^#define\s+(\w+)\s+[`"']?(.+?)[`"']?$"
+$semVerMatch = [regex] 'v?(\d+)\.(\d+).(\d+)(?:-(\w+))?'
+
+$repositoryRootPath = Join-Path $PSScriptRoot .. | Resolve-Path
+if (!(git -C $repositoryRootPath rev-parse --is-inside-work-tree 2>$null)) {
+ throw "$repositoryRootPath is not a git repository"
+}
+
+if ($BuildRoot -eq $null -or $BuildRoot.Trim() -eq "") {
+ $BuildRoot = $repositoryRootPath
+}
+
+# support legacy in-tree builds
+if ([System.IO.Path]::GetFullPath([System.IO.Path]::Combine((pwd).Path, $BuildRoot)) -eq
+ [System.IO.Path]::GetFullPath([System.IO.Path]::Combine((pwd).Path, $repositoryRootPath))) {
+ $BuildRoot = Join-Path $repositoryRootPath 'build'
+ }
+$gitVersionHeaderPath = Join-Path $BuildRoot 'git_version.h'
+
+$version = @{}
+if (Test-Path $gitVersionHeaderPath) {
+ Get-Content $gitVersionHeaderPath | %{$_.Trim()} | ?{$_} | %{
+ switch -regex ($_) {
+ $defineNumberMatch {
+ $version[$Matches[1]] = [int]$Matches[2];
+ }
+ $defineStringMatch {
+ $version[$Matches[1]] = $Matches[2];
+ }
+ }
+ }
+}
+
+$gitRevision = $lastSvnRevision + ((git -C $repositoryRootPath log --pretty=oneline "$($lastSvnHash)..HEAD" 2>$null | Measure-Object).Count)
+$gitBranch = git -C $repositoryRootPath symbolic-ref --short HEAD 2>$null
+$gitHash = git -C $repositoryRootPath rev-parse --short HEAD 2>$null
+$gitVersionString = $gitRevision, $gitBranch, $gitHash -join '-'
+$exactGitTag = git -C $repositoryRootPath describe --exact-match --tags 2>$null
+
+if ($gitVersionString -eq $version['BUILD_GIT_VERSION_STRING']) {
+ exit 0
+}
+
+if ($exactGitTag -match $semVerMatch) {
+ $version['TAGGED_RELEASE'] = $true
+ $version['RESOURCE_BASE_VERSION'] = $Matches[1..3]
+ $version['INSTALLER_VERSION'] = $gitVersionString = ($Matches[1..3] -join '.') + @("-$($Matches[4])",'')[!$Matches[4]]
+} else {
+ foreach ($rev in (git -C $repositoryRootPath rev-list --tags 2>$null)) {
+ $tag = git -C $repositoryRootPath describe --exact-match --tags $rev 2>$null
+ if ($tag -match $semVerMatch) {#
+ $version['TAGGED_RELEASE'] = $false
+ $version['RESOURCE_BASE_VERSION'] = $Matches[1..3]
+ $version['INSTALLER_VERSION'] = ($Matches[1..3] -join '.')
+ break;
+ }
+ }
+}
+
+$version['BUILD_GIT_VERSION_NUMBER'] = $gitRevision
+$version['BUILD_GIT_VERSION_STRING'] = $gitVersionString
+
+$version.GetEnumerator() | %{
+ $type = $_.Value.GetType()
+ $value = $_.Value
+ $fmtValue = switch ($type) {
+ ([string]) {"`"$value`""}
+ ([int]) {$value.ToString()}
+ ([bool]) {([int]$value).ToString()}
+ ([object[]]) {$value -join ', '}
+ default {
+ Write-Host "no format known for type '$type' - trying default string conversion" -ForegroundColor Red
+ {"`"$($value.ToString())`""}
+ }
+ }
+ "`n#define $($_.Key) $($fmtValue)"
+} | Out-File -FilePath $gitVersionHeaderPath -Encoding utf8
diff --git a/build/version.sh b/tools/version.sh
similarity index 66%
rename from build/version.sh
rename to tools/version.sh
index 8cea0a3f3..8df33e175 100755
--- a/build/version.sh
+++ b/tools/version.sh
@@ -1,16 +1,16 @@
-srcdir="$1"
+builddir="$1"
+srcdir="$2"
# If no git repo try to read from the existing git_version.h, for building from tarballs
+version_h_path="${builddir}/git_version.h"
if ! test -d "${srcdir}/.git"; then
- version_h_path="${srcdir}/build/git_version.h"
if test -f "${version_h_path}"; then
while read line; do
set -- $line
export $2=$(echo $3 | sed 's/"//g')
done < "${version_h_path}"
if test x$BUILD_GIT_VERSION_NUMBER != x -a x$BUILD_GIT_VERSION_STRING != x; then
- export VERSION_SOURCE="from cached git_version.h"
- return 0
+ exit 0
else
echo "invalid git_version.h"
exit 2
@@ -20,11 +20,12 @@ if ! test -d "${srcdir}/.git"; then
exit 2
fi
fi
+osx_bundle_sed_path="${builddir}/osx-bundle.sed"
last_svn_revision=6962
last_svn_hash="16cd907fe7482cb54a7374cd28b8501f138116be"
-git_revision=$(expr $last_svn_revision + $(git log --pretty=oneline $last_svn_hash..HEAD 2>/dev/null | wc -l))
+git_revision=$(expr $last_svn_revision + $(git rev-list --count $last_svn_hash..HEAD))
git_version_str=$(git describe --exact-match 2> /dev/null)
installer_version='0.0.0'
resource_version='0, 0, 0'
@@ -44,6 +45,7 @@ else
tagged_release=0
fi
+build_date="$(date "+%Y-%m-%d %H:%M %Z")"
new_version_h="\
#define BUILD_GIT_VERSION_NUMBER ${git_revision}
@@ -52,28 +54,21 @@ new_version_h="\
#define INSTALLER_VERSION \"${installer_version}\"
#define RESOURCE_BASE_VERSION ${resource_version}"
-# may not exist yet for out of tree builds
-mkdir -p build
-version_h_path="build/git_version.h"
+osx_bundle_sed="\
+s/@PLIST_VERSION@/${git_version_str}/g
+s/@PLIST_BUILD_DATE@/${build_date}/g
+/ *@LOCALIZATIONS@/ {
+ r languages
+ d
+}"
# Write it only if it's changed to avoid spurious rebuilds
# This bizzare comparison method is due to that newlines in shell variables are very exciting
case "$(cat ${version_h_path} 2> /dev/null)"
in
"${new_version_h}");;
- *) echo "${new_version_h}" > "${version_h_path}"
+ *)
+ echo "${new_version_h}" > "${version_h_path}"
+ echo "${osx_bundle_sed}" > "${osx_bundle_sed_path}"
+ ;;
esac
-
-export BUILD_GIT_VERSION_NUMBER="${git_revision}"
-export BUILD_GIT_VERSION_STRING="${git_version_str}"
-export VERSION_SOURCE="from git"
-
-cat << EOF > build/git_version.xml
-
-
-
- ${git_revision}
- ${git_version_str}
-
-
-EOF
diff --git a/tools/win-installer-setup.ps1 b/tools/win-installer-setup.ps1
new file mode 100644
index 000000000..312bf292c
--- /dev/null
+++ b/tools/win-installer-setup.ps1
@@ -0,0 +1,85 @@
+#!/usr/bin/env powershell
+
+param (
+ [Parameter(Position = 0)]
+ [string]$BuildRoot,
+ [Parameter(Position = 1)]
+ [string]$SourceRoot
+)
+
+$InstallerDir = Join-Path $SourceRoot "packages\win_installer" | Resolve-Path
+$DepsDir = Join-Path $BuildRoot "installer-deps"
+if (!(Test-Path $DepsDir)) {
+ New-Item -ItemType Directory -Path $DepsDir
+}
+
+$Env:BUILD_ROOT = $BuildRoot
+$Env:SOURCE_ROOT = $SourceRoot
+
+Set-Location $DepsDir
+
+# DepCtrl
+if (!(Test-Path DependencyControl)) {
+ git clone https://github.com/TypesettingTools/DependencyControl.git
+ Set-Location DependencyControl
+ git checkout v0.6.3-alpha
+ Set-Location $DepsDir
+}
+
+# YUtils
+if (!(Test-Path YUtils)) {
+ git clone https://github.com/TypesettingTools/YUtils.git
+}
+
+# luajson
+if (!(Test-Path luajson)) {
+ git clone https://github.com/harningt/luajson.git
+}
+
+# Avisynth
+if (!(Test-Path AviSynthPlus64)) {
+ $avsReleases = Invoke-WebRequest "https://api.github.com/repos/AviSynth/AviSynthPlus/releases/latest" -UseBasicParsing | ConvertFrom-Json
+ $avsUrl = $avsReleases.assets[0].browser_download_url
+ Invoke-WebRequest $avsUrl -OutFile AviSynthPlus.7z -UseBasicParsing
+ 7z x AviSynthPlus.7z
+ Rename-Item (Get-ChildItem -Filter "AviSynthPlus_*" -Directory) AviSynthPlus64
+ Remove-Item AviSynthPlus.7z
+}
+
+# VSFilter
+if (!(Test-Path VSFilter)) {
+ $vsFilterDir = New-Item -ItemType Directory VSFilter
+ Set-Location $vsFilterDir
+ $vsFilterReleases = Invoke-WebRequest "https://api.github.com/repos/pinterf/xy-VSFilter/releases/latest" -UseBasicParsing | ConvertFrom-Json
+ $vsFilterUrl = $vsFilterReleases.assets[0].browser_download_url
+ Invoke-WebRequest $vsFilterUrl -OutFile VSFilter.7z -UseBasicParsing
+ 7z x VSFilter.7z
+ Remove-Item VSFilter.7z
+ Set-Location $DepsDir
+}
+
+# ffi-experiments
+if (!(Test-Path ffi-experiments)) {
+ Get-Command "moonc" # check to ensure Moonscript is present
+ git clone https://github.com/TypesettingTools/ffi-experiments.git
+ Set-Location ffi-experiments
+ meson build -Ddefault_library=static
+ meson compile -C build
+ Set-Location $DepsDir
+}
+
+# VC++ redistributable
+if (!(Test-Path VC_redist)) {
+ $redistDir = New-Item -ItemType Directory VC_redist
+ Invoke-WebRequest https://aka.ms/vs/16/release/VC_redist.x64.exe -OutFile "$redistDir\VC_redist.x64.exe" -UseBasicParsing
+}
+
+# TODO dictionaries
+
+# localization
+Set-Location $BuildRoot
+meson compile aegisub-gmo
+
+# Invoke InnoSetup
+$IssUrl = Join-Path $InstallerDir "aegisub_depctrl.iss"
+iscc $IssUrl
diff --git a/vendor/boost b/vendor/boost
deleted file mode 160000
index 9ccd3390c..000000000
--- a/vendor/boost
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9ccd3390c8e9ef05f4cb681d15b2e14eac48886e
diff --git a/vendor/ffmpeg b/vendor/ffmpeg
deleted file mode 160000
index d290bb0c5..000000000
--- a/vendor/ffmpeg
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d290bb0c540425e937d11ed88e22c68ab97c57eb
diff --git a/vendor/ffms2 b/vendor/ffms2
deleted file mode 160000
index f3c6b008b..000000000
--- a/vendor/ffms2
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f3c6b008b53719dcac032293e3a42a3164c8d7ec
diff --git a/vendor/fftw b/vendor/fftw
deleted file mode 160000
index d68ca6315..000000000
--- a/vendor/fftw
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d68ca6315cafa5b8ff9367d9375314f32b7dbd81
diff --git a/vendor/freetype2 b/vendor/freetype2
deleted file mode 160000
index 51fee6558..000000000
--- a/vendor/freetype2
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 51fee655837ef99084767873266aaddfa3a31da5
diff --git a/vendor/googletest b/vendor/googletest
deleted file mode 160000
index cc0116f14..000000000
--- a/vendor/googletest
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit cc0116f14aa8ad9ab76226d082a96b1005221816
diff --git a/vendor/hunspell/ABOUT-NLS b/vendor/hunspell/ABOUT-NLS
deleted file mode 100644
index 83bc72ec2..000000000
--- a/vendor/hunspell/ABOUT-NLS
+++ /dev/null
@@ -1,1068 +0,0 @@
-1 Notes on the Free Translation Project
-***************************************
-
-Free software is going international! The Free Translation Project is
-a way to get maintainers of free software, translators, and users all
-together, so that free software will gradually become able to speak many
-languages. A few packages already provide translations for their
-messages.
-
- If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site. But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
- Installers will find here some useful hints. These notes also
-explain how users should proceed for getting the programs to use the
-available translations. They tell how people wanting to contribute and
-work on translations can contact the appropriate team.
-
- When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used. The information can be found in the
-`intl/VERSION' file, in internationalized packages.
-
-1.1 Quick configuration advice
-==============================
-
-If you want to exploit the full power of internationalization, you
-should configure it using
-
- ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed. So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation. Future versions of GNU `gettext' will
-very likely convey even more functionality. So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
- So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-1.2 INSTALL Matters
-===================
-
-Some packages are "localizable" when properly installed; the programs
-they contain can be made to speak your own native language. Most such
-packages use GNU `gettext'. Other packages have their own ways to
-internationalization, predating GNU `gettext'.
-
- By default, this package will be installed to allow translation of
-messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. If not, the included GNU
-`gettext' library will be used. This library is wholly contained
-within this package, usually in the `intl/' subdirectory, so prior
-installation of the GNU `gettext' package is _not_ required.
-Installers may use special options at configuration time for changing
-the default behaviour. The commands:
-
- ./configure --with-included-gettext
- ./configure --disable-nls
-
-will, respectively, bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this. This might not be desirable. You should use
-the more recent version of the GNU `gettext' library. I.e. if the file
-`intl/VERSION' shows that the library which comes with this package is
-more recent, you should use
-
- ./configure --with-included-gettext
-
-to prevent auto-detection.
-
- The configuration process will not test for the `catgets' function
-and therefore it will not be used. The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
-
- Internationalized packages usually have many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language. Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package. However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-1.3 Using This Package
-======================
-
-As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination. If you happen to have the `LC_ALL' or some other
-`LC_xxx' environment variables set, you should unset them before
-setting `LANG', otherwise the setting of `LANG' will not have the
-desired effect. Here `LL' is an ISO 639 two-letter language code, and
-`CC' is an ISO 3166 two-letter country code. For example, let's
-suppose that you speak German and live in Germany. At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
- You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries. For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
-country code serves to distinguish the dialects.
-
- The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc. On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-locales supported by your system for your language by running the
-command `locale -a | grep '^LL''.
-
- Not all programs have translations for all languages. By default, an
-English message is shown in place of a nonexistent translation. If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries. For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
- Special advice for Norwegian users: The language code for Norwegian
-bokma*l changed from `no' to `nb' recently (in 2003). During the
-transition period, while some message catalogs for this language are
-installed under `nb' and some older ones under `no', it's recommended
-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-older translations are used.
-
- In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect. For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-1.4 Translating Teams
-=====================
-
-For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list. The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://translationproject.org/', in the "Teams" area.
-
- If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended. For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
-
- subscribe
-
- Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around. If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `coordinator@translationproject.org' to
-reach the coordinator for all translator teams.
-
- The English team is special. It works at improving and uniformizing
-the terminology in use. Proven linguistic skills are praised more than
-programming skills, here.
-
-1.5 Available Packages
-======================
-
-Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of November
-2007. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
- Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo
- +----------------------------------------------------+
- Compendium | [] [] [] [] |
- a2ps | [] [] [] [] [] |
- aegis | () |
- ant-phone | () |
- anubis | [] |
- ap-utils | |
- aspell | [] [] [] [] [] |
- bash | [] |
- bfd | |
- bibshelf | [] |
- binutils | |
- bison | [] [] |
- bison-runtime | [] |
- bluez-pin | [] [] [] [] [] |
- cflow | [] |
- clisp | [] [] [] |
- console-tools | [] [] |
- coreutils | [] [] [] [] |
- cpio | |
- cpplib | [] [] [] |
- cryptonit | [] |
- dialog | |
- diffutils | [] [] [] [] [] [] |
- doodle | [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] |
- fetchmail | [] [] () [] [] |
- findutils | [] |
- findutils_stable | [] [] [] |
- flex | [] [] [] |
- fslint | |
- gas | |
- gawk | [] [] [] |
- gcal | [] |
- gcc | [] |
- gettext-examples | [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] |
- gettext-tools | [] [] |
- gip | [] |
- gliv | [] [] |
- glunarclock | [] |
- gmult | [] [] |
- gnubiff | () |
- gnucash | [] [] () () [] |
- gnuedu | |
- gnulib | [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | [] |
- gpe-aerial | [] [] |
- gpe-beam | [] [] |
- gpe-calendar | |
- gpe-clock | [] [] |
- gpe-conf | [] [] |
- gpe-contacts | |
- gpe-edit | [] |
- gpe-filemanager | |
- gpe-go | [] |
- gpe-login | [] [] |
- gpe-ownerinfo | [] [] |
- gpe-package | |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] |
- gpe-taskmanager | [] [] |
- gpe-timesheet | [] |
- gpe-today | [] [] |
- gpe-todo | |
- gphoto2 | [] [] [] [] |
- gprof | [] [] |
- gpsdrive | |
- gramadoir | [] [] |
- grep | [] [] |
- gretl | () |
- gsasl | |
- gss | |
- gst-plugins-bad | [] [] |
- gst-plugins-base | [] [] |
- gst-plugins-good | [] [] [] |
- gst-plugins-ugly | [] [] |
- gstreamer | [] [] [] [] [] [] [] |
- gtick | () |
- gtkam | [] [] [] [] |
- gtkorphan | [] [] |
- gtkspell | [] [] [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] |
- herrie | [] |
- hylafax | |
- idutils | [] [] |
- indent | [] [] [] [] |
- iso_15924 | |
- iso_3166 | [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | |
- iso_4217 | [] [] [] |
- iso_639 | [] [] [] [] |
- jpilot | [] |
- jtag | |
- jwhois | |
- kbd | [] [] [] [] |
- keytouch | [] [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] |
- latrine | () |
- ld | [] |
- leafpad | [] [] [] [] [] |
- libc | [] [] [] [] |
- libexif | [] |
- libextractor | [] |
- libgpewidget | [] [] [] |
- libgpg-error | [] |
- libgphoto2 | [] [] |
- libgphoto2_port | [] [] |
- libgsasl | |
- libiconv | [] [] |
- libidn | [] [] [] |
- lifelines | [] () |
- lilypond | [] |
- lingoteach | |
- lprng | |
- lynx | [] [] [] [] |
- m4 | [] [] [] [] |
- mailfromd | |
- mailutils | [] |
- make | [] [] |
- man-db | [] [] [] |
- minicom | [] [] [] |
- nano | [] [] [] |
- opcodes | [] |
- parted | [] [] |
- pilot-qof | |
- popt | [] [] [] |
- psmisc | [] |
- pwdutils | |
- qof | |
- radius | [] |
- recode | [] [] [] [] [] [] |
- rpm | [] |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] [] |
- sed | [] [] [] |
- shared-mime-info | [] [] [] [] () [] [] [] |
- sharutils | [] [] [] [] [] [] |
- shishi | |
- skencil | [] () |
- solfege | |
- soundtracker | [] [] |
- sp | [] |
- system-tools-ba... | [] [] [] [] [] [] [] [] [] |
- tar | [] [] |
- texinfo | [] [] [] |
- tin | () () |
- tuxpaint | [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] [] [] |
- util-linux-ng | [] [] [] [] |
- vorbis-tools | [] |
- wastesedge | () |
- wdiff | [] [] [] [] |
- wget | [] [] [] |
- xchat | [] [] [] [] [] [] [] |
- xkeyboard-config | [] |
- xpad | [] [] [] |
- +----------------------------------------------------+
- af am ar az be bg bs ca cs cy da de el en en_GB eo
- 6 0 2 1 8 26 2 40 48 2 56 88 15 1 15 18
-
- es et eu fa fi fr ga gl gu he hi hr hu id is it
- +--------------------------------------------------+
- Compendium | [] [] [] [] [] |
- a2ps | [] [] [] () |
- aegis | |
- ant-phone | [] |
- anubis | [] |
- ap-utils | [] [] |
- aspell | [] [] [] |
- bash | [] |
- bfd | [] [] |
- bibshelf | [] [] [] |
- binutils | [] [] [] |
- bison | [] [] [] [] [] [] |
- bison-runtime | [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] |
- cflow | [] |
- clisp | [] [] |
- console-tools | |
- coreutils | [] [] [] [] [] [] |
- cpio | [] [] [] |
- cpplib | [] [] |
- cryptonit | [] |
- dialog | [] [] [] |
- diffutils | [] [] [] [] [] [] [] [] [] |
- doodle | [] [] |
- e2fsprogs | [] [] [] |
- enscript | [] [] [] |
- fetchmail | [] |
- findutils | [] [] [] |
- findutils_stable | [] [] [] [] |
- flex | [] [] [] |
- fslint | |
- gas | [] [] |
- gawk | [] [] [] [] () |
- gcal | [] [] |
- gcc | [] |
- gettext-examples | [] [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] |
- gip | [] [] [] [] |
- gliv | () |
- glunarclock | [] [] [] |
- gmult | [] [] [] |
- gnubiff | () () |
- gnucash | () () () |
- gnuedu | [] |
- gnulib | [] [] [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | |
- gpe-aerial | [] [] |
- gpe-beam | [] [] |
- gpe-calendar | |
- gpe-clock | [] [] [] [] |
- gpe-conf | [] |
- gpe-contacts | [] [] |
- gpe-edit | [] [] [] [] |
- gpe-filemanager | [] |
- gpe-go | [] [] [] |
- gpe-login | [] [] [] |
- gpe-ownerinfo | [] [] [] [] [] |
- gpe-package | [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] [] [] |
- gpe-taskmanager | [] [] [] |
- gpe-timesheet | [] [] [] [] |
- gpe-today | [] [] [] [] |
- gpe-todo | [] |
- gphoto2 | [] [] [] [] [] |
- gprof | [] [] [] [] [] |
- gpsdrive | [] |
- gramadoir | [] [] |
- grep | [] [] [] |
- gretl | [] [] [] () |
- gsasl | [] [] |
- gss | [] [] |
- gst-plugins-bad | [] [] [] [] |
- gst-plugins-base | [] [] [] [] |
- gst-plugins-good | [] [] [] [] [] |
- gst-plugins-ugly | [] [] [] [] |
- gstreamer | [] [] [] |
- gtick | [] [] [] |
- gtkam | [] [] [] [] |
- gtkorphan | [] [] |
- gtkspell | [] [] [] [] [] [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- herrie | [] |
- hylafax | |
- idutils | [] [] [] [] [] |
- indent | [] [] [] [] [] [] [] [] [] [] |
- iso_15924 | [] |
- iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | [] |
- iso_4217 | [] [] [] [] [] [] |
- iso_639 | [] [] [] [] [] [] |
- jpilot | [] [] |
- jtag | [] |
- jwhois | [] [] [] [] [] |
- kbd | [] [] |
- keytouch | [] [] [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] [] |
- latrine | [] [] |
- ld | [] [] [] [] |
- leafpad | [] [] [] [] [] [] |
- libc | [] [] [] [] [] |
- libexif | [] |
- libextractor | [] |
- libgpewidget | [] [] [] [] [] |
- libgpg-error | [] |
- libgphoto2 | [] [] [] |
- libgphoto2_port | [] [] |
- libgsasl | [] [] |
- libiconv | [] [] [] |
- libidn | [] [] |
- lifelines | () |
- lilypond | [] [] [] |
- lingoteach | [] [] [] |
- lprng | |
- lynx | [] [] [] |
- m4 | [] [] [] [] |
- mailfromd | |
- mailutils | [] [] |
- make | [] [] [] [] [] [] [] [] |
- man-db | [] |
- minicom | [] [] [] [] |
- nano | [] [] [] [] [] [] [] |
- opcodes | [] [] [] [] |
- parted | [] [] [] |
- pilot-qof | |
- popt | [] [] [] [] |
- psmisc | [] [] |
- pwdutils | |
- qof | [] |
- radius | [] [] |
- recode | [] [] [] [] [] [] [] [] |
- rpm | [] [] |
- screem | |
- scrollkeeper | [] [] [] |
- sed | [] [] [] [] [] |
- shared-mime-info | [] [] [] [] [] [] |
- sharutils | [] [] [] [] [] [] [] [] |
- shishi | [] |
- skencil | [] [] |
- solfege | [] |
- soundtracker | [] [] [] |
- sp | [] |
- system-tools-ba... | [] [] [] [] [] [] [] [] [] |
- tar | [] [] [] [] [] |
- texinfo | [] [] [] |
- tin | [] () |
- tuxpaint | [] [] |
- unicode-han-tra... | |
- unicode-transla... | [] [] |
- util-linux | [] [] [] [] [] [] [] |
- util-linux-ng | [] [] [] [] [] [] [] |
- vorbis-tools | |
- wastesedge | () |
- wdiff | [] [] [] [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] |
- xchat | [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] [] |
- xpad | [] [] [] |
- +--------------------------------------------------+
- es et eu fa fi fr ga gl gu he hi hr hu id is it
- 85 22 14 2 48 101 61 12 2 8 2 6 53 29 1 52
-
- ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn
- +--------------------------------------------------+
- Compendium | [] |
- a2ps | () [] [] |
- aegis | () |
- ant-phone | [] |
- anubis | [] [] [] |
- ap-utils | [] |
- aspell | [] [] |
- bash | [] |
- bfd | |
- bibshelf | [] |
- binutils | |
- bison | [] [] [] |
- bison-runtime | [] [] [] |
- bluez-pin | [] [] [] |
- cflow | |
- clisp | [] |
- console-tools | |
- coreutils | [] |
- cpio | [] |
- cpplib | [] |
- cryptonit | [] |
- dialog | [] [] |
- diffutils | [] [] [] |
- doodle | |
- e2fsprogs | [] |
- enscript | [] |
- fetchmail | [] [] |
- findutils | [] |
- findutils_stable | [] |
- flex | [] [] |
- fslint | |
- gas | |
- gawk | [] [] |
- gcal | |
- gcc | |
- gettext-examples | [] [] [] |
- gettext-runtime | [] [] [] |
- gettext-tools | [] [] |
- gip | [] [] |
- gliv | [] |
- glunarclock | [] [] |
- gmult | [] [] [] |
- gnubiff | |
- gnucash | () () () |
- gnuedu | |
- gnulib | [] [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | [] |
- gpe-aerial | [] |
- gpe-beam | [] |
- gpe-calendar | [] |
- gpe-clock | [] [] [] |
- gpe-conf | [] [] [] |
- gpe-contacts | [] |
- gpe-edit | [] [] [] |
- gpe-filemanager | [] [] |
- gpe-go | [] [] [] |
- gpe-login | [] [] [] |
- gpe-ownerinfo | [] [] |
- gpe-package | [] [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] [] |
- gpe-taskmanager | [] [] [] [] |
- gpe-timesheet | [] |
- gpe-today | [] [] |
- gpe-todo | [] |
- gphoto2 | [] [] |
- gprof | [] |
- gpsdrive | [] |
- gramadoir | () |
- grep | [] [] |
- gretl | |
- gsasl | [] |
- gss | |
- gst-plugins-bad | [] |
- gst-plugins-base | [] |
- gst-plugins-good | [] |
- gst-plugins-ugly | [] |
- gstreamer | [] |
- gtick | [] |
- gtkam | [] [] |
- gtkorphan | [] |
- gtkspell | [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] [] [] |
- herrie | [] |
- hylafax | |
- idutils | [] |
- indent | [] [] |
- iso_15924 | [] |
- iso_3166 | [] [] [] [] [] [] [] [] |
- iso_3166_2 | [] |
- iso_4217 | [] [] [] |
- iso_639 | [] [] [] [] |
- jpilot | () () |
- jtag | |
- jwhois | [] |
- kbd | [] |
- keytouch | [] |
- keytouch-editor | [] |
- keytouch-keyboa... | |
- latrine | [] |
- ld | |
- leafpad | [] [] |
- libc | [] [] [] |
- libexif | |
- libextractor | |
- libgpewidget | [] |
- libgpg-error | |
- libgphoto2 | [] |
- libgphoto2_port | [] |
- libgsasl | [] |
- libiconv | [] |
- libidn | [] [] |
- lifelines | [] |
- lilypond | [] |
- lingoteach | [] |
- lprng | |
- lynx | [] [] |
- m4 | [] [] |
- mailfromd | |
- mailutils | |
- make | [] [] [] |
- man-db | |
- minicom | [] |
- nano | [] [] [] |
- opcodes | [] |
- parted | [] [] |
- pilot-qof | |
- popt | [] [] [] |
- psmisc | [] [] [] |
- pwdutils | |
- qof | |
- radius | |
- recode | [] |
- rpm | [] [] |
- screem | [] |
- scrollkeeper | [] [] [] [] |
- sed | [] [] |
- shared-mime-info | [] [] [] [] [] [] [] |
- sharutils | [] [] |
- shishi | |
- skencil | |
- solfege | () () |
- soundtracker | |
- sp | () |
- system-tools-ba... | [] [] [] [] |
- tar | [] [] [] |
- texinfo | [] [] |
- tin | |
- tuxpaint | () [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] |
- util-linux-ng | [] [] |
- vorbis-tools | |
- wastesedge | [] |
- wdiff | [] [] |
- wget | [] [] |
- xchat | [] [] [] [] |
- xkeyboard-config | [] [] [] |
- xpad | [] [] [] |
- +--------------------------------------------------+
- ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl nn
- 51 2 25 3 2 0 6 0 2 2 20 0 11 1 103 6
-
- or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
- +--------------------------------------------------+
- Compendium | [] [] [] [] [] |
- a2ps | () [] [] [] [] [] [] |
- aegis | () () |
- ant-phone | [] [] |
- anubis | [] [] [] |
- ap-utils | () |
- aspell | [] [] [] |
- bash | [] [] |
- bfd | |
- bibshelf | [] |
- binutils | [] [] |
- bison | [] [] [] [] [] |
- bison-runtime | [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] [] [] [] |
- cflow | [] |
- clisp | [] |
- console-tools | [] |
- coreutils | [] [] [] [] |
- cpio | [] [] [] |
- cpplib | [] |
- cryptonit | [] [] |
- dialog | [] |
- diffutils | [] [] [] [] [] [] |
- doodle | [] [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] [] |
- fetchmail | [] [] [] |
- findutils | [] [] [] |
- findutils_stable | [] [] [] [] [] [] |
- flex | [] [] [] [] [] |
- fslint | [] |
- gas | |
- gawk | [] [] [] [] |
- gcal | [] |
- gcc | [] [] |
- gettext-examples | [] [] [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] [] [] [] |
- gip | [] [] [] [] |
- gliv | [] [] [] [] [] [] |
- glunarclock | [] [] [] [] [] [] |
- gmult | [] [] [] [] |
- gnubiff | () [] |
- gnucash | () [] |
- gnuedu | |
- gnulib | [] [] [] |
- gnunet | |
- gnunet-gtk | [] |
- gnutls | [] [] |
- gpe-aerial | [] [] [] [] [] [] [] |
- gpe-beam | [] [] [] [] [] [] [] |
- gpe-calendar | [] [] [] [] |
- gpe-clock | [] [] [] [] [] [] [] [] |
- gpe-conf | [] [] [] [] [] [] [] |
- gpe-contacts | [] [] [] [] [] |
- gpe-edit | [] [] [] [] [] [] [] [] [] |
- gpe-filemanager | [] [] |
- gpe-go | [] [] [] [] [] [] [] [] |
- gpe-login | [] [] [] [] [] [] [] [] |
- gpe-ownerinfo | [] [] [] [] [] [] [] [] |
- gpe-package | [] [] |
- gpe-sketchbook | [] [] [] [] [] [] [] [] |
- gpe-su | [] [] [] [] [] [] [] [] |
- gpe-taskmanager | [] [] [] [] [] [] [] [] |
- gpe-timesheet | [] [] [] [] [] [] [] [] |
- gpe-today | [] [] [] [] [] [] [] [] |
- gpe-todo | [] [] [] [] |
- gphoto2 | [] [] [] [] [] [] |
- gprof | [] [] [] |
- gpsdrive | [] [] |
- gramadoir | [] [] |
- grep | [] [] [] [] |
- gretl | [] [] [] |
- gsasl | [] [] [] |
- gss | [] [] [] [] |
- gst-plugins-bad | [] [] [] |
- gst-plugins-base | [] [] |
- gst-plugins-good | [] [] |
- gst-plugins-ugly | [] [] [] |
- gstreamer | [] [] [] [] |
- gtick | [] |
- gtkam | [] [] [] [] [] |
- gtkorphan | [] |
- gtkspell | [] [] [] [] [] [] [] [] |
- gutenprint | [] |
- hello | [] [] [] [] [] [] [] [] |
- herrie | [] [] [] |
- hylafax | |
- idutils | [] [] [] [] [] |
- indent | [] [] [] [] [] [] [] |
- iso_15924 | |
- iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | |
- iso_4217 | [] [] [] [] [] [] [] |
- iso_639 | [] [] [] [] [] [] [] |
- jpilot | |
- jtag | [] |
- jwhois | [] [] [] [] |
- kbd | [] [] [] |
- keytouch | [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] |
- latrine | |
- ld | [] |
- leafpad | [] [] [] [] [] [] |
- libc | [] [] [] [] |
- libexif | [] [] |
- libextractor | [] [] |
- libgpewidget | [] [] [] [] [] [] [] [] |
- libgpg-error | [] [] [] |
- libgphoto2 | [] |
- libgphoto2_port | [] [] [] |
- libgsasl | [] [] [] [] |
- libiconv | [] [] [] |
- libidn | [] [] () |
- lifelines | [] [] |
- lilypond | |
- lingoteach | [] |
- lprng | [] |
- lynx | [] [] [] |
- m4 | [] [] [] [] [] |
- mailfromd | [] |
- mailutils | [] [] [] |
- make | [] [] [] [] |
- man-db | [] [] [] [] |
- minicom | [] [] [] [] [] |
- nano | [] [] [] [] |
- opcodes | [] [] |
- parted | [] |
- pilot-qof | |
- popt | [] [] [] [] |
- psmisc | [] [] |
- pwdutils | [] [] |
- qof | [] [] |
- radius | [] [] |
- recode | [] [] [] [] [] [] [] |
- rpm | [] [] [] [] |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] |
- sed | [] [] [] [] [] [] [] [] [] |
- shared-mime-info | [] [] [] [] [] [] |
- sharutils | [] [] [] [] |
- shishi | [] |
- skencil | [] [] [] |
- solfege | [] |
- soundtracker | [] [] |
- sp | |
- system-tools-ba... | [] [] [] [] [] [] [] [] [] |
- tar | [] [] [] [] |
- texinfo | [] [] [] [] |
- tin | () |
- tuxpaint | [] [] [] [] [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux | [] [] [] [] |
- util-linux-ng | [] [] [] [] |
- vorbis-tools | [] |
- wastesedge | |
- wdiff | [] [] [] [] [] [] [] |
- wget | [] [] [] [] |
- xchat | [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] |
- xpad | [] [] [] |
- +--------------------------------------------------+
- or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
- 0 5 77 31 53 4 58 72 3 45 46 9 45 122 3
-
- tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
- +---------------------------------------------------+
- Compendium | [] [] [] [] | 19
- a2ps | [] [] [] | 19
- aegis | [] | 1
- ant-phone | [] [] | 6
- anubis | [] [] [] | 11
- ap-utils | () [] | 4
- aspell | [] [] [] | 16
- bash | [] | 6
- bfd | | 2
- bibshelf | [] | 7
- binutils | [] [] [] [] | 9
- bison | [] [] [] [] | 20
- bison-runtime | [] [] [] [] | 18
- bluez-pin | [] [] [] [] [] [] | 28
- cflow | [] [] | 5
- clisp | | 9
- console-tools | [] [] | 5
- coreutils | [] [] [] | 18
- cpio | [] [] [] [] | 11
- cpplib | [] [] [] [] [] | 12
- cryptonit | [] | 6
- dialog | [] [] [] | 9
- diffutils | [] [] [] [] [] | 29
- doodle | [] | 6
- e2fsprogs | [] [] | 10
- enscript | [] [] [] | 16
- fetchmail | [] [] | 12
- findutils | [] [] [] | 11
- findutils_stable | [] [] [] [] | 18
- flex | [] [] | 15
- fslint | [] | 2
- gas | [] | 3
- gawk | [] [] [] | 16
- gcal | [] | 5
- gcc | [] [] [] | 7
- gettext-examples | [] [] [] [] [] [] | 29
- gettext-runtime | [] [] [] [] [] [] | 28
- gettext-tools | [] [] [] [] [] | 20
- gip | [] [] | 13
- gliv | [] [] | 11
- glunarclock | [] [] [] | 15
- gmult | [] [] [] [] | 16
- gnubiff | [] | 2
- gnucash | () [] | 5
- gnuedu | [] | 2
- gnulib | [] | 10
- gnunet | | 0
- gnunet-gtk | [] [] | 3
- gnutls | | 4
- gpe-aerial | [] [] | 14
- gpe-beam | [] [] | 14
- gpe-calendar | [] [] | 7
- gpe-clock | [] [] [] [] | 21
- gpe-conf | [] [] [] | 16
- gpe-contacts | [] [] | 10
- gpe-edit | [] [] [] [] [] | 22
- gpe-filemanager | [] [] | 7
- gpe-go | [] [] [] [] | 19
- gpe-login | [] [] [] [] [] | 21
- gpe-ownerinfo | [] [] [] [] | 21
- gpe-package | [] | 6
- gpe-sketchbook | [] [] | 16
- gpe-su | [] [] [] [] | 21
- gpe-taskmanager | [] [] [] [] | 21
- gpe-timesheet | [] [] [] [] | 18
- gpe-today | [] [] [] [] [] | 21
- gpe-todo | [] [] | 8
- gphoto2 | [] [] [] [] | 21
- gprof | [] [] | 13
- gpsdrive | [] | 5
- gramadoir | [] | 7
- grep | [] | 12
- gretl | | 6
- gsasl | [] [] [] | 9
- gss | [] | 7
- gst-plugins-bad | [] [] [] | 13
- gst-plugins-base | [] [] | 11
- gst-plugins-good | [] [] [] [] [] | 16
- gst-plugins-ugly | [] [] [] | 13
- gstreamer | [] [] [] | 18
- gtick | [] [] | 7
- gtkam | [] | 16
- gtkorphan | [] | 7
- gtkspell | [] [] [] [] [] [] | 27
- gutenprint | | 4
- hello | [] [] [] [] [] | 38
- herrie | [] [] | 8
- hylafax | | 0
- idutils | [] [] | 15
- indent | [] [] [] [] [] | 28
- iso_15924 | [] [] | 4
- iso_3166 | [] [] [] [] [] [] [] [] [] | 54
- iso_3166_2 | [] [] | 4
- iso_4217 | [] [] [] [] [] | 24
- iso_639 | [] [] [] [] [] | 26
- jpilot | [] [] [] [] | 7
- jtag | [] | 3
- jwhois | [] [] [] | 13
- kbd | [] [] [] | 13
- keytouch | [] | 8
- keytouch-editor | [] | 5
- keytouch-keyboa... | [] | 5
- latrine | [] [] | 5
- ld | [] [] [] [] | 10
- leafpad | [] [] [] [] [] | 24
- libc | [] [] [] | 19
- libexif | [] | 5
- libextractor | [] | 5
- libgpewidget | [] [] [] | 20
- libgpg-error | [] | 6
- libgphoto2 | [] [] | 9
- libgphoto2_port | [] [] [] | 11
- libgsasl | [] | 8
- libiconv | [] [] | 11
- libidn | [] [] | 11
- lifelines | | 4
- lilypond | [] | 6
- lingoteach | [] | 6
- lprng | [] | 2
- lynx | [] [] [] | 15
- m4 | [] [] [] | 18
- mailfromd | [] [] | 3
- mailutils | [] [] | 8
- make | [] [] [] | 20
- man-db | [] | 9
- minicom | [] | 14
- nano | [] [] [] | 20
- opcodes | [] [] | 10
- parted | [] [] [] | 11
- pilot-qof | [] | 1
- popt | [] [] [] [] | 18
- psmisc | [] [] | 10
- pwdutils | [] | 3
- qof | [] | 4
- radius | [] [] | 7
- recode | [] [] [] | 25
- rpm | [] [] [] [] | 13
- screem | [] | 2
- scrollkeeper | [] [] [] [] | 26
- sed | [] [] [] [] | 23
- shared-mime-info | [] [] [] | 29
- sharutils | [] [] [] | 23
- shishi | [] | 3
- skencil | [] | 7
- solfege | [] | 3
- soundtracker | [] [] | 9
- sp | [] | 3
- system-tools-ba... | [] [] [] [] [] [] [] | 38
- tar | [] [] [] | 17
- texinfo | [] [] [] | 15
- tin | | 1
- tuxpaint | [] [] [] | 19
- unicode-han-tra... | | 0
- unicode-transla... | | 2
- util-linux | [] [] [] | 20
- util-linux-ng | [] [] [] | 20
- vorbis-tools | [] [] | 4
- wastesedge | | 1
- wdiff | [] [] | 23
- wget | [] [] [] | 20
- xchat | [] [] [] [] | 29
- xkeyboard-config | [] [] [] | 14
- xpad | [] [] [] | 15
- +---------------------------------------------------+
- 76 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
- 163 domains 0 3 1 74 51 0 143 21 1 57 7 45 0 2036
-
- Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect. This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
- For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer. There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
- If November 2007 seems to be old, you may fetch a more recent copy
-of this `ABOUT-NLS' file on most GNU archive sites. The most
-up-to-date matrix with full percentage details can be found at
-`http://translationproject.org/extra/matrix.html'.
-
-1.6 Using `gettext' in new packages
-===================================
-
-If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package. Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library. This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
- Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations. The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project. Therefore the information given above
-applies also for every other Free Software Project. Contact
-`coordinator@translationproject.org' to make the `.pot' files available
-to the translation teams.
-
diff --git a/vendor/hunspell/AUTHORS b/vendor/hunspell/AUTHORS
deleted file mode 100644
index f137fa26b..000000000
--- a/vendor/hunspell/AUTHORS
+++ /dev/null
@@ -1,5 +0,0 @@
-Author of Hunspell:
-Németh László nemeth (at) numbertext.org
-
-Hunspell based on OpenOffice.org's Myspell. MySpell's author:
-Kevin Hendricks kevin.hendricks (at) sympatico.ca
diff --git a/vendor/hunspell/AUTHORS.myspell b/vendor/hunspell/AUTHORS.myspell
deleted file mode 100644
index 36f8589e3..000000000
--- a/vendor/hunspell/AUTHORS.myspell
+++ /dev/null
@@ -1,67 +0,0 @@
-Developer Credits:
-
-Special credit and thanks go to ispell's creator Geoff Kuenning.
-Ispell affix compression code was used as the basis for the
-affix code used in MySpell. Specifically Geoff's use of a
-conds[] array that makes it easy to check if the conditions
-required for a particular affix are present was very
-ingenious! Kudos to Geoff. Very nicely done.
-BTW: ispell is available under a BSD style license
-from Geoff Kuennings ispell website:
-http://www.cs.ucla.edu/ficus-members/geoff/ispell.html
-
-
-Kevin Hendricks is the original
-author and now maintainer of the MySpell codebase. Recent
-additions include ngram support, and related character maps
-to help improve and create suggestions for very poorly
-spelled words.
-
-Please send any and all contributions or improvements
-to him or to dev@lingucomponent.openoffice.org.
-
-
-David Einstein (Deinst@world.std.com) developed an almost
-complete rewrite of MySpell for use by the Mozilla project.
-David and I are now working on parallel development tracks
-to help our respective projects (Mozilla and OpenOffice.org)
-and we will maintain full affix file and dictionary file
-compatibility and work on merging our versions of MySpell
-back into a single tree. David has been a significant help
-in improving MySpell.
-
-
-Németh László is the author of
-the Hungarian dictionary and he developed and contributed
-extensive changes to MySpell including ...
- * code to support compound words in MySpell
- * fixed numerous problems with encoding case conversion tables.
- * designed/developed replacement tables to improve suggestions
- * changed affix file parsing to trees to greatly speed loading
- * removed the need for malloc/free pairs in suffix_check which
- speeds up spell checking in suffix rich languages by 20%
-
-Davide Prina , Giuseppe Modugno
-, Gianluca Turconi
-all from the it_IT OpenOffice.org team performed an
-extremely detailed code review of MySpell and generated
-fixes for bugs, leaks, and speedup improvements.
-
-Simon Brouwer for fixes and enhancements
-that have greatly improved MySpell auggestions
- * n-gram suggestions for an initcap word have an init. cap.
- * fix for too many n-gram suggestions from specialized dictionary,
- * fix for long suggestions rather than close ones in case of
- dictionaries with many compound words (kompuuter)
- * optionally disabling split-word suggestions (controlled
- by NOSPLITSUGS line in affix file)
-
-
-Special Thanks to all others who have either contributed ideas or
-testing for MySpell
-
-
-Thanks,
-
-Kevin Hendricks
-kevin.hendricks@sympatico.ca
diff --git a/vendor/hunspell/BUGS b/vendor/hunspell/BUGS
deleted file mode 100644
index 6a5468e0f..000000000
--- a/vendor/hunspell/BUGS
+++ /dev/null
@@ -1,5 +0,0 @@
-* Interactive interface has some visualization problem with long lines
-
-* Experimental -U, -u options don't support Unicode.
-
-* Compound handling is not thread safe in Hungarian specific code.
diff --git a/vendor/hunspell/COPYING b/vendor/hunspell/COPYING
deleted file mode 100644
index 5bede4f5c..000000000
--- a/vendor/hunspell/COPYING
+++ /dev/null
@@ -1,12 +0,0 @@
-GPL 2.0/LGPL 2.1/MPL 1.1 tri-license
-
-The contents of this software may be used under the terms of
-the GNU General Public License Version 2 or later (the "GPL"), or
-the GNU Lesser General Public License Version 2.1 or later (the "LGPL",
-see COPYING.LGPL) or (excepting the LGPLed GNU gettext library in the
-intl/ directory) the Mozilla Public License Version 1.1 or later
-(the "MPL", see COPYING.MPL).
-
-Software distributed under these licenses is distributed on an "AS IS" basis,
-WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences
-for the specific language governing rights and limitations under the licenses.
diff --git a/vendor/hunspell/COPYING.LGPL b/vendor/hunspell/COPYING.LGPL
deleted file mode 100644
index c4792dd27..000000000
--- a/vendor/hunspell/COPYING.LGPL
+++ /dev/null
@@ -1,515 +0,0 @@
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations
-below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-^L
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it
-becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-^L
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control
-compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-^L
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-^L
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-^L
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-^L
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply, and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License
-may add an explicit geographical distribution limitation excluding those
-countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-^L
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-^L
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms
-of the ordinary General Public License).
-
- To apply these terms, attach the following notices to the library.
-It is safest to attach them to the start of each source file to most
-effectively convey the exclusion of warranty; and each file should
-have at least the "copyright" line and a pointer to where the full
-notice is found.
-
-
-
- Copyright (C)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper
-mail.
-
-You should also get your employer (if you work as a programmer) or
-your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James
-Random Hacker.
-
- , 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/vendor/hunspell/COPYING.MPL b/vendor/hunspell/COPYING.MPL
deleted file mode 100644
index 7714141d1..000000000
--- a/vendor/hunspell/COPYING.MPL
+++ /dev/null
@@ -1,470 +0,0 @@
- MOZILLA PUBLIC LICENSE
- Version 1.1
-
- ---------------
-
-1. Definitions.
-
- 1.0.1. "Commercial Use" means distribution or otherwise making the
- Covered Code available to a third party.
-
- 1.1. "Contributor" means each entity that creates or contributes to
- the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the Original
- Code, prior Modifications used by a Contributor, and the Modifications
- made by that particular Contributor.
-
- 1.3. "Covered Code" means the Original Code or Modifications or the
- combination of the Original Code and Modifications, in each case
- including portions thereof.
-
- 1.4. "Electronic Distribution Mechanism" means a mechanism generally
- accepted in the software development community for the electronic
- transfer of data.
-
- 1.5. "Executable" means Covered Code in any form other than Source
- Code.
-
- 1.6. "Initial Developer" means the individual or entity identified
- as the Initial Developer in the Source Code notice required by Exhibit
- A.
-
- 1.7. "Larger Work" means a work which combines Covered Code or
- portions thereof with code not governed by the terms of this License.
-
- 1.8. "License" means this document.
-
- 1.8.1. "Licensable" means having the right to grant, to the maximum
- extent possible, whether at the time of the initial grant or
- subsequently acquired, any and all of the rights conveyed herein.
-
- 1.9. "Modifications" means any addition to or deletion from the
- substance or structure of either the Original Code or any previous
- Modifications. When Covered Code is released as a series of files, a
- Modification is:
- A. Any addition to or deletion from the contents of a file
- containing Original Code or previous Modifications.
-
- B. Any new file that contains any part of the Original Code or
- previous Modifications.
-
- 1.10. "Original Code" means Source Code of computer software code
- which is described in the Source Code notice required by Exhibit A as
- Original Code, and which, at the time of its release under this
- License is not already Covered Code governed by this License.
-
- 1.10.1. "Patent Claims" means any patent claim(s), now owned or
- hereafter acquired, including without limitation, method, process,
- and apparatus claims, in any patent Licensable by grantor.
-
- 1.11. "Source Code" means the preferred form of the Covered Code for
- making modifications to it, including all modules it contains, plus
- any associated interface definition files, scripts used to control
- compilation and installation of an Executable, or source code
- differential comparisons against either the Original Code or another
- well known, available Covered Code of the Contributor's choice. The
- Source Code can be in a compressed or archival form, provided the
- appropriate decompression or de-archiving software is widely available
- for no charge.
-
- 1.12. "You" (or "Your") means an individual or a legal entity
- exercising rights under, and complying with all of the terms of, this
- License or a future version of this License issued under Section 6.1.
- For legal entities, "You" includes any entity which controls, is
- controlled by, or is under common control with You. For purposes of
- this definition, "control" means (a) the power, direct or indirect,
- to cause the direction or management of such entity, whether by
- contract or otherwise, or (b) ownership of more than fifty percent
- (50%) of the outstanding shares or beneficial ownership of such
- entity.
-
-2. Source Code License.
-
- 2.1. The Initial Developer Grant.
- The Initial Developer hereby grants You a world-wide, royalty-free,
- non-exclusive license, subject to third party intellectual property
- claims:
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Initial Developer to use, reproduce,
- modify, display, perform, sublicense and distribute the Original
- Code (or portions thereof) with or without Modifications, and/or
- as part of a Larger Work; and
-
- (b) under Patents Claims infringed by the making, using or
- selling of Original Code, to make, have made, use, practice,
- sell, and offer for sale, and/or otherwise dispose of the
- Original Code (or portions thereof).
-
- (c) the licenses granted in this Section 2.1(a) and (b) are
- effective on the date Initial Developer first distributes
- Original Code under the terms of this License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent license is
- granted: 1) for code that You delete from the Original Code; 2)
- separate from the Original Code; or 3) for infringements caused
- by: i) the modification of the Original Code or ii) the
- combination of the Original Code with other software or devices.
-
- 2.2. Contributor Grant.
- Subject to third party intellectual property claims, each Contributor
- hereby grants You a world-wide, royalty-free, non-exclusive license
-
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Contributor, to use, reproduce, modify,
- display, perform, sublicense and distribute the Modifications
- created by such Contributor (or portions thereof) either on an
- unmodified basis, with other Modifications, as Covered Code
- and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making, using, or
- selling of Modifications made by that Contributor either alone
- and/or in combination with its Contributor Version (or portions
- of such combination), to make, use, sell, offer for sale, have
- made, and/or otherwise dispose of: 1) Modifications made by that
- Contributor (or portions thereof); and 2) the combination of
- Modifications made by that Contributor with its Contributor
- Version (or portions of such combination).
-
- (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
- effective on the date Contributor first makes Commercial Use of
- the Covered Code.
-
- (d) Notwithstanding Section 2.2(b) above, no patent license is
- granted: 1) for any code that Contributor has deleted from the
- Contributor Version; 2) separate from the Contributor Version;
- 3) for infringements caused by: i) third party modifications of
- Contributor Version or ii) the combination of Modifications made
- by that Contributor with other software (except as part of the
- Contributor Version) or other devices; or 4) under Patent Claims
- infringed by Covered Code in the absence of Modifications made by
- that Contributor.
-
-3. Distribution Obligations.
-
- 3.1. Application of License.
- The Modifications which You create or to which You contribute are
- governed by the terms of this License, including without limitation
- Section 2.2. The Source Code version of Covered Code may be
- distributed only under the terms of this License or a future version
- of this License released under Section 6.1, and You must include a
- copy of this License with every copy of the Source Code You
- distribute. You may not offer or impose any terms on any Source Code
- version that alters or restricts the applicable version of this
- License or the recipients' rights hereunder. However, You may include
- an additional document offering the additional rights described in
- Section 3.5.
-
- 3.2. Availability of Source Code.
- Any Modification which You create or to which You contribute must be
- made available in Source Code form under the terms of this License
- either on the same media as an Executable version or via an accepted
- Electronic Distribution Mechanism to anyone to whom you made an
- Executable version available; and if made available via Electronic
- Distribution Mechanism, must remain available for at least twelve (12)
- months after the date it initially became available, or at least six
- (6) months after a subsequent version of that particular Modification
- has been made available to such recipients. You are responsible for
- ensuring that the Source Code version remains available even if the
- Electronic Distribution Mechanism is maintained by a third party.
-
- 3.3. Description of Modifications.
- You must cause all Covered Code to which You contribute to contain a
- file documenting the changes You made to create that Covered Code and
- the date of any change. You must include a prominent statement that
- the Modification is derived, directly or indirectly, from Original
- Code provided by the Initial Developer and including the name of the
- Initial Developer in (a) the Source Code, and (b) in any notice in an
- Executable version or related documentation in which You describe the
- origin or ownership of the Covered Code.
-
- 3.4. Intellectual Property Matters
- (a) Third Party Claims.
- If Contributor has knowledge that a license under a third party's
- intellectual property rights is required to exercise the rights
- granted by such Contributor under Sections 2.1 or 2.2,
- Contributor must include a text file with the Source Code
- distribution titled "LEGAL" which describes the claim and the
- party making the claim in sufficient detail that a recipient will
- know whom to contact. If Contributor obtains such knowledge after
- the Modification is made available as described in Section 3.2,
- Contributor shall promptly modify the LEGAL file in all copies
- Contributor makes available thereafter and shall take other steps
- (such as notifying appropriate mailing lists or newsgroups)
- reasonably calculated to inform those who received the Covered
- Code that new knowledge has been obtained.
-
- (b) Contributor APIs.
- If Contributor's Modifications include an application programming
- interface and Contributor has knowledge of patent licenses which
- are reasonably necessary to implement that API, Contributor must
- also include this information in the LEGAL file.
-
- (c) Representations.
- Contributor represents that, except as disclosed pursuant to
- Section 3.4(a) above, Contributor believes that Contributor's
- Modifications are Contributor's original creation(s) and/or
- Contributor has sufficient rights to grant the rights conveyed by
- this License.
-
- 3.5. Required Notices.
- You must duplicate the notice in Exhibit A in each file of the Source
- Code. If it is not possible to put such notice in a particular Source
- Code file due to its structure, then You must include such notice in a
- location (such as a relevant directory) where a user would be likely
- to look for such a notice. If You created one or more Modification(s)
- You may add your name as a Contributor to the notice described in
- Exhibit A. You must also duplicate this License in any documentation
- for the Source Code where You describe recipients' rights or ownership
- rights relating to Covered Code. You may choose to offer, and to
- charge a fee for, warranty, support, indemnity or liability
- obligations to one or more recipients of Covered Code. However, You
- may do so only on Your own behalf, and not on behalf of the Initial
- Developer or any Contributor. You must make it absolutely clear than
- any such warranty, support, indemnity or liability obligation is
- offered by You alone, and You hereby agree to indemnify the Initial
- Developer and every Contributor for any liability incurred by the
- Initial Developer or such Contributor as a result of warranty,
- support, indemnity or liability terms You offer.
-
- 3.6. Distribution of Executable Versions.
- You may distribute Covered Code in Executable form only if the
- requirements of Section 3.1-3.5 have been met for that Covered Code,
- and if You include a notice stating that the Source Code version of
- the Covered Code is available under the terms of this License,
- including a description of how and where You have fulfilled the
- obligations of Section 3.2. The notice must be conspicuously included
- in any notice in an Executable version, related documentation or
- collateral in which You describe recipients' rights relating to the
- Covered Code. You may distribute the Executable version of Covered
- Code or ownership rights under a license of Your choice, which may
- contain terms different from this License, provided that You are in
- compliance with the terms of this License and that the license for the
- Executable version does not attempt to limit or alter the recipient's
- rights in the Source Code version from the rights set forth in this
- License. If You distribute the Executable version under a different
- license You must make it absolutely clear that any terms which differ
- from this License are offered by You alone, not by the Initial
- Developer or any Contributor. You hereby agree to indemnify the
- Initial Developer and every Contributor for any liability incurred by
- the Initial Developer or such Contributor as a result of any such
- terms You offer.
-
- 3.7. Larger Works.
- You may create a Larger Work by combining Covered Code with other code
- not governed by the terms of this License and distribute the Larger
- Work as a single product. In such a case, You must make sure the
- requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
- If it is impossible for You to comply with any of the terms of this
- License with respect to some or all of the Covered Code due to
- statute, judicial order, or regulation then You must: (a) comply with
- the terms of this License to the maximum extent possible; and (b)
- describe the limitations and the code they affect. Such description
- must be included in the LEGAL file described in Section 3.4 and must
- be included with all distributions of the Source Code. Except to the
- extent prohibited by statute or regulation, such description must be
- sufficiently detailed for a recipient of ordinary skill to be able to
- understand it.
-
-5. Application of this License.
-
- This License applies to code to which the Initial Developer has
- attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
- 6.1. New Versions.
- Netscape Communications Corporation ("Netscape") may publish revised
- and/or new versions of the License from time to time. Each version
- will be given a distinguishing version number.
-
- 6.2. Effect of New Versions.
- Once Covered Code has been published under a particular version of the
- License, You may always continue to use it under the terms of that
- version. You may also choose to use such Covered Code under the terms
- of any subsequent version of the License published by Netscape. No one
- other than Netscape has the right to modify the terms applicable to
- Covered Code created under this License.
-
- 6.3. Derivative Works.
- If You create or use a modified version of this License (which you may
- only do in order to apply it to code which is not already Covered Code
- governed by this License), You must (a) rename Your license so that
- the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
- "MPL", "NPL" or any confusingly similar phrase do not appear in your
- license (except to note that your license differs from this License)
- and (b) otherwise make it clear that Your version of the license
- contains terms which differ from the Mozilla Public License and
- Netscape Public License. (Filling in the name of the Initial
- Developer, Original Code or Contributor in the notice described in
- Exhibit A shall not of themselves be deemed to be modifications of
- this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
- COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
- WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
- DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
- THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
- IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
- YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
- COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
- OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
- 8.1. This License and the rights granted hereunder will terminate
- automatically if You fail to comply with terms herein and fail to cure
- such breach within 30 days of becoming aware of the breach. All
- sublicenses to the Covered Code which are properly granted shall
- survive any termination of this License. Provisions which, by their
- nature, must remain in effect beyond the termination of this License
- shall survive.
-
- 8.2. If You initiate litigation by asserting a patent infringement
- claim (excluding declatory judgment actions) against Initial Developer
- or a Contributor (the Initial Developer or Contributor against whom
- You file such action is referred to as "Participant") alleging that:
-
- (a) such Participant's Contributor Version directly or indirectly
- infringes any patent, then any and all rights granted by such
- Participant to You under Sections 2.1 and/or 2.2 of this License
- shall, upon 60 days notice from Participant terminate prospectively,
- unless if within 60 days after receipt of notice You either: (i)
- agree in writing to pay Participant a mutually agreeable reasonable
- royalty for Your past and future use of Modifications made by such
- Participant, or (ii) withdraw Your litigation claim with respect to
- the Contributor Version against such Participant. If within 60 days
- of notice, a reasonable royalty and payment arrangement are not
- mutually agreed upon in writing by the parties or the litigation claim
- is not withdrawn, the rights granted by Participant to You under
- Sections 2.1 and/or 2.2 automatically terminate at the expiration of
- the 60 day notice period specified above.
-
- (b) any software, hardware, or device, other than such Participant's
- Contributor Version, directly or indirectly infringes any patent, then
- any rights granted to You by such Participant under Sections 2.1(b)
- and 2.2(b) are revoked effective as of the date You first made, used,
- sold, distributed, or had made, Modifications made by that
- Participant.
-
- 8.3. If You assert a patent infringement claim against Participant
- alleging that such Participant's Contributor Version directly or
- indirectly infringes any patent where such claim is resolved (such as
- by license or settlement) prior to the initiation of patent
- infringement litigation, then the reasonable value of the licenses
- granted by such Participant under Sections 2.1 or 2.2 shall be taken
- into account in determining the amount or value of any payment or
- license.
-
- 8.4. In the event of termination under Sections 8.1 or 8.2 above,
- all end user license agreements (excluding distributors and resellers)
- which have been validly granted by You or any distributor hereunder
- prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
- DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
- OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
- ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
- WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
- RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
- PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
- EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
- THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
- The Covered Code is a "commercial item," as that term is defined in
- 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
- software" and "commercial computer software documentation," as such
- terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
- C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
- all U.S. Government End Users acquire Covered Code with only those
- rights set forth herein.
-
-11. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the extent
- necessary to make it enforceable. This License shall be governed by
- California law provisions (except to the extent applicable law, if
- any, provides otherwise), excluding its conflict-of-law provisions.
- With respect to disputes in which at least one party is a citizen of,
- or an entity chartered or registered to do business in the United
- States of America, any litigation relating to this License shall be
- subject to the jurisdiction of the Federal Courts of the Northern
- District of California, with venue lying in Santa Clara County,
- California, with the losing party responsible for costs, including
- without limitation, court costs and reasonable attorneys' fees and
- expenses. The application of the United Nations Convention on
- Contracts for the International Sale of Goods is expressly excluded.
- Any law or regulation which provides that the language of a contract
- shall be construed against the drafter shall not apply to this
- License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or indirectly,
- out of its utilization of rights under this License and You agree to
- work with Initial Developer and Contributors to distribute such
- responsibility on an equitable basis. Nothing herein is intended or
- shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
- Initial Developer may designate portions of the Covered Code as
- "Multiple-Licensed". "Multiple-Licensed" means that the Initial
- Developer permits you to utilize portions of the Covered Code under
- Your choice of the NPL or the alternative licenses, if any, specified
- by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
- ``The contents of this file are subject to the Mozilla Public License
- Version 1.1 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- License for the specific language governing rights and limitations
- under the License.
-
- The Original Code is ______________________________________.
-
- The Initial Developer of the Original Code is ________________________.
- Portions created by ______________________ are Copyright (C) ______
- _______________________. All Rights Reserved.
-
- Contributor(s): ______________________________________.
-
- Alternatively, the contents of this file may be used under the terms
- of the _____ license (the "[___] License"), in which case the
- provisions of [______] License are applicable instead of those
- above. If you wish to allow use of your version of this file only
- under the terms of the [____] License and not to allow others to use
- your version of this file under the MPL, indicate your decision by
- deleting the provisions above and replace them with the notice and
- other provisions required by the [___] License. If you do not delete
- the provisions above, a recipient may use your version of this file
- under either the MPL or the [___] License."
-
- [NOTE: The text of this Exhibit A may differ slightly from the text of
- the notices in the Source Code files of the Original Code. You should
- use the text of this Exhibit A rather than the text found in the
- Original Code Source Code for Your Modifications.]
-
diff --git a/vendor/hunspell/ChangeLog b/vendor/hunspell/ChangeLog
deleted file mode 100644
index 4b99a3f1b..000000000
--- a/vendor/hunspell/ChangeLog
+++ /dev/null
@@ -1,1930 +0,0 @@
-2014-06-02 Németh László :
- * escape spaces in paths of ODF files
-
-2014-05-28 Németh László :
- * add long path/Unicode path support in WIN32 environment:
- - hunspell#233 (reported by mahak gark) and LibreOffice fdo#48017
- * flat ODF support, eg.:
- hunspell doc.fodt
- cat doc.fodt | hunspell -l -O
- * new options:
- - -X (XML) input format
- - -O (ODF or flat ODF) input format
- - --check-apostrophe: check and force Unicode apostrophe usage
- (ASCII or Unicode apostrophe has to be in the
- WORDCHARS section of the affix file)
- * fix ODF support:
- - break 1-line XML of ODT documents at , too,
- not only at (limiting tokenization problems, when
- fgets stops within an XML tag)
- - show ODF file path on the UI instead of the temporary file
- * fix XML support:
- - ', ", &, < and > in replacements converted to XML entities
- - recognize &apos at tokenization, depending from WORDCHARS
- - ' in tokens converted to ' before spell checking and
- in the output of the pipe interface
- * better apostrophe usage:
- - WORDCHARS only with one of the Unicode or ASCII apostrophe
- results extended word tokenization: both of them will be part of
- the words (if they are inside: eg. word's, but not words').
- - convert Unicode apostrophes to ASCII ones for 8-bit dictionaries
- (eg. English dictionaries), or for UTF-8 dictionaries only
- with ASCII apostrophe supports (eg. French dictionaries).
- * updated manual:
- - hunspell.4 renamed to hunspell.5, see
- hunspell#241 reported by Cristopher Yeleighton
- - updated translations
- - note about long/Unicode paths in WIN32 (hunspell.3)
-
-2014-04-25 Németh László :
- * OpenDocument support, eg.
- hunspell *.odt
- hunspell -l *.odt
- * always load default personal dictionary (fix
- filtering bad words - reduce this word list - using
- it as a personal dictionary workflow)
- * fix parsing/URL recognition problem (bad tokens
- with aposthrophes)
-
-2013-07-25 pchang9@cs.wisc.edu
- * moz#897255 Wasted work in line_uniq
- * moz#897780 Wasted work in SuggestMgr::twowords
-
-2013-07-25 Caolán McNamara :
- * hunspell#167 layout problems with long lines
- - based on the original fix by xorho
- adapted to HEAD
- * rhbz#925562 upgrade config.guess for aarch64
-
-2013-07-24 pchang9@cs.wisc.edu
- * moz#896301 Wasted work in SfxEntry::checkword
- * moz#896844 Wasted work in AffixMgr::defcpd_check
-
-2013-06-13 Konstantin Khlebniko
- * #49 HashMgr::add_word computes wrong size for struct hentry
-
-2013-06-13 Ville Skyttä
- * #53 Man page syntax fixes
-
-2013-04-19 John Thomson
- * win_api: add remove() of Hunspell API (hun#3606435)
-
-2013-04-19 Rouslan Solomokhin
- * fix crash in suggestions for 99-character long words
- by extending arrays of SuggestMgr::forgotchar_*
- (hun#3595024, also http://crbug.com/130128),
- thanks to also Paweł Hajdan to report the patch
-
-2013-04-01 Caolán McNamara :
- * hunspell: -Werror=undef
-
-2013-03-13 Caolán McNamara :
- * rhbz#918938 crash in interaction with danish thesaurus
-
-2012-09-18 Németh László :
- * src/hunspell/affixmgr.*: - fix morphological analysis of
- compound words (hun#3544994, reported by Dávid Nemeskey, fdo#55045)
-
-2012-06-29 Caolán McNamara :
- * fix various coverity warnings
-
-2012-01-10 Ehsan Akhgari
- * moz#710940 Firefox Crash [@ AffixMgr::parse_file(char const*, char
- const*) ]
-
-2011-12-16 Jared Wein
- * moz#710967 Incorrect argument passed to strncmp in
- AffixMgr::parse_convtable
-
-2011-12-06 Caolán McNamara :
- * rhbz#759647 fixed tempname of hunSPELL.bak collides with other users
- when multiple edits in one dir
-
-2011-10-13 Caolán McNamara :
- * moz#694002 crash in hunspell affixmgr on exit with bad .aff
- * leak in hunspell affixmgr with bad .aff
-
-2011-09-19 Caolán McNamara :
- * make libparsers.a not installed thanks to Tomáš Chvátal
-
-2011-06-23 Caolán McNamara :
- * fix some windows compiler warnings
-
-2011-05-24 Németh László :
- * src/hunspell/affixmgr.*: allow twofold suffixes in compounds
- by extended version of Arno Teigseth's patch, see hun#3288562.
- - new option for this feature: COMPOUNDMORESUFFIXES
-
-2011-02-16 Németh László :
- * src/*/Makefile.am: fix library versioning, the probem reported by
- Rene Engerhald and Simon Brouwer.
-
- * man/hunspell.4: new version based on the revised version of Ruud Baars
-
-2011-02-02 Németh László :
- * suggestngr.cxx: fix ngram PHONE suggestion for input words with
- diacritics using UTF-8 encoded dictionaries (add byte length to the
- 8-bit phonet() argument instead of character length)
-
- * suggestmgr.cxx: fix missing csconv problem with UTF-8 encoding
- dictionares, when the input contains non-BMP characters
- - tests/utf8_nonbmp.sug: test file
-
- * suggestmgr.cxx: mixed and keyboard based character suggestions
- don't forbid ngram suggestion search (optimized tests/suggestiontest)
-
- * affixmgr.cxx: fix hun#2999225: interfering compounding mechanisms,
- tested on Dutch word list and reported by Ruud Baars
-
- * affixmgr.cxx: allomorph fix for hun#2970240 (Hungarian
- compound "vadász+gép" was analyzed as vad+ász+gép, and rejected
- by the ss->s rep rule (verb "vadássz"), but the analysis
- didn't continue for the longer word parts (vadász+gép).
-
- * csutil.cxx: add lang code "az_AZ", "hu_HU", "tr_TR" for back
- compatibility (fixing Azeri and Turkish casing conversion, also
- Hungarian compound handling)
-
- * affixmgr.cxx: fix morphological analysis
-
-2011-01-26 Németh László :
- * affixmgr.cxx: fix for moz#626195 (memcheck problem with FULLSTRIP).
-
- * affixmgr.*, suggestmgr.cxx: FORBIDWARN parameter (see manual)
-
-2011-01-24 Németh László :
- * suffixmgr.cxx: fix bad suggestion of forbidden compound words, eg.
- "termijndoel" with the Dutch dictionary. Reported by Ruud Baars.
-
- * latexparser.cxx: fix double apostrophe TeX quoation mark tokenization
- (hun#3119776), reported by Wybodekker at SF.net.
-
- * tests/suggestiontest/*: multilanguage and single Hunspell version, see README
- * tests/suggestiontest/prepare2: for make -f Makefile.orig single
-
-2011-01-22 Németh László :
- * affixmgr.*, suggestmgr.*: new features
- ONLYMAXDIFF: remove all bad ngram suggestions (default mode keeps one)
- NONGRAMSUGGEST: similar to NOSUGGEST, but it forbids to use the word
- in ngram based (more, than 1-character distance) suggestions.
-
-2011-01-21 Németh László :
- * suggestmgr.*: limit wild suggestions (hun#2970237 by Ruud Baars)
- - limited compound word suggestions
- - improved and limited ngram based suggestions
- * tests/*.sug: modified test files
- - feature MAXCPDSUGS:
- MAXCPDSUGS 0 : no compound suggestion, suggested by
- Finn Gruwier Larsen in hunfeat#2836033
- MAXCPDSUGS n : max. ~n compound suggestions
- - feature MAXDIFF: differency limit for ngram suggestions: 0-10
- eg. MAXDIFF 5: normal (default) limit
- MAXDIFF 0: only one ngram suggestion
- MAXDIFF 10: ~maxngramsugs ngram suggestions
-
- * affixmgr.*, hunspell.*: add flag FORCEUCASE (hun#2999228), force
- capitalization of compound words, see Hunspell 4 manual),
- suggested by Ruud Baars
- test/forceucase.*: test files
-
- * affixmgr.*, hunspell.*: add flag WARN (hun#1808861), optional warning feature
- for rare words, suggested by Ruud Baars
- tests/warn: test files
- * tools/hunspell.cxx: add option -r for optional filtering of rare words
-
- * affixmgr.cxx: fix hun#3161359 (gcc warnings) reported by Ryan VanderMeulen.
-
-2011-01-17 Németh László :
- * suggestmgr.cxx: fix hun#3158994 and hun#3159027 (missing csconv table
- using awkward 8bit capitalization of UTF-8 encoded dictionary words with PHONE
- suggestion, reported by benjarobin and dicollecte at SF.net).
-
-2011-01-13 Németh László :
- * affixmgr.cxx: ONLYINCOMPOUND fix for hun#2999224 (fogemorphene
- was allowed in end position of compoundings). Reported by Ruud Baars.
- * tests/onlyincompound2.*: test files
-
-2011-01-10 Ingo H. de Boer :
- * win_api/{hunspell,libhunspell, testparser}.vcproj: updated project
- files for the library and the executables. Compiling problem
- also reported by Don Walker.
-
-2011-01-06 Németh László :
- * affixmgr.cxx: fix freedesktop#32850 (program halt during Hungarian
- spell checking of the word "6csillagocska6", reported by András Tímár)
-
- * tools/hunspell.cxx: add Mac OS X Hunspell dictionary paths, asked by
- Vidar Gundersen in hunfeat#3142010
-
-2011-01-05 Caolán McNamara :
- * moz#620626 NS_UNICHARUTIL_CID doesn't support
- case conversion
-
-2011-01-03 Németh László :
- * NEWS and THANKS: update for release 1.2.13
-
-2010-12-20 Németh László :
- * affixmgr.cxx: hun#3140784
-
-2010-12-16 Németh László :
- * affixmgr.cxx:
- - improved fix of hun#2970242 (supporting
- zero affixes, reported by Ruud Baars
- - tests/opentaal_cpdpat{,2}: test files
-
- - switching off default BREAK parameters by BREAK 0,
- reported by Ruud Baars
-
- - hun#2999225: interfering compounding mechanisms, reported by Ruud Baars
-
-2010-12-11 Németh László :
- * affixmgr.cxx: fix hun#2970242 (CHECKCOMPOUNDPATTERN only with flags),
- the bug reported by Ruud Baars
- * tests/2970242.*: test files
-
- * tests/2970240.*: test files for CHECKCOMPOUNDPATTERN fix (check all
- boundaries in compound words, fixed by the previous CHECKCOMPOUNDREP
- fix), the bug reported by Ruud Baars
-
- * win_api/Makefile.cygwin: update
-
-2010-12-09 Caolán McNamara :
- * moz#617953 fix leak
-
-2010-11-08 Caolán McNamara :
- * rhbz#650503 crash in arabic dictionary
-
-2010-11-05 Caolán McNamara :
- * rhbz#648740 don't warn on empty flagvector
-
-2010-11-03 Caolán McNamara :
- * logically we shouldn't need a csconv table in utf-8 mode
-
-2010-10-27 Németh László :
- * hun#3000055 (requested by Ruud Baars) add REP boundary specifiation:
- REP ^word$ xxxx
- REP ^wordstarting xxxx
- REP wordending$ xxxx
-
- * hun#3008434 (requested by Adrián Chaves Fernández) and
- hun#3018929 (requested by Ruud Baars): REP with more than 2 words:
- REP morethantwo more_than_two
-
- * suggestmgr.cxx: fix incomplete suggestion list for capitalized words,
- eg. missing Machtstrijd->Machtsstrijd in the Dutch dictionary
- (reported by Ruud Bars)
-
- * tests, man: related updates
-
-2010-10-12 Caolán McNamara