我开始学习iOS Stringsdict 文件,并在使用以下语法的项目中找到了一些现有代码:
<key>zero</key>
<string>You no message.</string>
Run Code Online (Sandbox Code Playgroud)
根据 CLDR,zero在英语中是无效的复数形式,我们希望使用明确的复数规则(=0使用 ICU MessageFormat 时)
我试图找到如何在 iOS Stringsdict 文件中使用显式复数规则,但找不到任何方法来实现这一点。有人可以确认这是否受支持吗?
解决方案示例(我无法测试它们,但也许有人可以?)
<key>0</key>
<string>You no message.</string>
Run Code Online (Sandbox Code Playgroud)
或者
<key>=0</key>
<string>You no message.</string>
Run Code Online (Sandbox Code Playgroud)
关于 ICU MessageFormat 的 CLDR 实现的显式复数规则部分的额外参考:
https://formatjs.io/guides/message-syntax/#plural-format
=value 这用于匹配特定值,而不管当前语言环境的多个类别。
我正在开发一个自定义 i18n 模块,并且希望替换此代码(这是一个“关于我们”页面):
const messages = (await import(`./about-us.${locale}.json`))
.default as Messages;
Run Code Online (Sandbox Code Playgroud)
经过
const messages = (
await import(`./${__filename.replace('.tsx', `.${locale}.json`)}`)
).default as Messages;
Run Code Online (Sandbox Code Playgroud)
不幸的__filename是/index.js(我猜是因为 Webpack?) - 有什么方法可以实现我在示例中尝试做的事情,或者需要直接内置 Next.js 才能工作?
我最近创建了一个用于创建HTML元素的类.我没有为每个现有的HTML元素和属性创建方法而烦恼,而是决定使用魔术方法__get和__call.所以使用我的代码我基本上可以这样做:
$signUpForm->insert->input->type('text')->name('firstName')->maxlength(100)->disabled
$signUpForm->insert->input->type('email')->name('emailAddress')->maxlength(100)
Run Code Online (Sandbox Code Playgroud)
等等
但既然我决定保持这种"神奇"和简单,我也可以这样做:
$signUpForm->insert->magic->trick('rabbit')->accessory('hat') 这将导致:
<magic trick='rabbit' accessory='hat'>
Run Code Online (Sandbox Code Playgroud)
这一切都很好,因为在我看来它削减了很多样板代码,并且正是我需要做的.我不希望一个类强制执行HTML标准,我想要一个类来促进HTML,因为你知道如何使用它(老实说,这样做的代码很小)
所以我的问题是,考虑到这个类可以接受任何未定义的属性或方法,有没有办法在PHPDoc中指定这种行为?我没有运气就尝试了以下内容:
/**
* @property HtmlElementAttribute * Insert a new HTML element attribute
* @method HtmlElementAttribute * Insert a new HTML element attribute
*/
Run Code Online (Sandbox Code Playgroud)
我不知道这只是一个PHPStorm的东西,但我找不到任何类似的场景......
此外,如果您想知道为什么我会做这样的事情,那就是跟踪我的PHP代码中的某些HTML方面(例如,在表单中声明的ID或表单内的元素).这可以让我在发送给最终用户之前在我的HTML中具有可见性.
我试图找到这方面的详细信息,但找不到任何确认。我正在使用 PHP SDK 并尝试了以下测试(下面的电子邮件是一个示例,但 gmail 支持电子邮件中的 UTF-8 字符):
我实际上发送了“?” 就像使用 PHP SDK 并查看它在 POST 请求正文中编码(URL)的查询一样:
Destination.ToAddresses.member.1=myemail%2B%E2%9C%96%40gmail.com
这是我从 SES 回复中得到的信息:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidParameterValue</Code>
<Message>Local address contains control or whitespace</Message>
</Error>
<RequestId>f28c2325-5c09-11e6-9156-ef3e33b8e223</RequestId>
</ErrorResponse>
Run Code Online (Sandbox Code Playgroud)
我错过了什么还是不支持?如果不是,是否有计划支持它?
我正在用 TypeScript 编写 Babel 插件,并且一直在努力寻找大量这样做的示例或文档。例如,我正在编写一个具有以下签名的访问者插件:
export default function myPlugin({ types: t }: typeof babel): PluginObj {
Run Code Online (Sandbox Code Playgroud)
我从以下地方得到几种类型:
import type { PluginObj, PluginPass } from '@babel/core';
Run Code Online (Sandbox Code Playgroud)
令我困扰的部分是{ types: t }: typeof babel来自
import type * as babel from '@babel/core';
Run Code Online (Sandbox Code Playgroud)
我在网上找到的几个例子都使用了这个,但这真的是它应该如何输入的吗?
我一直在寻找一种方法来永久更改 HTMLFormElement Javascript 对象的“onsubmit”行为。假设我的 JavaScript 之一包含以下代码:
HTMLFormElement.prototype.onsubmit = function () {
this.submit();
// Make sure that you can only submit once.
this.onsubmit = function () {
return false;
};
return false;
};
Run Code Online (Sandbox Code Playgroud)
这个想法只是为了防止所有形式的文档的重复提交。由于上面的示例不起作用,我无法弄清楚如何执行此操作。
有没有办法在文档加载后无需循环遍历所有现有 HTMLElement 来实现此目的?这是一种与某些较旧的浏览器兼容的方法,并且如果您使用其他脚本创建新的表单元素,也可以保留该行为。(仅限香草 JS)
作为一个例子(请关注问题,而不是示例 - 我有充分的理由),我正在尝试在Javascript中的HTMLSelectElement对象上添加一个新的"占位符"属性.所以我这样做:
<select id="gender" name="gender" placeholder="Male">
<option></option>
<option>Male</option>
<option>Female</option>
<option>Other</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行它,我会'未定义':
var gender = document.getElementById('gender');
alert(gender['placeholder']);
Run Code Online (Sandbox Code Playgroud)
所以尝试了这种方法,看看这是否会有所帮助:
HTMLSelectElement.prototype.placeholder = '';
但现在我得到一个空字符串.是否有一种简单的方法来访问HTMLElements上的自定义属性,而无需逐个遍历HTMLElement.attributes?请记住,我正在使用Vanilla JS和一些旧浏览器.
我正在尝试将 UTF-8 字符支持到电子邮件地址中。如果我理解正确,电子邮件地址限制为254 个可用 (ASCII) 字符。基于此,我想将电子邮件地址存储在 VARCHAR(254) ASCII MySQL InnoDB 列中。我遇到的问题之一是验证这些场景。我正在尝试将 UTF-8 转换为 ASCII 但得到如下所示的混合结果(我知道该示例不是有效的电子邮件,但我可以使用其他字符 - 这只是为了解释问题):
<?php
$string = '@.';
echo 'UTF-8 Value: ' . $string . '<br/>';
echo 'ASCII Length (from UTF-8 string):' . mb_strlen($string, 'ASCII') . '<br/>';
$stringAscii = mb_convert_encoding($string, 'ASCII', 'UTF-8');
echo 'ASCII Length:' . strlen($stringAscii) . '<br/>';
echo 'ASCII Value:' . $stringAscii . '<br/>';
Run Code Online (Sandbox Code Playgroud)
输出是:
UTF-8 值:@。
ASCII 长度(来自 UTF-8 字符串)::14
ASCII 长度:5
ASCII 值:?@?。
转换后,我希望 ASCII 字符串的长度为 14 个字符吗?如何将 UTF-8 字符串转换为 ASCII …
我需要在JavaScript中传递一个变量名列表,并检查这些变量是否存在.我尝试了以下但它似乎没有做的伎俩(JSFiddle 在这里):
var test1 = 'test1';
var test2 = 'test2';
function checkVariable(variableNameList) {
for (var iterator = 0; iterator < variableNameList.length; iterator++) {
var variableName = variableNameList[iterator];
if (typeof window[variableName] === 'undefined') {
alert('Variable ' + variableName + ' is not defined');
} else {
alert('Variable ' + variableName + ' is defined');
}
}
}
checkVariable(['test1', 'test2', 'test3']);
Run Code Online (Sandbox Code Playgroud)
我正在尝试获得结果警报:
使用下面的技巧似乎很容易修复,但有没有其他方法来实现这一点?是否window以追踪它们的唯一方式声明全局变量 ?`
window.test1 = 'test1';
window.test2 = 'test2';
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,还是这是正确的方法?
香草JS只回答了.
javascript ×4
php ×3
dom ×2
html ×2
typescript ×2
amazon-ses ×1
aws-php-sdk ×1
babel-plugin ×1
babeljs ×1
cldr ×1
ecmascript-5 ×1
ecmascript-6 ×1
encoding ×1
html5 ×1
ios ×1
localization ×1
mysql ×1
next.js ×1
node.js ×1
phpdoc ×1
phpstorm ×1
reactjs ×1
scope ×1
string ×1
utf-8 ×1