summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO21
-rw-r--r--PKGBUILD42
-rw-r--r--bind_iface.patch29
-rw-r--r--en-US.ini1166
-rw-r--r--use_system_ftl-sdk.patch72
5 files changed, 1200 insertions, 130 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 108ede26282d..8e9dc574d6f0 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,10 +1,11 @@
pkgbase = obs-studio-tytan652
pkgdesc = Free and open source software for video recording and live streaming. With Browser dock and sources, VST 2 filter, FTL protocol, working VLC sources and my bind interface PR.
- pkgver = 26.1.2
- pkgrel = 9
+ pkgver = 27.0.0
+ pkgrel = 1
url = https://github.com/obsproject/obs-studio
arch = i686
arch = x86_64
+ arch = aarch64
license = GPL2
makedepends = cmake
makedepends = git
@@ -13,7 +14,8 @@ pkgbase = obs-studio-tytan652
makedepends = swig
makedepends = luajit
makedepends = python
- makedepends = cef-minimal-obs
+ makedepends = pipewire
+ makedepends = cef-minimal-obs=87.1.14
depends = ffmpeg
depends = mbedtls
depends = jack
@@ -28,27 +30,28 @@ pkgbase = obs-studio-tytan652
depends = ftl-sdk
optdepends = libfdk-aac: FDK AAC codec support
optdepends = libxcomposite: XComposite capture support
+ optdepends = pipewire: PipeWire capture support
+ optdepends = xdg-desktop-portal-impl: PipeWire capture support
optdepends = libva-intel-driver: Hardware encoding
optdepends = libva-mesa-driver: Hardware encoding
optdepends = swig: Scripting
optdepends = luajit: Lua scripting
optdepends = python: Python scripting
optdepends = v4l2loopback-dkms: Virtual camera output
- provides = obs-studio=26.1.2
+ provides = obs-studio=27.0.0
conflicts = obs-studio
conflicts = obs-linuxbrowser
- source = obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=26.1.2
+ source = obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=27.0.0-rc6
source = python_fix.patch
- source = use_system_ftl-sdk.patch
source = bind_iface.patch
+ source = en-US.ini
source = obs-browser::git+https://github.com/obsproject/obs-browser.git
source = obs-vst::git+https://github.com/obsproject/obs-vst.git#commit=cca219fa3613dbc65de676ab7ba29e76865fa6f8
sha256sums = SKIP
sha256sums = 430d7d0a7e1006c1f6309ad7d4912033dadd542b641f9d41259a5bad568379c9
- sha256sums = c19c48fa8cc2821281ae452acc19c3003010224ecf2f2080991a5398bac4ec2e
- sha256sums = 109ffd8702b7b3973f4167f8821196b304df268205bf19e277281e65a0448182
+ sha256sums = a43f2ad974104888ef36eef49b3e60dc26f7cfc0f48300726c861978ae5ae3ea
+ sha256sums = b242289d5d186bee253ba82185ff43d5e93d7f89254055e9d4833350c6a1cc7a
sha256sums = SKIP
sha256sums = SKIP
pkgname = obs-studio-tytan652
-
diff --git a/PKGBUILD b/PKGBUILD
index e55d2b25efe8..55848ab95c56 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,10 +1,10 @@
# Maintainer: tytan652 <tytan652 at tytanium dot xyz>
pkgname=obs-studio-tytan652
-pkgver=26.1.2
-pkgrel=9
+pkgver=27.0.0
+pkgrel=1
pkgdesc="Free and open source software for video recording and live streaming. With Browser dock and sources, VST 2 filter, FTL protocol, working VLC sources and my bind interface PR."
-arch=("i686" "x86_64")
+arch=("i686" "x86_64" "aarch64")
url="https://github.com/obsproject/obs-studio"
license=("GPL2")
depends=("ffmpeg" "mbedtls" "jack" "gtk-update-icon-cache" "x264" "rnnoise"
@@ -24,12 +24,14 @@ depends=("ffmpeg" "mbedtls" "jack" "gtk-update-icon-cache" "x264" "rnnoise"
# But to make people unable to install VLC official package with obs-studio-tytan652.
# I decided to make vlc-luajit a dependency of OBS rather than an optional one.
makedepends=("cmake" "git" "libfdk-aac" "libxcomposite" "swig"
- "luajit" "python" "cef-minimal-obs") #"pipewire")
+ "luajit" "python" "pipewire"
+ # AUR Packages
+ "cef-minimal-obs=87.1.14")
optdepends=(
"libfdk-aac: FDK AAC codec support"
"libxcomposite: XComposite capture support"
- #"pipewire: PipeWire capture support"
- #"xdg-desktop-portal-impl: PipeWire capture support"
+ "pipewire: PipeWire capture support"
+ "xdg-desktop-portal-impl: PipeWire capture support"
"libva-intel-driver: Hardware encoding"
"libva-mesa-driver: Hardware encoding"
"swig: Scripting"
@@ -40,48 +42,32 @@ optdepends=(
provides=("obs-studio=$pkgver")
conflicts=("obs-studio" "obs-linuxbrowser")
source=(
- "obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=$pkgver"
+ "obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=$pkgver-rc6"
"python_fix.patch" # https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/3335.patch
- "use_system_ftl-sdk.patch" # https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/4018.patch
- "bind_iface.patch" # https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/4219.patch
- #"en-US.ini" # Because the patch created by github can't manage different line endings
+ "bind_iface.patch" # Based on https://patch-diff.githubusercontent.com/raw/obsproject/obs-studio/pull/4219.patch
+ "en-US.ini" # Because the patch created by github can't manage different line endings
"obs-browser::git+https://github.com/obsproject/obs-browser.git"
"obs-vst::git+https://github.com/obsproject/obs-vst.git#commit=cca219fa3613dbc65de676ab7ba29e76865fa6f8"
)
sha256sums=(
"SKIP"
"430d7d0a7e1006c1f6309ad7d4912033dadd542b641f9d41259a5bad568379c9"
- "c19c48fa8cc2821281ae452acc19c3003010224ecf2f2080991a5398bac4ec2e"
- "109ffd8702b7b3973f4167f8821196b304df268205bf19e277281e65a0448182"
- #"a43f2ad974104888ef36eef49b3e60dc26f7cfc0f48300726c861978ae5ae3ea"
- #"b242289d5d186bee253ba82185ff43d5e93d7f89254055e9d4833350c6a1cc7a"
+ "a43f2ad974104888ef36eef49b3e60dc26f7cfc0f48300726c861978ae5ae3ea"
+ "b242289d5d186bee253ba82185ff43d5e93d7f89254055e9d4833350c6a1cc7a"
"SKIP"
"SKIP"
)
prepare() {
cd "$srcdir/obs-studio"
- #git config submodule.plugins/obs-vst.url $srcdir/obs-vst
+ git config submodule.plugins/obs-vst.url $srcdir/obs-vst
git config submodule.plugins/obs-browser.url $srcdir/obs-browser
git submodule update
# libobs/util: Fix loading Python binary modules on *nix (https://github.com/obsproject/obs-studio/pull/3335)
patch -Np1 < "$srcdir/python_fix.patch"
- # obs-outputs: Use system-wide FTL-SDK if present (https://github.com/obsproject/obs-studio/pull/4018)
- patch -Np1 < "$srcdir/use_system_ftl-sdk.patch"
# Add network interface binding for RTMP on Linux (https://github.com/obsproject/obs-studio/pull/4219)
patch -Np1 < "$srcdir/bind_iface.patch"
-
- cd plugins
- # Replace obs-vst submodule by the repo with same last commit. Will be reverted when 27 is out.
- rm -rf obs-vst
- cp -r $srcdir/obs-vst obs-vst
-
- cd obs-vst
- # obs-vst: fix memory leak
- git cherry-pick -n 944c1c962748ee48ab0eca24bacc5354c169eb60
- # obs-vst: Fix VST_PATH use under Linux
- git cherry-pick -n f34327d98c0a54a6da29d37f0b8db790b6adbe4e
}
build() {
diff --git a/bind_iface.patch b/bind_iface.patch
index 8ee9e84c5065..81fdb0650535 100644
--- a/bind_iface.patch
+++ b/bind_iface.patch
@@ -1,4 +1,4 @@
-From 95bfa70603674a0cd8c33524681ad5ccb37be6bb Mon Sep 17 00:00:00 2001
+From 44bdd7991d516120188a3bff36d55bd451d73914 Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:29:08 +0100
Subject: [PATCH 1/5] librtmp: Add interface binding for Linux
@@ -58,7 +58,7 @@ index 6c1f2567ef0..3bccc9422e0 100644
uint8_t m_bSendChunkSizeInfo;
-From f34e560ba81dd9cf54b366db9acd938db0ab7897 Mon Sep 17 00:00:00 2001
+From 472175f81cca27c76c4209e7f4d3ef7bf5f15f4c Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:47:45 +0100
Subject: [PATCH 2/5] obs-outputs: Add RTMP iface binding for Linux
@@ -241,32 +241,19 @@ index a4494ba7f36..7f81a57e5d1 100644
/* frame drop variables */
-From e387edced7fdd244846234b98d1f17213179cf84 Mon Sep 17 00:00:00 2001
+From 68ce6dc8b72623d9bb4be06d092b66ea589269ed Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:51:42 +0100
Subject: [PATCH 3/5] UI: Add interface binding property for Linux
---
- UI/data/locale/en-US.ini | 1 +
UI/forms/OBSBasicSettings.ui | 24 ++++++++++++----
UI/window-basic-auto-config-test.cpp | 3 ++
UI/window-basic-main-outputs.cpp | 6 ++++
UI/window-basic-main.cpp | 2 ++
UI/window-basic-settings.cpp | 42 ++++++++++++++++++++++++++++
- 6 files changed, 73 insertions(+), 5 deletions(-)
+ 5 files changed, 72 insertions(+), 5 deletions(-)
-diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
-index b196a78cc42..bedc86d834b 100644
---- a/UI/data/locale/en-US.ini
-+++ b/UI/data/locale/en-US.ini
-@@ -989,6 +989,7 @@ Basic.Settings.Advanced.StreamDelay.Duration="Duration"
- Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase delay) when reconnecting"
- Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
- Basic.Settings.Advanced.Network="Network"
-+Basic.Settings.Advanced.Network.BindToInterface="Bind to interface"
- Basic.Settings.Advanced.Network.BindToIP="Bind to IP"
- Basic.Settings.Advanced.Network.EnableNewSocketLoop="Enable network optimizations"
- Basic.Settings.Advanced.Network.EnableLowLatencyMode="Enable TCP pacing"
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
index 28c07cdb4e8..6641ccd0320 100644
--- a/UI/forms/OBSBasicSettings.ui
@@ -391,10 +378,10 @@ index ad733218c8f..fb3ac6cbec0 100644
obs_data_set_bool(settings, "new_socket_loop_enabled",
enableNewSocketLoop);
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
-index bd9ba5346d1..e1b26185938 100644
+index d4569155c57..0eae4ae3e15 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
-@@ -1446,6 +1446,8 @@ bool OBSBasic::InitBasicConfigDefaults()
+@@ -1444,6 +1444,8 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint(basicConfig, "Output", "RetryDelay", 10);
config_set_default_uint(basicConfig, "Output", "MaxRetries", 20);
@@ -496,7 +483,7 @@ index 6062c5f95c2..86ad16333ae 100644
SaveCheckBox(ui->autoRemux, "Video", "AutoRemux");
SaveCheckBox(ui->dynBitrate, "Output", "DynamicBitrate");
-From 56a46c309ea94cd41da88f4d2d3a418fa28030f2 Mon Sep 17 00:00:00 2001
+From 2c5e9511daaa1881d0f53dc583ce770ebf0c6979 Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:53:55 +0100
Subject: [PATCH 4/5] UI,obs-outputs: Rename bind IP property variables
@@ -573,7 +560,7 @@ index ee9723737df..32e6711c74d 100644
netif_saddr_data_free(&addrs);
-From b1f7faf0a6a9227fff067a84e5066f075878378d Mon Sep 17 00:00:00 2001
+From 43b7dde4759c1aaca5d14f3279fbb470c75519c6 Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Mon, 15 Feb 2021 11:37:56 +0100
Subject: [PATCH 5/5] UI: Disable bind IP if no iface selected on Linux
diff --git a/en-US.ini b/en-US.ini
new file mode 100644
index 000000000000..50a15016bce4
--- /dev/null
+++ b/en-US.ini
@@ -0,0 +1,1166 @@
+# Note to translators: *DO NOT* translate this file directly. Instead, visit http://crowdin.com/project/obs-studio and submit your translations there.
+# Pull requests for translations outside of Crowdin will not be accepted.
+# Read this forum post for more instructions on submitting translations: https://obsproject.com/forum/threads/how-to-contribute-translations-for-obs.16327/
+
+# Language of this file
+Language="English"
+
+# commonly shared locale
+OK="OK"
+Apply="Apply"
+Cancel="Cancel"
+Close="Close"
+Save="Save"
+Discard="Discard"
+Disable="Disable"
+Yes="Yes"
+No="No"
+Add="Add"
+Remove="Remove"
+Rename="Rename"
+Interact="Interact"
+Filters="Filters"
+Properties="Properties"
+MoveUp="Move Up"
+MoveDown="Move Down"
+Settings="Settings"
+Display="Display"
+Name="Name"
+Exit="Exit"
+Mixer="Audio Mixer"
+Browse="Browse"
+Mono="Mono"
+Stereo="Stereo"
+DroppedFrames="Dropped Frames %1 (%2%)"
+StudioProgramProjector="Fullscreen Projector (Program)"
+PreviewProjector="Fullscreen Projector (Preview)"
+SceneProjector="Fullscreen Projector (Scene)"
+SourceProjector="Fullscreen Projector (Source)"
+StudioProgramWindow="Windowed Projector (Program)"
+PreviewWindow="Windowed Projector (Preview)"
+SceneWindow="Windowed Projector (Scene)"
+SourceWindow="Windowed Projector (Source)"
+MultiviewProjector="Multiview (Fullscreen)"
+MultiviewWindowed="Multiview (Windowed)"
+ResizeProjectorWindowToContent="Fit window to content"
+Clear="Clear"
+Revert="Revert"
+Show="Show"
+Hide="Hide"
+UnhideAll="Unhide All"
+Untitled="Untitled"
+New="New"
+Duplicate="Duplicate"
+Enable="Enable"
+DisableOSXVSync="Disable macOS V-Sync"
+ResetOSXVSyncOnExit="Reset macOS V-Sync on Exit"
+HighResourceUsage="Encoding overloaded! Consider turning down video settings or using a faster encoding preset."
+Transition="Transition"
+QuickTransitions="Quick Transitions"
+FadeToBlack="Fade to Black"
+Left="Left"
+Right="Right"
+Top="Top"
+Bottom="Bottom"
+Reset="Reset"
+Hours="Hours"
+Minutes="Minutes"
+Seconds="Seconds"
+Deprecated="Deprecated"
+ReplayBuffer="Replay Buffer"
+Import="Import"
+Export="Export"
+Copy="Copy"
+Paste="Paste"
+PasteReference="Paste (Reference)"
+PasteDuplicate="Paste (Duplicate)"
+RemuxRecordings="Remux Recordings"
+Next="Next"
+Back="Back"
+Defaults="Defaults"
+HideMixer="Hide in Mixer"
+TransitionOverride="Transition Override"
+ShowTransition="Show Transition"
+HideTransition="Hide Transition"
+None="None"
+StudioMode.Preview="Preview"
+StudioMode.Program="Program"
+ShowInMultiview="Show in Multiview"
+VerticalLayout="Vertical Layout"
+Group="Group"
+DoNotShowAgain="Do not show again"
+Default="(Default)"
+Calculating="Calculating..."
+Fullscreen="Fullscreen"
+Windowed="Windowed"
+Percent="Percent"
+RefreshBrowser="Refresh"
+AspectRatio="Aspect Ratio <b>%1:%2</b>"
+LockVolume="Lock Volume"
+LogViewer="Log Viewer"
+ShowOnStartup="Show on startup"
+OpenFile="Open file"
+AddValue="Add %1"
+
+# warning if program already open
+AlreadyRunning.Title="OBS is already running"
+AlreadyRunning.Text="OBS is already running! Unless you meant to do this, please shut down any existing instances of OBS before trying to run a new instance. If you have OBS set to minimize to the system tray, please check to see if it's still running there."
+AlreadyRunning.LaunchAnyway="Launch Anyway"
+
+ChromeOS.Title="Unsupported Platform"
+ChromeOS.Text="OBS appears to be running inside a ChromeOS container. This platform is unsupported"
+
+# warning when closing docks. it's frustrating that we actually need this.
+DockCloseWarning.Title="Closing Dockable Window"
+DockCloseWarning.Text="You just closed a dockable window. If you'd like to show it again, use the View → Docks menu on the menu bar."
+
+# extra browser panels dialog
+ExtraBrowsers="Custom Browser Docks"
+ExtraBrowsers.Info="Add docks by giving them a name and URL, then click Apply or Close to open the docks. You can add or remove docks at any time."
+ExtraBrowsers.DockName="Dock Name"
+
+# Auth
+Auth.Authing.Title="Authenticating..."
+Auth.Authing.Text="Authenticating with %1, please wait..."
+Auth.AuthFailure.Title="Authentication Failure"
+Auth.AuthFailure.Text="Failed to authenticate with %1:\n\n%2: %3"
+Auth.InvalidScope.Title="Authentication Required"
+Auth.InvalidScope.Text="The authentication requirements for %1 have changed. Some features may not be available."
+Auth.LoadingChannel.Title="Loading channel information..."
+Auth.LoadingChannel.Text="Loading channel information for %1, please wait..."
+Auth.ChannelFailure.Title="Failed to load channel"
+Auth.ChannelFailure.Text="Failed to load channel information for %1\n\n%2: %3"
+Auth.Chat="Chat"
+Auth.StreamInfo="Stream Information"
+TwitchAuth.Stats="Twitch Stats"
+TwitchAuth.Feed="Twitch Activity Feed"
+TwitchAuth.TwoFactorFail.Title="Could not query stream key"
+TwitchAuth.TwoFactorFail.Text="OBS was unable to connect to your Twitch account. Please make sure two-factor authentication is set up in your <a href='https://www.twitch.tv/settings/security'>Twitch security settings</a> as this is required to stream."
+RestreamAuth.Channels="Restream Channels"
+
+# copy filters
+Copy.Filters="Copy Filters"
+Paste.Filters="Paste Filters"
+
+# browser initialization dialog
+BrowserPanelInit.Title="Initializing Browser..."
+BrowserPanelInit.Text="Initializing browser, please wait..."
+
+# bandwidth test
+BandwidthTest.Region="Region"
+BandwidthTest.Region.US="United States"
+BandwidthTest.Region.EU="Europe"
+BandwidthTest.Region.Asia="Asia"
+BandwidthTest.Region.Other="Other"
+
+# auto config wizard
+Basic.AutoConfig="Auto-Configuration Wizard"
+Basic.AutoConfig.ApplySettings="Apply Settings"
+Basic.AutoConfig.StartPage="Usage Information"
+Basic.AutoConfig.StartPage.SubTitle="Specify what you want to use the program for"
+Basic.AutoConfig.StartPage.PrioritizeStreaming="Optimize for streaming, recording is secondary"
+Basic.AutoConfig.StartPage.PrioritizeRecording="Optimize just for recording, I will not be streaming"
+Basic.AutoConfig.StartPage.PrioritizeVirtualCam="I will only be using the virtual camera"
+Basic.AutoConfig.VideoPage="Video Settings"
+Basic.AutoConfig.VideoPage.SubTitle="Specify the video settings you would like to use"
+Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Use Current (%1x%2)"
+Basic.AutoConfig.VideoPage.BaseResolution.Display="Display %1 (%2x%3)"
+Basic.AutoConfig.VideoPage.FPS.UseCurrent="Use Current (%1)"
+Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Either 60 or 30, but prefer 60 when possible"
+Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Either 60 or 30, but prefer high resolution"
+Basic.AutoConfig.VideoPage.CanvasExplanation="Note: The canvas (base) resolution is not necessarily the same as the resolution you will stream or record with. Your actual stream/recording resolution may be scaled down from the canvas resolution to reduce resource usage or bitrate requirements."
+Basic.AutoConfig.StreamPage="Stream Information"
+Basic.AutoConfig.StreamPage.SubTitle="Please enter your stream information"
+Basic.AutoConfig.StreamPage.ConnectAccount="Connect Account (recommended)"
+Basic.AutoConfig.StreamPage.DisconnectAccount="Disconnect Account"
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="Disconnect Account?"
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="This change will apply immediately. Are you sure you want to disconnect your account?"
+Basic.AutoConfig.StreamPage.GetStreamKey="Get Stream Key"
+Basic.AutoConfig.StreamPage.MoreInfo="More Info"
+Basic.AutoConfig.StreamPage.UseStreamKey="Use Stream Key"
+Basic.AutoConfig.StreamPage.Service="Service"
+Basic.AutoConfig.StreamPage.Service.ShowAll="Show All..."
+Basic.AutoConfig.StreamPage.Service.Custom="Custom..."
+Basic.AutoConfig.StreamPage.Server="Server"
+Basic.AutoConfig.StreamPage.StreamKey="Stream Key"
+Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(Link)"
+Basic.AutoConfig.StreamPage.EncoderKey="Encoder Key"
+Basic.AutoConfig.StreamPage.PerformBandwidthTest="Estimate bitrate with bandwidth test (may take a few minutes)"
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Prefer hardware encoding"
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardware Encoding eliminates most CPU usage, but may require more bitrate to obtain the same level of quality."
+Basic.AutoConfig.StreamPage.StreamWarning.Title="Stream warning"
+Basic.AutoConfig.StreamPage.StreamWarning.Text="The bandwidth test is about to stream randomized video data without audio to your channel. If you're able, it's recommended to temporarily turn off saving videos of streams and set the stream to private until after the test has completed. Continue?"
+Basic.AutoConfig.TestPage="Final Results"
+Basic.AutoConfig.TestPage.SubTitle.Testing="The program is now executing a set of tests to estimate the ideal settings"
+Basic.AutoConfig.TestPage.SubTitle.Complete="Testing complete"
+Basic.AutoConfig.TestPage.TestingBandwidth="Performing bandwidth test, this may take a few minutes..."
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Connecting to: %1..."
+Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Failed to connect to any servers, please check your internet connection and try again."
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Testing bandwidth for: %1"
+Basic.AutoConfig.TestPage.TestingStreamEncoder="Testing stream encoder, this may take a minute..."
+Basic.AutoConfig.TestPage.TestingRecordingEncoder="Testing recording encoder, this may take a minute..."
+Basic.AutoConfig.TestPage.TestingRes="Testing resolutions, this may take a few minutes..."
+Basic.AutoConfig.TestPage.TestingRes.Fail="Failed to start up encoder"
+Basic.AutoConfig.TestPage.TestingRes.Resolution="Testing %1x%2 %3 FPS..."
+Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streaming Encoder"
+Basic.AutoConfig.TestPage.Result.RecordingEncoder="Recording Encoder"
+Basic.AutoConfig.TestPage.Result.Header="The program has determined that these estimated settings are ideal for you:"
+Basic.AutoConfig.TestPage.Result.Footer="To use these settings, click Apply Settings. To reconfigure the wizard and try again, click Back. To manually configure settings yourself, click Cancel and open Settings."
+Basic.AutoConfig.Info="The auto-configuration wizard will determine the best settings based on your computer specs and internet speed."
+Basic.AutoConfig.RunAnytime="This can be run at any time by going to the Tools menu."
+
+# stats
+Basic.Stats="Stats"
+Basic.Stats.CPUUsage="CPU Usage"
+Basic.Stats.HDDSpaceAvailable="Disk space available"
+Basic.Stats.MemoryUsage="Memory Usage"
+Basic.Stats.AverageTimeToRender="Average time to render frame"
+Basic.Stats.SkippedFrames="Skipped frames due to encoding lag"
+Basic.Stats.MissedFrames="Frames missed due to rendering lag"
+Basic.Stats.Output.Stream="Stream"
+Basic.Stats.Output.Recording="Recording"
+Basic.Stats.Status="Status"
+Basic.Stats.Status.Recording="Recording"
+Basic.Stats.Status.Live="LIVE"
+Basic.Stats.Status.Reconnecting="Reconnecting"
+Basic.Stats.Status.Inactive="Inactive"
+Basic.Stats.Status.Active="Active"
+Basic.Stats.DroppedFrames="Dropped Frames (Network)"
+Basic.Stats.MegabytesSent="Total Data Output"
+Basic.Stats.Bitrate="Bitrate"
+Basic.Stats.DiskFullIn="Disk full in (approx.)"
+Basic.Stats.ResetStats="Reset Stats"
+
+ResetUIWarning.Title="Are you sure you want to reset the UI?"
+ResetUIWarning.Text="Resetting the UI will hide additional docks. You will need to unhide these docks from the view menu if you want them to be visible.\n\nAre you sure you want to reset the UI?"
+
+# updater
+Updater.Title="New update available"
+Updater.Text="There is a new update available:"
+Updater.UpdateNow="Update Now"
+Updater.RemindMeLater="Remind me Later"
+Updater.Skip="Skip Version"
+Updater.Running.Title="Program currently active"
+Updater.Running.Text="Outputs are currently active, please shut down any active outputs before attempting to update"
+Updater.NoUpdatesAvailable.Title="No updates available"
+Updater.NoUpdatesAvailable.Text="No updates are currently available"
+Updater.FailedToLaunch="Failed to launch updater"
+Updater.GameCaptureActive.Title="Game capture active"
+Updater.GameCaptureActive.Text="Game capture hook library is currently in use. Please close any games/programs being captured (or restart Windows) and try again."
+
+# quick transitions
+QuickTransitions.SwapScenes="Swap Preview/Output Scenes After Transitioning"
+QuickTransitions.SwapScenesTT="Swaps the preview and output scenes after transitioning (if the output's original scene still exists).\nThis will not undo any changes that may have been made to the output's original scene."
+QuickTransitions.DuplicateScene="Duplicate Scene"
+QuickTransitions.DuplicateSceneTT="When editing the same scene, allows editing transform/visibility of sources without modifying the output.\nTo edit properties of sources without modifying the output, enable 'Duplicate Sources'.\nChanging this value will reset the current output scene (if it still exists)."
+QuickTransitions.EditProperties="Duplicate Sources"
+QuickTransitions.EditPropertiesTT="When editing the same scene, allows editing properties of sources without modifying the output.\nThis can only be used if 'Duplicate Scene' is enabled.\nCertain sources (such as capture or media sources) do not support this and cannot be edited separately.\nChanging this value will reset the current output scene (if it still exists).\n\nWarning: Because sources will be duplicated, this may require extra system or video resources."
+QuickTransitions.HotkeyName="Quick Transition: %1"
+
+# transitions
+Basic.AddTransition="Add Configurable Transition"
+Basic.RemoveTransition="Remove Configurable Transition"
+Basic.TransitionProperties="Transition Properties"
+Basic.SceneTransitions="Scene Transitions"
+Basic.TransitionDuration="Duration"
+Basic.TogglePreviewProgramMode="Studio Mode"
+
+# undo
+Undo.Undo="Undo"
+Undo.Redo="Redo"
+Undo.Add="Add '%1'"
+Undo.Delete="Delete '%1'"
+Undo.Rename="Rename '%1'"
+Undo.SceneCollection.Switch="Switch to '%1'"
+Undo.Item.Undo="Undo %1"
+Undo.Item.Redo="Redo %1"
+Undo.Sources.Multi="Delete %1 Sources"
+Undo.Filters="Filter Changes on '%1'"
+Undo.Filters.Paste.Single="Paste Filter '%1' to '%2'"
+Undo.Filters.Paste.Multiple="Copy Filters from '%1' to '%2'"
+Undo.Transform="Transform source(s) In '%1'"
+Undo.Transform.Paste="Paste Transformation in '%1'"
+Undo.Transform.Rotate="Rotation In '%1'"
+Undo.Transform.Reset="Transform Reset In '%1'"
+Undo.Transform.HFlip="Horizontal Flip In '%1'"
+Undo.Transform.VFlip="Vertical Flip In '%1'"
+Undo.Transform.FitToScreen="Fit to Screen In '%1'"
+Undo.Transform.StretchToScreen="Stretch to Screen in '%1'"
+Undo.Transform.Center="Center to Screen in '%1'"
+Undo.Transform.VCenter="Vertical Center to Screen in '%1'"
+Undo.Transform.HCenter="Horizontal Center to Screen in '%1'"
+Undo.Volume.Change="Volume Change on '%1'"
+Undo.Volume.Mute="Mute '%1'"
+Undo.Volume.Unmute="Unmute '%1'"
+Undo.Balance.Change="Audio Balance Change on '%1'"
+Undo.SyncOffset.Change="Audio Sync Offset Change on '%1'"
+Undo.MonitoringType.Change="Change Audio Monitoring on '%1'"
+Undo.Mixers.Change="Change Audio Mixers on '%1'"
+Undo.ForceMono.On="Enable Force Mono on '%1'"
+Undo.ForceMono.Off="Disable Force Mono on '%1'"
+Undo.Properties="Property Change on '%1'"
+Undo.Scene.Duplicate="Duplicate Scene '%1'"
+Undo.ShowTransition="Show Transition on '%1'"
+Undo.HideTransition="Hide Transition on '%1'"
+Undo.ShowSceneItem="Show '%1' in '%2'"
+Undo.HideSceneItem="Hide '%1' in '%2'"
+Undo.ReorderSources="Reorder sources in '%1'"
+Undo.MoveUp="Move '%1' up in '%2'"
+Undo.MoveDown="Move '%1' down in '%2'"
+Undo.MoveToTop="Move '%1' to top in '%2'"
+Undo.MoveToBottom="Move '%1' to bottom in '%2'"
+Undo.PasteSource="Paste Source(s) in '%1'"
+Undo.PasteSourceRef="Paste Source Reference(s) in '%1'"
+Undo.GroupItems="Group Items into '%1'"
+
+# transition name dialog
+TransitionNameDlg.Text="Please enter the name of the transition"
+TransitionNameDlg.Title="Transition Name"
+
+# title bar strings
+TitleBar.Profile="Profile"
+TitleBar.Scenes="Scenes"
+
+# "name already exists" dialog box
+NameExists.Title="Name already exists"
+NameExists.Text="The name is already in use."
+
+NoNameEntered.Title="Please enter a valid name"
+NoNameEntered.Text="You cannot use empty names."
+
+# confirm start stream dialog box
+ConfirmStart.Title="Start Stream?"
+ConfirmStart.Text="Are you sure you want to start the stream?"
+
+# confirm stop stream dialog box
+ConfirmStop.Title="Stop Stream?"
+ConfirmStop.Text="Are you sure you want to stop the stream?"
+
+# confirm stop record dialog box
+ConfirmStopRecord.Title="Stop Recording?"
+ConfirmStopRecord.Text="Are you sure you want to stop recording?"
+
+# confirm bandwidth test dialog box
+ConfirmBWTest.Title="Start Bandwidth Test?"
+ConfirmBWTest.Text="You have OBS configured in bandwidth test mode. This mode allows for network testing without your channel going live. Once you are done testing, you will need to disable it in order for viewers to be able to see your stream.\n\nDo you want to continue?"
+
+# confirm exit dialog box
+ConfirmExit.Title="Exit OBS?"
+ConfirmExit.Text="OBS is currently active. All streams/recordings will be shut down. Are you sure you wish to exit?"
+
+# confirm delete dialog box
+ConfirmRemove.Title="Confirm Remove"
+ConfirmRemove.Text="Are you sure you wish to remove '$1'?"
+ConfirmRemove.TextMultiple="Are you sure you wish to remove %1 items?"
+
+# output start messages
+Output.StartStreamFailed="Failed to start streaming"
+Output.StartRecordingFailed="Failed to start recording"
+Output.StartReplayFailed="Failed to start replay buffer"
+Output.StartFailedGeneric="Starting the output failed. Please check the log for details.\n\nNote: If you are using the NVENC or AMD encoders, make sure your video drivers are up to date."
+
+# replay buffer + pause warning message
+Output.ReplayBuffer.PauseWarning.Title="Cannot save replays while paused"
+Output.ReplayBuffer.PauseWarning.Text="Warning: Replays cannot be saved while recording is paused."
+
+# output connect messages
+Output.ConnectFail.Title="Failed to connect"
+Output.ConnectFail.BadPath="Invalid Path or Connection URL. Please check your settings to confirm that they are valid."
+Output.ConnectFail.ConnectFailed="Failed to connect to server"
+Output.ConnectFail.InvalidStream="Could not access the specified channel or stream key, please double-check your stream key. If it is correct, there may be a problem connecting to the server."
+Output.ConnectFail.Error="An unexpected error occurred when trying to connect to the server. More information in the log file."
+Output.ConnectFail.Disconnected="Disconnected from server."
+
+# output streaming-related messages
+Output.StreamEncodeError.Title="Encoding error"
+Output.StreamEncodeError.Msg="An encoder error occurred while streaming."
+
+# output recording-related messages
+Output.RecordFail.Title="Failed to start recording"
+Output.RecordFail.Unsupported="The output format is either unsupported or does not support more than one audio track. Please check your settings and try again."
+Output.RecordNoSpace.Title="Insufficient disk space"
+Output.RecordNoSpace.Msg="There is not sufficient disk space to continue recording."
+Output.RecordError.Title="Recording error"
+Output.RecordError.Msg="An unspecified error occurred while recording."
+Output.RecordError.EncodeErrorMsg="An encoder error occurred while recording."
+
+# output recording messages
+Output.BadPath.Title="Bad File Path"
+Output.BadPath.Text="The configured file output path is invalid. Please check your settings to confirm that a valid file path has been set."
+
+# log upload dialog text and messages
+LogReturnDialog="Log Upload Successful"
+LogReturnDialog.Description="Your log file has been uploaded. You can now share the URL for debugging or support purposes."
+LogReturnDialog.Description.Crash="Your crash report has been uploaded. You can now share the URL for debugging purposes."
+LogReturnDialog.CopyURL="Copy URL"
+LogReturnDialog.AnalyzeURL="Analyze"
+LogReturnDialog.ErrorUploadingLog="Error uploading log file"
+
+# remux dialog
+Remux.SourceFile="OBS Recording"
+Remux.TargetFile="Target File"
+Remux.Remux="Remux"
+Remux.Stop="Stop Remuxing"
+Remux.ClearFinished="Clear Finished Items"
+Remux.ClearAll="Clear All Items"
+Remux.OBSRecording="OBS Recording"
+Remux.FinishedTitle="Remuxing finished"
+Remux.Finished="Recording remuxed"
+Remux.FinishedError="Recording remuxed, but the file may be incomplete"
+Remux.SelectRecording="Select OBS Recording..."
+Remux.SelectTarget="Select target file..."
+Remux.FileExistsTitle="Target files exist"
+Remux.FileExists="The following target files already exist. Do you want to replace them?"
+Remux.ExitUnfinishedTitle="Remuxing in progress"
+Remux.ExitUnfinished="Remuxing is not finished, stopping now may render the target file unusable.\nAre you sure you want to stop remuxing?"
+Remux.HelpText="Drop files in this window to remux, or select an empty \"OBS Recording\" cell to browse for a file."
+
+# missing file dialog
+MissingFiles="Missing Files"
+MissingFiles.MissingFile="Missing File"
+MissingFiles.NewFile="New File"
+MissingFiles.HelpText="Some files are missing since you last used OBS."
+MissingFiles.Clear="<cleared>"
+MissingFiles.NumFound="Found $1 of $2"
+MissingFiles.Search="Search Directory..."
+MissingFiles.SelectFile="Select file..."
+MissingFiles.SelectDir="Select Folder to Search in"
+MissingFiles.State="State"
+MissingFiles.Missing="Missing"
+MissingFiles.Replaced="Replaced"
+MissingFiles.Cleared="Cleared"
+MissingFiles.Found="Found"
+MissingFiles.AutoSearch="Additional file matches found"
+MissingFiles.AutoSearchText="OBS has found additional matches for missing files in that directory. Would you like to add them?"
+
+# update dialog
+UpdateAvailable="New Update Available"
+UpdateAvailable.Text="Version %1.%2.%3 is now available. <a href='%4'>Click here to download</a>"
+
+# audio device names
+Basic.DesktopDevice1="Desktop Audio"
+Basic.DesktopDevice2="Desktop Audio 2"
+Basic.AuxDevice1="Mic/Aux"
+Basic.AuxDevice2="Mic/Aux 2"
+Basic.AuxDevice3="Mic/Aux 3"
+Basic.AuxDevice4="Mic/Aux 4"
+
+# startup scene/capture
+Basic.Scene="Scene"
+Basic.DisplayCapture="Display Capture"
+
+# display context menu
+Basic.Main.PreviewConextMenu.Enable="Enable Preview"
+
+# disable preview
+Basic.Main.Preview.Disable="Disable Preview"
+
+# scale filtering
+ScaleFiltering="Scale Filtering"
+ScaleFiltering.Point="Point"
+ScaleFiltering.Bilinear="Bilinear"
+ScaleFiltering.Bicubic="Bicubic"
+ScaleFiltering.Lanczos="Lanczos"
+ScaleFiltering.Area="Area"
+
+# deinterlacing
+Deinterlacing="Deinterlacing"
+Deinterlacing.Discard="Discard"
+Deinterlacing.Retro="Retro"
+Deinterlacing.Blend="Blend"
+Deinterlacing.Blend2x="Blend 2x"
+Deinterlacing.Linear="Linear"
+Deinterlacing.Linear2x="Linear 2x"
+Deinterlacing.Yadif="Yadif"
+Deinterlacing.Yadif2x="Yadif 2x"
+Deinterlacing.TopFieldFirst="Top Field First"
+Deinterlacing.BottomFieldFirst="Bottom Field First"
+
+# volume control accessibility text
+VolControl.SliderUnmuted="Volume slider for '%1':"
+VolControl.SliderMuted="Volume slider for '%1': (currently muted)"
+VolControl.Mute="Mute '%1'"
+VolControl.Properties="Properties for '%1'"
+
+# add scene dialog
+Basic.Main.AddSceneDlg.Title="Add Scene"
+Basic.Main.AddSceneDlg.Text="Please enter the name of the scene"
+
+# add scene suggested name
+Basic.Main.DefaultSceneName.Text="Scene %1"
+
+# add scene collection dialog
+Basic.Main.AddSceneCollection.Title="Add Scene Collection"
+Basic.Main.AddSceneCollection.Text="Please enter the name of the scene collection"
+
+# rename scene collection dialog
+Basic.Main.RenameSceneCollection.Title="Rename Scene Collection"
+
+# add profile dialog
+AddProfile.Title="Add Profile"
+AddProfile.Text="Please enter the name of the profile"
+AddProfile.WizardCheckbox="Show auto-configuration wizard"
+
+# rename profile dialog
+RenameProfile.Title="Rename Profile"
+
+# rename audio source in mixer
+Basic.Main.MixerRename.Title="Rename Audio Source"
+Basic.Main.MixerRename.Text="Please enter the name of the audio source"
+
+
+# preview window disabled
+Basic.Main.PreviewDisabled="Preview is currently disabled"
+
+# add source dialog
+Basic.SourceSelect="Create/Select Source"
+Basic.SourceSelect.CreateNew="Create new"
+Basic.SourceSelect.AddExisting="Add Existing"
+Basic.SourceSelect.AddVisible="Make source visible"
+
+# source box
+Basic.Main.Sources.Visibility="Visibility"
+Basic.Main.Sources.VisibilityDescription="Controls the visibility of '%1' in the canvas"
+Basic.Main.Sources.Lock="Lock"
+Basic.Main.Sources.LockDescription="Locks the position and scale of '%1' in the canvas"
+
+# properties window
+Basic.PropertiesWindow="Properties for '%1'"
+Basic.PropertiesWindow.AutoSelectFormat="%1 (autoselect: %2)"
+Basic.PropertiesWindow.SelectColor="Select color"
+Basic.PropertiesWindow.SelectFont="Select font"
+Basic.PropertiesWindow.ConfirmTitle="Settings Changed"
+Basic.PropertiesWindow.Confirm="There are unsaved changes. Do you want to keep them?"
+Basic.PropertiesWindow.NoProperties="No properties available"
+Basic.PropertiesWindow.AddFiles="Add Files"
+Basic.PropertiesWindow.AddDir="Add Directory"
+Basic.PropertiesWindow.AddURL="Add Path/URL"
+Basic.PropertiesWindow.AddEditableListDir="Add directory to '%1'"
+Basic.PropertiesWindow.AddEditableListFiles="Add files to '%1'"
+Basic.PropertiesWindow.AddEditableListEntry="Add entry to '%1'"
+Basic.PropertiesWindow.EditEditableListEntry="Edit entry from '%1'"
+
+# properties view
+Basic.PropertiesView.FPS.Simple="Simple FPS Values"
+Basic.PropertiesView.FPS.Rational="Rational FPS Values"
+Basic.PropertiesView.FPS.ValidFPSRanges="Valid FPS Ranges:"
+
+# interaction window
+Basic.InteractionWindow="Interacting with '%1'"
+
+# status bar
+Basic.StatusBar.Reconnecting="Disconnected, reconnecting in %2 second(s) (attempt %1)"
+Basic.StatusBar.AttemptingReconnect="Attempting to reconnect... (attempt %1)"
+Basic.StatusBar.ReconnectSuccessful="Reconnection successful"
+Basic.StatusBar.Delay="Delay (%1 sec)"
+Basic.StatusBar.DelayStartingIn="Delay (starting in %1 sec)"
+Basic.StatusBar.DelayStoppingIn="Delay (stopping in %1 sec)"
+Basic.StatusBar.DelayStartingStoppingIn="Delay (stopping in %1 sec, starting in %2 sec)"
+Basic.StatusBar.RecordingSavedTo="Recording saved to '%1'"
+Basic.StatusBar.ReplayBufferSavedTo="Replay buffer saved to '%1'"
+Basic.StatusBar.ScreenshotSavedTo="Screenshot saved to '%1'"
+Basic.StatusBar.AutoRemuxedTo="Recording auto remuxed to '%1'"
+
+# filters window
+Basic.Filters="Filters"
+Basic.Filters.AsyncFilters="Audio/Video Filters"
+Basic.Filters.AudioFilters="Audio Filters"
+Basic.Filters.EffectFilters="Effect Filters"
+Basic.Filters.Title="Filters for '%1'"
+Basic.Filters.AddFilter.Title="Filter name"
+Basic.Filters.AddFilter.Text="Please specify the name of the filter"
+
+# transform window
+Basic.TransformWindow="Scene Item Transform"
+Basic.TransformWindow.Position="Position"
+Basic.TransformWindow.PositionX="Position X"
+Basic.TransformWindow.PositionY="Position Y"
+Basic.TransformWindow.Rotation="Rotation"
+Basic.TransformWindow.Size="Size"
+Basic.TransformWindow.Width="Width"
+Basic.TransformWindow.Height="Height"
+Basic.TransformWindow.Alignment="Positional Alignment"
+Basic.TransformWindow.BoundsType="Bounding Box Type"
+Basic.TransformWindow.BoundsAlignment="Alignment in Bounding Box"
+Basic.TransformWindow.Bounds="Bounding Box Size"
+Basic.TransformWindow.BoundsWidth="Bounding Box Width"
+Basic.TransformWindow.BoundsHeight="Bounding Box Height"
+Basic.TransformWindow.Crop="Crop"
+Basic.TransformWindow.CropLeft="Crop Left"
+Basic.TransformWindow.CropRight="Crop Right"
+Basic.TransformWindow.CropTop="Crop Top"
+Basic.TransformWindow.CropBottom="Crop Bottom"
+
+Basic.TransformWindow.Alignment.TopLeft="Top Left"
+Basic.TransformWindow.Alignment.TopCenter="Top Center"
+Basic.TransformWindow.Alignment.TopRight="Top Right"
+Basic.TransformWindow.Alignment.CenterLeft="Center Left"
+Basic.TransformWindow.Alignment.Center="Center"
+Basic.TransformWindow.Alignment.CenterRight="Center Right"
+Basic.TransformWindow.Alignment.BottomLeft="Bottom Left"
+Basic.TransformWindow.Alignment.BottomCenter="Bottom Center"
+Basic.TransformWindow.Alignment.BottomRight="Bottom Right"
+
+Basic.TransformWindow.BoundsType.None="No bounds"
+Basic.TransformWindow.BoundsType.MaxOnly="Maximum size only"
+Basic.TransformWindow.BoundsType.ScaleInner="Scale to inner bounds"
+Basic.TransformWindow.BoundsType.ScaleOuter="Scale to outer bounds"
+Basic.TransformWindow.BoundsType.ScaleToWidth="Scale to width of bounds"
+Basic.TransformWindow.BoundsType.ScaleToHeight="Scale to height of bounds"
+Basic.TransformWindow.BoundsType.Stretch="Stretch to bounds"
+
+# no scene warning
+Basic.Main.AddSourceHelp.Title="Cannot Add Source"
+Basic.Main.AddSourceHelp.Text="You need to have at least 1 scene to add a source."
+
+# basic mode main window
+Basic.Main.Scenes="Scenes"
+Basic.Main.Sources="Sources"
+Basic.Main.Source="Source"
+Basic.Main.Controls="Controls"
+Basic.Main.Connecting="Connecting..."
+Basic.Main.StartRecording="Start Recording"
+Basic.Main.StartReplayBuffer="Start Replay Buffer"
+Basic.Main.SaveReplay="Save Replay"
+Basic.Main.StartStreaming="Start Streaming"
+Basic.Main.StartVirtualCam="Start Virtual Camera"
+Basic.Main.StopRecording="Stop Recording"
+Basic.Main.PauseRecording="Pause Recording"
+Basic.Main.UnpauseRecording="Unpause Recording"
+Basic.Main.StoppingRecording="Stopping Recording..."
+Basic.Main.StopReplayBuffer="Stop Replay Buffer"
+Basic.Main.StoppingReplayBuffer="Stopping Replay Buffer..."
+Basic.Main.StopStreaming="Stop Streaming"
+Basic.Main.StoppingStreaming="Stopping Stream..."
+Basic.Main.ForceStopStreaming="Stop Streaming (discard delay)"
+Basic.Main.ShowContextBar="Show Source Toolbar"
+Basic.Main.HideContextBar="Hide Source Toolbar"
+Basic.Main.StopVirtualCam="Stop Virtual Camera"
+Basic.Main.Group="Group %1"
+Basic.Main.GroupItems="Group Selected Items"
+Basic.Main.Ungroup="Ungroup"
+Basic.Main.GridMode="Grid Mode"
+Basic.Main.ListMode="List Mode"
+
+# basic mode file menu
+Basic.MainMenu.File="&File"
+Basic.MainMenu.File.Export="&Export"
+Basic.MainMenu.File.Import="&Import"
+Basic.MainMenu.File.ShowRecordings="Show &Recordings"
+Basic.MainMenu.File.Remux="Re&mux Recordings"
+Basic.MainMenu.File.Settings="&Settings"
+Basic.MainMenu.File.ShowSettingsFolder="Show Settings Folder"
+Basic.MainMenu.File.ShowProfileFolder="Show Profile Folder"
+Basic.MainMenu.AlwaysOnTop="&Always On Top"
+Basic.MainMenu.File.Exit="E&xit"
+
+# basic mode edit menu
+Basic.MainMenu.Edit="&Edit"
+Basic.MainMenu.Edit.Undo="&Undo"
+Basic.MainMenu.Edit.Redo="&Redo"
+Basic.MainMenu.Edit.UndoAction="&Undo $1"
+Basic.MainMenu.Edit.RedoAction="&Redo $1"
+Basic.MainMenu.Edit.LockPreview="&Lock Preview"
+Basic.MainMenu.Edit.Scale="Preview &Scaling"
+Basic.MainMenu.Edit.Scale.Window="Scale to Window"
+Basic.MainMenu.Edit.Scale.Canvas="Canvas (%1x%2)"
+Basic.MainMenu.Edit.Scale.Output="Output (%1x%2)"
+Basic.MainMenu.Edit.Transform="&Transform"
+Basic.MainMenu.Edit.Transform.EditTransform="&Edit Transform..."
+Basic.MainMenu.Edit.Transform.CopyTransform="Copy Transform"
+Basic.MainMenu.Edit.Transform.PasteTransform="Paste Transform"
+Basic.MainMenu.Edit.Transform.ResetTransform="&Reset Transform"
+Basic.MainMenu.Edit.Transform.Rotate90CW="Rotate 90 degrees CW"
+Basic.MainMenu.Edit.Transform.Rotate90CCW="Rotate 90 degrees CCW"
+Basic.MainMenu.Edit.Transform.Rotate180="Rotate 180 degrees"
+Basic.MainMenu.Edit.Transform.FlipHorizontal="Flip &Horizontal"
+Basic.MainMenu.Edit.Transform.FlipVertical="Flip &Vertical"
+Basic.MainMenu.Edit.Transform.FitToScreen="&Fit to screen"
+Basic.MainMenu.Edit.Transform.StretchToScreen="&Stretch to screen"
+Basic.MainMenu.Edit.Transform.CenterToScreen="&Center to screen"
+Basic.MainMenu.Edit.Transform.VerticalCenter="Center Vertically"
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Center Horizontally"
+Basic.MainMenu.Edit.Order="&Order"
+Basic.MainMenu.Edit.Order.MoveUp="Move &Up"
+Basic.MainMenu.Edit.Order.MoveDown="Move &Down"
+Basic.MainMenu.Edit.Order.MoveToTop="Move to &Top"
+Basic.MainMenu.Edit.Order.MoveToBottom="Move to &Bottom"
+Basic.MainMenu.Edit.AdvAudio="&Advanced Audio Properties"
+
+# basic mode view menu
+Basic.MainMenu.View="&View"
+Basic.MainMenu.View.Toolbars="&Toolbars"
+Basic.MainMenu.View.Docks="Docks"
+Basic.MainMenu.View.Docks.ResetUI="Reset UI"
+Basic.MainMenu.View.Docks.LockUI="Lock UI"
+Basic.MainMenu.View.Docks.CustomBrowserDocks="Custom Browser Docks..."
+Basic.MainMenu.View.ListboxToolbars="Scene/Source List Buttons"
+Basic.MainMenu.View.ContextBar="Source Toolbar"
+Basic.MainMenu.View.SceneTransitions="S&cene Transitions"
+Basic.MainMenu.View.SourceIcons="Source &Icons"
+Basic.MainMenu.View.StatusBar="&Status Bar"
+Basic.MainMenu.View.Fullscreen.Interface="Fullscreen Interface"
+
+# basic mode profile/scene collection menus
+Basic.MainMenu.SceneCollection="&Scene Collection"
+Basic.MainMenu.Profile="&Profile"
+Basic.MainMenu.Profile.Import="Import Profile"
+Basic.MainMenu.Profile.Export="Export Profile"
+Basic.MainMenu.SceneCollection.Import="Import Scene Collection"
+Basic.MainMenu.SceneCollection.Export="Export Scene Collection"
+Basic.MainMenu.Profile.Exists="The profile already exists"
+Basic.MainMenu.SceneCollection.Exists="The scene collection already exists"
+
+# basic mode help menu
+Basic.MainMenu.Tools="&Tools"
+
+# basic mode help menu
+Basic.MainMenu.Help="&Help"
+Basic.MainMenu.Help.HelpPortal="Help &Portal"
+Basic.MainMenu.Help.Website="Visit &Website"
+Basic.MainMenu.Help.Discord="Join &Discord Server"
+Basic.MainMenu.Help.Logs="&Log Files"
+Basic.MainMenu.Help.Logs.ShowLogs="&Show Log Files"
+Basic.MainMenu.Help.Logs.UploadCurrentLog="Upload &Current Log File"
+Basic.MainMenu.Help.Logs.UploadLastLog="Upload &Last Log File"
+Basic.MainMenu.Help.Logs.ViewCurrentLog="&View Current Log"
+Basic.MainMenu.Help.CheckForUpdates="Check For Updates"
+Basic.MainMenu.Help.CrashLogs="Crash &Reports"
+Basic.MainMenu.Help.CrashLogs.ShowLogs="&Show Crash Reports"
+Basic.MainMenu.Help.CrashLogs.UploadLastLog="Upload &Last Crash Report"
+Basic.MainMenu.Help.About="&About"
+
+# basic mode settings dialog
+Basic.Settings.ProgramRestart="The program must be restarted for these settings to take effect."
+Basic.Settings.ConfirmTitle="Confirm Changes"
+Basic.Settings.Confirm="You have unsaved changes. Save changes?"
+
+# basic mode 'general' settings
+Basic.Settings.General="General"
+Basic.Settings.General.Theme="Theme"
+Basic.Settings.General.Language="Language"
+Basic.Settings.General.EnableAutoUpdates="Automatically check for updates on startup"
+Basic.Settings.General.OpenStatsOnStartup="Open stats dialog on startup"
+Basic.Settings.General.WarnBeforeStartingStream="Show confirmation dialog when starting streams"
+Basic.Settings.General.WarnBeforeStoppingStream="Show confirmation dialog when stopping streams"
+Basic.Settings.General.WarnBeforeStoppingRecord="Show confirmation dialog when stopping recording"
+Basic.Settings.General.Projectors="Projectors"
+Basic.Settings.General.HideProjectorCursor="Hide cursor over projectors"
+Basic.Settings.General.ProjectorAlwaysOnTop="Make projectors always on top"
+Basic.Settings.General.Snapping="Source Alignment Snapping"
+Basic.Settings.General.ScreenSnapping="Snap Sources to edge of screen"
+Basic.Settings.General.CenterSnapping="Snap Sources to horizontal and vertical center"
+Basic.Settings.General.SourceSnapping="Snap Sources to other sources"
+Basic.Settings.General.SnapDistance="Snap Sensitivity"
+Basic.Settings.General.RecordWhenStreaming="Automatically record when streaming"
+Basic.Settings.General.KeepRecordingWhenStreamStops="Keep recording when stream stops"
+Basic.Settings.General.ReplayBufferWhileStreaming="Automatically start replay buffer when streaming"
+Basic.Settings.General.KeepReplayBufferStreamStops="Keep replay buffer active when stream stops"
+Basic.Settings.General.SysTray="System Tray"
+Basic.Settings.General.SysTrayWhenStarted="Minimize to system tray when started"
+Basic.Settings.General.SystemTrayHideMinimize="Always minimize to system tray instead of task bar"
+Basic.Settings.General.SaveProjectors="Save projectors on exit"
+Basic.Settings.General.Preview="Preview"
+Basic.Settings.General.OverflowHidden="Hide overflow"
+Basic.Settings.General.OverflowAlwaysVisible="Overflow always visible"
+Basic.Settings.General.OverflowSelectionHidden="Show overflow even when source is invisible"
+Basic.Settings.General.Importers="Importers"
+Basic.Settings.General.AutomaticCollectionSearch="Search known locations for scene collections when importing"
+Basic.Settings.General.SwitchOnDoubleClick="Transition to scene when double-clicked"
+Basic.Settings.General.StudioPortraitLayout="Enable portrait/vertical layout"
+Basic.Settings.General.TogglePreviewProgramLabels="Show preview/program labels"
+Basic.Settings.General.Multiview="Multiview"
+Basic.Settings.General.Multiview.MouseSwitch="Click to switch between scenes"
+Basic.Settings.General.Multiview.DrawSourceNames="Show scene names"
+Basic.Settings.General.Multiview.DrawSafeAreas="Draw safe areas (EBU R 95)"
+Basic.Settings.General.MultiviewLayout="Multiview Layout"
+Basic.Settings.General.MultiviewLayout.Horizontal.Top="Horizontal, Top (8 Scenes)"
+Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="Horizontal, Bottom (8 Scenes)"
+Basic.Settings.General.MultiviewLayout.Vertical.Left="Vertical, Left (8 Scenes)"
+Basic.Settings.General.MultiviewLayout.Vertical.Right="Vertical, Right (8 Scenes)"
+Basic.Settings.General.MultiviewLayout.Horizontal.Extended.Top="Horizontal, Top (24 Scenes)"
+
+# basic mode 'stream' settings
+Basic.Settings.Stream="Stream"
+Basic.Settings.Stream.StreamType="Stream Type"
+Basic.Settings.Stream.Custom.UseAuthentication="Use authentication"
+Basic.Settings.Stream.Custom.Username="Username"
+Basic.Settings.Stream.Custom.Password="Password"
+Basic.Settings.Stream.BandwidthTestMode="Enable Bandwidth Test Mode"
+Basic.Settings.Stream.TTVAddon="Twitch Chat Add-Ons"
+Basic.Settings.Stream.TTVAddon.None="None"
+Basic.Settings.Stream.TTVAddon.BTTV="BetterTTV"
+Basic.Settings.Stream.TTVAddon.FFZ="FrankerFaceZ"
+Basic.Settings.Stream.TTVAddon.Both="BetterTTV and FrankerFaceZ"
+Basic.Settings.Stream.MissingSettingAlert="Missing Stream Setup"
+Basic.Settings.Stream.StreamSettingsWarning="Open Settings"
+Basic.Settings.Stream.MissingUrlAndApiKey="URL and Stream Key are missing.\n\nOpen settings to enter the URL and Stream Key in the 'stream' tab."
+Basic.Settings.Stream.MissingUrl="Stream URL is missing.\n\nOpen settings to enter the URL in the 'Stream' tab."
+Basic.Settings.Stream.MissingStreamKey="Stream key is missing.\n\nOpen settings to enter the stream key in the 'Stream' tab."
+Basic.Settings.Stream.IgnoreRecommended="Ignore streaming service setting recommendations"
+Basic.Settings.Stream.IgnoreRecommended.Warn.Title="Override Recommended Settings"
+Basic.Settings.Stream.IgnoreRecommended.Warn.Text="Warning: Ignoring the service's limitations may result in degraded stream quality or prevent you from streaming.\n\nContinue?"
+Basic.Settings.Stream.Recommended.MaxVideoBitrate="Maximum Video Bitrate: %1 kbps"
+Basic.Settings.Stream.Recommended.MaxAudioBitrate="Maximum Audio Bitrate: %1 kbps"
+Basic.Settings.Stream.Recommended.MaxResolution="Maximum Resolution: %1"
+Basic.Settings.Stream.Recommended.MaxFPS="Maximum FPS: %1"
+
+# basic mode 'output' settings
+Basic.Settings.Output="Output"
+Basic.Settings.Output.Format="Recording Format"
+Basic.Settings.Output.Encoder="Encoder"
+Basic.Settings.Output.SelectDirectory="Select Recording Directory"
+Basic.Settings.Output.SelectFile="Select Recording File"
+Basic.Settings.Output.DynamicBitrate="Dynamically change bitrate to manage congestion"
+Basic.Settings.Output.DynamicBitrate.Beta="Dynamically change bitrate to manage congestion (Beta)"
+Basic.Settings.Output.DynamicBitrate.TT="Instead of dropping frames to reduce congestion, dynamically changes bitrate on the fly.\n\nNote that this can increase delay to viewers if there is significant sudden congestion.\nWhen the bitrate drops, it can take up to a few minutes to restore.\n\nCurrently only supported for RTMP."
+Basic.Settings.Output.Mode="Output Mode"
+Basic.Settings.Output.Mode.Simple="Simple"
+Basic.Settings.Output.Mode.Adv="Advanced"
+Basic.Settings.Output.Mode.FFmpeg="FFmpeg Output"
+Basic.Settings.Output.UseReplayBuffer="Enable Replay Buffer"
+Basic.Settings.Output.ReplayBuffer.SecondsMax="Maximum Replay Time"
+Basic.Settings.Output.ReplayBuffer.MegabytesMax="Maximum Memory (Megabytes)"
+Basic.Settings.Output.ReplayBuffer.Estimate="Estimated memory usage: %1 MB"
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Cannot estimate memory usage. Please set maximum memory limit."
+Basic.Settings.Output.ReplayBuffer.Prefix="Replay Buffer Filename Prefix"
+Basic.Settings.Output.ReplayBuffer.Suffix="Suffix"
+Basic.Settings.Output.Simple.SavePath="Recording Path"
+Basic.Settings.Output.Simple.RecordingQuality="Recording Quality"
+Basic.Settings.Output.Simple.RecordingQuality.Stream="Same as stream"
+Basic.Settings.Output.Simple.RecordingQuality.Small="High Quality, Medium File Size"
+Basic.Settings.Output.Simple.RecordingQuality.HQ="Indistinguishable Quality, Large File Size"
+Basic.Settings.Output.Simple.RecordingQuality.Lossless="Lossless Quality, Tremendously Large File Size"
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Warning: The streaming video bitrate will be set to %1, which is the upper limit for the current streaming service."
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Warning: The streaming audio bitrate will be set to %1, which is the upper limit for the current streaming service."
+Basic.Settings.Output.Simple.Warn.CannotPause="Warning: Recordings cannot be paused if the recording quality is set to \"Same as stream\"."
+Basic.Settings.Output.Simple.Warn.Encoder="Warning: Recording with a software encoder at a different quality than the stream will require extra CPU usage if you stream and record at the same time."
+Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes! Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates. Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
+Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use lossless quality?"
+Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
+Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
+Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Hardware (QSV)"
+Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Hardware (AMD)"
+Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Hardware (NVENC)"
+Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 low CPU usage preset, increases file size)"
+Basic.Settings.Output.Simple.TwitchVodTrack="Twitch VOD Track (Uses Track 2)"
+Basic.Settings.Output.Warn.EnforceResolutionFPS.Title="Incompatible Resolution/Framerate"
+Basic.Settings.Output.Warn.EnforceResolutionFPS.Msg="This streaming service does not support your current output resolution and/or framerate. They will be changed to the closest compatible value:\n\n%1\n\nDo you want to continue?"
+Basic.Settings.Output.Warn.EnforceResolutionFPS.Resolution="Resolution: %1"
+Basic.Settings.Output.Warn.EnforceResolutionFPS.FPS="FPS: %1"
+Basic.Settings.Output.VideoBitrate="Video Bitrate"
+Basic.Settings.Output.AudioBitrate="Audio Bitrate"
+Basic.Settings.Output.Reconnect="Automatically Reconnect"
+Basic.Settings.Output.RetryDelay="Retry Delay"
+Basic.Settings.Output.MaxRetries="Maximum Retries"
+Basic.Settings.Output.Advanced="Enable Advanced Encoder Settings"
+Basic.Settings.Output.EncoderPreset="Encoder Preset"
+Basic.Settings.Output.CustomEncoderSettings="Custom Encoder Settings"
+Basic.Settings.Output.CustomMuxerSettings="Custom Muxer Settings"
+Basic.Settings.Output.NoSpaceFileName="Generate File Name without Space"
+
+# basic mode 'output' settings - advanced section
+Basic.Settings.Output.Adv.Rescale="Rescale Output"
+Basic.Settings.Output.Adv.AudioTrack="Audio Track"
+Basic.Settings.Output.Adv.Streaming="Streaming"
+Basic.Settings.Output.Adv.Audio.Track1="Track 1"
+Basic.Settings.Output.Adv.Audio.Track2="Track 2"
+Basic.Settings.Output.Adv.Audio.Track3="Track 3"
+Basic.Settings.Output.Adv.Audio.Track4="Track 4"
+Basic.Settings.Output.Adv.Audio.Track5="Track 5"
+Basic.Settings.Output.Adv.Audio.Track6="Track 6"
+Basic.Settings.Output.Adv.TwitchVodTrack="Twitch VOD Track"
+
+# basic mode 'output' settings - advanced section - recording subsection
+Basic.Settings.Output.Adv.Recording="Recording"
+Basic.Settings.Output.Adv.Recording.RecType="Recording Type"
+Basic.Settings.Output.Adv.Recording.Type="Type"
+Basic.Settings.Output.Adv.Recording.Type.Standard="Standard"
+Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Custom Output (FFmpeg)"
+Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Use stream encoder)"
+Basic.Settings.Output.Adv.Recording.Filename="Filename Formatting"
+Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Overwrite if file exists"
+Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg Output Type"
+Basic.Settings.Output.Adv.FFmpeg.Type.URL="Output to URL"
+Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Output to File"
+Basic.Settings.Output.Adv.FFmpeg.SaveFilter.Common="Common recording formats"
+Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="All Files"
+Basic.Settings.Output.Adv.FFmpeg.SavePathURL="File path or URL"
+Basic.Settings.Output.Adv.FFmpeg.Format="Container Format"
+Basic.Settings.Output.Adv.FFmpeg.FormatAudio="Audio"
+Basic.Settings.Output.Adv.FFmpeg.FormatVideo="Video"
+Basic.Settings.Output.Adv.FFmpeg.FormatDefault="Default Format"
+Basic.Settings.Output.Adv.FFmpeg.FormatDesc="Container Format Description"
+Basic.Settings.Output.Adv.FFmpeg.FormatDescDef="Audio/Video Codec guessed from File path or URL"
+Basic.Settings.Output.Adv.FFmpeg.AVEncoderDefault="Default Encoder"
+Basic.Settings.Output.Adv.FFmpeg.AVEncoderDisable="Disable Encoder"
+Basic.Settings.Output.Adv.FFmpeg.VEncoder="Video Encoder"
+Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Video Encoder Settings (if any)"
+Basic.Settings.Output.Adv.FFmpeg.AEncoder="Audio Encoder"
+Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audio Encoder Settings (if any)"
+Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer Settings (if any)"
+Basic.Settings.Output.Adv.FFmpeg.GOPSize="Keyframe interval (frames)"
+Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Show all codecs (even if potentially incompatible)"
+
+# Screenshot
+Screenshot="Screenshot Output"
+Screenshot.SourceHotkey="Screenshot Selected Source"
+Screenshot.StudioProgram="Screenshot (Program)"
+Screenshot.Preview="Screenshot (Preview)"
+Screenshot.Scene="Screenshot (Scene)"
+Screenshot.Source="Screenshot (Source)"
+
+# basic mode 'output' settings - advanced section - recording subsection - completer
+FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z\n%FPS\n%CRES\n%ORES\n%VF"
+
+# basic mode 'output' settings - advanced section - recording subsection - TT
+FilenameFormatting.TT="%CCYY Year, four digits\n%YY Year, last two digits (00-99)\n%MM Month as a decimal number (01-12)\n%DD Day of the month, zero-padded (01-31)\n%hh Hour in 24h format (00-23)\n%mm Minute (00-59)\n%ss Second (00-61)\n%% A % sign\n%a Abbreviated weekday name\n%A Full weekday name\n%b Abbreviated month name\n%B Full month name\n%d Day of the month, zero-padded (01-31)\n%H Hour in 24h format (00-23)\n%I Hour in 12h format (01-12)\n%m Month as a decimal number (01-12)\n%M Minute (00-59)\n%p AM or PM designation\n%S Second (00-61)\n%y Year, last two digits (00-99)\n%Y Year\n%z ISO 8601 offset from UTC in timezone\n%Z Timezone name or abbreviation\n%FPS Frames per second\n%CRES Base (canvas) resolution\n%ORES Output (scaled) resolution\n%VF Video format"
+
+# basic mode 'video' settings
+Basic.Settings.Video="Video"
+Basic.Settings.Video.Adapter="Video Adapter"
+Basic.Settings.Video.BaseResolution="Base (Canvas) Resolution"
+Basic.Settings.Video.ScaledResolution="Output (Scaled) Resolution"
+Basic.Settings.Video.DownscaleFilter="Downscale Filter"
+Basic.Settings.Video.DisableAeroWindows="Disable Aero (Windows only)"
+Basic.Settings.Video.FPS="FPS"
+Basic.Settings.Video.FPSCommon="Common FPS Values"
+Basic.Settings.Video.FPSInteger="Integer FPS Value"
+Basic.Settings.Video.FPSFraction="Fractional FPS Value"
+Basic.Settings.Video.Numerator="Numerator"
+Basic.Settings.Video.Denominator="Denominator"
+Basic.Settings.Video.Renderer="Renderer"
+Basic.Settings.Video.InvalidResolution="Invalid resolution value. Must be [width]x[height] (i.e. 1920x1080)"
+Basic.Settings.Video.CurrentlyActive="Video output is currently active. Please turn off any outputs to change video settings."
+Basic.Settings.Video.DisableAero="Disable Aero"
+
+# scale filters
+Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (Fastest, but blurry if scaling)"
+Basic.Settings.Video.DownscaleFilter.Bicubic="Bicubic (Sharpened scaling, 16 samples)"
+Basic.Settings.Video.DownscaleFilter.Lanczos="Lanczos (Sharpened scaling, 36 samples)"
+Basic.Settings.Video.DownscaleFilter.Area="Area (Weighted sum, 4/6/9 samples)"
+
+# basic mode 'audio' settings
+Basic.Settings.Audio="Audio"
+Basic.Settings.Audio.SampleRate="Sample Rate"
+Basic.Settings.Audio.Channels="Channels"
+Basic.Settings.Audio.Meters="Meters"
+Basic.Settings.Audio.MeterDecayRate="Decay Rate"
+Basic.Settings.Audio.MeterDecayRate.Fast="Fast"
+Basic.Settings.Audio.MeterDecayRate.Medium="Medium (Type I PPM)"
+Basic.Settings.Audio.MeterDecayRate.Slow="Slow (Type II PPM)"
+Basic.Settings.Audio.PeakMeterType="Peak Meter Type"
+Basic.Settings.Audio.PeakMeterType.SamplePeak="Sample Peak"
+Basic.Settings.Audio.PeakMeterType.TruePeak="True Peak (Higher CPU usage)"
+Basic.Settings.Audio.MultiChannelWarning.Enabled="WARNING: Surround sound audio is enabled."
+Basic.Settings.Audio.MultichannelWarning="If streaming, check to see if your streaming service supports both surround sound ingest and surround sound playback. Facebook 360 Live is one example where surround sound is fully supported. Although Facebook Live and YouTube Live both accept surround ingest, Facebook Live downmixes to stereo, and YouTube Live plays only two channels.\n\nOBS audio filters are compatible with surround sound, though VST plugin support isn't guaranteed."
+Basic.Settings.Audio.MultichannelWarning.Title="Enable surround sound audio?"
+Basic.Settings.Audio.MultichannelWarning.Confirm="Are you sure you want to enable surround sound audio?"
+Basic.Settings.Audio.Devices="Global Audio Devices"
+Basic.Settings.Audio.DesktopDevice="Desktop Audio"
+Basic.Settings.Audio.DesktopDevice2="Desktop Audio 2"
+Basic.Settings.Audio.AuxDevice="Mic/Auxiliary Audio"
+Basic.Settings.Audio.AuxDevice2="Mic/Auxiliary Audio 2"
+Basic.Settings.Audio.AuxDevice3="Mic/Auxiliary Audio 3"
+Basic.Settings.Audio.AuxDevice4="Mic/Auxiliary Audio 4"
+Basic.Settings.Audio.EnablePushToMute="Enable Push-to-mute"
+Basic.Settings.Audio.PushToMuteDelay="Push-to-mute delay"
+Basic.Settings.Audio.EnablePushToTalk="Enable Push-to-talk"
+Basic.Settings.Audio.PushToTalkDelay="Push-to-talk delay"
+Basic.Settings.Audio.UnknownAudioDevice="[Device not connected or not available]"
+Basic.Settings.Audio.Disabled="Disabled"
+
+# basic mode 'advanced' settings
+Basic.Settings.Advanced="Advanced"
+Basic.Settings.Advanced.General.ProcessPriority="Process Priority"
+Basic.Settings.Advanced.General.ProcessPriority.High="High"
+Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Above Normal"
+Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
+Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Below Normal"
+Basic.Settings.Advanced.General.ProcessPriority.Idle="Idle"
+Basic.Settings.Advanced.FormatWarning="Warning: Color formats other than NV12 are primarily intended for recording, and are not recommended when streaming. Streaming may incur increased CPU usage due to color format conversion."
+Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffering Time"
+Basic.Settings.Advanced.Video.ColorFormat="Color Format"
+Basic.Settings.Advanced.Video.ColorSpace="Color Space"
+Basic.Settings.Advanced.Video.ColorRange="Color Range"
+Basic.Settings.Advanced.Video.ColorRange.Partial="Partial"
+Basic.Settings.Advanced.Video.ColorRange.Full="Full"
+Basic.Settings.Advanced.Audio.MonitoringDevice="Monitoring Device"
+Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Default"
+Basic.Settings.Advanced.Audio.DisableAudioDucking="Disable Windows audio ducking"
+Basic.Settings.Advanced.StreamDelay="Stream Delay"
+Basic.Settings.Advanced.StreamDelay.Duration="Duration"
+Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase delay) when reconnecting"
+Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
+Basic.Settings.Advanced.Network="Network"
+Basic.Settings.Advanced.Network.BindToInterface="Bind to interface"
+Basic.Settings.Advanced.Network.BindToIP="Bind to IP"
+Basic.Settings.Advanced.Network.EnableNewSocketLoop="Enable network optimizations"
+Basic.Settings.Advanced.Network.EnableLowLatencyMode="Enable TCP pacing"
+Basic.Settings.Advanced.Network.TCPPacing.Tooltip="Attempts to make RTMP output friendlier to other latency sensitive applications on the network by regulating the rate of transmission.\nIt may increase the risk of dropped frames on unstable connections."
+Basic.Settings.Advanced.Hotkeys.HotkeyFocusBehavior="Hotkey Focus Behavior"
+Basic.Settings.Advanced.Hotkeys.NeverDisableHotkeys="Never disable hotkeys"
+Basic.Settings.Advanced.Hotkeys.DisableHotkeysInFocus="Disable hotkeys when main window is in focus"
+Basic.Settings.Advanced.Hotkeys.DisableHotkeysOutOfFocus="Disable hotkeys when main window is not in focus"
+Basic.Settings.Advanced.AutoRemux="Automatically remux to mp4"
+Basic.Settings.Advanced.AutoRemux.MP4="(record as mkv)"
+
+# advanced audio properties
+Basic.AdvAudio="Advanced Audio Properties"
+Basic.AdvAudio.ActiveOnly="Active Sources Only"
+Basic.AdvAudio.Name="Name"
+Basic.AdvAudio.Volume="Volume"
+Basic.AdvAudio.VolumeSource="Volume for '%1'"
+Basic.AdvAudio.Mono="Mono"
+Basic.AdvAudio.MonoSource="Mono Downmix for '%1'"
+Basic.AdvAudio.Balance="Balance"
+Basic.AdvAudio.BalanceSource="Balance for '%1'"
+Basic.AdvAudio.SyncOffset="Sync Offset"
+Basic.AdvAudio.SyncOffsetSource="Sync Offset for '%1'"
+Basic.AdvAudio.Monitoring="Audio Monitoring"
+Basic.AdvAudio.Monitoring.None="Monitor Off"
+Basic.AdvAudio.Monitoring.MonitorOnly="Monitor Only (mute output)"
+Basic.AdvAudio.Monitoring.Both="Monitor and Output"
+Basic.AdvAudio.MonitoringSource="Audio Monitoring for '%1'"
+Basic.AdvAudio.AudioTracks="Tracks"
+
+# basic mode 'hotkeys' settings
+Basic.Settings.Hotkeys="Hotkeys"
+Basic.Settings.Hotkeys.Pair="Key combinations shared with '%1' act as toggles"
+Basic.Settings.Hotkeys.Filter="Filter"
+
+# basic mode hotkeys
+Basic.Hotkeys.SelectScene="Switch to scene"
+
+# system tray
+Basic.SystemTray.Show="Show"
+Basic.SystemTray.Hide="Hide"
+
+# system tray messages
+Basic.SystemTray.Message.Reconnecting="Disconnected. Reconnecting..."
+
+# hotkeys that may lack translation on certain operating systems
+Hotkeys.Insert="Insert"
+Hotkeys.Delete="Delete"
+Hotkeys.Home="Home"
+Hotkeys.End="End"
+Hotkeys.PageUp="Page Up"
+Hotkeys.PageDown="Page Down"
+Hotkeys.NumLock="Num Lock"
+Hotkeys.ScrollLock="Scroll Lock"
+Hotkeys.CapsLock="Caps Lock"
+Hotkeys.Backspace="Backspace"
+Hotkeys.Tab="Tab"
+Hotkeys.Print="Print"
+Hotkeys.Pause="Pause"
+Hotkeys.Left="Left"
+Hotkeys.Right="Right"
+Hotkeys.Up="Up"
+Hotkeys.Down="Down"
+Hotkeys.Windows="Windows"
+Hotkeys.Super="Super"
+Hotkeys.Menu="Menu"
+Hotkeys.Space="Space"
+Hotkeys.NumpadNum="Numpad %1"
+Hotkeys.NumpadMultiply="Numpad Multiply"
+Hotkeys.NumpadDivide="Numpad Divide"
+Hotkeys.NumpadAdd="Numpad Add"
+Hotkeys.NumpadSubtract="Numpad Subtract"
+Hotkeys.NumpadDecimal="Numpad Decimal"
+Hotkeys.AppleKeypadNum="%1 (Keypad)"
+Hotkeys.AppleKeypadMultiply="* (Keypad)"
+Hotkeys.AppleKeypadDivide="/ (Keypad)"
+Hotkeys.AppleKeypadAdd="+ (Keypad)"
+Hotkeys.AppleKeypadSubtract="- (Keypad)"
+Hotkeys.AppleKeypadDecimal=". (Keypad)"
+Hotkeys.AppleKeypadEqual="= (Keypad)"
+Hotkeys.MouseButton="Mouse %1"
+Hotkeys.Escape="Esc"
+
+# audio hotkeys
+Mute="Mute"
+Unmute="Unmute"
+Push-to-mute="Push-to-mute"
+Push-to-talk="Push-to-talk"
+
+# scene item hotkeys
+SceneItemShow="Show '%1'"
+SceneItemHide="Hide '%1'"
+
+# Output warnings
+OutputWarnings.NoTracksSelected="You must select at least one track"
+OutputWarnings.MP4Recording="Warning: Recordings saved to MP4/MOV will be unrecoverable if the file cannot be finalized (e.g. as a result of BSODs, power losses, etc.). If you want to record multiple audio tracks consider using MKV and remux the recording to MP4/MOV after it is finished (File → Remux Recordings)"
+OutputWarnings.CannotPause="Warning: Recordings cannot be paused if the recording encoder is set to \"(Use stream encoder)\""
+
+# deleting final scene
+FinalScene.Title="Delete Scene"
+FinalScene.Text="There needs to be at least one scene."
+
+# no sources
+NoSources.Title="No Sources"
+NoSources.Text="It looks like you haven't added any video sources yet, so you will only be outputting a blank screen. Are you sure you want to do this?"
+NoSources.Text.AddSource="You can add sources by clicking the + icon under the Sources box in the main window at any time."
+NoSources.Label="You don't have any sources.\nClick the + button below,\nor right click here to add one."
+
+# Scene item color selection
+ChangeBG="Set Color"
+CustomColor="Custom Color"
+
+# Global settings for the browser source
+BrowserSource.EnableHardwareAcceleration="Enable Browser Source Hardware Acceleration"
+
+# about dialog
+About="About"
+About.Info="OBS Studio is a free and open source video recording and live streaming software."
+About.Donate="Make a Contribution"
+About.GetInvolved="Get Involved"
+About.Authors="Authors"
+About.License="License"
+About.Contribute="Support the OBS Project"
+
+# Drag-drop URL
+AddUrl.Title="Add Source via URL"
+AddUrl.Text="You have dragged a URL into OBS. This will automatically add the link as a source. Continue?"
+AddUrl.Text.Url="URL: %1"
+
+# Dynamic output size
+ResizeOutputSizeOfSource="Resize output (source size)"
+ResizeOutputSizeOfSource.Text="The base and output resolutions will be resized to the size of the current source."
+ResizeOutputSizeOfSource.Continue="Do you want to continue?"
+
+PreviewTransition="Preview Transition"
+
+# Import Dialog
+Importer="Scene Collection Importer"
+Importer.SelectCollection="Select a Scene Collection"
+Importer.Collection="Scene Collection"
+Importer.HelpText="Add files to this window to import collections from OBS or other supported programs."
+Importer.Path="Collection Path"
+Importer.Program="Detected Application"
+Importer.AutomaticCollectionPrompt="Automatically Search for Scene Collections"
+Importer.AutomaticCollectionText="OBS can automatically find importable scene collections from supported third-party programs. Would you like OBS to automatically find collections for you?\n\nYou can change this later in Settings > General > Importers."
+
+# Importers
+OBSStudio="OBS Studio"
+OBSClassic="OBS Classic"
+Streamlabs="Streamlabs"
+XSplitBroadcaster="XSplit Broadcaster"
+
+# OBS restart
+Restart="Restart"
+NeedsRestart="OBS Studio needs to be restarted. Do you want to restart now?"
+
+# Context Bar
+ContextBar.NoSelectedSource="No source selected"
+ContextBar.ResetTransform="Reset Transform"
+ContextBar.FitToCanvas="Fit to Canvas"
+
+# Context Bar Media Controls
+ContextBar.MediaControls.PlayMedia="Play Media"
+ContextBar.MediaControls.PauseMedia="Pause Media"
+ContextBar.MediaControls.StopMedia="Stop Media"
+ContextBar.MediaControls.RestartMedia="Restart Media"
+ContextBar.MediaControls.PlaylistNext="Next in Playlist"
+ContextBar.MediaControls.PlaylistPrevious="Previous in Playlist"
+ContextBar.MediaControls.MediaProperties="Media Properties"
+ContextBar.MediaControls.BlindSeek="Media Seek Widget"
diff --git a/use_system_ftl-sdk.patch b/use_system_ftl-sdk.patch
deleted file mode 100644
index 0604fdc97489..000000000000
--- a/use_system_ftl-sdk.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From a920e39524cc989474136e6371b662d28d51a185 Mon Sep 17 00:00:00 2001
-From: Sefa Eyeoglu <contact@scrumplex.net>
-Date: Tue, 5 Jan 2021 17:53:52 +0100
-Subject: [PATCH] obs-outputs: Use system-wide FTL if present
-
-To support FTL, it needed to be present in-tree to be compiled. This PR
-adds support for system-wide installations of libftl. It uses
-pkg-config to find the system-wide installation. If pkg-config can't
-provide libftl we just fall back to using the in-tree submodule. If
-that's also not available it won't be included at all like before.
----
- plugins/obs-outputs/CMakeLists.txt | 26 +++++++++++++++++++++++---
- 1 file changed, 23 insertions(+), 3 deletions(-)
-
-diff --git a/plugins/obs-outputs/CMakeLists.txt b/plugins/obs-outputs/CMakeLists.txt
-index 404e34f015c..3ec627396e7 100644
---- a/plugins/obs-outputs/CMakeLists.txt
-+++ b/plugins/obs-outputs/CMakeLists.txt
-@@ -3,6 +3,8 @@ project(obs-outputs)
- set(WITH_RTMPS AUTO CACHE STRING "Enable RTMPS support with mbedTLS")
- set_property(CACHE WITH_RTMPS PROPERTY STRINGS AUTO ON OFF)
-
-+find_package(PkgConfig)
-+
- option(STATIC_MBEDTLS "Statically link mbedTLS into binary" OFF)
-
- if (WITH_RTMPS STREQUAL "AUTO")
-@@ -23,7 +25,21 @@ else()
- add_definitions(-DNO_CRYPTO)
- endif()
-
--if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt")
-+set(COMPILE_FTL FALSE)
-+
-+if (PKG_CONFIG_FOUND)
-+ pkg_check_modules(FTL libftl)
-+endif()
-+
-+if (FTL_FOUND)
-+ find_package(Libcurl REQUIRED)
-+ message(STATUS "Found ftl-sdk (system): ftl outputs enabled")
-+
-+ set(ftl_SOURCES ftl-stream.c)
-+
-+ include_directories(${LIBCURL_INCLUDE_DIRS} ${FTL_INCLUDE_DIRS})
-+ set(COMPILE_FTL TRUE)
-+elseif (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt")
- find_package(Libcurl REQUIRED)
- message(STATUS "Found ftl-sdk: ftl outputs enabled")
-
-@@ -74,8 +90,6 @@ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt")
- include_directories(ftl-sdk/libftl)
-
- set(COMPILE_FTL TRUE)
--else()
-- set(COMPILE_FTL FALSE)
- endif()
-
- configure_file(
-@@ -169,6 +183,12 @@ add_library(obs-outputs MODULE
- ${obs-outputs_HEADERS}
- ${obs-outputs_librtmp_SOURCES}
- ${obs-outputs_librtmp_HEADERS})
-+
-+if(FTL_FOUND)
-+ target_link_libraries(obs-outputs ${FTL_LIBRARIES})
-+ target_include_directories(obs-outputs PUBLIC ${FTL_INCLUDE_DIRS})
-+endif()
-+
- target_link_libraries(obs-outputs
- libobs
- ${MBEDTLS_LIBRARIES}