Translate certain button names but not all

Some button names should be translated, for instance Up, Left and such.
At the same time, some other button names shouldn't be translated,
for reasons that might be less obvious. In 0146456af, I removed the
_trans markers for button names that never need to be translated
(such as A and B), but that isn't actually enough to ensure that
DolphinWX won't try to translate them anyway. This commit adds a bool
that explicitly tells the GUI whether a button name should be translated.
Otherwise we'll have problems like the GUI treating the button name "B"
(which isn't supposed to be translated) as matching the translatable
string "B" (being an abbreviation of "bytes"), meaning that the button
"B" will be labeled "o" when running Dolphin in French (after
translations get pulled from Transifex the next time).

By the way, while it turned out that DolphinWX translated all button
names, it also turned out that DolphinQt2 translated *no* button names.
Go figure. This commit makes them consistent with each other.
This commit is contained in:
JosJuice 2018-03-30 21:42:26 +02:00
parent 71dd2d9d4c
commit 3f13dbe087
25 changed files with 95 additions and 84 deletions

View File

@ -56,27 +56,27 @@ GCKeyboard::GCKeyboard(const unsigned int index) : m_index(index)
// buttons
groups.emplace_back(m_keys0x = new ControllerEmu::Buttons(_trans("Keys")));
for (const char* key : named_keys0)
m_keys0x->controls.emplace_back(new ControllerEmu::Input(key));
m_keys0x->controls.emplace_back(new ControllerEmu::Input(false, key));
groups.emplace_back(m_keys1x = new ControllerEmu::Buttons(_trans("Keys")));
for (const char* key : named_keys1)
m_keys1x->controls.emplace_back(new ControllerEmu::Input(key));
m_keys1x->controls.emplace_back(new ControllerEmu::Input(false, key));
groups.emplace_back(m_keys2x = new ControllerEmu::Buttons(_trans("Keys")));
for (const char* key : named_keys2)
m_keys2x->controls.emplace_back(new ControllerEmu::Input(key));
m_keys2x->controls.emplace_back(new ControllerEmu::Input(false, key));
groups.emplace_back(m_keys3x = new ControllerEmu::Buttons(_trans("Keys")));
for (const char* key : named_keys3)
m_keys3x->controls.emplace_back(new ControllerEmu::Input(key));
m_keys3x->controls.emplace_back(new ControllerEmu::Input(false, key));
groups.emplace_back(m_keys4x = new ControllerEmu::Buttons(_trans("Keys")));
for (const char* key : named_keys4)
m_keys4x->controls.emplace_back(new ControllerEmu::Input(key));
m_keys4x->controls.emplace_back(new ControllerEmu::Input(false, key));
groups.emplace_back(m_keys5x = new ControllerEmu::Buttons(_trans("Keys")));
for (const char* key : named_keys5)
m_keys5x->controls.emplace_back(new ControllerEmu::Input(key));
m_keys5x->controls.emplace_back(new ControllerEmu::Input(false, key));
// options
groups.emplace_back(m_options = new ControllerEmu::ControlGroup(_trans("Options")));

View File

@ -52,10 +52,10 @@ GCPad::GCPad(const unsigned int index) : m_index(index)
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
for (const char* named_button : named_buttons)
{
const std::string& ui_name =
// i18n: The START/PAUSE button on GameCube controllers
(named_button == std::string("Start")) ? _trans("START") : named_button;
m_buttons->controls.emplace_back(new ControllerEmu::Input(named_button, ui_name));
const bool is_start = named_button == std::string("Start");
// i18n: The START/PAUSE button on GameCube controllers
const std::string& ui_name = is_start ? _trans("START") : named_button;
m_buttons->controls.emplace_back(new ControllerEmu::Input(is_start, named_button, ui_name));
}
// sticks
@ -67,20 +67,20 @@ GCPad::GCPad(const unsigned int index) : m_index(index)
// triggers
groups.emplace_back(m_triggers = new ControllerEmu::MixedTriggers(_trans("Triggers")));
for (const char* named_trigger : named_triggers)
m_triggers->controls.emplace_back(new ControllerEmu::Input(named_trigger));
m_triggers->controls.emplace_back(new ControllerEmu::Input(true, named_trigger));
// rumble
groups.emplace_back(m_rumble = new ControllerEmu::ControlGroup(_trans("Rumble")));
m_rumble->controls.emplace_back(new ControllerEmu::Output(_trans("Motor")));
m_rumble->controls.emplace_back(new ControllerEmu::Output(true, _trans("Motor")));
// Microphone
groups.emplace_back(m_mic = new ControllerEmu::Buttons(_trans("Microphone")));
m_mic->controls.emplace_back(new ControllerEmu::Input(_trans("Button")));
m_mic->controls.emplace_back(new ControllerEmu::Input(true, _trans("Button")));
// dpad
groups.emplace_back(m_dpad = new ControllerEmu::Buttons(_trans("D-Pad")));
for (const char* named_direction : named_directions)
m_dpad->controls.emplace_back(new ControllerEmu::Input(named_direction));
m_dpad->controls.emplace_back(new ControllerEmu::Input(true, named_direction));
// options
groups.emplace_back(m_options = new ControllerEmu::ControlGroup(_trans("Options")));

View File

@ -98,7 +98,7 @@ Classic::Classic(ExtensionReg& reg) : Attachment(_trans("Classic"), reg)
for (const char* button_name : classic_button_names)
{
const std::string& ui_name = (button_name == std::string("Home")) ? "HOME" : button_name;
m_buttons->controls.emplace_back(new ControllerEmu::Input(button_name, ui_name));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, button_name, ui_name));
}
// sticks
@ -110,12 +110,12 @@ Classic::Classic(ExtensionReg& reg) : Attachment(_trans("Classic"), reg)
// triggers
groups.emplace_back(m_triggers = new ControllerEmu::MixedTriggers(_trans("Triggers")));
for (const char* trigger_name : classic_trigger_names)
m_triggers->controls.emplace_back(new ControllerEmu::Input(trigger_name));
m_triggers->controls.emplace_back(new ControllerEmu::Input(true, trigger_name));
// dpad
groups.emplace_back(m_dpad = new ControllerEmu::Buttons(_trans("D-Pad")));
for (const char* named_direction : named_directions)
m_dpad->controls.emplace_back(new ControllerEmu::Input(named_direction));
m_dpad->controls.emplace_back(new ControllerEmu::Input(true, named_direction));
// Set up register
m_calibration = classic_calibration;

