小编Nic*_*tte的帖子

使用 iOS Stringsdict 文件的显式复数字符串

我开始学习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 这用于匹配特定值,而不管当前语言环境的多个类别。

localization internationalization messageformat ios cldr

5
推荐指数
1
解决办法
220
查看次数

有什么方法可以访问 Next.js 中的 `__filename` 吗?

我正在开发一个自定义 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 才能工作?

javascript node.js typescript reactjs next.js

5
推荐指数
1
解决办法
1811
查看次数

用于动态魔术属性(或方法)的PHPdoc

我最近创建了一个用于创建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 phpdoc phpstorm phpdocumentor2

4
推荐指数
1
解决办法
2589
查看次数

Amazon SES 是否支持 UTF-8 电子邮件地址?

我试图找到这方面的详细信息,但找不到任何确认。我正在使用 PHP SDK 并尝试了以下测试(下面的电子邮件是一个示例,但 gmail 支持电子邮件中的 UTF-8 字符):

  • 使用 SES 发送电子邮件至myemail+?@gmail.com

我实际上发送了“?” 就像使用 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)

我错过了什么还是不支持?如果不是,是否有计划支持它?

php amazon-web-services amazon-ses aws-php-sdk

4
推荐指数
2
解决办法
2904
查看次数

用 TypeScript 编写的 Babel 插件参数的类型是什么?

我正在用 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)

我在网上找到的几个例子都使用了这个,但这真的是它应该如何输入的吗?

typescript babeljs typescript-typings babel-plugin

4
推荐指数
1
解决办法
790
查看次数

我们可以覆盖 Javascript DOM 对象原型属性吗?

我一直在寻找一种方法来永久更改 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)

html javascript dom ecmascript-5 ecmascript-6

3
推荐指数
1
解决办法
2791
查看次数

如何在Javascript中有效定义自定义HTMLElement属性,以便能够使用HTML进行设置?

作为一个例子(请关注问题,而不是示例 - 我有充分的理由),我正在尝试在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和一些旧浏览器.

html javascript html5 dom

3
推荐指数
1
解决办法
48
查看次数

如何使用 PHP 在唯一的 MySQL 列中存储 UTF-8 电子邮件地址?

我正在尝试将 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 …

php mysql string encoding utf-8

1
推荐指数
1
解决办法
2547
查看次数

如何在JavaScript中不使用`window`来检查动态全局变量?

我需要在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)

我正在尝试获得结果警报:

  1. 变量test1已定义.
  2. 变量test2已定义.
  3. 变量test3未定义.

使用下面的技巧似乎很容易修复,但有没有其他方法来实现这一点?是否window以追踪它们的唯一方式声明全局变量 ?`

window.test1 = 'test1';
window.test2 = 'test2';
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,还是这是正确的方法?

香草JS只回答了.

javascript scope

0
推荐指数
1
解决办法
187
查看次数