新闻详情

新闻详情

首页 / 资讯中心 / 详情

Twig script_names 函数详解:按语言环境获取书写系统名称列表

发布时间:2026/11/14 23:27:27来源:尧图网络
Twig script_names 函数详解:按语言环境获取书写系统名称列表
后端【免费下载链接】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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