View File

@ -47,7 +47,7 @@ Drums::Drums(ExtensionReg& reg) : Attachment(_trans("Drums"), reg)
// pads
groups.emplace_back(m_pads = new ControllerEmu::Buttons(_trans("Pads")));
for (auto& drum_pad_name : drum_pad_names)
m_pads->controls.emplace_back(new ControllerEmu::Input(drum_pad_name));
m_pads->controls.emplace_back(new ControllerEmu::Input(true, drum_pad_name));
// stick
groups.emplace_back(
@ -55,8 +55,8 @@ Drums::Drums(ExtensionReg& reg) : Attachment(_trans("Drums"), reg)
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
m_buttons->controls.emplace_back(new ControllerEmu::Input("-"));
m_buttons->controls.emplace_back(new ControllerEmu::Input("+"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "-"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "+"));
// set up register
m_id = drums_id;

View File

@ -66,17 +66,17 @@ Guitar::Guitar(ExtensionReg& reg) : Attachment(_trans("Guitar"), reg)
// frets
groups.emplace_back(m_frets = new ControllerEmu::Buttons(_trans("Frets")));
for (auto& guitar_fret_name : guitar_fret_names)
m_frets->controls.emplace_back(new ControllerEmu::Input(guitar_fret_name));
m_frets->controls.emplace_back(new ControllerEmu::Input(true, guitar_fret_name));
// strum
groups.emplace_back(m_strum = new ControllerEmu::Buttons(_trans("Strum")));
m_strum->controls.emplace_back(new ControllerEmu::Input(_trans("Up")));
m_strum->controls.emplace_back(new ControllerEmu::Input(_trans("Down")));
m_strum->controls.emplace_back(new ControllerEmu::Input(true, _trans("Up")));
m_strum->controls.emplace_back(new ControllerEmu::Input(true, _trans("Down")));
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
m_buttons->controls.emplace_back(new ControllerEmu::Input("-"));
m_buttons->controls.emplace_back(new ControllerEmu::Input("+"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "-"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "+"));
// stick
groups.emplace_back(
@ -84,7 +84,7 @@ Guitar::Guitar(ExtensionReg& reg) : Attachment(_trans("Guitar"), reg)
// whammy
groups.emplace_back(m_whammy = new ControllerEmu::Triggers(_trans("Whammy")));
m_whammy->controls.emplace_back(new ControllerEmu::Input(_trans("Bar")));
m_whammy->controls.emplace_back(new ControllerEmu::Input(true, _trans("Bar")));
// slider bar
groups.emplace_back(m_slider_bar = new ControllerEmu::Slider(_trans("Slider Bar")));

View File

@ -32,8 +32,8 @@ Nunchuk::Nunchuk(ExtensionReg& reg) : Attachment(_trans("Nunchuk"), reg)
{
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
m_buttons->controls.emplace_back(new ControllerEmu::Input("C"));
m_buttons->controls.emplace_back(new ControllerEmu::Input("Z"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "C"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "Z"));
// stick
groups.emplace_back(
@ -48,11 +48,11 @@ Nunchuk::Nunchuk(ExtensionReg& reg) : Attachment(_trans("Nunchuk"), reg)
// shake
groups.emplace_back(m_shake = new ControllerEmu::Buttons(_trans("Shake")));
// i18n: Refers to a 3D axis (used when mapping motion controls)
m_shake->controls.emplace_back(new ControllerEmu::Input(_trans("X")));
m_shake->controls.emplace_back(new ControllerEmu::Input(true, _trans("X")));
// i18n: Refers to a 3D axis (used when mapping motion controls)
m_shake->controls.emplace_back(new ControllerEmu::Input(_trans("Y")));
m_shake->controls.emplace_back(new ControllerEmu::Input(true, _trans("Y")));
// i18n: Refers to a 3D axis (used when mapping motion controls)
m_shake->controls.emplace_back(new ControllerEmu::Input(_trans("Z")));
m_shake->controls.emplace_back(new ControllerEmu::Input(true, _trans("Z")));
m_id = nunchuk_id;
}

View File

@ -41,10 +41,6 @@ constexpr std::array<const char*, 9> turntable_button_names{{
_trans("Green Right"),
_trans("Red Right"),
_trans("Blue Right"),
"-",
"+",
// i18n: This button name refers to a gameplay element in DJ Hero
_trans("Euphoria"),
}};
Turntable::Turntable(ExtensionReg& reg) : Attachment(_trans("Turntable"), reg)
@ -52,7 +48,13 @@ Turntable::Turntable(ExtensionReg& reg) : Attachment(_trans("Turntable"), reg)
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
for (auto& turntable_button_name : turntable_button_names)
m_buttons->controls.emplace_back(new ControllerEmu::Input(turntable_button_name));
m_buttons->controls.emplace_back(new ControllerEmu::Input(true, turntable_button_name));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "-"));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, "+"));
// i18n: This button name refers to a gameplay element in DJ Hero
m_buttons->controls.emplace_back(new ControllerEmu::Input(true, _trans("Euphoria")));
// turntables
// i18n: "Table" refers to a turntable
@ -67,7 +69,7 @@ Turntable::Turntable(ExtensionReg& reg) : Attachment(_trans("Turntable"), reg)
// effect dial
groups.emplace_back(m_effect_dial = new ControllerEmu::Triggers(_trans("Effect")));
m_effect_dial->controls.emplace_back(new ControllerEmu::Input(_trans("Dial")));
m_effect_dial->controls.emplace_back(new ControllerEmu::Input(true, _trans("Dial")));
// crossfade
groups.emplace_back(m_crossfade = new ControllerEmu::Slider(_trans("Crossfade")));

