QObject::tr()我一直用于翻译包含数字的字符串的函数有两种形式:
tr("There are %n foo(s)", 0, foo.size());
tr("%1: %2").arg(QLocale().toString(bar.size())).arg(bar.name());
Run Code Online (Sandbox Code Playgroud)
除了您希望在同一个字符串中进行本地化和多元化之外,这些会占用您希望字符串中的数字的大多数情况.当然你可以打破翻译,但是你必须猜测这个字符串是否会在所有语言的相同位置中断(我决定大部分时间没有资格做出决定).
该QLocale文档指出...
当格式字符串中的位置说明符包含"L"时,QString :: arg()使用默认语言环境格式化数字,例如"%L1"
......所以第二种形式可以改写为......
tr("%L1: %2").arg(bar.size()).arg(bar.name());
Run Code Online (Sandbox Code Playgroud)
......这表明你可以将第一个表格重写为......
tr("There are %Ln foo(s)", 0, foo.size());
Run Code Online (Sandbox Code Playgroud)
这将编译并在Linguist中显示为多元化,但有人知道这是否也将本地化数字?我在任何文档中都找不到任何说法.
在我们的代码中,我们将单词"Photo"标记为单数翻译.在代码中的不同位置,我们在复数翻译"Photo"/"Photos"中有这个词,所以:
1 {% trans 'Photo' %}
2 {% trans 'Photos' %}
Run Code Online (Sandbox Code Playgroud)
和
{{ x }} {% blocktrans count counter=x %}Photo{% plural %}Photos{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)
可能的话,我们必须用我们的计数器变量x 内的翻译字符串.但是,我在文档中找不到任何有关此类要求的内容.无论如何,使用我们的代码,我们在PO文件中获得的是:
msgid "Photos"
msgstr ""
msgid "Photo"
msgid_plural "Photos"
msgstr[0] ""
msgstr[1] ""
Run Code Online (Sandbox Code Playgroud)
"Photo"没有msgid,导致"Photo"根本没有被翻译,因为实际的翻译字符串不存在 - 除非在*n*gettext中使用,但不在{%trans'Photo'%}中使用.
我在这里做错了吗?这是一个Django错误吗?
我有这个Action来处理用户登录也通过REST api调用:
/**
* Login Action
*
* @param Request $request
*/
public function postLoginAction(Request $request)
{
Run Code Online (Sandbox Code Playgroud)
这是php app/console router:debug向我展示的:
en__RG__post_login POST ANY ANY /api/1/logins.{_format}
Run Code Online (Sandbox Code Playgroud)
在这种情况下," 登录 " 的自动复数不是那么好......任何想法如何只获得" 登录 "?
我正在翻译以下密钥 activity.fr.yml
user.list.link: '{1}et %count% autre|]1,Inf[voir les %count% autres'
Run Code Online (Sandbox Code Playgroud)
使用tranchoice
<a href="{{ moreLink }}" >{% transchoice count from "activity" %}user.list.link{% endtranschoice %}</a>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
An exception has been thrown during the rendering of a template ("Unable to choose a translation.")
我认为翻译已被发现,否则我不会得到关于无法选择翻译但关键本身的错误.
同样yaml甚至其他tranchoice的所有其他键都很好地翻译.
我跟着文档,尝试添加with {'%count%': count}没有成功.
有人知道这里有什么问题吗?提前致谢
我通常做这样的事情,但如果感觉讨厌而且不是很干燥:
-if minutes == 1
added #{minutes} minute ago
-else
added #{minutes} minutes ago
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何覆盖rails命名约定?
在Rails中生成新模型时,它会自动复数表名.但是,这并不总是很好 - 特别是对于具有非标准复数的单词.
我创建了一个名为的模型lens.由于rails认为这个词已经多元化,因此它没有在迁移文件中复数表名.没问题 - 我刚刚编辑了文件并在运行迁移之前已更改lens为lenses.
不幸的是,我在尝试实例化Lens类时遇到了这个错误:
Could not find table 'lens'
Run Code Online (Sandbox Code Playgroud)
我假设这是因为Rails认为这个单词已经是多元化的,所以当试图在数据库中找到表时它不会尝试复数.
那我该怎么办?我是否应该违反惯例而只是让Rails调用表lens而不是lenses,或者有没有办法正确配置?
我的Django模板中有以下循环:
{% for item in state.list %}
<div> HTML (CUSTOMERS BY STATE) </div>
<!-- print sum of customers at bottom of list -->
{% if forloop.last %}
<h4>{{ forloop.counter }} Valued Customers</h4>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
显然,如果我最终只有一位客户,我想打印单数的“尊贵客户”
根据Django的文档,应该使用blocktrans。尝试了以下几种嵌套方式:
{% blocktrans count %}
{% if forloop.last %}
<h4>
{{ forloop.counter }}
Valued Customer
{% plural %}
Valued Customers
</h4>
{% endif %}
{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)
继续获取TemplateSyntaxError:无效的块标记:'blocktrans',预期为'empty'或'endfor'
有没有办法与另一个循环结合?任何想法如何解决?谢谢!
我有一串单词,有一些像
"Cloud", "Clouds", "Application", "Applications", "Event", "Events"
Run Code Online (Sandbox Code Playgroud)
还有一些像
"Access"
Run Code Online (Sandbox Code Playgroud)
它们是单数但最后有的"s".我想删除复数单词,但我不能写一个代码从末尾删除s,因为它将"s"从所有单词中删除.我在互联网上搜索,找不到任何相关内容.任何人都可以帮助我做到这一点的最好方法吗?
编辑:如何在我的程序中使用CakePHP?我之前从未使用它,所以没有经验.我在函数中有String变量.它说我需要安装Cake PHP,谁能告诉我如何在函数中使用它?
谢谢
我的 Rails 应用程序遇到以下问题:我想翻译一些像这样的模型属性,以便它们在验证错误消息中正确显示。
de:
activerecord:
models:
account:
attributes:
email:
one: 'Email'
other: 'Emails'
Run Code Online (Sandbox Code Playgroud)
现在在 Rails 控制台中我可以检查
I18n.t 'activerecord.models.account.attributes.email', count: 1
Run Code Online (Sandbox Code Playgroud)
它返回“电子邮件”,一切似乎都很好。
但是如果我转到浏览器并发布表单,则会收到错误
I18n::InvalidPluralizationData in AccountsController#create
translation data {:attributes=>{:email=>{:one=>"Email", :other=>"Emails"}}} can not be used with :count => 1
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?Rails 期望获得哪些翻译数据?
谢谢