Extension:UniversalLanguageSelector/zh

通用语言选择器（Universal Language Selector）是一个允许用户选择语言，并以更容易的方式配置其支持的工具. 在使用的地方，它还附带了和扩展的功能（不推荐使用这两种扩展，而推荐使用Universal Language Selector）. 参见以了解背景及额外信息.

用法
主要目的是让用户以一种简单的方法选择并配置支持用户语言.

该扩展提供了以下功能：


 * 1) 从众多语言中选择一种语言的灵活便捷的方法.
 * 2) 可根据地理区域进行选择浏览、搜索.
 * 3) 搜索可以基于ISO语言代码、以当前用户界面语言编写的语言名称或其自己的脚本（自动命名）
 * 4) 跨语言搜索-使用任何脚本搜索任意的语言
 * 5) 语言名称的自动补全
 * 6) 自动更正搜索字符串中的拼写错误
 * 7) 基于地理位置的语言建议
 * 8) 基于用户浏览器/操作系统语言的语言选择
 * 9) 输入法
 * 有关完整说明，请参阅
 * 1) 一个易于选择的输入法集合，在每个可编辑字段中随时可用
 * 2) 为各种语言提供一系列输入法
 * 3) * 拓展:Narayam#Supported scheme 提供了一个过时的列表
 * 4) 每种语言的输入法首选项
 * 5) 网络字体
 * 6) 为每种语言选择不同字体以用作页面的嵌入字体
 * 7) * 你可以浏览所有字体包括
 * 8) 每种语言的字体首选项





添加字体
支持更多语言只需在代码中包含正确的字体. 但是，请注意，我们将仅添加对免费许可字体的支持，例如在 GNU GPL、SIL OFL 等下许可的字体. 此类免费字体的示例目录是 Google Fonts （不是 但已被此扩展程序的作者充分检查/利用）； 另见 开源字体库.

首先，你需要找到或制作这样一个免费的字体（这是最重要的部分，你必须自己做）； 然后，必须将其转换为所需的格式，即eot、ttf、woff； 最后，您可以在 Phabricator 中 file a request 将字体添加到扩展中.

网络字体 下面解释了如何转换字体：需要有基于 GNU/Linux 操作系统的基本知识； 如果您在执行此操作时遇到困难，您可以跳过此步骤并在同一个 Phabricator 请求中请其他人为您执行此操作（当然这会减慢该过程）.



准备网页字体（webfonts）
Creating .woff:

Use https://github.com/bramstein/sfnt2woff-zopfli to generate woff from ttf file. This will produce a compressed woff file.

创建.woff2：

使用 $url 从 ttf 生成 woff2， 这将生成一个压缩的 woff2 文件. 主流的浏览器支持这种格式.

创建一个font.ini文件，这里有个例子：

语言代码后的星号 表示该字体将是该语言的默认字体. 如果您只想选择将此字体用于该语言，请不要使用星号.

创建文件后，执行以下操作：


 * 1) 在 data/fontrepo/fonts 下为字体创建一个目录.
 * 2) 将 ttf、woff、eot 和 font.ini 文件放在该目录中，并将它们添加到源存储库（ ）.
 * 3) 进入 目录并运行.
 * 4) 将更改提交到存储库  并根据 Git 工作流程 提交.



添加对新键映射（输入法）的支持
遵循 instructions on the jquery.ime github wiki，但文件请求在 Wikimedia-拓展-UniversalLanguageSelector Phabricator 产品中.

安裝


更新语言名称索引
为了执行跨语言搜索，搜索 autonyms，需要填充语言数据. ULS 带有预填充的语言名称索引 (data/langnames.ser). 如果您想更新它，请安装 并使用以下命令更新数据.

php UniversalLanguageSelector/data/LanguageNameIndexer.php 并验证在 ULS/data/ 文件夹中生成了 langnames.ser 文件.

配置
以下变量是在初始化期间自动创建的，可以使用 mw.config.get( NAME ) 从 JavaScript 中使用：


 * - 一个关联数组，其中键是语言代码，值是英语语言名称.
 * - 来自用户 Accept-Language 值的语言代码数组. 这些是在用户浏览器首选项中选择的语言.

对于提供字体，您可能希望将以下 mime 类型添加到您的网络服务器（如果还没有的话）. 本指南 可能会有所帮助.

 font/woff .woff application/vnd.ms-fontobject .eot application/x-font-ttf .ttf

