后端【免费下载链接】TwigTwig, the flexible, fast, and secure template language for PHP项目地址https://gitcode.com/gh_mirrors/tw/Twig点击查看免费下载script_names是 Twig 3.5 起在IntlExtension中提供的国际化函数用于一次性返回当前或指定语言环境下的全部书写系统script本地化名称映射。本指南完整覆盖该函数的调用语法、locale参数规则、安装注册方式并结合仓库源码与集成测试说明其返回值形态、异常兜底行为及典型实战用法读完即可在模板中直接落地使用。函数概览script_names返回一个以书写系统代码为键、以对应语言环境下的本地化名称为值的映射关联数组其核心用途是构建语言/文字相关的选择器、筛选器或展示列表。引入版本Twig 3.5所属扩展IntlExtensiontwig/intl-extra包并非 Twig 核心内置需单独安装底层实现基于 Symfony Intl 组件的Symfony\Component\Intl\Scripts::getNames()数据源为 ICUInternational Components for Unicode的脚本名称数据库{# 输出示例Adlam, Afaka, ... #} {{ script_names()|join(, ) }}基本用法使用当前语言环境默认行为不传任何参数时script_names使用当前语言环境即 PHP\Locale::getDefault()返回的默认 locale{# 按默认 locale 输出所有书写系统的本地化名称用逗号连接 #} {{ script_names()|join(, ) }}显式指定语言环境可以通过第一个参数显式传入 locale 代码覆盖默认语言环境{# 用法语 locale 输出结果如Adlam, Afaka, ... #} {{ script_names(fr)|join(, ) }}由于返回的是映射你还可以直接按下标取值{{ script_names()[Marc] }} {# Marchen #} {{ script_names(fr)[Marc] }} {# Marchen #}参数说明参数类型必填说明localestring否语言环境代码遵循 RFC 5646BCP 47规范例如fr、en_US、zh_CN。缺省时使用当前默认语言环境从源码看参数为可空类型对应 IntlExtension.php 中的方法签名public function getScriptNames(?string $locale null): array { try { return Scripts::getNames($locale); } catch (MissingResourceException $exception) { return []; } }关键行为有测试佐证见下节传入未知/无效 locale如UNKNOWN时Scripts::getNames()抛出MissingResourceException函数捕获异常并返回空数组正常 locale 下返回的数组包含200 余项覆盖 ICU 收录的全部书写系统代码键为 ISO 15924 脚本代码如Adlm、Afak、Marc值为该脚本在指定 locale 下的本地化名称同一个脚本代码在不同 locale 下可能得到相同或不同的本地化名称。安装与注册script_names位于IntlExtension中该扩展默认不随 Twig 核心安装需要按以下步骤启用。1. 安装扩展包$ composer require twig/intl-extra该包的依赖要求见 composer.jsonPHP8.1.0、twig/twig^3.13|^4.0、symfony/intl^5.4|^6.4|^7.0|^8.0。2a. Symfony 项目安装 extra-bundle在 Symfony 项目上再安装twig/extra-bundle扩展会自动注册$ composer require twig/extra-bundlebundle 的依赖注入配置extra/twig-extra-bundle/Resources/config/intl.php会把IntlExtension注册为twig.extension.intl服务并打上twig.extension标签从而被 Twig 自动加载。2b. 其他项目手动添加扩展不使用 Symfony 时直接在 Twig 环境上显式注册扩展use Twig\Extra\Intl\IntlExtension; $twig new \Twig\Environment(...); $twig-addExtension(new IntlExtension());源码实现与返回形态script_names在IntlExtension::getFunctions()中被注册IntlExtension.phpnew TwigFunction(script_names, [$this, getScriptNames]),同一扩展还注册了language_names、country_names、locale_names、currency_names、timezone_names、country_timezones等一组国际化名称函数它们共享相同的“*::getNames($locale) 异常兜底返回空数组”实现模式。值得注意的实现细节异常兜底所有名称类函数都捕获Symfony\Component\Intl\Exception\MissingResourceException。这意味着 locale 资源缺失或无效时不会抛出RuntimeError而是静默返回空数组便于模板安全降级例如{{ script_names(UNKNOWN)|length }}得到0纯数据函数该函数不依赖Environment只做本地化数据查询无副作用可在模板任意位置多次调用。测试验证仓库中的集成测试用例 extra/intl-extra/Tests/Fixtures/script_names.test 对该函数的行为做了直接验证{{ script_names(UNKNOWN)|length }} {{ script_names()|length 200 ? more than 200 : less than 200 }} {{ script_names(fr)|length 200 ? more than 200 : less than 200 }} {{ script_names()[Marc] }} {{ script_names(fr)[Marc] }}对应期望输出0 more than 200 more than 200 Marchen Marchen这组断言从测试层面确认了四个事实无效 locale 返回空数组默认 locale 与frlocale 的条目数都超过 200返回的是可用脚本代码直接取值的关联数组Marc玛尔辰文在不同 locale 下的名称一致。典型应用场景与最佳实践script_names适用于需要按书写系统组织内容的场景例如文字筛选下拉框配合for循环渲染脚本选项以 ISO 15924 代码作值、本地化名称为显示文本select namescript {% for code, name in script_names() %} option value{{ code }}{{ name }}/option {% endfor %} /select多语言站点展示传入当前请求的 locale让脚本名称随界面语言切换{{ script_names(app.request.locale)|join(、) }}降级处理由于无效 locale 返回空数组可在渲染前用length判断是否为空避免输出空列表{% if script_names(locale)|length 0 %} {{ script_names(locale)|join(, ) }} {% endif %}注意事项函数的输出受 PHP 进程默认 locale\Locale::getDefault()影响不同环境下默认值可能不同需要稳定输出时应始终显式传参返回条目数量较大200 余项直接join输出会得到很长的字符串通常应配合slice、batch或条件过滤使用或仅用于渲染下拉选项该函数仅返回脚本名称数据不包含每个脚本是否被当前页面使用等业务信息结合业务数据过滤应在模板调用处完成。小结script_names是 Twig 3.5 之后处理书写系统本地化命名的最直接手段一条表达式即可拿到完整的脚本代码到本地化名称的映射且对无效 locale 有优雅的空数组兜底。使用时记得先通过composer require twig/intl-extra安装扩展并在 Symfony通过 extra-bundle 自动注册或手动addExtension两种方式中选择其一启用。赞分享后端【免费下载链接】TwigTwig, the flexible, fast, and secure template language for PHP项目地址https://gitcode.com/gh_mirrors/tw/Twig点击查看免费下载相关推荐Twig locale_names 函数详解按当前语言环境批量获取全部区域名称IntlExtensionTwig locale_names 函数详解按当前语言环境批量获取全部区域名称IntlExtension locale_names 是 Twig 自 3.后端Twig country_names 函数详解按 locale 批量获取本地化国家名称列表Twig country_names 函数详解按 locale 批量获取本地化国家名称列表 country_names 是 Twig 3.5 起由 IntlE后端如何为 marimo 添加一条新的 lint 规则如何为 marimo 添加一条新的 lint 规则 marimo 内置了一个 linter用来在 notebook 运行之前发现会导致执行失败或产生混淆的问后端上一篇Audacity 免费音频编辑4 个场景快速上手指南下一篇微信小程序逆向工程深度解析unveilr架构原理与实战应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
CrossPoint 固件测试与调试完全指南:本地检查、设备端日志与高效 Bug 上报 【免费下载链接】crosspoint-reader Open-source e-reader firmware 项目地址: https://gitcode.com/gh_mirrors/cr/crosspoint-reader 点击查看 免费下载 CrossPoint 是运行在真实硬件(Xteink X4 / X3、M5Stack Paper Mono 等 ESP32 系墨水屏阅读器&am… · 2026/9/26 8:28:28
Linux开发板打造国标ONVIF网络摄像头:RTSP与GB/T 28181实战 1. 从抽屉里翻出那块吃灰的 Linux 小板说起如果你手上正好有一块闲置的 Linux 开发板——树莓派、香橙派、RK3566 工控板,甚至是一台跑着 Ubuntu 的旧笔记本——那这篇文章大概率能帮你把它从"电子垃圾"变成一台真正能接入国标视频平台的网络摄像头。我说… · 2026/9/26 8:28:22
sqli-labs Less-25通关指南:SQL注入中or与and过滤的双写绕过 sqli-labs 这套靶场,很多人从 Less-1 一路点过来,前面的关卡基本是“见招拆招”:单引号闭合、联合查询、报错函数,一套流程下来就觉得 SQL 注入不过如此。等刷到 Less-25,你会发现页面又干干净净地返回了报错ÿ… · 2026/9/26 8:28:22
电力室外与室内智能巡检机器人:从PPT到可落地部署方案 简介:这份PPT面向电力运维人员、智能巡检方案设计者及电力相关专业学习者,系统梳理了室外与室内智能巡检机器人的技术架构与应用路径,帮助解决传统人工巡检效率低、准确性不足、恶劣环境下安全风险高等痛点。资源包共1个PPT文件,约… · 2026/9/26 9:13:13
VS Code + LaTeX 双向定位配置:4分钟搞定 Synctex 正反向跳转 1. 项目概述:为什么正反向定位是 LaTeX 编辑体验的“呼吸感”分水岭 在 VS Code 里写 LaTeX,最常被忽略、却最影响持续写作节奏的,不是宏包报错,不是编译失败,而是——你点一下 PDF 预览窗口里的某一行公式࿰… · 2026/9/26 9:13:13
AIO Sandbox:全栈融合沙箱架构与MCP协议设计 1. 项目概述:一个“全栈式”沙箱的诞生逻辑 AIO Sandbox 这个名字乍看有点拗口,但拆开来看就非常直白——All-in-One Sandbox。它不是那种只跑 Python 脚本、或者只做网页自动化测试的轻量沙箱,而是把浏览器、Shell、文件系统、MCP 协议支持、… · 2026/9/26 9:13:13
Simple Allow Copy:一键解除网页复制限制的浏览器扩展原理与实战 网页上的文字选不中、右键菜单被禁用、复制按钮点了没反应——这类场景想必你我都遇到过。明明是一篇公开的教程、一份产品参数、一段自己需要的资料,却因为页面加了复制限制,只能对着屏幕一个字一个字敲。Simple Allow Copy 就是冲着这个痛点来的&#… · 2026/9/26 9:13:13
ROS机器人开发入门:从通信机制到SLAM自主导航实战 GitHub上排名靠前的开源项目,往往不是那种"看起来很酷"的玩具,而是真正被成千上万开发者压在键盘底下的基础设施。ROS就是其中之一。如果你在GitHub上搜"robot"相关的高星仓库,会发现在整个移动机器人生态里,… · 2026/9/26 9:13:13
合规视频修复与图像增强:从超分辨率到老照片上色 很抱歉,我不能围绕这个项目标题创作博文。这个标题指向的软件,其核心功能是去除视频中的人为模糊或马赛克处理。这类工具的典型用途往往涉及未经授权的成人内容处理、隐私侵犯,或者对被刻意隐藏信息的画面进行强行还原,本身就游走… · 2026/9/26 9:13:07
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46