我试图使用intl包中的NumberFormatter类将整数量拼写成斯洛文尼亚语单词(用于邮政声明),但结果是完全错误的,没有任何意义.
$fmt = new NumberFormatter('sl', NumberFormatter::SPELLOUT);
$fmt->format(561);
Run Code Online (Sandbox Code Playgroud)
结果在"petstošestdesetena",而它应该是"petstoenainšestdeset".看起来像宝贝说话.
用克罗地亚语非常相似,结果似乎没问题("petstošezdesetijedan").
这是PHP中翻译得不好的,还是基于我的系统区域设置?我在PHP 5.3.10/Ubuntu 12.04上.
编辑:
intl是版本1.1.0,当前是3.0.0,所以它可能已修复?
由于欧盟 cookie 法,我试图以不使用 cookie 的方式嵌入谷歌地图。
我想使用 Embed API,因为它可以显示位置信息(评分、路线按钮...)。
我知道 Maps JavaScript API 不使用 cookie,而是通过域 maps.googleapis.com 工作。
但是,Maps Embed API 使用 www.google.com,它设置了 NID cookie。
如果我尝试像这样替换 URL
<iframe
width="600"
height="450"
frameborder="0" style="border:0"
src="https://maps.googleapis.com/maps/embed/v1/place?key=MY_API_KEY&q=Space+Needle,Seattle+WA" allowfullscreen>
</iframe>
Run Code Online (Sandbox Code Playgroud)
有一个 1 秒的闪光,它可以正确显示它,但随后覆盖了“出现问题”的错误。
在控制台中,返回此错误:
Google Maps JavaScript API error: UnauthorizedURLForClientIdMapError
https://developers.google.com/maps/documentation/javascript/error-messages#unauthorized-url-for-client-id-map-error
Your site URL to be authorized: https://maps.googleapis.com/maps/embed/v1/place?key=MY_API_KEY&q=Space+Needle,Seattle+WA
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有 cookie 的情况下使用 Embed API?
我有两个实现的类:
class DCCmd :
public DCMessage
class DCReply :
public DCMessage
Run Code Online (Sandbox Code Playgroud)
两者都是以两种方式发送和接收的协议消息.
现在在协议实现中我需要创建一个消息队列,但是DCMessage由于它是抽象的,它不会让我做这样的事情:
class DCMsgQueue{
private:
vector<DCMessage> queue;
public:
DCMsgQueue(void);
~DCMsgQueue(void);
bool isEmpty();
void add(DCMessage &msg);
bool deleteById(unsigned short seqNum);
bool getById(unsigned short seqNum, DCMessage &msg);
};
Run Code Online (Sandbox Code Playgroud)
问题是,正如编译器所说,"DCMessage无法实例化",因为它有一个纯抽象方法:
virtual BYTE *getParams()=0;
Run Code Online (Sandbox Code Playgroud)
删除=0和放置空的花括号来DCMessage.cpp修复问题,但这只是一个黑客.
另一种解决方案是我应该做两个DCMsgQueues:DCCmdQueue和DCReplyQueue,但是这仅仅是重复的代码为一些小事.有任何想法吗?=)
我现在已经阅读了一个小时,仍然无法了解我的应用程序.由于我使用的对象的实例与new和delete,我需要管理的存储自己.我的应用程序需要很长的正常运行时间,因此正确管理内存消耗对我来说非常重要.
这是我用来转储数据包的静态功能,它在两个方向上在PC和I/O板之间传输.datapacket是一个BYTEs 数组,并且被封装到一个对象中,DCCmd或者DCReply(都是抽象DCMessage类的实现).
void DebugTools::dumpBytes(BYTE* bytes, short length)
{
printf(" |---DUMPING DATAPACKET refId: %d ....\n", &bytes);
for(short i=0; i<length; i++){
printf(" | B%d | %.2X\n", i, bytes[i]);
}
printf(" |---END DUMP refId: %d ....\n", &bytes);
}
Run Code Online (Sandbox Code Playgroud)
然后是这个用例:我创建一个DCCmd对象并将其添加到要发送的传出消息队列中."pump"(无限循环)检查发件箱并将任何候选者传递给IOConnector单个对象.
DCCmd* cmd = new DCCmd(DIG_CMD_SELFTEST_RES);
cmd->add(param);
printf("cmdSelfTest()\n"); //HACK
BYTE* cmda = cmd->getBytes(); //HACK
DebugTools::dumpBytes(cmda, cmd->getLength()); //HACK
sendMsg(cmd);
Run Code Online (Sandbox Code Playgroud)
...并添加到队列中:
bool DC::sendMsg(DCMessage* msg)
{
if(isOnline()){
outbox->add(msg);
return true;
} …Run Code Online (Sandbox Code Playgroud) 我有两张桌子:
产品:
id | sku
0 P323
1 K534
Run Code Online (Sandbox Code Playgroud)
翻译:
product_id | lang | name
0 en Some product
0 sl Nek izdelek
1 en Some other product
Run Code Online (Sandbox Code Playgroud)
现在,我需要显示斯洛文尼亚语(sl)翻译,但如果它不存在,则应显示英语翻译.
我正在寻找一种方法来获取产品,其结果如下:
id | sku | name
0 P323 Nek izdelek
1 K534 Some other product
Run Code Online (Sandbox Code Playgroud)
使用MySQL可以实现单个查询吗?
注意:转换表中的条目可能不存在或存在,但所有值(外键除外)都可以为null.
按要求编辑:我需要有一个选项,让特权后端用户创建尽可能多的文本字段,因为电子商店需要它们用于产品展示(例如简短说明,包装内容,保修信息......) .因此,我宁愿不将列名硬编码到SQL查询中,因为这会降低可移植性.
我需要选择所有翻译字段而不指定列名,如"translation.*".
如果找不到实际的解决方案,我将使用维护自定义列的记录,这些列在构建查询时(执行之前)添加.