Jump to content

API: Definir Idioma da Página

From mediawiki.org
This page is a translated version of the page API:SetPageLanguage and the translation is 100% complete.
Versão MediaWiki:
1.29

Pedido "POST" para alterar o idioma de uma página.

Documentação da API

action=setpagelanguage

(main | setpagelanguage)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Change the language of a page.

Specific parameters:
Other general parameters are available.
title

Title of the page whose language you wish to change. Cannot be used together with pageid.

pageid

Page ID of the page whose language you wish to change. Cannot be used together with title.

Type: integer
lang

Language code of the language to change the page to. Use default to reset the page to the wiki's default content language.

This parameter is required.
One of the following values: aae, ab, abr, abs, ace, acf, acm, ady, ady-cyrl, aeb, aeb-arab, aeb-latn, af, aig, ak, aln, alt, am, ami, an, ang, ann, anp, apc, ar, arc, arn, arq, ary, arz, as, ase, ast, atj, av, avk, awa, ay, az, azb, ba, ban, ban-bali, bar, bbc, bbc-latn, bcc, bci, bcl, bdr, be, be-tarask, bew, bg, bgc, bgn, bh, bho, bi, bjn, blk, bm, bn, bo, bol, bpy, bqi, br, brh, bs, btm, bto, bug, bug-bugi, bxr, ca, cbk-zam, ccp, cdo, cdo-hant, cdo-latn, ce, ceb, ch, chn, chr, chy, ckb, co, cop, cps, cpx, cpx-hans, cpx-hant, cr, crh, crh-cyrl, crh-latn, crh-ro, cs, csb, cu, cv, cy, da, dag, de, de-at, de-ch, de-formal, default, dga, din, diq, dlg, dsb, dtp, dty, dua, dv, dz, ee, efi, egl, el, eml, en, en-ca, en-gb, eo, es, es-formal, et, eu, ext, fa, fat, ff, fi, fit, fj, fo, fon, fr, frc, frp, frr, frs, fur, fvr, fy, ga, gaa, gag, gan, gan-hans, gan-hant, gcf, gcr, gd, gl, gld, glk, gn, gom, gom-deva, gom-latn, gor, got, gpe, grc, gsw, gu, guc, gur, guw, gv, ha, hak, hak-hans, hak-hant, hak-latn, haw, he, hi, hif, hif-latn, hil, hke, hno, hoc-latn, hr, hrx, hsb, hsn, ht, hu, hu-formal, hy, hyw, ia, iba, ibb, id, ie, ig, igl, ii, ik, ike-cans, ike-latn, ilo, inh, io, is, isv, isv-cyrl, isv-latn, it, iu, ja, jam, jbo, jut, jv, jv-java, ka, kaa, kab, kai, kaj, kbd, kbd-cyrl, kbp, kcg, kea, kg, kge, khw, ki, kiu, kjh, kjp, kk, kk-arab, kk-cn, kk-cyrl, kk-kz, kk-latn, kk-tr, kl, km, kn, knc, ko, ko-kp, koi, kr, krc, kri, krj, krl, ks, ks-arab, ks-deva, ksh, ksw, ku, ku-arab, ku-latn, kum, kus, kv, kw, ky, la, lad, lb, lbe, lez, lfn, lg, li, lij, liv, ljp, lki, lkt, lld, lmo, ln, lo, loz, lrc, lt, ltg, lua, lus, luz, lv, lzh, lzz, mad, mag, mai, map-bms, mdf, mg, mhr, mi, min, mk, ml, mn, mnc, mnc-latn, mnc-mong, mni, mnw, mo, mos, mr, mrh, mrj, ms, ms-arab, mt, mui, mwl, my, myv, mzn, nah, nan, nan-hant, nan-latn-pehoeji, nan-latn-tailo, nap, nb, nds, nds-nl, ne, new, nia, nit, niu, nl, nl-informal, nmz, nn, no, nod, nog, nov, nqo, nr, nrm, nso, nup, nv, ny, nyn, nyo, nys, oc, ojb, olo, om, or, os, pa, pag, pam, pap, pap-aw, pcd, pcm, pdc, pdt, pfl, pi, pih, pl, pms, pnb, pnt, ppl, prg, ps, pt, pt-br, pwn, qu, qug, rgn, rif, rki, rm, rmc, rmy, rn, ro, roa-tara, rsk, ru, rue, rup, ruq, ruq-cyrl, ruq-latn, rut, rw, ryu, sa, sah, sas, sat, sc, scn, sco, sd, sdc, sdh, se, se-fi, se-no, se-se, sei, ses, sg, sgs, sh, sh-cyrl, sh-latn, shi, shn, shy, shy-latn, si, sjd, sje, sk, skr, skr-arab, sl, sli, sm, sma, smn, sms, sn, so, sq, sr, sr-ec, sr-el, srn, sro, ss, st, stq, sty, su, sv, sw, syl, szl, szy, ta, tay, tcy, tdd, te, tet, tg, tg-cyrl, tg-latn, th, ti, tig, tk, tl, tly, tn, to, tok, tpi, tr, tru, trv, ts, tt, tt-cyrl, tt-latn, ttj, tum, tw, ty, tyv, tzm, udm, ug, ug-arab, ug-latn, uk, ur, uz, ve, vec, vep, vi, vls, vmf, vmw, vo, vot, vro, wa, wal, war, wls, wlx, wo, wuu, wuu-hans, wuu-hant, xal, xh, xmf, xsy, yi, yo, yrl, yua, yue, yue-hans, yue-hant, za, zea, zgh, zh, zh-cn, zh-hans, zh-hant, zh-hk, zh-mo, zh-my, zh-sg, zh-tw, zu
reason

