我使用这段代码:
<ul class="login-links">
<li>
<a href="/wp-login.php?redirect_to=<?php echo $_SERVER['REQUEST_URI']; ?>" class="simplemodal-login"><?php printf(__("Login"))?></a>
<span id="space-login-string"><?php printf(__(" or "));?></span>
<a href="/wp-login.php?action=register" class="simplemodal-register"><?php printf(__("Register"))?></a>
</li>
</ul>
它是必须由WPML翻译的句子的一部分。
它应该看起来像这样: 登录 或 注册
有谁知道为什么前导和尾随空格被修剪,因此看起来像这样:登录或注册
它一定是简单的东西,但是,愚蠢的我,我找不到它。请帮忙。
有两种可能性:
- 函数
__()
可能会自行修剪输出或输入。 - 翻译后的字符串中缺少空格。
恕我直言,空格不应该在要翻译的字符串内,因为只有"or"需要翻译,确保插入空格不是翻译人员的工作。
编辑:事实证明,问题是登录,或和注册三个元素向左浮动。这会导致空格被忽略。
要在将三个元素保持在一行中时保留空格,请为所有三个元素提供display: inline;
而不是浮动。
您应该参考 I18n for WordPress Developers 文档。使用 printf()
执行此操作的正确方法是:
printf( __( 'LOGIN %d REGISTER.', 'your-text-domain' ), 'or' );
您还可以通过许多其他方法执行此操作,例如使用 _e()
或 __()
.