View File

@ -261,7 +261,7 @@ Wiimote::Wiimote(const unsigned int index) : m_index(index), ir_sin(0), ir_cos(1
for (const char* named_button : named_buttons)
{
const std::string& ui_name = (named_button == std::string("Home")) ? "HOME" : named_button;
m_buttons->controls.emplace_back(new ControllerEmu::Input(named_button, ui_name));
m_buttons->controls.emplace_back(new ControllerEmu::Input(false, named_button, ui_name));
}
// ir
@ -277,11 +277,11 @@ Wiimote::Wiimote(const unsigned int index) : m_index(index), ir_sin(0), ir_cos(1
// shake
groups.emplace_back(m_shake = new ControllerEmu::Buttons(_trans("Shake")));
// i18n: Refers to a 3D axis (used when mapping motion controls)
m_shake->controls.emplace_back(new ControllerEmu::Input(_trans("X")));
m_shake->controls.emplace_back(new ControllerEmu::Input(true, _trans("X")));
// i18n: Refers to a 3D axis (used when mapping motion controls)
m_shake->controls.emplace_back(new ControllerEmu::Input(_trans("Y")));
m_shake->controls.emplace_back(new ControllerEmu::Input(true, _trans("Y")));
// i18n: Refers to a 3D axis (used when mapping motion controls)
m_shake->controls.emplace_back(new ControllerEmu::Input(_trans("Z")));
m_shake->controls.emplace_back(new ControllerEmu::Input(true, _trans("Z")));
// extension
groups.emplace_back(m_extension = new ControllerEmu::Extension(_trans("Extension")));
@ -294,12 +294,12 @@ Wiimote::Wiimote(const unsigned int index) : m_index(index), ir_sin(0), ir_cos(1
// rumble
groups.emplace_back(m_rumble = new ControllerEmu::ControlGroup(_trans("Rumble")));
m_rumble->controls.emplace_back(m_motor = new ControllerEmu::Output(_trans("Motor")));
m_rumble->controls.emplace_back(m_motor = new ControllerEmu::Output(true, _trans("Motor")));
// dpad
groups.emplace_back(m_dpad = new ControllerEmu::Buttons(_trans("D-Pad")));
for (const char* named_direction : named_directions)
m_dpad->controls.emplace_back(new ControllerEmu::Input(named_direction));
m_dpad->controls.emplace_back(new ControllerEmu::Input(true, named_direction));
// options
groups.emplace_back(m_options = new ControllerEmu::ControlGroup(_trans("Options")));

View File

@ -270,7 +270,7 @@ HotkeyManager::HotkeyManager()
groups.emplace_back(m_hotkey_groups[group]);
for (int key = groups_info[group].first; key <= groups_info[group].last; key++)
{
m_keys[group]->controls.emplace_back(new ControllerEmu::Input(hotkey_labels[key]));
m_keys[group]->controls.emplace_back(new ControllerEmu::Input(true, hotkey_labels[key]));
}
}
}

View File

@ -8,7 +8,7 @@
#include "InputCommon/ControllerEmu/Setting/BooleanSetting.h"
MappingBool::MappingBool(MappingWidget* widget, ControllerEmu::BooleanSetting* setting)
: QCheckBox(QString::fromStdString(setting->m_ui_name)), m_parent(widget), m_setting(setting)
: QCheckBox(tr(setting->m_ui_name.c_str())), m_parent(widget), m_setting(setting)
{
Update();
Connect();

View File

@ -82,7 +82,9 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
button->setMinimumWidth(100);
button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
form_layout->addRow(QString::fromStdString(control->name), button);
const QString translated_name = control->translate ? tr(control->ui_name.c_str()) :
QString::fromStdString(control->ui_name);
form_layout->addRow(translated_name, button);
auto* control_ref = control->control_ref.get();
@ -103,7 +105,7 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
for (auto& numeric : group->numeric_settings)
{
auto* spinbox = new MappingNumeric(this, numeric.get());
form_layout->addRow(QString::fromStdString(numeric->m_name), spinbox);
form_layout->addRow(tr(numeric->m_name.c_str()), spinbox);
m_numerics.push_back(spinbox);
}

View File

@ -964,8 +964,10 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
control_grid->AddGrowableCol(0);
for (const auto& control : group->controls)
{
wxStaticText* const label =
new wxStaticText(parent, wxID_ANY, wxGetTranslation(StrToWxStr(control->ui_name)));
const wxString control_ui_name = StrToWxStr(control->ui_name);
wxStaticText* const label = new wxStaticText(
parent, wxID_ANY, control->translate ? wxGetTranslation(control_ui_name) : control_ui_name);
ControlButton* const control_button =
new ControlButton(parent, control->control_ref.get(), control->ui_name, 80);

View File

@ -9,14 +9,14 @@
namespace ControllerEmu
{
Control::Control(std::unique_ptr<ControlReference> ref, const std::string& name_,
Control::Control(std::unique_ptr<ControlReference> ref, bool translate_, const std::string& name_,
const std::string& ui_name_)
: control_ref(std::move(ref)), name(name_), ui_name(ui_name_)
: control_ref(std::move(ref)), translate(translate_), name(name_), ui_name(ui_name_)
{
}
Control::Control(std::unique_ptr<ControlReference> ref, const std::string& name_)
: Control(std::move(ref), name_, name_)
Control::Control(std::unique_ptr<ControlReference> ref, bool translate_, const std::string& name_)
: Control(std::move(ref), translate_, name_, name_)
{
}

View File

@ -17,12 +17,13 @@ public:
virtual ~Control();
std::unique_ptr<ControlReference> const control_ref;
const bool translate;
const std::string name;
const std::string ui_name;
protected:
Control(std::unique_ptr<ControlReference> ref, const std::string& name,
Control(std::unique_ptr<ControlReference> ref, bool translate, const std::string& name,
const std::string& ui_name);
Control(std::unique_ptr<ControlReference> ref, const std::string& name);
Control(std::unique_ptr<ControlReference> ref, bool translate, const std::string& name);
};
} // namespace ControllerEmu

View File

@ -10,12 +10,13 @@
namespace ControllerEmu
{
Input::Input(const std::string& name_, const std::string& ui_name_)
: Control(std::make_unique<InputReference>(), name_, ui_name_)
Input::Input(bool translate_, const std::string& name_, const std::string& ui_name_)
: Control(std::make_unique<InputReference>(), translate_, name_, ui_name_)
{
}
Input::Input(const std::string& name_) : Control(std::make_unique<InputReference>(), name_)
Input::Input(bool translate_, const std::string& name_)
: Control(std::make_unique<InputReference>(), translate_, name_)
{
}
} // namespace ControllerEmu

View File

@ -12,7 +12,7 @@ namespace ControllerEmu
class Input : public Control
{
public:
Input(const std::string& name, const std::string& ui_name);
explicit Input(const std::string& name);
Input(bool translate, const std::string& name, const std::string& ui_name);
Input(bool translate, const std::string& name);
};
} // namespace ControllerEmu

View File

@ -10,7 +10,8 @@
namespace ControllerEmu
{
Output::Output(const std::string& name_) : Control(std::make_unique<OutputReference>(), name_)
Output::Output(bool translate, const std::string& name_)
: Control(std::make_unique<OutputReference>(), translate, name_)
{
}
} // namespace ControllerEmu

View File

@ -12,6 +12,6 @@ namespace ControllerEmu
class Output : public Control
{
public:
explicit Output(const std::string& name);
Output(bool translate, const std::string& name);
};
} // namespace ControllerEmu

View File

@ -28,9 +28,9 @@ AnalogStick::AnalogStick(const char* const name_, const char* const ui_name_,
: ControlGroup(name_, ui_name_, GroupType::Stick)
{
for (auto& named_direction : named_directions)
controls.emplace_back(std::make_unique<Input>(named_direction));
controls.emplace_back(std::make_unique<Input>(true, named_direction));
controls.emplace_back(std::make_unique<Input>(_trans("Modifier")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Modifier")));
numeric_settings.emplace_back(
std::make_unique<NumericSetting>(_trans("Radius"), default_radius, 0, 100));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Dead Zone"), 0, 0, 50));

View File

@ -24,12 +24,12 @@ namespace ControllerEmu
Cursor::Cursor(const std::string& name_) : ControlGroup(name_, GroupType::Cursor)
{
for (auto& named_direction : named_directions)
controls.emplace_back(std::make_unique<Input>(named_direction));
controls.emplace_back(std::make_unique<Input>(true, named_direction));
controls.emplace_back(std::make_unique<Input>(_trans("Forward")));
controls.emplace_back(std::make_unique<Input>(_trans("Backward")));
controls.emplace_back(std::make_unique<Input>(_trans("Hide")));
controls.emplace_back(std::make_unique<Input>(_trans("Recenter")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Forward")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Backward")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Hide")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Recenter")));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Center"), 0.5));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Width"), 0.5));

View File

@ -19,12 +19,12 @@ namespace ControllerEmu
{
Force::Force(const std::string& name_) : ControlGroup(name_, GroupType::Force)
{
controls.emplace_back(std::make_unique<Input>(_trans("Up")));
controls.emplace_back(std::make_unique<Input>(_trans("Down")));
controls.emplace_back(std::make_unique<Input>(_trans("Left")));
controls.emplace_back(std::make_unique<Input>(_trans("Right")));
controls.emplace_back(std::make_unique<Input>(_trans("Forward")));
controls.emplace_back(std::make_unique<Input>(_trans("Backward")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Up")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Down")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Left")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Right")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Forward")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Backward")));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Dead Zone"), 0, 0, 50));
}

