扩展:通用语言选择器

From MediaWiki.org
Jump to: navigation, search
This page is a translated version of the page Extension:UniversalLanguageSelector and the translation is 48% complete.

Outdated translations are marked like this.
Other languages:
العربية • ‎català • ‎Deutsch • ‎English • ‎español • ‎suomi • ‎français • ‎हिन्दी • ‎magyar • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎occitan • ‎polski • ‎português • ‎português do Brasil • ‎русский • ‎sicilianu • ‎中文
MediaWiki扩展手册Manual:Extensions
Crystal Clear action run.png
UniversalLanguageSelector

发布状态:Extension status 稳定版

ULS-Display-Settings.png
实现Template:Extension#type User interface, Skin, Beta Feature
描述Template:Extension#description 允许用户选择语言并容易配置它的工具。
作者Template:Extension#username 维基媒体语言工程组
MediaWikiTemplate:Extension#mediawiki 1.26+
数据更新Template:Extension#needs-updatephp
ComposerComposer mediawiki/universal-language-selector
许可协议Template:Extension#license GNU General Public License 2.0 or later, The MIT License
下载 包含于语言扩展包
使用的钩子Template:Extension#hook
BeforePageDisplayManual:Hooks/BeforePageDisplay
PersonalUrlsManual:Hooks/PersonalUrls
ResourceLoaderTestModulesManual:Hooks/ResourceLoaderTestModules
ResourceLoaderGetConfigVarsManual:Hooks/ResourceLoaderGetConfigVars
MakeGlobalVariablesScriptManual:Hooks/MakeGlobalVariablesScript
UserGetLanguageObjectManual:Hooks/UserGetLanguageObject
SkinTemplateOutputPageBeforeExecManual:Hooks/SkinTemplateOutputPageBeforeExec
EnterMobileModeManual:Hooks/EnterMobileMode
GetPreferencesManual:Hooks/GetPreferences
GetBetaFeaturePreferencesManual:Hooks/GetBetaFeaturePreferences

不兼容IE8及以下版本.

翻译UniversalLanguageSelector扩展(如果在translatewiki.net可用)

检查使用和版本矩阵。

问题Phabricator

开放的工作 · 报告错误

通用语言选择器(Universal Language Selector)is a tool that allows users to select a language and configure its support in an easy way. Where used, it also ships the functionality of both WebFonts and Narayam extensions (both of which have been deprecated in favour of Universal Language Selector). 参见通用语言选择器以了解背景及额外信息。

用法

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

该扩展提供了以下功能:

  1. 简单灵活的从一大堆语言中选择语言。
    1. Selection can be based on geographical region based browsing, searching.
    2. Search can be based on ISO language code, language name written in current user interface language or in its own script(autonym)
    3. Cross language search - search language names using any script
    4. 语言名称的自动完成
    5. Auto correction of spelling mistakes in search strings
    6. Geo IP based language suggestions
    7. Language selection based on users browser/OS language
  2. 输入法
    See Help:Extension:UniversalLanguageSelector/Input methods for complete instructions.
    1. An easily selectable input method collection, readily available in every editable field
    2. Provides a large set of input methods for wide range of languages
    3. Per-language input method preferences
  3. 网页字体
    1. A large collection of fonts to choose for each language to use as embedded font for the page
    2. 每种语言字体首选项
通用语言选择器
语言设置允许注册用户在访问英文维基百科的时候将UI语言改变为自己的母语。
A Bengali user is able to read content from the Bengali Wikipedia despite the lack of fonts in his computer. Web fonts are provided automatically for non-latin scripts for which an open source font is available. The user can decide to use their system fonts on a per language basis.
A Hindi speaker without a Hindi keyboard configures input methods so that he can type in his language.
搜索时用户可以在英语和印地语间切换。

加入字体

