Extension:通用語言選擇器

This page is a translated version of the page Extension:UniversalLanguageSelector and the translation is 100% complete.
MediaWiki扩展手册
UniversalLanguageSelector
发行状态: 稳定版
实现 用户界面, 皮肤 , 测试功能
描述 一个允许用户以更容易的方式选择语言并配置其所支持的功能的工具
作者 維基媒體语言小组
最新版本 2024-01-22
兼容性政策 master分支维持向后兼容。
MediaWiki >= 1.40.0
Composer mediawiki/universal-language-selector
许可协议
下載 包含在语言扩展包中
  • $wgULSWebfontsEnabled
  • $wgULSGeoService
  • $wgULSLanguageDetection
  • $wgULSAnonCanChangeLanguage
  • $wgULSEnable
  • $wgULSImeSelectors
  • $wgULSIMEEnabled
  • $wgULSNoWebfontsSelectors
  • $wgULSFontRepositoryBasePath
  • $wgULSCompactLanguageLinksBetaFeature
  • $wgULSNoImeSelectors
  • $wgULSPosition
不兼容IE8及以下版本.
季度下載量 190 (Ranked 38th)
正在使用的公开wiki数 1,237 (Ranked 214th)
前往translatewiki.net翻譯UniversalLanguageSelector扩展
問題 开启的任务 · 报告错误

通用语言选择器(Universal Language Selector)是一个允许用户以更容易的方式选择语言并配置其所支持的功能的工具。在使用的地方,它还附带了WebFonts Narayam 扩展的功能(這二種都已被弃用,转而使用通用语言选择器)。 参见通用语言选择器 以了解背景及额外信息。

用法

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

该扩展提供了以下功能:

  1. 从众多语言中选择一种语言的灵活便捷的方法。
    1. 可根据地理区域进行选择浏览、搜索。
    2. 搜索可以基于ISO语言代码、以当前用户界面语言编写的语言名称或其自己的脚本(自动命名)
    3. 跨语言搜索-使用任何脚本搜索任意的语言
    4. 语言名称的自动补全
    5. 自动更正搜索字符串中的拼写错误
    6. 基于地理位置的语言建议
    7. 基于用户浏览器/操作系统语言的语言选择
  2. 输入法
    有关完整说明,请参阅 Help:扩展:通用语言选择器/输入法
    1. 一个易于选择的输入法集合,在每个可编辑字段中随时可用
    2. 为各种语言提供一系列输入法
    3. 每种语言的输入法首选项
  3. 网络字体
    1. 为每种语言选择不同字体以用作页面的嵌入字体
    2. 每种语言的字体首选项
 
通用语言选择器,为来自印度的用户提供基于 IP 地理位置数据库的语言建议
 
语言设置允许注册用户在访问英文维基百科的时候将UI语言改变为自己的母语。
 
孟加拉语用户即使缺乏需要的电脑字体,仍能够读取孟加拉维基百科的内容。系统自动提供一个开放源码的非拉丁脚本的Web字体。在每一个语言的基础上,用户可以决定使用他们的系统字体。
 
没有印地语键盘的情况下,可以使用印地语语音识别来输入印地语。
 
搜索时用户可以在英语和印地语间切换。

添加字体

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

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

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

准备webfonts字体

Creating .woff:

使用 $url 从ttf生成woff2。 这将生成一个压缩的woff文件。

创建.woff2:

使用 https://github.com/google/woff2 从ttf生成woff2。 这将生成一个压缩的 woff2 文件。 主流的浏览器支持这种格式。

创建一个font.ini文件,这里有个例子:

[AbyssinicaSIL]
languages=am*, ti*
version=1.200
license=OFL 1.1
licensefile=OFL.txt
url=http://scripts.sil.org/AbyssinicaSIL
ttf=AbyssinicaSIL.ttf
woff=AbyssinicaSIL.woff
woff2=AbyssinicaSIL.woff2
bold=AbyssinicaSIL Bold

[AbyssinicaSIL Bold]
ttf=AbyssinicaSIL-Bold.ttf
woff=AbyssinicaSIL-Bold.woff
woff2=AbyssinicaSIL-Bold.woff2

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

创建文件后,执行以下操作:

  1. 在 data/fontrepo/fonts 下为字体创建一个目录。
  2. 将 ttf、woff、eot 和 font.ini 文件放在该目录中,并将它们添加到源存储库(git add)。
  3. 进入scripts/目录并运行php compile-font-repo.php
  4. 将更改提交到存储库 (git commit -a) 并根据 Git 工作流程 提交。

添加对新键映射(输入法)的支持

遵循 instructions on the jquery.ime github wiki,但文件请求在 Wikimedia-拓展-UniversalLanguageSelector Phabricator 产品中。

安裝

  • 下载文件,并将其放置在您extensions/文件夹中的UniversalLanguageSelector目录内。
    开发者和代码贡献人员应从Git安装扩展,输入:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/UniversalLanguageSelector
  • 将下列代码放置在您的LocalSettings.php 的底部:
    wfLoadExtension( 'UniversalLanguageSelector' );
    
  •   完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。


使用Vagrant安装:

  • 如果使用Vagrant ,请通过vagrant roles enable uls --provision安装

更新语言名称索引

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

php UniversalLanguageSelector/data/LanguageNameIndexer.php

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

配置

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

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

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

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

还可以配置以下变量:

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

ULS触发位置

  • $wgULSPosition - 语言选择触发器的位置和形式。 可能的值为: personal:作为用户名附近的链接或个人工具栏中的登录链接(默认)。 interlanguage:作为侧边栏中的interlanguage 链接列表标题附近的图标。

也可以在屏幕的任何位置触发 ULS。 具有 uls-settings-trigger 的元素将充当 ULS 触发器。

首要默认字体

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

缓存配置

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

  • 为相关目录的 FilesMatch 中的 FileTimes 正则表达式添加字体文件扩展名,例如:

<FilesMatch "\.(gif|jpe?g|png|css|js|woff|svg|eot|ttf)$">

  • 将 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 文本 <span style="font-family:'YourFontName';">YourText</span> 中,webfonts 扩展程序将检查该字体是否可用于该扩展程序,如果是,它将下载 它给客户。 因此,即使指定的字体在他们的计算机中不可用,读者在阅读文本时也不会遇到任何困难。

通过指定语言

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

例子:

<span lang=sux>𒄖𒉈𒅁𒌨𒅎</span>

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

𒄖𒉈𒅁𒌨𒅎

另见