Reason for the change.

tags

Change tags to apply to the log entry resulting from this action.

Values (separate with | or alternative): AWB, convenient-discussions
token

A "csrf" token retrieved from action=query&meta=tokens

This parameter is required.
Examples:
Change the language of the page MediaWiki to Basque.
api.php?action=setpagelanguage&title=MediaWiki&lang=eu&token=123ABC [open in sandbox]
Change the language of the page with ID 123 to the wiki's default content language.
api.php?action=setpagelanguage&pageid=123&lang=default&token=123ABC [open in sandbox]

Exemplo

Efetuar qualquer pedido "POST" é um processo de vários passos:

  1. Inicie a sessão utilizando um dos métodos descritos em API: Iniciar sessão .
  2. Obtenha um código CSRF .
  3. Envia um pedido "POST", com o código CSRF, para executar uma ação numa página.

O código de mostra em baixo, abrange o passo final em detalhe.

Pedido POST

Resposta

{
    "setpagelanguage": {
        "title": "User:Gangleri/tests/bugzilla/04917/MediaWiki:Badtitle",
        "oldlanguage": "en[def]",
        "newlanguage": "eu",
        "logid": 222004
    }
}

Código de amostra

Python

#!/usr/bin/python3

"""
    set_page_language.py

    MediaWiki API Demos
    Demo of `SetPageLanguage` module: POST request to change
    the language of a page

    MIT License
"""

import requests

S = requests.Session()

URL = "https://test.wikipedia.org/w/api.php"

# Step 1: GET request to fetch login token
PARAMS_0 = {
    "action": "query",
    "meta": "tokens",
    "type": "login",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_0)
DATA = R.json()

LOGIN_TOKEN = DATA['query']['tokens']['logintoken']

# Step 2: POST request to log in. Use of main account for login is not
# supported. Obtain credentials via Special:BotPasswords
# (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
PARAMS_1 = {
    "action": "login",
    "lgname": "bot_user_name",
    "lgpassword": "bot_password",
    "lgtoken": LOGIN_TOKEN,
    "format": "json"
}

R = S.post(URL, data=PARAMS_1)

# Step 3: GET request to fetch CSRF token
PARAMS_2 = {
    "action": "query",
    "meta": "tokens",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_2)
DATA = R.json()

CSRF_TOKEN = DATA['query']['tokens']['csrftoken']

# Step 4: POST request to change page language
PARAMS_3 = {
    "action": "setpagelanguage",
    "pageid": "123",
    "token": CSRF_TOKEN,
    "format": "json",
    "lang": "eu"
}