Supporting more languages is only a matter of including the proper fonts in the code. However, please note that we will add support only for freely licensed fonts, for example fonts licensed under GNU GPL, SIL OFL, etc. An example directory of such free fonts is Google Fonts [1] (not yet fully examined/exploited by the authors of this extension); see also the Open Font Library.

First of all, you need to find or produce such a free font (this is the most important part and you have to do it yourself); then, it has to be converted to the required formats, which are eot, ttf, woff; finally, you can file a request in Phabricator for the font to be added to the extension.

#Preparing webfonts below explains how to convert the fonts: basic knowledge about GNU/Linux based operating system is required; if you have difficulty in doing this, you can skip this step and ask someone else to do it for you on the same Phabricator request (of course this will slow down the process).

准备网页字体(webfonts)

创建网页字体需要Sfntly(只限命令行)。

一旦安装,以下命令即可使用。

Creating .woff:

java -jar /path/to/sfnttool.jar -w xyz.ttf xyz.woff

Creating .woff2:

Use https://github.com/google/woff2 to generate woff2 from ttf. This will produce a compressed woff2 file. Modern browsers support this format.

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

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

An asterisk (*) after a language code means that this font will be the default font for that language. If you just want the option to use this font for that language, don't use the asterisk.

After creating the files, do the following:

  1. Create a directory for the font under data/fontrepo/fonts.
  2. Put the ttf, woff, eot and font.ini files in that directory and add them to the source repository (git add).
  3. Go to data/fontrepo/scripts and run php compile.php.
  4. Commit the changes to the repository (git commit -a) and submit them according to the Git workflow.

Adding support for a new key mapping (input method)

Follow the instructions on the jquery.ime github wiki, but file requests in the Wikimedia-extensions-UniversalLanguageSelector Phabricator product.

下载

此扩展可直接从Git检索到 [?]:

  • 浏览代码
  • 部分扩展有稳定版本标签。
  • 每个分支与过去的MediaWiki发布版本相关联。 这里也有一个“主线”分支,包含最新alpha版本(可能需要MediaWiki的alpha版本)。

提取快照,并将它放置在您的MediaWiki安装副本的extensions/UniversalLanguageSelector/目录中。

如果您对git熟悉,并且拥有您服务器的shell访问权,您也可以通过以下方法获得扩展:

cd extensions/
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/UniversalLanguageSelector.git

安装

  • 下载文件,并将其放置在您extensions/文件夹中的UniversalLanguageSelector目录内。
  • 将下列代码放置在您的LocalSettings.php的底部:
    wfLoadExtension( 'UniversalLanguageSelector' );
    
  • YesY 完成 - 在您的wiki上导航至Special:Version,以验证扩展已成功安装。

更新LanguageNameIndex

For performing cross language search, searching autonyms, language data needs to be populated. ULS comes with a pre-populated language name index(data/langnames.ser). In case you want to update it, install Extension:CLDR and update the data with the following command.

php UniversalLanguageSelector/data/LanguageNameIndexer.php

and verify that langnames.ser file gets generated in ULS/data/ folder.

配置

The following variables are created automatically during initialization and can be used from JavaScript using mw.config.get( NAME ):

  • wgULSLanguages - an associative array where the keys are language codes and the values are language names in English.
  • wgULSAcceptLanguageList - an array of language codes from the user's Accept-Language value. These are the languages selected in the user's browser preferences.

For serving fonts, you might want to add the following mime types to your webserver if not already there. This guide might help.

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