还可以配置以下变量：


 * - ULS 可以使用地理定位服务根据用户访问的国家/地区建议语言. 将此设置为 false 将禁止使用内置地理定位.  您可以通过设置窗口提供自己的地理位置信息.  具有键'country_code'或'country_code'的对象的地理位置.  如果设置为 true，它将查询 Wikimedia 的 geoip 服务.  该服务应返回使用提供的回调参数的 jsonp.  默认为 http://freegeoip.net/json/ （警告：该网站已关闭其 API）并接受相同的格式.
 * - 为每个人启用语言选择、紧凑的语言链接、输入法和网络字体，除非行为被下面的配置变量覆盖. 即使为 false，类和资源加载器模块也已注册以供其他扩展使用.  无法通过 cookie 或 setlang 查询参数更改语言.
 * - 允许匿名用户使用 cookie 和 setlang 查询参数更改语言. 如果您在不考虑 cookie 的情况下缓存匿名页面视图，请不要使用.  如果   或   中的任何一个设置为 false，则不会产生任何影响.
 * - 默认禁用所有用户的输入法功能. 可以手动启用.
 * - 语言选择触发器的位置和形式. 可能的值为：  ：作为用户名附近的链接或个人工具栏中的登录链接（默认）.   ：作为侧边栏中的interlanguage 链接列表标题附近的图标.
 * - 不得启用 IME 的元素的 jQuery 选择器数组. 例如：
 * - 是否从 Accept-Language 标头中自动检测用户的语言.



ULS触发位置

 * - 语言选择触发器的位置和形式. 可能的值为：  ：作为用户名附近的链接或个人工具栏中的登录链接（默认）.   ：作为侧边栏中的interlanguage 链接列表标题附近的图标.

也可以在屏幕的任何位置触发 ULS. 具有  的元素将充当 ULS 触发器.



首要默认字体
ULS 有一个大型字体存储库，可用作网络字体. 有时一种语言有多种字体，每种语言/脚本都有一个默认字体. 可以使用全局脚本 (MediaWiki:Common.js) 或个人脚本 (Special:MyPage/common.js) 覆盖字体顺序或默认字体，如下所示：



缓存配置
为确保 Web 字体文件缓存在客户端计算机上，必须将字体文件类型添加到 Web 服务器配置中. 在 Apache2 中，这包括：


 * 为相关目录的 FilesMatch 中的 FileTimes 正则表达式添加字体文件扩展名，例如：
 * 将 ExpiresByType 值添加到相关的 MIME 类型，类似于图像 MIME 类型.
 * 请注意，TTF 没有标准的 MIME 类型. application/x-font-ttf 用于维基媒体.
 * 添加 MIME 类型：

 AddType font/woff .woff AddType application/vnd.ms-fontobject .eot AddType application/x-font-ttf .ttf

有关完整示例，请参阅 为 Wikimedia 集群完成缓存配置更新.



页面翻译
UniversalLanguageSelector 是 扩展的依赖项之一，它将它用于多种语言选择功能. 其中之一是用于链接的 MyLanguage 系统，它取决于用户的界面语言，但可以配置更多：参见 页面翻译功能.



使用网页字体
用户可以从语言设置 -> 显示设置中选择一种语言的网络字体. 默认情况下，该菜单中的第一个字体将应用于 wiki. 用户可以更改字体，并且会在整个页面中记住它. 用户也可以通过选择系统字体来禁用字体嵌入.

如果字体在用户的本地系统中可用，字体将不会从 mediawiki 服务器下载. 它将从用户的计算机中获取. 否则，字体只会从服务器下载一次. 即当用户第一次选择字体时. 下一次以后，字体将从本地缓存中获取.



另一种方式来加载字体


通过指定字体系列
在 wiki 文本 YourText 中，webfonts 扩展程序将检查该字体是否可用于该扩展程序，如果是，它将下载 它给客户. 因此，即使指定的字体在他们的计算机中不可用，读者在阅读文本时也不会遇到任何困难.



通过指定语言
在 wiki 文本 YourText 中，webfonts 扩展程序将检查是否有任何字体可用于具有扩展名的给定语言，如果是，它将下载到 客户. 因此，即使指定的字体在他们的计算机中不可用，读者在阅读文本时也不会遇到任何困难. 如果该语言有多种字体，则将使用默认字体. 如果默认字体不是首选，请使用 font-family 方法来指定字体. 如果标签同时具有 lang 和 font-family 定义，则 font-family 优先.

例子：

𒄖𒉈𒅁𒌨𒅎

使用 Akkadian 字体以楔形文字呈现文本

𒄖𒉈𒅁𒌨𒅎



另见

 * Extension:Google Translator
 * Extension:Google Translator
 * Extension:Google Translator
 * Extension:Google Translator
 * Extension:Google Translator