R = S.post(URL, data=PARAMS_3)
DATA = R.json()

print(DATA)

PHP

<?php

/*
    set_page_language.php

    MediaWiki API Demos
    Demo of `SetPageLanguage` module: POST request to change
	the language of a page

    MIT license
*/

$endPoint = "https://test.wikipedia.org/w/api.php";

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
set_page_language( $csrf_Token ); // Step 4

// Step 1: GET request to fetch login token
function getLoginToken() {
	global $endPoint;

	$params1 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "login",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params1 );

	$ch = curl_init( $url );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["logintoken"];
}

// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
	global $endPoint;

	$params2 = [
		"action" => "login",
		"lgname" => "bot_user_name",
		"lgpassword" => "bot_password",
		"lgtoken" => $logintoken,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

}

// Step 3: GET request to fetch CSRF token
function getCSRFToken() {
	global $endPoint;

	$params3 = [
		"action" => "query",
		"meta" => "tokens",
		"format" => "json"
	];

	$url = $endPoint . "?" . http_build_query( $params3 );

	$ch = curl_init( $url );

	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	$result = json_decode( $output, true );
	return $result["query"]["tokens"]["csrftoken"];
}

// Step 4: POST request to change page language
function set_page_language( $csrftoken ) {
	global $endPoint;

	$params4 = [
		"action" => "setpagelanguage",
		"pageid" => "66400",
		"lang" => "es",
		"token" => $csrftoken,
		"format" => "json"
	];

	$ch = curl_init();

	curl_setopt( $ch, CURLOPT_URL, $endPoint );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
	curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );

	$output = curl_exec( $ch );
	curl_close( $ch );

	echo ( $output );
}

JavaScript

/*  
    set_page_language.js
 
    MediaWiki API Demos
    Demo of `SetPageLanguage` module: POST request to change
	the language of a page

    MIT license
*/

var request = require('request').defaults({jar: true}),
    url = "https://test.wikipedia.org/w/api.php";

// Step 1: GET request to fetch login token
function getLoginToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "login",
        format: "json"
    };

    request.get({ url: url, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        loginRequest(data.query.tokens.logintoken);
    });
}

// Step 2: POST request to log in. 
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
    var params_1 = {
        action: "login",
        lgname: "bot_username",
        lgpassword: "bot_password",
        lgtoken: login_token,
        format: "json"
    };

    request.post({ url: url, form: params_1 }, function (error, res, body) {
        if (error) {
            return;
        }
        getCsrfToken();
    });
}

// Step 3: GET request to fetch CSRF token
function getCsrfToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        set_page_language(data.query.tokens.csrftoken);
    });
}

// Step 4: POST request to change page language
function set_page_language(csrf_token) {
    var params_3 = {
        action: "setpagelanguage",
        pageid: "66400",
        lang: "es",
        token: csrf_token,
        format: "json"
    };

    request.post({ url: url, form: params_3 }, function (error, res, body) {
        if (error) {
            return;
        }
        console.log(body);
    });
}

// Start From Step 1
getLoginToken();

MediaWiki JS

/*
	set_page_language.js

	MediaWiki API Demos
	Demo of `SetPageLanguage` module: POST request to change
    the language of a page

	MIT License
*/

var params = {
		action: 'setpagelanguage',
		pageid: '66400',
		lang: 'es',
		format: 'json'
	},
	api = new mw.Api();

api.postWithToken( 'csrf', params ).done( function ( data ) {
	console.log( data );
} );

Erros possíveis

Código Informação
notoken O parâmetro token tem de ser definido.
pagelang-disabled Nesta wiki não é permitido alterar a língua de uma página.
pagelang-unchanged-language A pagina title já está no idioma lang.
pagelang-db-failed A base de dados não conseguiu alterar o idioma da página.

Notas adicionais

  • Para os administradores de site e programadores de extensão do MediaWiki: a funcionalidade fornecida por este módulo deve ser ativada por $wgPageLanguageUseDB = true (ver Manual: Idiomas ).

Este módulo não pode ser utilizado como um generator .

Consultar também