The following variables can also be configured:

  • $wgULSGeoService- ULS can use geolocation services to suggest languages based on the country the user is visiting from. Setting this to false will prevent builtin geolocation from being used. You can provide your own geolocation by setting window.Geo to object which has key 'country_code' or 'country'. If set to true, it will query Wikimedia's geoip service. The service should return jsonp that uses the supplied callback parameter. Defaults to http://freegeoip.net/json/ and expects the same format.
  • $wgULSEnable - Enable language selection, compact language links, input methods and webfonts for everyone, unless the behavior is overridden by the configuration variables below. Even if false the classes and resource loader modules are registered for the use of other extensions. Language changing via cookie or setlang query parameter is not possible.
  • $wgULSAnonCanChangeLanguage - Allow anonymous users to change language with cookie and setlang query param. Do not use if you are caching anonymous page views without taking cookies into account. Does not have any effect if either of $wgULSEnable or $wgULSEnableAnon is set to false.
  • $wgULSIMEEnabled - Disable the input methods feature for all users by default. Can still be enabled manually by the user.
  • $wgULSPosition - The location and the form of the language selection trigger. The possible values are: personal: as a link near the username or the log in link in the personal toolbar (default). interlanguage: as an icon near the header of the list of interlanguage links in the sidebar.
  • $wgULSNoImeSelectors - Array of jQuery selectors of elements on which IME must not be enabled. eg: array( '#wpCaptchaWord' );

ULS触发位置

  • $wgULSPosition - The location and the form of the language selection trigger. The possible values are: personal: as a link near the username or the log in link in the personal toolbar (default). interlanguage: as an icon near the header of the list of interlanguage links in the sidebar.

It is also possible to have ULS trigger anywhere in the screen. An element with uls-settings-trigger will act as a ULS trigger.

首要默认字体

ULS has a large font repository to serve as webfonts. Sometimes there are multiple fonts for a language and there is a default font for each language/script. The order of fonts or default font can be overridden as follows using global scripts (MediaWiki:Common.js) or personal scripts (Special:MyPage/common.js):

$.webfonts.repository.languages.languageCode = ["system", "FontA", "FontB"];

Here, languageCode should be a valid language code(eg: en, hi, nl). FontA and FontB are fonts available in font repository. In the above example for languageCode, we set a font available in local computer as default font. ie No default webfont.

缓存配置

To ensure that the web fonts files are cached on the clients' machines, font file types must be added to the web server configuration. In Apache2 this consists of:

  • Adding font file extensions to the FileTimes regex at FilesMatch for the relevant directory, example:

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

  • Adding ExpiresByType values to the relevant MIME types, similarly to image MIME types.
    • Note that there's no standard MIME type for TTF. application/x-font-ttf is used for Wikimedia.
  • Adding the MIME types:
AddType application/x-woff .woff
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf .ttf

For a full example see the caching configuration update done for the Wikimedia cluster.

页面翻译

UniversalLanguageSelector is one of the dependencies of the Translate extension, which uses it for several language selection features. One of it is the MyLanguage system for links, which depends on the interface language of the user, but more can be configured: see Page translation feature.

使用网页字体

User can choose webfonts for a language from the Language settings -> Display settings. By default, the first font in that menu will be applied to the wiki. A user can change the font and it will be remembered across the pages. Optionally user can disable the font embedding too by selecting system font.

If the font is available in user's local system, font will not be downloaded from the mediawiki server. It will be taken from the user's computer. Otherwise, font will be downloaded from the server only once. ie when the user selects the font first time. Next time onwards, font will be taken from the local cache.

另一种方式来加载字体

通过指定字体系列

Inside the wiki text <span style="font-family:'YourFontName';">YourText</span>, webfonts extension will check whether the font is available with the extension, if so it will download it to the client. So the reader will not face any difficulty in reading the text even if the font specified is not available in their computer.

通过指定语言

Inside the wiki text <span lang="my">YourText</span>, webfonts extension will check whether any font is available for the given language with the extension, if so it will download it to the client. So the reader will not face any difficulty in reading the text even if the font specified is not available in their computer. If there are multiple fonts for the language, the default font will be used. If default font is not preferred, use the font-family approach to specify the font. If the tag has both lang and font-family definitions, font-family get precedence.

例子:

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

gives the text rendered in Cuneiform using Akkadian font

𒄖𒉈𒅁𒌨𒅎

另见