View File

@ -27,7 +27,7 @@ ModifySettingsButton::ModifySettingsButton(std::string button_name)
void ModifySettingsButton::AddInput(std::string button_name, bool toggle)
{
controls.emplace_back(new Input(std::move(button_name)));
controls.emplace_back(std::make_unique<Input>(true, std::move(button_name)));
threshold_exceeded.emplace_back(false);
associated_settings.emplace_back(false);
associated_settings_toggle.emplace_back(toggle);

View File

@ -20,8 +20,8 @@ namespace ControllerEmu
Slider::Slider(const std::string& name_, const std::string& ui_name_)
: ControlGroup(name_, ui_name_, GroupType::Slider)
{
controls.emplace_back(std::make_unique<Input>("Left"));
controls.emplace_back(std::make_unique<Input>("Right"));
controls.emplace_back(std::make_unique<Input>(true, _trans("Left")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Right")));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Dead Zone"), 0, 0, 50));
}

View File

@ -19,12 +19,12 @@ namespace ControllerEmu
{
Tilt::Tilt(const std::string& name_) : ControlGroup(name_, GroupType::Tilt)
{
controls.emplace_back(std::make_unique<Input>(_trans("Forward")));
controls.emplace_back(std::make_unique<Input>(_trans("Backward")));
controls.emplace_back(std::make_unique<Input>(_trans("Left")));
controls.emplace_back(std::make_unique<Input>(_trans("Right")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Forward")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Backward")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Left")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Right")));
controls.emplace_back(std::make_unique<Input>(_trans("Modifier")));
controls.emplace_back(std::make_unique<Input>(true, _trans("Modifier")));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Dead Zone"), 0, 0, 50));
numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Circle Stick"), 0));

View File

@ -9,6 +9,7 @@
#include <string>
#include <vector>
#include "Common/Common.h"
#include "Common/IniFile.h"
#include "InputCommon/ControllerInterface/Device.h"
@ -16,7 +17,8 @@ class ControllerInterface;
#define sign(x) ((x) ? (x) < 0 ? -1 : 1 : 0)
const char* const named_directions[] = {"Up", "Down", "Left", "Right"};
const char* const named_directions[] = {_trans("Up"), _trans("Down"), _trans("Left"),
_trans("Right")};
namespace ControllerEmu
{