There is at least one instance that there is a string scattered to pieces instead of using placeholders for variables. Every language has it's own structure and partial strings like this are very hard to translate and sometimes even impossible.
The strings loses the context, the overall meaning of the translation gets hideous. Even if a translator checks the code and tries to construct a good translation, when those string parts are used in other areas of the code, it'll create more conflicts.
This is the part that I'm referencing:
<?php esc_html_e( 'Block the IP address for', 'magic-login' ); ?>
<input
id="brute_force_bantime"
name="brute_force_bantime"
min="1"
max="1440"
type="number"
class="sui-form-control sui-field-has-suffix"
value="<?php echo absint( $settings['brute_force_bantime'] ); ?>"
>
<?php esc_html_e( 'minutes when it fails to login ', 'magic-login' ); ?>
<input
id="brute_force_login_attempt"
name="brute_force_login_attempt"
min="1"
max="100"
type="number"
class="sui-form-control sui-field-has-suffix"
value="<?php echo absint( $settings['brute_force_login_attempt'] ); ?>"
>
<?php esc_html_e( 'times in', 'magic-login' ); ?>
<input
id="brute_force_login_time"
name="brute_force_login_time"
min="1"
max="600"
type="number"
class="sui-form-control sui-field-has-suffix"
value="<?php echo absint( $settings['brute_force_login_time'] ); ?>"
>
<?php esc_html_e( 'minutes.', 'magic-login' ); ?>
The string should be like this;
/* translators: 1: Ban duration input 2: Trial count input 3: Interval input */
printf( __( 'Block the IP address for %1$s minutes when it fails to login %2$s times in %3$s minutes.', 'magic-login' ),
$brute_force_bantime_input,
$brute_force_login_attempt_input,
$brute_force_login_time_input
); // WPCS: XSS ok.
And of course you have to fill those variables. :)
For example, if you construct the string the way I propose then it's translation would be like this;
%3$s dakika içinde %2$s kere başarısız giriş olursa IP adresini %1$s dakika engelle.
As you can see, the placeholders are all reversed because of the language structure.
At the end, it's best to avoid this kind of strings and use placeholders (and of course translator comments) as much as possible.
Cheers