v1.0 du site web
@@ -0,0 +1,573 @@
|
||||
|
||||
/**
|
||||
* @name CeL function for Windows
|
||||
* @fileoverview
|
||||
* 本檔案包含了 Windows 系統管理專用的 functions。
|
||||
* @since
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
if (typeof CeL === 'function')
|
||||
CeL.run(
|
||||
{
|
||||
name : 'application.OS.Windows',
|
||||
code : function(library_namespace) {
|
||||
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
* @class web 的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
// --------------------------------------------------------
|
||||
|
||||
|
||||
// 在 .hta 中, typeof WScript==='undefined'.
|
||||
// http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/objects/shell/application.asp
|
||||
// http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_intro.asp
|
||||
|
||||
// 用 IE 跑 ActiveXObject 可能會出現 ActiveX 指令碼的警告,須更改「允許主動式內容在我電腦上的檔案中執行」或改用 <a href="http://msdn.microsoft.com/en-us/library/ms537628%28v=vs.85%29.aspx" accessdate="2011/12/11 20:4" title="The Mark of the Web (MOTW)">Mark of the Web</a>。
|
||||
// IE 工具→「網際網路選項」→「進階」→「安全性」→「允許主動式內容在我電腦上的檔案中執行」
|
||||
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
// for Microsoft Windows Component Object Model.
|
||||
// http://blogs.msdn.com/b/ericlippert/archive/2004/06/01/145686.aspx
|
||||
// http://technet.microsoft.com/library/ee156598.aspx
|
||||
new_COM = typeof WScript === 'object' ? function(id) {
|
||||
// http://msdn.microsoft.com/en-us/library/xzysf6hc(v=vs.84).aspx
|
||||
return WScript.CreateObject(id);
|
||||
} : typeof ActiveXObject === 'function' ? function(id) {
|
||||
// e.g., in HTA
|
||||
return new ActiveXObject(id);
|
||||
} : typeof Server === 'object' && Server.CreateObject && function(id) {
|
||||
return Server.CreateObject(id);
|
||||
};
|
||||
|
||||
// CeL.application.OS.Windows.no_COM
|
||||
if (_.no_COM = !_.new_COM && 'No Component Object Model support!') {
|
||||
if (false && !library_namespace.env.ignore_COM_error)
|
||||
library_namespace.warn('new_COM: no <a href="http://en.wikipedia.org/wiki/Component_Object_Model" target="_blank">Component Object Model</a> support!');
|
||||
|
||||
(_.new_COM = function(id) {
|
||||
// 忽略沒有 Windows Component Object Model 的錯誤。
|
||||
if (!library_namespace.env.ignore_COM_error)
|
||||
throw new Error('new_COM: No method to get Microsoft <a href="http://en.wikipedia.org/wiki/Component_Object_Model" target="_blank">Component Object Model</a> (COM): [' + id + ']! You may need to set `CeL.env.ignore_COM_error = true`!');
|
||||
});
|
||||
|
||||
return _;
|
||||
}
|
||||
// WScript.Echo((_.no_COM? '沒' : '') + '有 Windows Component Object Model。');
|
||||
|
||||
|
||||
/**
|
||||
* test if is a COM.<br />
|
||||
* 經驗法則。並非依照規格書。
|
||||
*
|
||||
* @param object
|
||||
* object to test
|
||||
* @returns {Boolean} is a COM.
|
||||
*/
|
||||
function is_COM(object) {
|
||||
try {
|
||||
if (library_namespace.is_Object(object)
|
||||
&& '' === '' + object
|
||||
&& typeof object.constructor === 'undefined'
|
||||
) {
|
||||
var i;
|
||||
for (i in object) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
i = String(object);
|
||||
return false;
|
||||
} catch (e) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
is_COM = is_COM;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var HTA;
|
||||
/**
|
||||
* Are we run in HTA?<br />
|
||||
* ** HTA 中應該在 DOM ready 後呼叫,否則 document.getElementsByTagName 不會有東西!
|
||||
* @param {String}[id] HTA tag id (only used in low version that we have no document.getElementsByTagName)
|
||||
* @return We're in HTA
|
||||
* @require library_namespace.is_WWW
|
||||
* @since 2009/12/29 19:18:53
|
||||
* @_memberOf _module_
|
||||
* @see
|
||||
* http://msdn2.microsoft.com/en-us/library/ms536479.aspx
|
||||
* http://www.microsoft.com/technet/scriptcenter/resources/qanda/apr05/hey0420.mspx
|
||||
* http://www.msfn.org/board/lofiversion/index.php/t61847.html
|
||||
* lazy evaluation
|
||||
* http://peter.michaux.ca/articles/lazy-function-definition-pattern
|
||||
*/
|
||||
function get_HTA(id) {
|
||||
if (!library_namespace.is_HTA)
|
||||
return;
|
||||
|
||||
if (library_namespace.is_WWW(true)) {
|
||||
HTA = document.getElementsByTagName('APPLICATION')[0];
|
||||
} else
|
||||
HTA = library_namespace.is_WWW() && id && document.all && document.all[id];
|
||||
|
||||
return HTA;
|
||||
};
|
||||
|
||||
library_namespace.set_initializor(get_HTA, _);
|
||||
|
||||
|
||||
|
||||
|
||||
function parse_command_line(command_line, no_command_name){
|
||||
// TODO: "" 中的判別仍有問題。
|
||||
var args = [], re = no_command_name ? /\s+("([^"]*)"|(\S+))/g
|
||||
: /\s*("([^"]*)"|(\S+))/g, result;
|
||||
|
||||
// commandLine 第一引數為 full script name
|
||||
while (result = re.exec(command_line))
|
||||
args.push(result[3] || result[2]);
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
//get_WScript_object();
|
||||
//get_WScript_object[generateCode.dLK]='is_WWW,get_HTA,WSH,dirSp'.split(',');
|
||||
//get_WScript_object[generateCode.dLK].push('*var args,WshShell,WinShell,WinShell,fso;get_WScript_object();');
|
||||
var WSH, WshShell = "WScript.Shell", WinShell = "Shell.Application", FSO = "Scripting.FileSystemObject", args;
|
||||
|
||||
var log_message;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param HTML_only
|
||||
*/
|
||||
function get_WScript_object(HTML_only) {
|
||||
var i;
|
||||
|
||||
if (typeof WshShell === 'string') {
|
||||
//library_namespace.debug('Initializing using ' + _.new_COM, 1, 'get_WScript_object');
|
||||
try {
|
||||
WshShell = _.new_COM(WshShell);
|
||||
WinShell = _.new_COM(WinShell);
|
||||
FSO = _.new_COM(FSO);
|
||||
} catch (e) {
|
||||
if ((e.number & 0xFFFF) === 429)
|
||||
// Automation 伺服程式無法產生物件
|
||||
// Run-Time Error '429' OLE Automation Server Can't Create Object
|
||||
// 把 HTA 當作 HTML?
|
||||
throw e;
|
||||
library_namespace.error(e);
|
||||
}
|
||||
//library_namespace.debug(typeof FSO, 1, 'get_WScript_object');
|
||||
} else
|
||||
library_namespace.debug('Already initialized!', 1, 'get_WScript_object');
|
||||
|
||||
if (typeof WScript === 'object'
|
||||
// && typeof WScript.constructor=='undefined'
|
||||
) {
|
||||
// Array.from()
|
||||
args = Array.prototype.slice.call(WScript.Arguments);
|
||||
|
||||
// Microsoft Windows Script Host (WSH)
|
||||
i = (WSH = WScript.FullName).lastIndexOf(library_namespace.env.path_separator);
|
||||
if (i !== -1)
|
||||
WSH = WSH.slice(i + 1);
|
||||
|
||||
} else if (
|
||||
!(typeof HTML_only === 'undefined' ? library_namespace.is_WWW() && !_.get_HTA() : HTML_only)// !HTML_only//
|
||||
&& typeof ActiveXObject !== 'undefined')
|
||||
try {
|
||||
if (i = _.get_HTA()){
|
||||
args = parse_command_line(i.commandLine);
|
||||
// default HTA host is mshta.exe.
|
||||
WSH = 'mshta.exe';
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
// 判斷假如尚未load則排入以確定是否為HTA
|
||||
else if (library_namespace.is_WWW(1) && !_.get_HTA()
|
||||
// && !document.getElementsByTagName('body').length
|
||||
)
|
||||
setTimeout(function() {
|
||||
get_WScript_object(HTML_only);
|
||||
}, 100);
|
||||
|
||||
|
||||
try {
|
||||
// CScript.exe only
|
||||
// var stdout = FSO.GetStandardStream(1);
|
||||
// var stderr = FSO.GetStandardStream(2);
|
||||
log_message = function(message) {
|
||||
// stdout.WriteLine(message);
|
||||
// WScript.StdOut.Write(message);
|
||||
WScript.StdOut.WriteLine(message);
|
||||
};
|
||||
} catch (e) {
|
||||
// using WScript.exe
|
||||
log_message = function(message) {
|
||||
WScript.Echo(message);
|
||||
};
|
||||
}
|
||||
|
||||
// WScript.StdIn.ReadLine()
|
||||
|
||||
|
||||
/*
|
||||
* @cc_on @if(@_jscript_version >= 5) // JScript gives us Conditional
|
||||
* compilation, we can cope with old IE versions. // and security blocked
|
||||
* creation of the objects. ;//else.. @end@
|
||||
*/
|
||||
|
||||
i = {
|
||||
WshShell : WshShell,
|
||||
WinShell : WinShell,
|
||||
FSO : FSO,
|
||||
args : args,
|
||||
WSH : WSH
|
||||
};
|
||||
|
||||
if(HTML_only)
|
||||
throw i;
|
||||
return i;
|
||||
};
|
||||
|
||||
library_namespace.set_initializor(get_WScript_object, _);
|
||||
|
||||
|
||||
|
||||
|
||||
/* 2007/11/17 23:3:53
|
||||
使用 ADSI (Active Directory Service Interface) 存取資料
|
||||
http://support.microsoft.com/kb/234001
|
||||
http://www.dbworld.com.tw/member/article/010328b.htm
|
||||
http://support.microsoft.com/kb/216393
|
||||
*/
|
||||
function addUser(name,pw,group,computer){
|
||||
// http://msdn.microsoft.com/library/en-us/script56/html/wsmthenumprinterconnections.asp
|
||||
;
|
||||
// 連上伺服器
|
||||
var oIADs,o;
|
||||
// 利用Create指令,指定產生一個新的使用者類別,以及使用者帳號的名稱。使用SetInfo的指令將目錄服務中的資料更新。
|
||||
try{oIADs=new Enumerator(GetObject(computer='WinNT://'+(computer||(new_COM('WScript.Network')).ComputerName)));}catch(e){}//WScript.CreateObject('WScript.Network')
|
||||
if(oIADs){//try{
|
||||
if(name){
|
||||
try{o=oIADs.Create('user',name);}catch(e){o=new Enumerator(GetObject(computer+'/'+name));}
|
||||
o.SetPassword(pw),/*o.FullName=name,o.Description=name,*/o.SetInfo();
|
||||
// Administrators
|
||||
if(group)(new Enumerator(GetObject(computer+'/'+group))).Add(o.ADsPath); // o.ADsPath: computer+'/'+name
|
||||
return o; // 得到用戶
|
||||
}
|
||||
|
||||
//oIADs.Filter=['user'];//new VBArray('user'); // no use, 改用.AccountDisabled
|
||||
o={};
|
||||
// http://msdn2.microsoft.com/en-us/library/aa746343.aspx
|
||||
// 對所有的oIADs,通常有Name,Description
|
||||
for(var i,j,a,b,p='Name,AccountDisabled,Description,FullName,HomeDirectory,IsAccountLocked,LastLogin,LoginHours,LoginScript,MaxStorage,PasswordExpirationDate,PasswordMinimumLength,PasswordRequired,Profile'.split(',');!oIADs.atEnd();oIADs.moveNext())if(typeof oIADs.item().AccountDisabled==='boolean'){
|
||||
for(i=oIADs.item(),j=0,a={};j<p.length;j++)if(b=p[j])try{
|
||||
a[b]=i[b];
|
||||
if(typeof a[b]==='date')a[b]=new Date(a[b]);
|
||||
}catch(e){
|
||||
//alert('addUser():\n['+i.name+'] does not has:\n'+b);
|
||||
// 刪掉沒有的屬性。但僅少數不具有,所以不能全刪。XP中沒有(?):,AccountExpirationDate,BadLoginAddress,BadLoginCount,Department,Division,EmailAddress,EmployeeID,FaxNumber,FirstName,GraceLoginsAllowed,GraceLoginsRemaining,HomePage,Languages,LastFailedLogin,LastLogoff,LastName,LoginWorkstations,Manager,MaxLogins,NamePrefix,NameSuffix,OfficeLocations,OtherName,PasswordLastChanged,Picture,PostalAddresses,PostalCodes,RequireUniquePassword,SeeAlso,TelephoneHome,TelephoneMobile,TelephoneNumber,TelephonePager,Title
|
||||
//p[j]=0;//delete p[j];
|
||||
}
|
||||
o[i.name]=a;
|
||||
}
|
||||
|
||||
return o;
|
||||
}//catch(e){}
|
||||
};
|
||||
//a=addUser();for(i in a){d=[];for(j in a[i])d.push(j+': '+a[i][j]);alert(d.join('\n'));}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 特殊功能 -------------------------------------------------------
|
||||
|
||||
/* 取得基本環境值
|
||||
// test
|
||||
if(0){
|
||||
var o=WinEnvironment;
|
||||
if(typeof o=='object'){var i,t='';for(i in o)t+=i+'='+o[i]+'\n';alert(t);}
|
||||
o=SpecialFolder;
|
||||
if(typeof o=='object'){var i,t='';for(i in o)t+=i+'='+o[i]+'\n';alert(t);}
|
||||
o=Network;
|
||||
if(typeof o=='object'){var i,t='';for(i in o)t+=i+'='+o[i]+'\n';alert(t);}
|
||||
o=NetDrive;
|
||||
if(typeof o=='object'){var i,t='';for(i in o)t+=i+'='+o[i]+'\n';alert(t);}
|
||||
o=NetPrinter;
|
||||
if(typeof o=='object'){var i,t='';for(i in o)t+=i+'='+o[i]+'\n';alert(t);}
|
||||
}
|
||||
*/
|
||||
//setTool();
|
||||
var WinEnvironment,SpecialFolder,Network,NetDrive,NetPrinter;
|
||||
//getEnvironment[generateCode.dLK]='WinEnvironment,SpecialFolder,Network,NetDrive,NetPrinter,*getEnvironment();';
|
||||
function getEnvironment(){
|
||||
if(typeof WshShell!=='object'||typeof SpecialFolder==='object')return;
|
||||
|
||||
// http://www.robvanderwoude.com/vbstech_data_environment.php
|
||||
// https://msdn.microsoft.com/ja-jp/library/cc364502.aspx
|
||||
// WshShell.ExpandEnvironmentStrings('%TEMP%'), WshShell.ExpandEnvironmentStrings('%ProgramFiles%')
|
||||
WinEnvironment={},Network={},NetDrive={},NetPrinter={};
|
||||
// Windows 95/98/Me の場合、使用できる strType は Process に限定されます。
|
||||
var i,j,k,o=new Enumerator(WshShell.Environment("Process"));/* Win9x、NT(Administratorもしくはほかのユーザー)の区別なく、すべての場合でエラーが発生しないようにするには、strTypeに"PROCESS"を指定するとよいでしょう。
|
||||
機器上所有已定義的環境變數Windows environment variables http://msdn2.microsoft.com/en-us/library/fd7hxfdd(VS.85).aspx http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/refer/lesson11.htm http://nacelle.info/wsh/03001.php http://www.cs.odu.edu/~wild/windowsNT/Spring00/wsh.htm
|
||||
usual: ALLUSERSPROFILE,APPDATA,BLASTER,CLASSPATH,CLIENTNAME,CommonProgramFiles,COMPUTERNAME,ComSpec,DEVMGR_SHOW_NONPRESENT_DEVICES,HOMEDRIVE,HOMEPATH,INCLUDE,LIB,LOGONSERVER,NUMBER_OF_PROCESSORS,OS,Os2LibPath,Path,PATHEXT,PROCESSOR_ARCHITECTURE,PROCESSOR_IDENTIFIER,PROCESSOR_LEVEL,PROCESSOR_REVISION,ProgramFiles,PROMPT,QTJAVA,SESSIONNAME,SystemDrive,SystemRoot,TEMP,TMP,USERDOMAIN,USERNAME,USERPROFILE,VS71COMNTOOLS,VSCOMNTOOLS,windir,winbootdir
|
||||
|
||||
WshShell.ExpandEnvironmentStrings("%windir%\\notepad.exe"); WshShell.Environment("Process")("TMP")
|
||||
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0");
|
||||
|
||||
System HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
|
||||
User HKEY_CURRENT_USER\Environment
|
||||
Volatile HKEY_CURRENT_USER\Volatile Environment ログオフとともにクリアされる
|
||||
Process, or 98:'WshShell.Environment'==WshShell.Environment("Process"),NT:==WshShell.Environment("System")ただし、Administratorアカウントを持つユーザー以外は、strTypeに"SYSTEM"を指定、もしくは省略するとエラーになります。
|
||||
*/
|
||||
while(!o.atEnd()){
|
||||
i=o.item();
|
||||
j=i.indexOf('=');//if((j=i.indexOf('='))!=-1)
|
||||
WinEnvironment[i.slice(0,j)]=i.substr(j+1); // value以';'作為分隔,若有必要可使用.split(';')
|
||||
o.moveNext();
|
||||
}
|
||||
|
||||
// http://www.microsoft.com/japan/msdn/library/ja/script56/html/wsprospecialfolders.asp HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
|
||||
// VB中用For Each .. In可列舉出全部,但JS則不行-_-所以得自己列舉
|
||||
// fso.GetSpecialFolder( 0: Windows 文件夾 1: System 文件夾 2: Temp 文件夾 )
|
||||
set_Object_value('SpecialFolder','AllUsersDesktop,AllUsersStartMenu,AllUsersPrograms,AllUsersStartup,AppData,Desktop,Favorites,Fonts,MyDocuments,NetHood,PrintHood,Programs,Recent,SendTo,StartMenu,Startup,Templates');
|
||||
o=WshShell.SpecialFolders;
|
||||
for(i in SpecialFolder)SpecialFolder[i]=o(i);
|
||||
for(i=0;i<o.Count();i++)SpecialFolder[i]=o.item(i);
|
||||
|
||||
o=new_COM("WScript.Network");//WScript.CreateObject("WScript.Network");
|
||||
// http://msdn.microsoft.com/library/en-us/script56/html/wsmthenumprinterconnections.asp
|
||||
Network.ComputerName=o.ComputerName,Network.UserDomain=o.UserDomain,Network.UserName=o.UserName;
|
||||
// Network Drive & Printer mappings
|
||||
j=o.EnumNetworkDrives(),k=1;
|
||||
for(i=0;i<j.Count();i+=2)NetDrive[j.Item(i)?j.Item(i):'Volatile'+k++]=NetDrive[i/2]=j.Item(i+1);
|
||||
j=o.EnumPrinterConnections(),k=1;
|
||||
for(i=0;i<j.Count();i+=2)NetPrinter[j.Item(i)]=NetPrinter[i/2]=j.Item(i+1);
|
||||
}; // function getEnvironment()
|
||||
|
||||
// http://msdn.microsoft.com/en-us/library/0ea7b5xe.aspx
|
||||
// http://msdn.microsoft.com/en-us/library/yzefkb42.aspx
|
||||
/*
|
||||
|
||||
CeL.run('application.OS.Windows');
|
||||
CeL.log(CeL.get_SpecialFolder('APPDATA','foobar2000'));
|
||||
|
||||
*/
|
||||
function get_SpecialFolder(name, sub_path) {
|
||||
if (!SpecialFolder) {
|
||||
var SpecialFolders = get_WScript_object().WshShell.SpecialFolders;
|
||||
|
||||
SpecialFolder = [];
|
||||
'AllUsersDesktop,AllUsersStartMenu,AllUsersPrograms,AllUsersStartup,AppData,Desktop,Favorites,Fonts,MyDocuments,NetHood,PrintHood,Programs,Recent,SendTo,StartMenu,Startup,Templates'
|
||||
//
|
||||
.toUpperCase().split(',')
|
||||
//
|
||||
.forEach(function (strFolderName) {
|
||||
var path = SpecialFolders.Item(strFolderName);
|
||||
if (path) {
|
||||
SpecialFolder[strFolderName] = path;
|
||||
library_namespace.debug('SpecialFolder[' + strFolderName + '] = [' + path + ']', 2);
|
||||
}
|
||||
});
|
||||
|
||||
// SpecialFolders.length === SpecialFolders.Count()
|
||||
for (var i = 0, length = SpecialFolders.Count(); i < length; i++)
|
||||
// SpecialFolders.Item(i) is native String @ JScript.
|
||||
SpecialFolder[i] = SpecialFolders.Item(i);
|
||||
}
|
||||
|
||||
if (!name)
|
||||
name = SpecialFolder;
|
||||
else if ((name = SpecialFolder[name.toUpperCase()]) && sub_path)
|
||||
name += '\\' + sub_path;
|
||||
return name;
|
||||
}
|
||||
|
||||
_.get_SpecialFolder = get_SpecialFolder;
|
||||
|
||||
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 取得 VB 的 Nothing
|
||||
* @returns VB 的 Nothing
|
||||
* @_memberOf _module_
|
||||
*/
|
||||
VBNothing = function () {
|
||||
try {
|
||||
return new_COM("ADODB.RecordSet").ActiveConnection;
|
||||
} catch (e) {
|
||||
}
|
||||
};
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 轉換 VB 的 Safe Array 成為 JS Array.
|
||||
* @param vba VB 的 array
|
||||
* @returns
|
||||
* @_memberOf _module_
|
||||
*/
|
||||
VBA_to_JSA = function (vba) {
|
||||
try {
|
||||
return (new VBArray(vba)).toArray();
|
||||
} catch (e) {
|
||||
}
|
||||
return [];
|
||||
};
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 轉換JS Array成為VB的Safe Array.
|
||||
* Safe Array To JS Array: plaese use new VBArray().
|
||||
* JScriptの配列は実際にはCSV文字列だったりする。VBScriptのvartypeに食わせると8(VT_STRING)が返ってくることからもわかる。
|
||||
* @param array
|
||||
* @returns
|
||||
* @see
|
||||
* http://www.microsoft.com/japan/msdn/japan/msdn/library/ja/script56/html/js56jsobjvbarray.asp
|
||||
* @_memberOf _module_
|
||||
*/
|
||||
JSA_to_VBA = function (array) {
|
||||
if (typeof array !== 'object')
|
||||
array = [ array ];
|
||||
var i = 0, dic = new_COM("Scripting.Dictionary");
|
||||
for (; i < array.length; i++)
|
||||
dic.add(i, array[i]);
|
||||
try {
|
||||
return dic.items();
|
||||
} finally {
|
||||
//dic = null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* http://www.eggheadcafe.com/forumarchives/scriptingVisualBasicscript/Mar2006/post26047035.asp
|
||||
Application.DoEvents();
|
||||
*/
|
||||
function DoEvents() {
|
||||
// Triggers screen updates in an HTA...
|
||||
try {
|
||||
if (!DoEvents.w)
|
||||
DoEvents.w = typeof WshShell === 'object' ? WshShell
|
||||
: new_COM("WScript.Shell");
|
||||
DoEvents.w.Run("%COMSPEC% /c exit", 0, true);
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
var DoNothing = DoEvents;
|
||||
|
||||
function Sleep(_sec) {
|
||||
if (isNaN(_sec) || _sec < 0)
|
||||
_sec = 0;
|
||||
if (typeof WScript === 'object')
|
||||
try {
|
||||
// Win98的JScript沒有WScript.Sleep
|
||||
WScript.Sleep(_sec * 1e3);
|
||||
} catch (e) {
|
||||
}
|
||||
else
|
||||
// if(typeof window!='object')
|
||||
try {
|
||||
if (!Sleep.w)
|
||||
Sleep.w = typeof WshShell === 'object' ? WshShell
|
||||
: new_COM("WScript.Shell");
|
||||
Sleep.w.Run(_sec ? "%COMSPEC% /c ping.exe -n " + (1 + _sec)
|
||||
+ " 127.0.0.1>nul 2>nul" : "%COMSPEC% /c exit", 0,
|
||||
true);
|
||||
} catch (e) {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
送key到application http://msdn.microsoft.com/library/en-us/script56/html/wsmthsendkeys.asp
|
||||
SendKeys('a') 送a
|
||||
SendKeys("a{1}4{2}5"); 送a,等1/10s,送4,等2/10s,送5
|
||||
timeOut: <0:loop, 0 or not set:1 time, >0:be the time(ms)
|
||||
*/
|
||||
var SendKeysU;
|
||||
//SendKeys[generateCode.dLK]='Sleep';
|
||||
function SendKeys(keys,appTitle,timeOut,timeInterval){
|
||||
if(typeof WshShell!=='object'||typeof WshShell!=='object'&&typeof(WshShell=new_COM("WScript.Shell"))!=='object')return 1;
|
||||
if(isNaN(timeInterval)||timeInterval<1)timeInterval=100; // 時間間隔
|
||||
timeOut=timeOut?timeOut<0?-1:Math.floor(timeOut/timeInterval)+1:0;
|
||||
if(appTitle)
|
||||
while(!WshShell.AppActivate(appTitle))
|
||||
if(timeOut--)Sleep(timeInterval);else return 2;
|
||||
if(!SendKeysU)SendKeysU=100; // 時間間隔單位
|
||||
while(keys.match(/\{([.\d]+)\}/)){
|
||||
WshShell.SendKeys(keys.substr(0,RegExp.index));
|
||||
Sleep(SendKeysU*RegExp.$1);
|
||||
keys=keys.substr(RegExp.lastIndex);
|
||||
}
|
||||
return WshShell.SendKeys(keys);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Create an object reference: hack?!
|
||||
//var windows=new WScript();
|
||||
// Run the calculator program
|
||||
//windows.explorer.run('calc.exe');
|
||||
// Writing the local computer name to the screen
|
||||
//document.write(windows.network.computerName);
|
||||
// Copy files from one folder to another
|
||||
//windows.fileSystem.copyFile('c:\\mydocuments\\*.txt', 'c:\\tempfolder\\');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return (
|
||||
_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
/**
|
||||
* @name CeL function for Excel
|
||||
* @fileoverview 本檔案包含了 Excel 專用的 functions。
|
||||
*
|
||||
* @since
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.OS.Windows.Excel',
|
||||
|
||||
require : 'data.code.compatibility.|data.native.'
|
||||
// library_namespace.parse_CSV()
|
||||
+ '|data.CSV.|application.storage.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
// no_extend : '*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
var module_name = this.id;
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
*
|
||||
* @class Node.js 的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {};
|
||||
|
||||
// const: node.js only
|
||||
var execSync = require('child_process').execSync;
|
||||
|
||||
// read .XLSX file → {Array}data list
|
||||
// 轉成 tsv 再做處理用的 wrapper 函數。
|
||||
// 必須先安裝 Excel
|
||||
function read_Excel_file(Excel_file_path, options) {
|
||||
if (typeof options === 'string') {
|
||||
options = {
|
||||
sheet_name : options
|
||||
};
|
||||
} else
|
||||
options = library_namespace.setup_options(options);
|
||||
|
||||
// default: save to "%HOMEPATH%\Documents"
|
||||
if (!Excel_file_path.includes(':\\')
|
||||
&& !/^[\\\/]/.test(Excel_file_path))
|
||||
Excel_file_path = library_namespace.working_directory()
|
||||
+ Excel_file_path;
|
||||
|
||||
var sheet_name = options.sheet_name, text_file_path = options.save_to
|
||||
|| Excel_file_path.replace(/(?:\.[^.]+)?$/, (sheet_name ? '#'
|
||||
+ sheet_name : '')
|
||||
+ '.tsv');
|
||||
|
||||
if (!text_file_path.includes(':\\') && !/^[\\\/]/.test(text_file_path))
|
||||
text_file_path = library_namespace.working_directory()
|
||||
+ text_file_path;
|
||||
|
||||
// 先將 Microsoft Office spreadsheets (Excel .XLSX 檔)匯出成 Unicode 文字檔。
|
||||
// CScript.exe: Microsoft ® Console Based Script Host
|
||||
// WScript.exe: Microsoft ® Windows Based Script Host
|
||||
// WScript.exe 會直接跳出,因此必須使用 CScript.exe。
|
||||
var command = 'CScript.exe //Nologo //B "'
|
||||
+ library_namespace.get_module_path(module_name,
|
||||
'Excel_to_text.js') + '" "' + Excel_file_path + '" "'
|
||||
+ (sheet_name || '') + '" "' + text_file_path + '"';
|
||||
|
||||
// check if updated: 若是沒有更新過,那麼用舊的文字檔案就可以。
|
||||
var target_file_status = library_namespace.fso_status(text_file_path);
|
||||
if (target_file_status) {
|
||||
var soutce_file_status = library_namespace
|
||||
.fso_status(Excel_file_path);
|
||||
if (Date.parse(target_file_status.mtime)
|
||||
- Date.parse(soutce_file_status.mtime) > 0)
|
||||
command = null;
|
||||
}
|
||||
|
||||
if (command) {
|
||||
if (!require('fs').existsSync(Excel_file_path)) {
|
||||
library_namespace.error('Excel 檔案不存在! ' + Excel_file_path);
|
||||
return;
|
||||
}
|
||||
|
||||
library_namespace.debug('Execute command: ' + command, 1,
|
||||
'read_Excel_file');
|
||||
// console.log(command);
|
||||
// console.log(JSON.stringify(command));
|
||||
execSync(command);
|
||||
} else {
|
||||
library_namespace.debug('Using cache file: ' + text_file_path, 1,
|
||||
'read_Excel_file');
|
||||
}
|
||||
|
||||
// console.log(text_file_path);
|
||||
// 'auto': Excel 將活頁簿儲存成 "Unicode 文字"時的正常編碼為 UTF-16LE
|
||||
var content = library_namespace.read_file(text_file_path, 'auto');
|
||||
// console.log(content);
|
||||
if (!content) {
|
||||
library_namespace.error('沒有內容。請檢查工作表是否存在!');
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof options.content_processor === 'function') {
|
||||
content = options.content_processor(content);
|
||||
}
|
||||
|
||||
// content = '' + content;
|
||||
var remove_title_row = options.remove_title_row;
|
||||
if (remove_title_row === undefined) {
|
||||
// auto detect title line
|
||||
var matched = content.trim().match(/^([^\n]*)\n([^\n]*)/);
|
||||
if (matched && !matched[1].trim().includes('\t')
|
||||
// 第一行單純只有一個標題 cell。
|
||||
&& matched[2].trim().includes('\t')) {
|
||||
remove_title_row = true;
|
||||
}
|
||||
}
|
||||
if (remove_title_row) {
|
||||
content = content.replace(/^([^\n]*)\n/,
|
||||
//
|
||||
function(line, table_title) {
|
||||
remove_title_row = table_title;
|
||||
return '';
|
||||
});
|
||||
}
|
||||
|
||||
var table = library_namespace.parse_CSV(content, Object.assign({
|
||||
has_title : true,
|
||||
field_delimiter : '\t'
|
||||
}, options));
|
||||
|
||||
if (remove_title_row) {
|
||||
library_namespace.debug('remove title line: ' + remove_title_row,
|
||||
1, 'read_Excel_file');
|
||||
table.table_title = remove_title_row;
|
||||
}
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
_.read_Excel_file = read_Excel_file;
|
||||
|
||||
function write_Excel_file(file_path, content, options) {
|
||||
library_namespace.write_file(file_path, library_namespace
|
||||
.to_CSV_String(content, Object.assign({
|
||||
field_delimiter : '\t',
|
||||
line_separator : '\r\n'
|
||||
}, options)));
|
||||
}
|
||||
|
||||
_.write_Excel_file = write_Excel_file;
|
||||
|
||||
return (_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,741 @@
|
||||
|
||||
/**
|
||||
* @name CeL function for HTML Applications (HTAs)
|
||||
* @fileoverview
|
||||
* 本檔案包含了 Microsoft Windows HTML Applications (HTAs) 的 functions。
|
||||
* @since
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
if (typeof CeL === 'function')
|
||||
CeL.run(
|
||||
{
|
||||
name:'application.OS.Windows.HTA',
|
||||
// includes() @ data.code.compatibility.
|
||||
require : 'data.code.compatibility.|interact.DOM.select_node|interact.DOM.fill_form',
|
||||
code : function(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var select_node = this.r('select_node'), fill_form = this.r('fill_form');
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
* @class web HTA 的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
TODO:
|
||||
JavaScript closure and IE 4-6 memory leak
|
||||
Mozilla ActiveX Project http://www.iol.ie/%7Elocka/mozilla/mozilla.htm
|
||||
IE臨時文件的位置可以從註冊表鍵值 HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache\paths\Directory 中讀取。
|
||||
*/
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* Internet Explorer Automation tool
|
||||
* @param {String} [URL] initial URL
|
||||
* @returns {IEA}
|
||||
* @_memberOf _module_
|
||||
* @see http://msdn.microsoft.com/en-us/library/aa752084(v=vs.85).aspx
|
||||
*/
|
||||
IEA = function (URL) {
|
||||
|
||||
try {
|
||||
/* COM objects
|
||||
WScript.CreateObject("InternetExplorer.Application","Event_");
|
||||
new ActiveXObject(class[, servername]);
|
||||
|
||||
http://www.cnblogs.com/xdotnet/archive/2007/04/09/javascript_object_activexobject.html
|
||||
var obj=new ActiveXObject(servername,typename[,location]);
|
||||
servername提供該對象的應用程序名稱;
|
||||
typename要創建的對象地類型或類;
|
||||
location創建該對象得網絡服務器名稱。
|
||||
*/
|
||||
this.app = new ActiveXObject("InternetExplorer.Application");
|
||||
} catch (e) {
|
||||
library_namespace
|
||||
.error('IEA: No InternetExplorer.Application object created!');
|
||||
}
|
||||
if (!this.app)
|
||||
return;
|
||||
|
||||
// 要先瀏覽了網頁,才能實行 IEApp.Document其他功能。
|
||||
this.go(URL || '');
|
||||
|
||||
return this;
|
||||
|
||||
/* other functions
|
||||
http://msdn2.microsoft.com/en-us/library/aa752085.aspx
|
||||
http://msdn2.microsoft.com/en-us/library/Aa752084.aspx
|
||||
IEApp.Visible=true;
|
||||
IEApp.Offline=true;
|
||||
IEApp.Document.frames.prompt();
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* get <frame>
|
||||
* @param document_object document object
|
||||
* @param name frame name
|
||||
* @returns
|
||||
*/
|
||||
_.IEA.frame = function(document_object, name) {
|
||||
try {
|
||||
document_object = document_object.getElementsByTagName('frame');
|
||||
return name ? document_object[name].contentWindow.document : document_object;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
};
|
||||
|
||||
_.IEA.prototype = {
|
||||
/**
|
||||
* 本 IEA 之 status 是否 OK.<br />
|
||||
* 以有無視窗,否則以有無內容判別是否 OK.<br />
|
||||
* 關掉視窗時, typeof this.app.Visible=='unknown'
|
||||
* @param w window object
|
||||
* @returns
|
||||
*/
|
||||
OK : function(w) {
|
||||
try {
|
||||
if (w ? typeof this.app.Visible === 'boolean'
|
||||
: this.doc().body.innerHTML)
|
||||
return this.app;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
autoSetBase : true,
|
||||
baseD : '',
|
||||
baseP : '',
|
||||
//init_url : 'about:blank',
|
||||
timeout : 3e4, // ms>0
|
||||
setBase : function(URL) {
|
||||
var m = (URL || '').match(/^([\w\-]+:\/\/[^\/]+)(.*?)$/);
|
||||
if (m) {
|
||||
this.baseD = m[1];
|
||||
this.baseP = m[2].slice(0, m[2].lastIndexOf('/') + 1);
|
||||
}
|
||||
//WScript.Echo('IEA.setBase:\ndomin: '+this.baseD+'\npath: '+this.baseP);
|
||||
return this.baseD;
|
||||
},
|
||||
/**
|
||||
* go to URL. 注意: 若是 .go('URL#hash') 則可能無反應,須改成 .go('URL')。
|
||||
* @param URL URL or history num
|
||||
* @returns
|
||||
*/
|
||||
go : function(URL) {
|
||||
try {
|
||||
if (URL === '' || isNaN(URL)) {
|
||||
if (URL === '')
|
||||
URL = 'about:blank';// this.init_url;
|
||||
|
||||
if (URL) {
|
||||
if (!URL.includes(':')
|
||||
//!URL.includes('://') && !URL.includes('about:')
|
||||
) {
|
||||
// 預防操作中 URL 已經改了。
|
||||
this.setBase(this.href());
|
||||
URL = this.baseD + (URL.charAt(0) === '/' ? '' : this.baseP) + URL;
|
||||
}
|
||||
|
||||
// IEApp.Document.frames.open(URL); ** 請注意:這裡偶爾會造成script停滯,並跳出警告視窗!
|
||||
this.app.Navigate(URL);
|
||||
|
||||
if (this.autoSetBase)
|
||||
this.setBase(URL);
|
||||
this.wait();
|
||||
|
||||
// 防止自動關閉: don't work
|
||||
//this.win().onclose=function(){return false;};//this.win().close=null;
|
||||
|
||||
if(library_namespace.is_debug())
|
||||
this.parse_frame();
|
||||
}
|
||||
} else {
|
||||
this.win().history.go(URL);
|
||||
this.wait();
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
/* 完全載入
|
||||
TODO:
|
||||
http://javascript.nwbox.com/IEContentLoaded/
|
||||
try{document.documentElement.doScroll('left');}
|
||||
catch(e){setTimeout(arguments.callee, 50);return;}
|
||||
instead of onload
|
||||
*/
|
||||
waitStamp : 0,
|
||||
waitInterval : 200, // ms
|
||||
waitState : 3, // 1-4: READYSTATE_COMPLETE=4 usual set to interactive=3
|
||||
wait : function(w) {
|
||||
if (!w && !(w = this.waitState) || this.waitStamp)
|
||||
// !!this.waitStamp: wait 中
|
||||
return;
|
||||
this.waitStamp = new Date;
|
||||
try {
|
||||
// 可能中途被關掉
|
||||
while (new Date - this.waitStamp < this.timeout
|
||||
&& (!this.OK(true) || this.app.busy || this.app.readyState < w))
|
||||
try {
|
||||
// Win98的JScript沒有WScript.Sleep
|
||||
WScript.Sleep(this.waitInterval);
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
w = new Date - this.waitStamp;
|
||||
this.waitStamp = 0;
|
||||
return w;
|
||||
},
|
||||
quit : function(quit_IEA) {
|
||||
try {
|
||||
this.app.Quit();
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
this.app = null;
|
||||
|
||||
if (quit_IEA) {
|
||||
// destory IEA on window.onunload().
|
||||
if (IEA_instance)
|
||||
IEA_instance.quit();
|
||||
}
|
||||
|
||||
if (typeof CollectGarbage === 'function')
|
||||
// CollectGarbage(): undocumented IE javascript method: 先置為 null 再 CollectGarbage(); 設置為null,它會斷開對象的引用,但是IE為了節省資源(經常釋放內存也會佔系統資源),因此採用的是延遲釋放策略,你調用CollectGarbage函數,就會強制立即釋放。
|
||||
// http://www.cnblogs.com/stupidliao/articles/797659.html
|
||||
setTimeout(function() {
|
||||
CollectGarbage();
|
||||
}, 0);
|
||||
|
||||
return;
|
||||
},
|
||||
// 用IE.doc().title or IE.app.LocationName 可反映狀況
|
||||
doc : function() {
|
||||
try {
|
||||
return this.app.document;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
// get URL
|
||||
href : function() {
|
||||
try {
|
||||
return this.app.LocationURL;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
win : function() {
|
||||
try {
|
||||
return this.doc().parentWindow;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
eval : function(code, scope) {
|
||||
// IE 11 中無法使用 this.win().eval:
|
||||
// Error 70 [Error] (facility code 10): 沒有使用權限
|
||||
return (scope ? this.g(scope).parentWindow : this.win()).eval(code);
|
||||
},
|
||||
/*
|
||||
reload:function(){
|
||||
try{IE.win().history.go(0);IE.wait();}catch(e){}
|
||||
},
|
||||
*/
|
||||
/**
|
||||
* get element
|
||||
* @param e
|
||||
* @param o
|
||||
* @returns
|
||||
*/
|
||||
get_element : function(e, o) {
|
||||
try {
|
||||
return (o || this.doc()).getElementById(e);
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
getE : function() {
|
||||
return this.get_element.apply(this, arguments);
|
||||
},
|
||||
/**
|
||||
* get tag
|
||||
* @param e
|
||||
* @param o
|
||||
* @returns
|
||||
*/
|
||||
get_tag : function(e, o) {
|
||||
try {
|
||||
return (o || this.doc()).getElementsByTagName(e);
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
getT : function() {
|
||||
return this.get_tag.apply(this, arguments);
|
||||
},
|
||||
/**
|
||||
* get node/elements/frame/.. 通用. A simple CSS
|
||||
* selector with iframe.<br />
|
||||
* Support #id, type(tag name), .name, .<br />
|
||||
* TODO:
|
||||
* 最佳化
|
||||
*
|
||||
* @param {String}path
|
||||
* CSS selector, XPath, ..
|
||||
* @param {object}[base_space]
|
||||
* base document/context
|
||||
* @returns node
|
||||
* @see Sizzle<br />
|
||||
*
|
||||
*/
|
||||
g : function get_node(selector, base_space) {
|
||||
if (typeof base_space === 'string' && base_space) {
|
||||
base_space = this.g(base_space);
|
||||
}
|
||||
|
||||
library_namespace.debug('get [' + selector + ']', 2, 'IEA.get_node');
|
||||
var node = select_node(selector, base_space || this.doc());
|
||||
if (library_namespace.is_NodeList(node) && node.length === 1) {
|
||||
node = node[0];
|
||||
library_namespace.debug('treat node as single NodeList, 移至 [0]: <' + node.tagName + '>.', 2, 'IEA.get_node');
|
||||
}
|
||||
if (node && (('' + node.tagName).toLowerCase() in {
|
||||
frame : 1,
|
||||
iframe : 1
|
||||
})) {
|
||||
library_namespace.debug('移至 <' + node.tagName + '>.contentWindow.document', 2, 'IEA.get_node');
|
||||
// IE11: typeof node.contentWindow === 'object', but node.contentWindow.document: 沒有使用權限
|
||||
node = node.contentWindow.document;
|
||||
} else if (library_namespace.is_NodeList(node) && library_namespace.is_debug(2)) {
|
||||
library_namespace.warn('IEA.get_node: get NodeList[' + node.length + '].');
|
||||
}
|
||||
return node;
|
||||
},
|
||||
// name/id, HTML object to get frame, return document object or not
|
||||
// .getElementsByName()
|
||||
// http://www.w3school.com.cn/htmldom/met_doc_getelementsbyname.asp
|
||||
frame : function(n, f, d) {
|
||||
try {
|
||||
f = f ? f.getElementsByTagName('frame') : this.getT('frame');
|
||||
if (isNaN(n)) {
|
||||
if (!n)
|
||||
return f;
|
||||
for ( var i = 0, l = (f = library_namespace.get_tag_list(f)).length; i < l; i++)
|
||||
if (f[i].name === n) {
|
||||
n = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isNaN(n))
|
||||
return d ? f[n].contentWindow.document : f[n];
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
// IE.frames()['*'] IEApp.document.frames
|
||||
// Cross Site AJAX http://blog.joycode.com/saucer/archive/2006/10/03/84572.aspx
|
||||
// Cross-Site XMLHttpRequest http://ejohn.org/blog/cross-site-xmlhttprequest/
|
||||
frames : function() {
|
||||
try {
|
||||
var i = 0, f = this.getT('frame'), r = [];
|
||||
for (r['*'] = []; i < f.length; i++)
|
||||
r['*'].push(f(i).name), r[f(i).name] = r[i] = f(i);
|
||||
// use frame.window, frame.document
|
||||
return r;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
parse_frame : function(frames) {
|
||||
try {
|
||||
if (frames || (frames = this.doc()).getElementsByTagName('frame').length)
|
||||
library_namespace.parse_frame(frames);
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
},
|
||||
click : function fill(selector, base_space) {
|
||||
var node = this.g(selector, base_space);
|
||||
if (typeof node === 'object' && !isNaN(node.length))
|
||||
node = node[0];
|
||||
if (node && node.click) {
|
||||
// http://www.quirksmode.org/dom/events/click.html
|
||||
// IE 5-8 use the following event order:
|
||||
// IE 8 中還是有些情況下不能模擬滑鼠點擊!
|
||||
if (node.mousedown)
|
||||
node.mousedown();
|
||||
node.click();
|
||||
if (node.mouseup)
|
||||
node.mouseup();
|
||||
this.wait();
|
||||
}
|
||||
},
|
||||
fill : function fill(pair, submit, base_space, config) {
|
||||
if (typeof base_space === 'string' && base_space) {
|
||||
base_space = this.g(base_space);
|
||||
}
|
||||
if (!library_namespace.is_Object(config))
|
||||
config = Object.create(null);
|
||||
config.window = this.win();
|
||||
config.base = base_space || this.doc();
|
||||
config.submit = submit;
|
||||
fill_form(pair, config);
|
||||
this.wait();
|
||||
},
|
||||
// form name array
|
||||
// formNA : 0,
|
||||
// return name&id object. 設置這個還可以強制 do submit 使用 name 為主,不用 id。
|
||||
fillForm_rtE : 0,
|
||||
/**
|
||||
* 自動填寫表單
|
||||
*
|
||||
* @param {Object}pair
|
||||
* 設定 pair: {id/name: value}
|
||||
* @param submit_id
|
||||
* do submit(num) 或 button id
|
||||
* @param form_index
|
||||
* submit 之 form index 或 id
|
||||
* @returns
|
||||
* @deprecated use .fill()
|
||||
*/
|
||||
fillForm : function fillForm(parameter, submit_id, form_index) {
|
||||
try {
|
||||
var i, j, n = {}, h = 0, f = this.doc().forms[form_index || 0] || {}, t,
|
||||
// g=f.getElementById,
|
||||
s = function(o, v) {
|
||||
t = o.tagName.toLowerCase();
|
||||
if (t === 'select')
|
||||
if (isNaN(v) || v < 0 || v >= o.options.length)
|
||||
o.value = v;
|
||||
else
|
||||
// .options[i].value==v
|
||||
// .selectedIndex= 的設定有些情況下會失效
|
||||
o.selectedIndex = v;
|
||||
// 參考 cookieForm
|
||||
else if (t === 'input') {
|
||||
t = o.type.toLowerCase(); // .getAttribute('type')
|
||||
if (t === 'checkbox')
|
||||
o.checked = v;
|
||||
else if (t !== 'radio')
|
||||
o.value = v;
|
||||
else if (o.value === v)
|
||||
o.checked = true;
|
||||
else
|
||||
return true; // return true: 需要再處理
|
||||
} else if (t === 'textarea')
|
||||
o.value = v;
|
||||
};
|
||||
/* needless
|
||||
if(!f){
|
||||
f=this.getT('form');
|
||||
for(i in f)if(f[i].name==fi){f=a[i];break;}
|
||||
}
|
||||
if(!f)f={};
|
||||
*/
|
||||
for (j in parameter)
|
||||
if (!(i = /* f.getElementById?f.getElementById(j): */this
|
||||
.get_element(j))
|
||||
|| s(i, parameter[j]))
|
||||
n[j] = 1, h = 1;
|
||||
if ((h || this.fillForm_rtE)
|
||||
&& (i = f.getElementsByTagName ? f
|
||||
.getElementsByTagName('input') : this.getT('input')).length)
|
||||
for (j = 0, i = library_namespace.get_tag_list(i); j < i.length; j++)
|
||||
if (i[j].name in n)
|
||||
s(i[j], parameter[i[j].name]);
|
||||
else if (submit_id && typeof submit_id !== 'object' && submit_id === i[j].name)
|
||||
submit_id = i[j];
|
||||
// if(i[j].name in pm)s(i[j],pm[i[j].name]);
|
||||
if (submit_id) {
|
||||
if (i = typeof submit_id === 'object' ? submit_id
|
||||
: /* f.getElementById&&f.getElementById(l)|| */
|
||||
this.get_element(submit_id))
|
||||
i.click();
|
||||
else
|
||||
f.submit();
|
||||
this.wait();
|
||||
} else if (this.fillForm_rtE) {
|
||||
h = {
|
||||
'' : i
|
||||
};
|
||||
for (j = 0; j < i.length; j++)
|
||||
if (i[j].name)
|
||||
h[i[j].name] = i[j];
|
||||
return h;
|
||||
}
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
get_form_name : function get_form_name(form_index) {
|
||||
var i, doc = this.doc(), form = doc.forms[0] || doc,
|
||||
input = library_namespace.get_tag_list('input'), name, name_array = [];
|
||||
if(input.length){
|
||||
library_namespace.debug('All ' + doc.forms.length + ' forms, form[' + form_index + '] gets ' + input.length + ' >input<s.');
|
||||
for (i=0;i<input.length;i++) {
|
||||
name = input[i].name || input[i].id;
|
||||
if (name !== undefined)
|
||||
name_array.push(name);
|
||||
}
|
||||
library_namespace.log(name_array);
|
||||
}
|
||||
return name_array;
|
||||
},
|
||||
|
||||
setLoc : function(w, h, l, t) {
|
||||
try {
|
||||
var s = this.win().screen;
|
||||
if (w) {
|
||||
this.app.Width = w;
|
||||
if (typeof l === 'undefined')
|
||||
l = (s.availWidth - w) / 2;
|
||||
}
|
||||
if (h) {
|
||||
this.app.Height = h;
|
||||
if (typeof t === 'undefined')
|
||||
t = (s.availHeight - h) / 2;
|
||||
}
|
||||
if (l)
|
||||
this.app.Left = l;
|
||||
if (t)
|
||||
this.app.Top = t;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
write : function(h) {
|
||||
try {
|
||||
var d = this.doc();
|
||||
if (!d)
|
||||
this.go('');
|
||||
d.open();
|
||||
d.write(h || '');
|
||||
d.close();
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
// 使之成為 dialog 形式的視窗
|
||||
// http://members.cox.net/tglbatch/wsh/
|
||||
setDialog : function(w, h, l, t, H) {
|
||||
try {
|
||||
this.app.FullScreen = true;
|
||||
this.app.ToolBar = false;
|
||||
this.app.StatusBar = false;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
this.setLoc(w, h, l, t);
|
||||
if (H)
|
||||
this.write(H).focus();
|
||||
try {
|
||||
// 太早設定 scroll 沒用。
|
||||
H = this.doc();
|
||||
H.scroll = 'no';
|
||||
H.style.borderStyle = 'outset';
|
||||
H.style.borderWidth = '3px';
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
show : function(s) {
|
||||
try {
|
||||
this.app.Visible = typeof s === 'undefined' || s;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
focus : function(s) {
|
||||
try {
|
||||
if (s || typeof s === 'undefined')
|
||||
this.win().focus();
|
||||
else
|
||||
this.win().blur();
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
get_page : function() {
|
||||
return this.getT('html')[0].outerHTML;
|
||||
},
|
||||
save_page : function(path, encoding) {
|
||||
var text = this.get_page();
|
||||
if (path && text) {
|
||||
href = this.href();
|
||||
l = href.length;
|
||||
l = (l > 9 ? l > 99 ? l > 999 ? '' : '0' : '00' : '000') + l;
|
||||
library_namespace.write_file(path, '<!-- saved from url=(' + l + ')' + href + ' -->' + line_separator + text, encoding || TristateTrue);
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
getC : function(class_name) {
|
||||
return find_class(class_name, this.doc());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
_.IEA.prototype.getE = _.IEA.prototype.get_element;
|
||||
|
||||
var IEA_instance;
|
||||
/**
|
||||
* get IEA instance.
|
||||
*
|
||||
* @param {Boolean}new_1
|
||||
* get a new one.
|
||||
* @returns {IEA} IEA instance
|
||||
*
|
||||
* @inner
|
||||
*/
|
||||
function new_IEA(new_1) {
|
||||
if (!new_1 && IEA_instance && IEA_instance.OK(true))
|
||||
return IEA_instance;
|
||||
|
||||
// IEA.prototype.init_url='http://www.google.com/';
|
||||
if (IEA_instance = new IEA)
|
||||
if (IEA_instance.OK(true))
|
||||
IEA.instance = IEA_instance;
|
||||
else {
|
||||
library_namespace.error('Error to use IEA!');
|
||||
IEA_instance = null;
|
||||
}
|
||||
|
||||
return IEA_instance;
|
||||
}
|
||||
|
||||
|
||||
function get_HTML(url) {
|
||||
if (url && !get_HTML.no_directly) {
|
||||
library_namespace.debug('Directly get:<br />' + url, 2);
|
||||
try {
|
||||
// 當大量 access 時,可能被網站擋下。e.g., Google.
|
||||
var data = library_namespace.get_file(url);
|
||||
library_namespace.debug('<br />' + data.replace(/</g, '<'), 3);
|
||||
return data;
|
||||
|
||||
} catch (e) {
|
||||
library_namespace.error('get_HTML: Error to directly access, will try IEA futher:<br />'
|
||||
+ url);
|
||||
get_HTML.no_directly = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!new_IEA())
|
||||
return '';
|
||||
|
||||
if (url)
|
||||
IEA_instance.go(url);
|
||||
IEA_instance.wait();
|
||||
|
||||
// https://ipv4.google.com/sorry/IndexRedirect?continue=_url_
|
||||
if (IEA_instance.href().includes('.google.com/sorry/IndexRedirect')) {
|
||||
IEA_instance.show(true);
|
||||
// 如果您使用了自動程式常用的進階字詞,或是快速傳出多項要求,系統可能會要求您進行人機驗證 (Captcha)。
|
||||
throw new Error('如要繼續,請輸入人機驗證 (Captcha) 字元。');
|
||||
}
|
||||
|
||||
var doc = IEA_instance.doc(), HTML;
|
||||
if (doc) {
|
||||
// alert(IEA.instance.doc().getElementsByTagName('html')[0].outerHTML);
|
||||
if (HTML = doc.getElementsByTagName('html'))
|
||||
return HTML[0].outerHTML;
|
||||
|
||||
library_namespace.warn('No html element found! Use body.');
|
||||
return doc.body.outerHTML;
|
||||
}
|
||||
|
||||
library_namespace.warn('No document node found!');
|
||||
}
|
||||
|
||||
_.IEA.get_HTML = get_HTML;
|
||||
|
||||
|
||||
// WSH環境中設定剪貼簿的資料:多此一舉 http://yuriken.hp.infoseek.co.jp/index3.html http://code.google.com/p/zeroclipboard/
|
||||
//setClipboardText[generateCode.dLK]='IEA';//,clipboardFunction
|
||||
function setClipboardText(cData, cType) {
|
||||
if (typeof clipboardFunction === 'function')
|
||||
return clipboardFunction();
|
||||
if (!new_IEA())
|
||||
return '';
|
||||
if (!cType)
|
||||
cType = 'text';
|
||||
|
||||
var w = IEA_instance.win();
|
||||
if (cData)
|
||||
w.clipboardData.setData(cType, cData);
|
||||
else
|
||||
cData = w.clipboardData.getData(cType);
|
||||
|
||||
//IEA_instance.quit();
|
||||
// try{IEApp.Quit();}catch(e){}
|
||||
return cData || '';
|
||||
}
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
setClipboardText = setClipboardText;
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* WSH 環境中取得剪貼簿的資料
|
||||
* @_memberOf _module_
|
||||
*/
|
||||
getClipboardText = setClipboardText;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return (
|
||||
_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* @name CeL function for Word
|
||||
* @fileoverview 本檔案包含了 Word 專用的 functions。
|
||||
*
|
||||
* @since
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.OS.Windows.Word',
|
||||
|
||||
require : 'data.code.compatibility.|data.native.'
|
||||
// CeL.write_file()
|
||||
+ '|application.storage.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
// no_extend : '*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
var module_name = this.id;
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
*
|
||||
* @class Node.js 的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {};
|
||||
|
||||
// const: node.js only
|
||||
var execSync = require('child_process').execSync;
|
||||
|
||||
// save to .xml file → .docx file
|
||||
// 必須先安裝 Word。
|
||||
// 存成 doc 檔案依然可以開啟,但不能以右鍵選單列印。
|
||||
function xml_save_to_doc(Word_file_path, xml, options) {
|
||||
if (options === true) {
|
||||
options = {
|
||||
// preserve xml file
|
||||
preserve : options
|
||||
};
|
||||
} else
|
||||
options = library_namespace.setup_options(options);
|
||||
|
||||
if (!Word_file_path.includes('.')) {
|
||||
Word_file_path += '.docx';
|
||||
}
|
||||
|
||||
// default: save to "%HOMEPATH%\Documents"
|
||||
if (!Word_file_path.includes(':\\') && !/^[\\\/]/.test(Word_file_path))
|
||||
Word_file_path = library_namespace.working_directory()
|
||||
+ Word_file_path;
|
||||
|
||||
var xml_file_path = Word_file_path.replace(/[^.]*$/, 'xml');
|
||||
|
||||
library_namespace.write_file(xml_file_path, xml);
|
||||
if (!require('fs').existsSync(xml_file_path)) {
|
||||
library_namespace.error('無法寫入 source xml 檔案! ' + xml_file_path);
|
||||
return;
|
||||
}
|
||||
|
||||
// CScript.exe: Microsoft ® Console Based Script Host
|
||||
// WScript.exe: Microsoft ® Windows Based Script Host
|
||||
// WScript.exe 會直接跳出,因此必須使用 CScript.exe。
|
||||
var command = 'CScript.exe //Nologo //B "'
|
||||
+ library_namespace.get_module_path(module_name,
|
||||
'xml_to_Word.js') + '" "' + xml_file_path + '" "'
|
||||
+ Word_file_path + '"';
|
||||
|
||||
library_namespace.debug('Execute command: ' + command, 1,
|
||||
'xml_save_to_doc', 3);
|
||||
library_namespace.debug('xml_save_to_doc: convert ' + xml_file_path
|
||||
+ ' → ' + Word_file_path);
|
||||
// console.log(command);
|
||||
// console.log(JSON.stringify(command));
|
||||
execSync(command);
|
||||
|
||||
if (!options.preserve) {
|
||||
library_namespace.remove_file(xml_file_path);
|
||||
}
|
||||
}
|
||||
|
||||
_.xml_save_to_doc = xml_save_to_doc;
|
||||
|
||||
return (_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,396 @@
|
||||
/**
|
||||
* @name CeL function for archive file.
|
||||
* @fileoverview 本檔案包含了壓縮 compress / archive file 的 functions。
|
||||
*
|
||||
* @see CeL.application.storage.archive
|
||||
*
|
||||
* @since
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
if (typeof CeL === 'function') {
|
||||
CeL.run({
|
||||
// module name
|
||||
name : 'application.OS.Windows.archive',
|
||||
|
||||
require : 'data.code.compatibility.'
|
||||
//
|
||||
+ '|application.OS.Windows.execute.run_command',
|
||||
code : module_code
|
||||
});
|
||||
}
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var run_command = this.r('run_command');
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
*
|
||||
* @class executing program 的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {};
|
||||
|
||||
// 2007/5/31 21:5:16
|
||||
// default configuration
|
||||
var compress_tool_set = {
|
||||
WinRAR : {
|
||||
// rar.exe
|
||||
path : '"%ProgramFiles%\\WinRAR\\WinRAR.exe"',
|
||||
extension : 'rar',
|
||||
// compress switch
|
||||
c : {
|
||||
// cL:command line, c:compress, s:switch
|
||||
cL : '$path $cmd $s $archive -- $files',
|
||||
cmd : 'a',
|
||||
|
||||
// l:'-ilog logFN',
|
||||
|
||||
// -rr1p -s<N> -ap -as -ep1 -tl -x<f> -x@<lf> -z<f> -p[p] -hp[p]
|
||||
// rar等
|
||||
// -v690m
|
||||
s : '-m5 -u -dh -os -r -ts -scuc -ep1 -ilog'
|
||||
},
|
||||
// uncompress switch
|
||||
u : {
|
||||
// command line
|
||||
cL : '$path $cmd $archive $eF $eTo',
|
||||
cmd : 'e'
|
||||
},
|
||||
// test switch
|
||||
t : {
|
||||
cL : '$path $cmd $archive',
|
||||
cmd : 't'
|
||||
},
|
||||
// command line
|
||||
command : '%path %command %switch %archive %files'
|
||||
},
|
||||
|
||||
'7-Zip' : {
|
||||
// The path of p7z executable file.
|
||||
// TODO: use library_namespace.nodejs.executable_file_path('7z')
|
||||
// 7zG.exe
|
||||
path : '"%ProgramFiles%\\7-Zip\\7z.exe"',
|
||||
extension : '7z',
|
||||
// compress switch
|
||||
c : {
|
||||
cL : '$path $cmd $s $archive $files',
|
||||
cmd : 'u',
|
||||
s : '-mx9 -ms -mhe -mmt -uy2'
|
||||
},
|
||||
// uncompress switch
|
||||
u : {
|
||||
cL : '$path $cmd $s $archive $eF',
|
||||
// cmd : 'e',
|
||||
cmd : 'x',
|
||||
s : function(fO) {
|
||||
var s = ' -ssc -y';
|
||||
if (fO.eTo)
|
||||
s += ' -o"' + fO.eTo + '"';
|
||||
return s;
|
||||
}
|
||||
},
|
||||
// test switch
|
||||
t : {
|
||||
cL : '$path $cmd $archive',
|
||||
cmd : 't'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* <code>
|
||||
test:
|
||||
var base='C:\\kanashimi\\www\\cgi-bin\\program\\misc\\';
|
||||
compress(base+'jit','_jit.htm',{tool:'7-Zip',s:''});
|
||||
uncompress(base+'jit',base,{tool:'7-Zip'});
|
||||
|
||||
|
||||
fO={
|
||||
tool:'WinRAR' // or'7-Zip'
|
||||
,m:'c' // method
|
||||
,s:'' // switch
|
||||
,archive:'' // archivefile
|
||||
,files='' // whattocompress
|
||||
,eTo='' // wheretouncompress
|
||||
,eF='' // whattouncompress
|
||||
,rcL=1 // rebuildcommandline
|
||||
}
|
||||
</code>
|
||||
*/
|
||||
// solid, overwrite, compressLevel, password
|
||||
/**
|
||||
* compress FSO
|
||||
*
|
||||
* @param {Object}fO
|
||||
* flags object
|
||||
* @returns
|
||||
*/
|
||||
function compressF(fO) {
|
||||
// 參數檢查: 未完全
|
||||
if (!fO)
|
||||
fO = {};
|
||||
if (typeof fO !== 'object')
|
||||
return;
|
||||
if (!fO.tool)
|
||||
fO.tool = 'WinRAR';
|
||||
// method
|
||||
if (false && !fO.m)
|
||||
fO.m = 'c';
|
||||
if (!fO.m || !fO.archive && (fO.m !== 'c' || fO.m === 'c' && !fO.files))
|
||||
return;
|
||||
if (fO.m === 'c') {
|
||||
if (typeof fO.files !== 'object')
|
||||
fO.files = fO.files ? [ fO.files ] : fO.archive.replace(
|
||||
/\...+$/, '');
|
||||
if (!fO.archive)
|
||||
fO.archive = fO.files[0].replace(/[\\\/]$/, '') + _t.extension;
|
||||
fO.files = '"' + fO.files.join('" "') + '"';
|
||||
}
|
||||
var i, _t = compress_tool_set[fO.tool], _m, _c;
|
||||
if (!_t || !(_m = _t[fO.m]))
|
||||
return;
|
||||
else if (!/\.[a-z]+$/.test(fO.archive))
|
||||
fO.archive += '.' + _t.extension;
|
||||
|
||||
if (false && fO.bD)
|
||||
// base directory, work directory, base folder
|
||||
fO.archive = fO.bD + (/[\\\/]$/.test(fO.bD) ? '' : '\\')
|
||||
+ fO.archive;
|
||||
|
||||
fO.archive = '"' + fO.archive.replace(/"/g, '""') + '"';
|
||||
library_namespace.debug('compressF(): check OK.');
|
||||
// 構築 command line arguments。
|
||||
if (_m._cL && !fO.rcL) {
|
||||
_c = _m._cL;
|
||||
} else {
|
||||
// rebuild command line arguments
|
||||
_c = _m.cL.replace(/\$path/, _t.path);
|
||||
for (i in _m)
|
||||
if (typeof fO[i] === 'undefined')
|
||||
_c = _c.replace(new RegExp('\\$' + i),
|
||||
typeof _m[i] === 'function' ? _m[i](fO) : _m[i]
|
||||
|| '');
|
||||
_m._cL = _c;
|
||||
library_namespace.debug(_c, 2, 'compressF');
|
||||
}
|
||||
for (i in fO)
|
||||
_c = _c.replace(new RegExp('\\$' + i), fO[i] || '');
|
||||
if (_c.indexOf('$') !== -1) {
|
||||
library_namespace.debug('compressF() error:\n' + _c);
|
||||
return;
|
||||
}
|
||||
library_namespace.debug('compressF() '
|
||||
+ (_c.indexOf('$') === -1 ? 'run' : 'error') + ':\n' + _c);
|
||||
|
||||
// run
|
||||
return WshShell.Run(_c, 0, true);
|
||||
// run_command.Unicode(_c);
|
||||
}
|
||||
|
||||
// compress[generateCode.dLK]='compressF';
|
||||
/**
|
||||
* compress files.
|
||||
*
|
||||
* @param {String}archive
|
||||
* compress file path.
|
||||
* @param {Array}files
|
||||
* what to compress
|
||||
* @param {Object}options
|
||||
* flags object
|
||||
* @returns
|
||||
*/
|
||||
function compress(archive, files, options) {
|
||||
// 前置處理。
|
||||
options = library_namespace.setup_options(options);
|
||||
|
||||
if (!options.m)
|
||||
options.m = 'c';
|
||||
if (archive)
|
||||
options.archive = archive;
|
||||
if (files)
|
||||
options.files = files;
|
||||
return compressF(options);
|
||||
}
|
||||
_.compress = compress;
|
||||
|
||||
// uncompress[generateCode.dLK]='uncompressF';
|
||||
/**
|
||||
* uncompress archive file
|
||||
*
|
||||
* @param archive
|
||||
* compressed archive file path
|
||||
* @param eTo
|
||||
* where to uncompress/target
|
||||
* @param {Object}
|
||||
* flag flags
|
||||
* @returns
|
||||
*/
|
||||
function uncompress(archive, eTo, flag) {
|
||||
if (!flag)
|
||||
flag = {};
|
||||
else if (typeof flag !== 'object')
|
||||
return;
|
||||
|
||||
if (!flag.m)
|
||||
flag.m = 'u';
|
||||
|
||||
if (!flag.eF)
|
||||
flag.eF = '';
|
||||
|
||||
if (archive)
|
||||
flag.archive = archive;
|
||||
|
||||
if (eTo)
|
||||
flag.eTo = eTo;
|
||||
|
||||
return compressF(flag);
|
||||
}
|
||||
|
||||
function parse_7z_data(status, log, error) {
|
||||
if (error && library_namespace.is_debug())
|
||||
library_namespace.error(error);
|
||||
|
||||
var message = log.match(/\nError:\s+(?:[A-Za-z]:)?[^:\n]+: ([^\n]+)/);
|
||||
if (message) {
|
||||
if (library_namespace.is_debug())
|
||||
library_namespace.error(message[1]);
|
||||
this.callback.call(this['this'], this.path, new Error(message[1]));
|
||||
return;
|
||||
}
|
||||
|
||||
library_namespace.debug(log.replace(/\n/g, '<br/>'), 4);
|
||||
message = log
|
||||
.match(/\r?\n([^\r\n]+)\r?\n([ \-]+)\r?\n((?:.+|\n)+?)\r?\n[ \-]+\r?\n/);
|
||||
library_namespace.debug(message, 3);
|
||||
|
||||
if (!message) {
|
||||
if (library_namespace.is_debug())
|
||||
library_namespace.warn('無法 parse header!');
|
||||
this.callback(this.path, new Error('無法 parse header!'));
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: 系統化讀入固定欄位長度之 data。
|
||||
var header = [], i = 0, length, match, file_list, file_array = [], pattern = [],
|
||||
//
|
||||
start = [], end = [];
|
||||
|
||||
message[1].replace(/\s*(\S+)/g, function($0, $1) {
|
||||
library_namespace.debug('header: +[' + $1 + '] / [' + $0 + ']', 2);
|
||||
header.push($1);
|
||||
end.push(i += $0.length);
|
||||
start.push(i - $1.length);
|
||||
return '';
|
||||
});
|
||||
start[0] = 0;
|
||||
|
||||
file_list = message[3].replace(/\r/g, '').split(/\n/);
|
||||
library_namespace.debug(file_list.join('<br />'), 3);
|
||||
|
||||
var no_calculate_count = 0, calculate_done = true;
|
||||
for (i = 0, length = file_list.length; i < length; i++) {
|
||||
calculate_done = true;
|
||||
var no_calculate = true;
|
||||
library_namespace.debug('一個個猜測邊界: ' + i + '/' + length
|
||||
+ '<br />start: ' + start + '<br />end: ' + end, 2);
|
||||
for (var j = 1, fragment; j < header.length; j++) {
|
||||
if (end[j - 1] + 1 < start[j]) {
|
||||
calculate_done = false;
|
||||
fragment = file_list[i].slice(end[j - 1], start[j]);
|
||||
if (match = fragment.match(/^\S+/))
|
||||
if (match[0].length < fragment.length) {
|
||||
library_namespace.debug('end: [' + (j - 1)
|
||||
+ '] += ' + match[0].length, 2);
|
||||
end[j - 1] += match[0].length;
|
||||
no_calculate = false;
|
||||
} else {
|
||||
library_namespace.warn('無法判別 ' + header[j - 1]
|
||||
+ ' 與 ' + header[j] + ' 之邊界。fragment: ['
|
||||
+ fragment + ']');
|
||||
continue;
|
||||
}
|
||||
if (match = fragment.match(/\S+$/)) {
|
||||
library_namespace.debug('start: [' + j + '] -= '
|
||||
+ match[0].length, 2);
|
||||
start[j] -= match[0].length;
|
||||
no_calculate = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (no_calculate)
|
||||
++no_calculate_count;
|
||||
else
|
||||
no_calculate_count = 0;
|
||||
|
||||
if (calculate_done || no_calculate_count > 20) {
|
||||
library_namespace.debug('於 ' + i + '/' + length + ' 跳出邊界判別作業: '
|
||||
+ (calculate_done ? '已' : '未') + '完成。');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < header.length - 1; i++)
|
||||
pattern.push('(.{' + (start[i + 1] - start[i]) + '})');
|
||||
pattern.push('(.+)');
|
||||
pattern = new RegExp(pattern.join(''));
|
||||
library_namespace.debug('header: ['
|
||||
+ header.join('<b style="color:#e44;">|</b>')
|
||||
+ '], using pattern ' + pattern);
|
||||
|
||||
for (i = 0, length = file_list.length; i < length; i++) {
|
||||
if (match = file_list[i].match(pattern)) {
|
||||
var j = 1, data = [];
|
||||
for (; j < match.length; j++)
|
||||
data.push(match[j].trim());
|
||||
library_namespace.debug(data
|
||||
.join('<b style="color:#e44;">|</b>'), 3);
|
||||
file_array.push(data);
|
||||
} else {
|
||||
library_namespace.warn('無法 parse [' + file_list[i] + ']');
|
||||
}
|
||||
}
|
||||
|
||||
this.callback(this.path, file_array, header);
|
||||
}
|
||||
|
||||
// List archive file.
|
||||
// read file list of .7z archive
|
||||
// callback(status, log, error)
|
||||
function archive_data(path, callback, options) {
|
||||
if (path && typeof callback === 'function') {
|
||||
// 前置處理。
|
||||
options = Object.assign(Object.create(null), options, {
|
||||
path : path,
|
||||
callback : callback
|
||||
});
|
||||
|
||||
run_command.Unicode(compress_tool_set['7-Zip'].path + ' l "' + path
|
||||
+ '"', parse_7z_data.bind(options));
|
||||
}
|
||||
}
|
||||
|
||||
_.archive_data = archive_data;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
return (_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,302 @@
|
||||
/**
|
||||
* @name CeL function for executing program
|
||||
* @fileoverview 本檔案包含了 executing program 的 functions。
|
||||
* @since
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.OS.Windows.execute',
|
||||
|
||||
require : 'application.OS.Windows.new_COM'
|
||||
//
|
||||
+ '|application.OS.Windows.is_COM',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
// no_extend : '*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var new_COM = this.r('new_COM'), is_COM = this.r('is_COM');
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
*
|
||||
* @class executing program 的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {};
|
||||
|
||||
/**
|
||||
* @see also: application.OS.Windows.file.show_in_file_manager()
|
||||
*
|
||||
* <code>
|
||||
|
||||
2008/8/8 18:29:44
|
||||
run them with administrator rights runs under administrator privileges.
|
||||
帳戶控制 Windows Vista:使用軟體限制原則對抗未授權的軟體 http://www.microsoft.com/taiwan/technet/windowsvista/security/rstrplcy.mspx
|
||||
http://4sysops.com/archives/vista%E2%80%99s-uac-how-to-elevate-scripts-vbscript-and-jscript/
|
||||
http://blogs.msdn.com/aaron_margosis/archive/2007/07/01/scripting-elevation-on-vista.aspx
|
||||
Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA c:\windows\system32\control.exe /name Microsoft.UserAccounts http://www.dashken.net/index.php?/archives/280-VBScript-Check-if-OS-is-Vista-and-Vistas-UAC-status.html
|
||||
http://msdn.microsoft.com/en-us/magazine/cc163486.aspx
|
||||
HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindowsCurrentVersionPoliciesSystem\ConsentPromptBehaviorAdmin http://hsu.easynow.com.tw/index.php?load=read&id=28
|
||||
http://vistavitals.blogspot.com/2008/02/logon-scripts-token-effort.html
|
||||
runas http://www.merawindows.com/Forums/tabid/324/forumid/82/postid/32458/scope/posts/Default.aspx
|
||||
http://www.winhelponline.com/articles/185/1/VBScripts-and-UAC-elevation.html
|
||||
|
||||
http://forums.techarena.in/vista-security/654643.htm
|
||||
Set objShell = CreateObject("Shell.Application")
|
||||
Set objFolder = objShell.Namespace("C:\")
|
||||
Set objFolderItem = objFolder.ParseName("myhta.hta")
|
||||
objFolderItem.InvokeVerb "runas"
|
||||
|
||||
var WinShell=new ActiveXObject("Shell.Application"),p=location.pathname.replace(/[^\\]+$/,''),o=WinShell.Namespace(p).ParseName(location.pathname.slice(p.length));
|
||||
o.InvokeVerb("runas");
|
||||
|
||||
http://www.zaoxue.com/article/tech-28339_2.htm http://www.lob.cn/vbs/20071126203237.shtml
|
||||
|
||||
TODO:
|
||||
對 prompt 回應不允許時的處理: 若想在受限的情況下使用?
|
||||
不使用自訂程式 http://msdn.microsoft.com/en-us/library/bb776820(VS.85).aspx
|
||||
有時執行完就無消息,得多執行幾次。
|
||||
</code>
|
||||
*/
|
||||
function runas(path) {
|
||||
if (!path)
|
||||
path = typeof WScript === 'object' ? WScript.ScriptFullName
|
||||
: unescape(location.pathname);
|
||||
var host = {
|
||||
js : 'wscript.exe',
|
||||
vbs : 'wscript.exe',
|
||||
hta : 'mshta.exe'
|
||||
}, extension = path.match(/([^.]+)$/);
|
||||
host = extension && ((extension = extension[1].toLowerCase()) in host) ? host[extension]
|
||||
: '';
|
||||
// 判斷是否有權限
|
||||
if (!registryF.checkAccess('HKLM\\SOFTWARE\\')) {
|
||||
// 以管理者權限另外執行新的.
|
||||
// It will get the UAC prompt if this feature is not disabled.
|
||||
new ActiveXObject("Shell.Application").ShellExecute(host || path,
|
||||
host ? path : '', '', 'runas'/* ,5 */);
|
||||
// 執行完本身則退出: bug: 有時執行完就無消息,得多執行幾次。
|
||||
if (typeof WScript === 'object')
|
||||
WScript.Quit();
|
||||
else if (typeof window === 'object')
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
|
||||
// run_command[generateCode.dLK]='initialization_WScript_Objects';
|
||||
/**
|
||||
* 執行 command。<br />
|
||||
* JScript file: check owner, .exe file.<br />
|
||||
*
|
||||
* TODO:<br />
|
||||
* run_command([path, Verb],3): use Shell.Application InvokeVerb<br />
|
||||
* run_command([path, arg1, arg2,..]): use Shell.Application.ShellExecute<br />
|
||||
* set timeout.<br />
|
||||
* cd. WshShell.Run('%COMSPEC% /K ' + ドライブ +' | cd /D '+ パス);// cd
|
||||
* で他ドライブへ移れないので。
|
||||
*
|
||||
* @example <code>
|
||||
|
||||
// usage:
|
||||
|
||||
// use <a href="http://msdn.microsoft.com/en-us/library/ateytk4a.aspx" accessdate="2012/11/7 18:30" title="Exec Method (Windows Script Host)">WshShell.Exec</a>,
|
||||
// return [ExitCode, StdOut, StdErr].
|
||||
run_command(command);
|
||||
|
||||
// use <a href="http://msdn.microsoft.com/en-us/library/ateytk4a.aspx" accessdate="2012/11/7 18:30" title="Exec Method (Windows Script Host)">WshShell.Exec</a>,
|
||||
// run callback.call(WshScriptExec Object, ExitCode, StdOut, StdErr) when done.
|
||||
run_command(command, function callback(){});
|
||||
|
||||
// use <a href="http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx" accessdate="2012/11/7 18:30" title="Run Method (Windows Script Host)">WshShell.Run</a>
|
||||
run_command([strCommand, [intWindowStyle 0-10], [bWaitOnReturn false: nowait & return 0, true: wait & return error code]]);
|
||||
|
||||
// use WshRemote
|
||||
run_command(script path, remote computer)
|
||||
|
||||
// use WMI
|
||||
run_command(command, remote computer)
|
||||
|
||||
* </code>
|
||||
*
|
||||
* @param {String}command
|
||||
* @param {Function|String}[option]
|
||||
* @param {String}remoteserver
|
||||
* @returns
|
||||
*
|
||||
* @see <a
|
||||
* href="http://www.microsoft.com/taiwan/technet/scriptcenter/resources/qanda/nov04/hey1115.mspx">我能使用指令碼鎖定工作站嗎?</a>
|
||||
*/
|
||||
function run_command(command, callback, remoteserver) {
|
||||
library_namespace.debug('Run command: [' + command + ']', 1,
|
||||
'run_command');
|
||||
var process;
|
||||
try {
|
||||
if (!remoteserver)
|
||||
if (is_COM(process = new_COM('WScript.Shell')))
|
||||
|
||||
if (Array.isArray(command)) {
|
||||
// WshShell.Run(command, [WindowStyle 0-10],
|
||||
// [WaitonReturn false: nowait & return 0, true: wait &
|
||||
// return error code])
|
||||
library_namespace.debug('using WshShell.Run()', 2);
|
||||
|
||||
// return process.Run.apply(null, command);
|
||||
|
||||
var length = command.length;
|
||||
return length > 2 ? process.Run(command[0], command[1],
|
||||
command[2]) :
|
||||
//
|
||||
length > 1 ? process.Run(command[0], command[1]) :
|
||||
//
|
||||
process.Run(command[0]);
|
||||
|
||||
if (typeof callback === 'function')
|
||||
callback();
|
||||
}
|
||||
|
||||
else {
|
||||
// WshShell.Exec(), objFolderItem.InvokeVerb()
|
||||
library_namespace.debug('using WshShell.Exec()', 2);
|
||||
|
||||
process = process.Exec(command);
|
||||
// 預防要輸入密碼。
|
||||
process.StdIn.Close();
|
||||
if (typeof WScript !== 'object') {
|
||||
if (typeof callback === 'function')
|
||||
run_command.waiting.call({
|
||||
StdOut : [],
|
||||
StdErr : []
|
||||
}, process, callback);
|
||||
return;
|
||||
}
|
||||
while (process.Status === 0)
|
||||
WScript.Sleep(100);
|
||||
|
||||
if (typeof callback === 'function')
|
||||
callback.call(process, process.ExitCode,
|
||||
process.StdOut.ReadAll(), process.StdErr
|
||||
.ReadAll());
|
||||
else
|
||||
return [ process.ExitCode,
|
||||
process.StdOut.ReadAll(),
|
||||
process.StdErr.ReadAll() ];
|
||||
}
|
||||
|
||||
else {
|
||||
library_namespace.error('No COM get!');
|
||||
return;
|
||||
}
|
||||
|
||||
if (/^[^ ]+\.(js|vbs)$/i.test(command)
|
||||
&& is_COM(process = new_COM('WSHController'))) {
|
||||
process = process.CreateScript(command, remoteserver);
|
||||
// TODO
|
||||
// http://msdn.microsoft.com/en-us/library/d070t67d(v=vs.84).aspx
|
||||
process.Execute();
|
||||
|
||||
// <a
|
||||
// href="http://msdn.microsoft.com/en-us/library/9z4dddwa.aspx"
|
||||
// accessdate="2012/11/7 18:55">Status Property (WshRemote)</a>.
|
||||
// [NoTask, Running, Finished]
|
||||
while (process.Status !== 2)
|
||||
WScript.Sleep(100);
|
||||
return callback.call(process);
|
||||
}
|
||||
|
||||
// TODO
|
||||
process = GetObject("winmgmts:{impersonationLevel=impersonate}//"
|
||||
+ (remoteserver || '.') + "/root/cimv2:Win32_Process");
|
||||
if (false)
|
||||
if (/^[^ ]+\.(j|vb)s$/i.test(command))
|
||||
command = "wscript.exe " + command;
|
||||
// Create 方法會讓這個指令碼在「遠端電腦」上執行。
|
||||
return process.Create(command/* , null, null, intProcessID */);
|
||||
|
||||
} catch (e) {
|
||||
library_namespace.error(e);
|
||||
return e;
|
||||
} finally {
|
||||
process = null;
|
||||
}
|
||||
}
|
||||
|
||||
// <a href="http://msdn.microsoft.com/en-us/library/2f38xsxe.aspx"
|
||||
// accessdate="2012/11/8 18:47">WshScriptExec Object</a>
|
||||
run_command.waiting = function(process, callback) {
|
||||
// <a
|
||||
// href="http://us.generation-nt.com/answer/wsh-exec-hangs-getting-stdout-readall-command-line-winzip-help-59169522.html"
|
||||
// accessdate="2012/11/8 19:12">Answer : Wsh.exec hangs getting
|
||||
// StdOut.ReadAll from command line Winzip</a>.
|
||||
// <a href="http://support.microsoft.com/kb/960246"
|
||||
// accessdate="2012/11/8 19:44">Hang When Reading StdErr/StdOut
|
||||
// Properties of WshScriptExec Object</a>
|
||||
// 因為 <a href="http://msdn.microsoft.com/en-us/library/312a5kbt.aspx"
|
||||
// accessdate="2012/11/8 19:32">TextStream Object</a> 的 buffer size
|
||||
// limit 為 4KB,超過後 .ReadAll() 便會 hangs (deadlock),因為 .ReadAll() 會等
|
||||
// EndOfStream character。只好盡可能快點讀出。
|
||||
// 當程式輸出過快時,仍可能來不及讀,只能使用 output 至檔案的方法。
|
||||
while (!process.StdOut.AtEndOfStream)
|
||||
this.StdOut.push(process.StdOut.Read(4096));
|
||||
while (!process.StdErr.AtEndOfStream)
|
||||
this.StdErr.push(process.StdErr.Read(4096));
|
||||
|
||||
library_namespace.debug('process status: [' + process.Status
|
||||
+ ']<br />\nStdOut: [' + this.StdOut + '],<br />\nStdErr: ['
|
||||
+ this.StdErr + ']', 3, 'run_command.waiting');
|
||||
|
||||
if (process.Status === 0) {
|
||||
// The job is still running.
|
||||
// DoEvent.
|
||||
// TODO: set timeout.
|
||||
setTimeout(run_command.waiting.bind(this, process, callback), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
library_namespace.debug('run callback [' + callback + '].', 3,
|
||||
'run_command.waiting');
|
||||
// if (typeof callback === 'function')
|
||||
callback.call(process, process.ExitCode, this.StdOut.join(''),
|
||||
this.StdErr.join(''));
|
||||
} catch (e) {
|
||||
library_namespace
|
||||
.warn('run_command.waiting: fault to run callback ['
|
||||
+ callback + '].');
|
||||
library_namespace.error(e);
|
||||
} finally {
|
||||
process = null;
|
||||
}
|
||||
};
|
||||
|
||||
// Unicode pipe
|
||||
run_command.Unicode = function(command, callback, remoteserver) {
|
||||
command = '%COMSPEC% /U /C "' + command + '"';
|
||||
return run_command(command, callback, remoteserver);
|
||||
};
|
||||
_.run_command = run_command;
|
||||
|
||||
return (_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 179 B |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,456 @@
|
||||
/**
|
||||
* @name CeL function for debug
|
||||
* @fileoverview 本檔案包含了 debug 用的 functions。
|
||||
* @since
|
||||
* @see http://code.google.com/apis/ajax/playground/
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.debug',
|
||||
|
||||
require : 'data.code.compatibility.|interact.DOM.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
// 'log': 為預防覆寫基底之 log 而加。
|
||||
no_extend : 'this,log',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// JSalert[generateCode.dLK]='getScriptName';
|
||||
// ,*var ScriptName=getScriptName();
|
||||
/**
|
||||
* 顯示訊息視窗<br />
|
||||
* alert() 改用VBScript的MsgBox可產生更多效果,但NS不支援的樣子。
|
||||
*
|
||||
* @param message
|
||||
* message or object
|
||||
* @param {Number}
|
||||
* [wait] the maximum length of time (in seconds) you want the
|
||||
* pop-up message box displayed.
|
||||
* @param {String}
|
||||
* [title] title of the pop-up message box.
|
||||
* @param {Number}
|
||||
* [type] type of buttons and icons you want in the pop-up
|
||||
* message box.
|
||||
* @return {Integer} number of the button the user clicked to dismiss the
|
||||
* message box.
|
||||
* @requires CeL.get_script_name
|
||||
* @see <a
|
||||
* href="http://msdn.microsoft.com/library/en-us/script56/html/wsmthpopup.asp">Popup
|
||||
* Method</a>
|
||||
* @_memberOf _module_
|
||||
*/
|
||||
function JSalert(message, wait, title, type) {
|
||||
var _f = arguments.callee;
|
||||
if (typeof _f.cmd === 'undefined') // 控制是否彈跳出視窗
|
||||
_f.cmd = typeof WScript === 'object'
|
||||
&& /cscript\.exe$/i.test(WScript.FullName);
|
||||
|
||||
// if(!message)message+='';
|
||||
// if(typeof message==='undefined')message='';else
|
||||
// if(!message)message+='';
|
||||
|
||||
// 有時傳入如message==null會造成error
|
||||
// WScript.Echo()會視情況:視窗執行時彈跳出視窗,cmd執行時直接顯示。但需要用cscript執行時才有效果。
|
||||
// http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_mokz.mspx
|
||||
// 可以用 WScript.Echo(t1,t2,..),中間會以' '間隔
|
||||
if (_f.cmd && argument.length < 2)
|
||||
return WScript.Echo(message);
|
||||
|
||||
if (!title &&
|
||||
// typeof getScriptName === 'function'
|
||||
this.get_script_name)
|
||||
title = getScriptName();
|
||||
|
||||
if (isNaN(type))// typeof type!=='number'
|
||||
type = 64;
|
||||
|
||||
if (false && typeof WshShell != 'object')
|
||||
if (typeof WScript === 'object')
|
||||
WshShell = WScript.CreateObject("WScript.Shell");
|
||||
else
|
||||
return undefined;
|
||||
|
||||
if (this.WshShell !== 'object')
|
||||
if (typeof WScript === 'object')
|
||||
this.WshShell = WScript.CreateObject("WScript.Shell");
|
||||
else
|
||||
return undefined;
|
||||
|
||||
return this.WshShell.Popup(
|
||||
// ''+message: 會出現 typeof message==='object' 卻不能顯示的
|
||||
'' + message, wait, title, type);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------//
|
||||
|
||||
// popup object Error(錯誤)
|
||||
// popErr[generateCode.dLK]='JSalert,setTool,parse_Function';
|
||||
// error object, title, additional text(etc. function name)
|
||||
function popErr(e, t, f) {
|
||||
var T = typeof e;
|
||||
if (false)
|
||||
alert((T == 'object') + ',' + (e.constructor) + ',' + (Error) + ','
|
||||
+ (e instanceof Error));
|
||||
// 這裡e instanceof Error若是T=='object'&&e.constructor==Error有時不能達到效果!
|
||||
// use: for(i in e)
|
||||
T = e instanceof Error ? 'Error '
|
||||
+ (e.number & 0xFFFF)
|
||||
+ (e.name ? ' [' + e.name + ']' : '')
|
||||
+ ' (facility code '
|
||||
+ (e.number >> 16 & 0x1FFF)
|
||||
+ '):\n'
|
||||
+ e.description
|
||||
+ (!e.message || e.message === e.description ? '' : '\n\n'
|
||||
+ e.message) : !e || T === 'string' ? e : '(' + T + ')'
|
||||
+ e;
|
||||
f = f ? ('' + f).replace(/\0/g, '\\0') + '\n\n' + T : T;
|
||||
// .caller只在執行期間有效。_function_self_.caller可用 arguments.callee.caller
|
||||
// 代替,卻不能用arguments.caller
|
||||
// arguments.callee.caller 被棄用了。
|
||||
// http://www.opera.com/docs/specs/js/ecma/
|
||||
// http://bytes.com/forum/thread761008.html
|
||||
// http://www.javaeye.com/post/602661
|
||||
// http://groups.google.com/group/comp.lang.javascript/browse_thread/thread/cd3d6d6abcdd048b
|
||||
if (typeof WshShell === 'object')
|
||||
WshShell.Popup(f, 0, t || 'Error '
|
||||
//
|
||||
+ (arguments.callee.caller === null ? 'from the top level'
|
||||
//
|
||||
: 'on ' + (typeof parse_Function == 'function'
|
||||
//
|
||||
? parse_Function(arguments.callee.caller).funcName
|
||||
//
|
||||
: 'function')) + ' of ' + ScriptName, 16);
|
||||
else
|
||||
alert(f);
|
||||
return T;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------//
|
||||
|
||||
var show_value_max_length = 80, toString = Object.prototype.toString;
|
||||
|
||||
function show_value_get_type(value) {
|
||||
var type = toString.call(value), _type;
|
||||
if (type === '[object Object]')
|
||||
try {
|
||||
// test DOM.
|
||||
if (/^\[[^]]+\]$/.test(_type = '' + value))
|
||||
return _type;
|
||||
} catch (e) {
|
||||
}
|
||||
return type || typeof value;
|
||||
}
|
||||
|
||||
// show value[key]
|
||||
function show_value_single(key, value, filter, key_is_name) {
|
||||
var name, value_String, no_more, nodes = [];
|
||||
|
||||
library_namespace.debug('add name', 3, 'show_value_single');
|
||||
if (key_is_name && key === undefined)
|
||||
name = '(null name)';
|
||||
else
|
||||
try {
|
||||
name = '' + key;
|
||||
nodes.push({
|
||||
span : name || '(null name)',
|
||||
S : name ? 'color:#a93;' : 'color:#888;'
|
||||
}, ': ');
|
||||
if (name)
|
||||
name = '[' + name + ']';
|
||||
} catch (e) {
|
||||
// no .toString()?
|
||||
// e.g., Object.create(null)
|
||||
name = '(error name)';
|
||||
nodes.push({
|
||||
span : '(error to get valuable name: ' + e.message + ')',
|
||||
S : 'color:#e32;'
|
||||
}, ': ');
|
||||
}
|
||||
|
||||
if (!key_is_name)
|
||||
try {
|
||||
value = value[key];
|
||||
} catch (e) {
|
||||
value_String = true;
|
||||
nodes.push({
|
||||
span : '(error to get value of ' + name + ': ' + e.message
|
||||
+ ')',
|
||||
S : 'color:#e32;'
|
||||
});
|
||||
}
|
||||
|
||||
if (!value_String)
|
||||
if (value === undefined || value === null)
|
||||
// 在 IE 中,typeof null, undefined === object。
|
||||
nodes.push({
|
||||
span : '(' + value + ')',
|
||||
S : 'color:#888;'
|
||||
});
|
||||
else if (typeof (no_more = show_value.type_handler
|
||||
.get(value_String = show_value_get_type(value))) !== 'function'
|
||||
|| no_more(value, nodes)) {
|
||||
library_namespace.debug('add type', 3, 'show_value_single');
|
||||
if (no_more = value_String.match(/^\[object ([^]]+)\]$/))
|
||||
no_more = (value_String = no_more[1]) in {
|
||||
// 這幾種將作特殊處理。
|
||||
Object : 1,
|
||||
Array : 1,
|
||||
Function : 1
|
||||
} && !/^\s*function[\s(]/.test('' + value);
|
||||
|
||||
nodes.push({
|
||||
span : value_String,
|
||||
S : 'color:#6a3;'
|
||||
});
|
||||
try {
|
||||
if (!isNaN(value.length))
|
||||
nodes.push('[' + value.length + ']');
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
library_namespace.debug('add value', 3, 'show_value_single');
|
||||
try {
|
||||
// 為特殊值作特殊處理。
|
||||
if (no_more) {
|
||||
var is_Array = value_String === 'Array', val, full_listed;
|
||||
value_String = is_Array ? '[ ' : '{ ';
|
||||
for (key in value)
|
||||
try {
|
||||
if (Object.hasOwn(value, key)) {
|
||||
if (!is_Array)
|
||||
value_String += '' + key;
|
||||
if ((val = '' + value[key]).length < 9) {
|
||||
if (!is_Array)
|
||||
value_String += ':';
|
||||
value_String += val;
|
||||
}
|
||||
// value_String += '<span
|
||||
// style="color:#a42;">|</span>';
|
||||
value_String += ', ';
|
||||
full_listed = true;
|
||||
}
|
||||
|
||||
if (value_String.length >= show_value_max_length) {
|
||||
value_String += ' .. ';
|
||||
full_listed = false;
|
||||
break;
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
prototype = null;
|
||||
if (full_listed)
|
||||
value_String = value_String.slice(0, -2);
|
||||
value_String += (is_Array ? ' ]' : ' }');
|
||||
// no_more = true;
|
||||
|
||||
} else
|
||||
no_more = (value_String = '' + value).length < show_value_max_length;
|
||||
|
||||
key = (no_more ? value_String : value_String.slice(0,
|
||||
show_value_max_length)).replace(/</g, '<')
|
||||
// .replace(/\t/g, ' ')
|
||||
;
|
||||
value_String = value_String ? 'color:#33a;' : 'color:#888;';
|
||||
key = typeof value in {
|
||||
number : 1,
|
||||
string : 1,
|
||||
'boolean' : 1
|
||||
} ? {
|
||||
// 對於沒有 children property/method/member 的,例如純量,則不顯示深入連結。
|
||||
span : key ? [
|
||||
'[',
|
||||
library_namespace.is_negative_zero(value) ? '-0'
|
||||
: key, ']' ]
|
||||
: '(blank)',
|
||||
R : no_more ? '' : '' + value,
|
||||
S : value_String
|
||||
}
|
||||
: {
|
||||
a : key,
|
||||
S : value_String,
|
||||
href : '#',
|
||||
onclick : function() {
|
||||
show_value_children.call(this, value,
|
||||
filter);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
nodes.push(' ', key, no_more ? '' : '..');
|
||||
} catch (e) {
|
||||
nodes.push(' error on stringify value'
|
||||
+ (key_is_name ? '' : ' of ' + name) + ': '
|
||||
+ e.message);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
return nodes;
|
||||
} finally {
|
||||
// Release memory. 釋放被占用的記憶體.
|
||||
key = name = value_String = no_more = nodes = null;
|
||||
}
|
||||
}
|
||||
|
||||
var RegExp_properties = 'lastIndex,source'.split(',');
|
||||
(function() {
|
||||
var r = /./;
|
||||
// RegExp_flags @ data.code.compatibility
|
||||
for ( var flag in library_namespace.RegExp_flags.flags)
|
||||
if (typeof r[flag] === 'boolean')
|
||||
RegExp_properties.push(flag);
|
||||
})();
|
||||
|
||||
function show_value_children(value, filter) {
|
||||
var key, nodes = [], parent = this.parentNode, proto, length;
|
||||
if (parent.childNodes.length > 1
|
||||
&& parent.lastChild.className === 'show_value_block') {
|
||||
key = parent.lastChild.style;
|
||||
// toggle
|
||||
key.display = key.display === 'none' ? '' : 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
length = value && value.length;
|
||||
} catch (e) {
|
||||
library_namespace.warn('show_value_children: ' + e.message);
|
||||
}
|
||||
|
||||
try {
|
||||
proto = [];
|
||||
for (key in value) {
|
||||
if (length && (key === '0' || key === 0))
|
||||
// 代表已經遍歷過。
|
||||
length = 0;
|
||||
if (!filter || filter.test(key))
|
||||
(Object.hasOwn(value, key) ? nodes : proto).push({
|
||||
div : show_value_single(key, value, filter),
|
||||
S : 'margin-left:1em;'
|
||||
});
|
||||
}
|
||||
|
||||
if (library_namespace.is_RegExp(value))
|
||||
// RegExp 有許多無法 enumerable 的 properties。
|
||||
RegExp_properties.forEach(function(key) {
|
||||
if (!filter || filter.test(key))
|
||||
nodes.push({
|
||||
div : show_value_single(key, value, filter),
|
||||
S : 'margin-left:1em;'
|
||||
});
|
||||
});
|
||||
|
||||
} catch (e) {
|
||||
library_namespace.warn('show_value_children: ' + e.message);
|
||||
}
|
||||
|
||||
if (isNaN(length) || length > 0)
|
||||
try {
|
||||
// 處理 childNodes[] 之類。
|
||||
for (key = 0; key < length || value[key] !== undefined; key++)
|
||||
if (!filter || filter.test(key)) {
|
||||
nodes.push({
|
||||
div : show_value_single(key, value, filter),
|
||||
S : 'margin-left:1em;'
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
library_namespace.warn('show_value_children: ' + e.message);
|
||||
}
|
||||
|
||||
if (proto && proto.length > 0) {
|
||||
nodes.push({
|
||||
a : 'inherited:',
|
||||
href : '#',
|
||||
S : 'margin-left:1em;',
|
||||
onclick : function() {
|
||||
var style = this.nextSibling.style;
|
||||
style.display = style.display === 'none' ? '' : 'none';
|
||||
return false;
|
||||
}
|
||||
}, {
|
||||
div : proto,
|
||||
S : nodes.length > 0 ? 'display:none;' : ''
|
||||
});
|
||||
}
|
||||
nodes = {
|
||||
div : nodes.length > 0 ? nodes : '(no properties)',
|
||||
C : 'show_value_block',
|
||||
S : nodes.length > 0 ? '' : 'color:#888;'
|
||||
};
|
||||
library_namespace.new_node(nodes, [ parent, 2 ]);
|
||||
|
||||
// key = value = nodes = parent = proto = null;
|
||||
}
|
||||
|
||||
var has_native_log = typeof console === 'object'
|
||||
&& library_namespace.is_native_Function(console.log);
|
||||
|
||||
/**
|
||||
* debug 用: Show contents of object/class.<br />
|
||||
*
|
||||
* TODO: update, paging + real-time search
|
||||
*
|
||||
* @see <a href="http://fillano.blog.ithome.com.tw/post/257/59403"
|
||||
* accessdate="2013/1/19 16:11" title="Fillano's Learning Notes |
|
||||
* 在Javascript中使用Reflection與Proxy
|
||||
* Pattern實作AOP">一些內建的物件,他的屬性可能會是[[DontEnum]],也就是不可列舉的,而自訂的物件在下一版的ECMA-262中,也可以這樣設定他的屬性。</a>
|
||||
*/
|
||||
function show_value(object, name, filter) {
|
||||
if (has_native_log) {
|
||||
// if (name) console.log(name + ':');
|
||||
// console.log(object);
|
||||
return;
|
||||
}
|
||||
if (name === undefined && typeof object !== 'object'
|
||||
&& typeof object !== 'function')
|
||||
try {
|
||||
name = '' + object;
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
library_namespace.log([ 'show_value: ',
|
||||
show_value_single(name, object, filter, true) ]);
|
||||
}
|
||||
|
||||
// function() return true: 繼續處理。
|
||||
show_value.type_handler = new Map;
|
||||
|
||||
// show_value(1);
|
||||
if (false)
|
||||
show_value({
|
||||
test_null : null,
|
||||
test_undefined : undefined,
|
||||
test_Boolean_true : true,
|
||||
test_Boolean_false : false,
|
||||
test_Number : 43.2,
|
||||
test_String : 'a string',
|
||||
test_Array : [ -34.3, 'a\\f', {
|
||||
r : 4,
|
||||
w : {
|
||||
a : 5
|
||||
}
|
||||
} ],
|
||||
test_Object : {
|
||||
l : {
|
||||
e : 3
|
||||
},
|
||||
r : 5
|
||||
}
|
||||
});
|
||||
|
||||
return [ JSalert, popErr, show_value ];
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
@@ -0,0 +1,61 @@
|
||||
<!-- The first line is blank due to BOM -->
|
||||
= CeJS internationalization mechanism 國際化機制 =
|
||||
|
||||
== Introduction 簡介 ==
|
||||
本函式庫採用一支小工具 [https://github.com/kanasimi/CeJS/blob/master/_build/build.nodejs.js _build/build.nodejs.js] 來同步原始碼以及 translatewiki 推送的本土化訊息 json 檔案。假如您也管理著 JavaScript 項目,非常歡迎您一同參與開發。
|
||||
|
||||
現行 CeJS 本土化訊息存放在4個地方。
|
||||
; 1. <b>IETF language tag</b>.js
|
||||
: 程式執行時實際採用的是 [https://github.com/kanasimi/CeJS/tree/master/application/locale/resources application/locale/resources]/<b>IETF language tag</b>.js,這些檔案將由 _build/build.nodejs.js 自動生成。
|
||||
; 2. <b>ISO 639-1 language tag</b>.json
|
||||
: [https://translatewiki.net/wiki/Translating:Colorless_echo_JavaScript_kit cejs@translatewiki] 每個禮拜會匯入兩次本土化訊息至 [https://github.com/kanasimi/CeJS/tree/master/application/locale/resources/i18n application/locale/resources/i18n]/<b>ISO 639-1 language tag</b>.json 。[https://translatewiki.net/wiki/Special:Contributions/FuzzyBot FuzzyBot] 每一至三日會將原始碼的變更更新到 translatewiki 上。
|
||||
; 3. qqq_data.json
|
||||
: 這是紀錄 qqq.json 和原始訊息的 cache 檔。
|
||||
; 4. 原始程式碼中
|
||||
: 原始程式碼的訊息前,必須包含 <code>// gettext_config:{}</code> 標記,在換行之前的內容會被視為 JSON 解析。例如
|
||||
:: <code>// gettext_config:{"id":"message-id"}</code>
|
||||
: 在 <code>gettext_config</code> 標記之後緊接著一行,第一個字串會被視為原始訊息。採用 <code>// gettext_config:{"qqq":"notes"}</code> 會自動轉成 <code>// gettext_config:{}</code>。
|
||||
_build/build.nodejs.js 生成 application/locale/resources/ 下的 .js 檔時,會以原先的 resources/qqq_data.json, <b>IETF language tag</b>.js 為基礎、將之當作舊版本,參考 translatewiki 匯入的本土化訊息與原始碼的訊息來更新,將所有3處內容更新為後兩者修改過的訊息。在執行 build.nodejs.js 時,若 translatewiki 和原始碼有衝突,會跳出錯誤。[https://translatewiki.net/wiki/FAQ#Special_private_language_codes_qqq,_qqx 翻譯說明 qqq] 的產生模式可參考 resources/i18n/qqq.json, resources/qqq_data.json。
|
||||
|
||||
|
||||
== Translation Notes ==
|
||||
=== Plural form ===
|
||||
This project CeJS supports the [https://www.mediawiki.org/wiki/Help:Magic_words#Localization MediaWiki forms] <code><nowiki>{{PLURAL:%1|one|other}}</nowiki></code> and <code><nowiki>{{PLURAL:%1|1=one|2=two|other}}</nowiki></code> mentioned in [[Plural#Plural syntax in MediaWiki]]. It uses the plural rules listed [https://github.com/wikimedia/mediawiki-extensions-Translate/blob/master/data/plural-gettext.txt here].
|
||||
|
||||
Please note: CeJS uses percentage symbol %1, %2 instead of string symbol $1.
|
||||
|
||||
See also: [[Thread:Portal talk:Ru/Plural changes in many languages]]
|
||||
|
||||
; The [[Plural#Plural in Gettext|"GETTEXT" forms]] is NOT supported: <del><code><nowiki>{{PLURAL:GETTEXT|%1 one|%1 two|%1 other}}</nowiki></code></del>. Please use the MediaWiki plural forms.
|
||||
|
||||
==== Examples ====
|
||||
; en
|
||||
: <code><nowiki>{{PLURAL:1|page|pages}}</nowiki></code> → page
|
||||
: <code><nowiki>{{PLURAL:2|page|pages}}</nowiki></code> → pages
|
||||
; fr
|
||||
: <code><nowiki>{{PLURAL:0|one or zero|other}}</nowiki></code> → one or zero
|
||||
: <code><nowiki>{{PLURAL:1|one or zero|other}}</nowiki></code> → one or zero
|
||||
: <code><nowiki>{{PLURAL:2|one or zero|other}}</nowiki></code> → other
|
||||
: <code><nowiki>{{PLURAL:3|one or zero|other}}</nowiki></code> → other
|
||||
; zh
|
||||
: <code><nowiki>{{PLURAL:1|page|pages}}</nowiki></code> → page
|
||||
: Special case: <code><nowiki>{{PLURAL:2|page|pages}}</nowiki></code> → pages
|
||||
: <code><nowiki>{{PLURAL:1|字}}</nowiki></code> → 字
|
||||
: <code><nowiki>{{PLURAL:2|字}}</nowiki></code> → 字
|
||||
; [https://www.mediawiki.org/wiki/Help:Magic_words/ru#Локализация ru]
|
||||
: Special case: <code><nowiki>{{PLURAL:5|1=Категория|Категории}}</nowiki></code> → Категории
|
||||
: <code><nowiki>{{PLURAL:3|страница|страницы|страниц}}</nowiki></code> → страницы
|
||||
: <code><nowiki>{{PLURAL:5|страница|страницы|страниц}}</nowiki></code> → страниц
|
||||
: <code><nowiki>%1 {{PLURAL:%1|байт|байта|байтов}}</nowiki></code> for %1=0 → 0 байтов
|
||||
: <code><nowiki>%1 {{PLURAL:%1|байт|байта|байтов}}</nowiki></code> for %1=1 → 1 байт
|
||||
: <code><nowiki>%1 {{PLURAL:%1|байт|байта|байтов}}</nowiki></code> for %1=2 → 2 байта
|
||||
|
||||
|
||||
== Git push 更新方法 ==
|
||||
每次更新前必須 git pull --rebase 加上 stash。
|
||||
|
||||
若忘了 pull 就直接 push,出現衝突,則需要 fetch + rebase (using git sync of TortoiseGit)。重新 git push --force-with-lease。
|
||||
|
||||
|
||||
== License 軟體授權條款 ==
|
||||
application/locale/resources/i18n/ 目錄中的翻譯由 translatewiki 提供,基於 [https://creativecommons.org/licenses/by/3.0/ CC BY 3.0]。
|
||||
@@ -0,0 +1,201 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "Spanien",
|
||||
"Calendrier r\u00e9publicain": "Franz\u00f6sischer republikanischer Kalender",
|
||||
"untranslated message count": "1000+",
|
||||
"\u6e05\u9664\u8a0a\u606f": "Protokoll l\u00f6schen",
|
||||
"\u986f\u793a/\u96b1\u85cf\u8a0a\u606f": "Protokoll anzeigen / ausblenden",
|
||||
"Load failed": "Laden fehlgeschlagen",
|
||||
"\u8a0a\u606f\u63d0\u793a\u8207\u7d00\u9304\u6b04": "Log-Konsole",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "Koordinaten: ",
|
||||
"\u81ea\u8a02\u8f38\u51fa\u683c\u5f0f": "Ausgabeformat anpassen",
|
||||
"\u7def\u5ea6\uff1a": "Breitengrad: ",
|
||||
"\u7d93\u5ea6\uff1a": "L\u00e4ngengrad: ",
|
||||
"\u8f38\u51fa\u683c\u5f0f": "Ausgabeformat",
|
||||
"\u524d\u7db4": "Pr\u00e4fix",
|
||||
"\u6642\u5340\uff1a": "Zeitzone: ",
|
||||
"\u671d\u4ee3\u7d00\u5e74\u65e5\u671f": "Datum der Kalenderepoche",
|
||||
"\u516c\u5143\u65e5\u671f": "Datum einer gew\u00f6hnlichen \u00c4ra",
|
||||
"Loading...": "Laden...",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "Myanmar",
|
||||
"Vi\u1ec7t Nam": "Vietnam",
|
||||
"\u9664\u53bb\u6b64\u6b04": "Spalte entfernen",
|
||||
"\u5206\u985e": "Gruppe",
|
||||
"%1/%2/%3": "%1/%2/%3",
|
||||
"\u5e74\u8b5c": "Kalenderdatum",
|
||||
"\u5168\u4e0d\u9078": "ALLE entfernen",
|
||||
"\u589e\u52a0\u6b64\u6b04": "Spalte hinzuf\u00fcgen",
|
||||
"\u81fa\u7063\u5730\u9707": "Erdbeben in Taiwan",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "Navigation:",
|
||||
"\u6240\u6709\u570b\u5bb6": "Alle L\u00e4nder",
|
||||
"France": "Frankreich",
|
||||
"Great Britain": "Gro\u00dfbritannien",
|
||||
"Spain": "Spanien",
|
||||
"\u541b\u4e3b\u865f": "K\u00fcnstlername",
|
||||
"\u51fa\u751f": "Geboren",
|
||||
"\u901d\u4e16": "Gestorben",
|
||||
"\u5728\u4f4d": "Regierungszeit",
|
||||
"\u52a0\u5195": "Kr\u00f6nung",
|
||||
"\u524d\u4efb": "Vorg\u00e4nger",
|
||||
"\u7e7c\u4efb": "Nachfolger",
|
||||
"\u7236\u89aa": "Vater",
|
||||
"\u6bcd\u89aa": "Mutter",
|
||||
"Initializing...": "Initialisiere\u2026",
|
||||
"Aries": "Widder",
|
||||
"Taurus": "Stier",
|
||||
"Gemini": "Zwilling",
|
||||
"Cancer": "Krebs",
|
||||
"Leo": "L\u00f6we",
|
||||
"Virgo": "Jungfrau",
|
||||
"Libra": "Waage",
|
||||
"Scorpio": "Skorpion",
|
||||
"Sagittarius": "Sch\u00fctze",
|
||||
"Capricorn": "Steinbock",
|
||||
"Aquarius": "Wassermann",
|
||||
"Pisces": "Fische",
|
||||
"\u6708\u76f8": "Mondphase",
|
||||
"\u661f\u671f": "Wochentag",
|
||||
"\u6714": "Neumond",
|
||||
"\u65e5\u51fa\u65e5\u843d": "Sonnenaufgang / Sonnenuntergang",
|
||||
"\u66d9\u66ae\u5149": "D\u00e4mmerung",
|
||||
"\u6708\u51fa\u6708\u843d": "Mondaufgang / Monduntergang",
|
||||
"calendar": "Kalender",
|
||||
"Gregorian calendar": "Gregorianischer Kalender",
|
||||
"Julian calendar": "Julianischer Kalender",
|
||||
"\u4f0a\u65af\u862d\u66c6": "Islamischer Kalender",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0647\u062c\u0631\u06cc \u062e\u0648\u0631\u0634\u06cc\u062f\u06cc": "Moderner iranischer Kalender",
|
||||
"\u5e0c\u4f2f\u4f86\u66c6": "Hebr\u00e4ischer Kalender",
|
||||
"\u9577\u7d00\u66c6": "Lange Z\u00e4hlung",
|
||||
"\u50a3\u66c6": "Dai-Kalender",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c \u1015\u103c\u1000\u1039\u1001\u1012\u102d\u1014\u103a": "Myanmar-Kalender",
|
||||
"\u5f5d\u66c6": "Yi-Kalender",
|
||||
"\u0939\u093f\u0928\u094d\u0926\u0942 \u092a\u0902\u091a\u093e\u0902\u0917": "Hindu-Kalender",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0628\u0647\u0627\u0626\u06cc": "Bah\u00e1\u2019\u00ed-Kalender",
|
||||
"\u79d1\u666e\u7279\u66c6": "Koptischer Kalender",
|
||||
"\u8863\u7d22\u6bd4\u4e9e\u66c6": "\u00c4thiopischer Kalender",
|
||||
"\u6559\u6703\u4e9e\u7f8e\u5c3c\u4e9e\u66c6": "Armenischer Kalender",
|
||||
"Byzantine calendar": "Byzantinischer Kalender",
|
||||
"\u53e4\u57c3\u53ca\u66c6": "\u00c4gyptischer Kalender",
|
||||
"\u6771\u4e9e\u9670\u967d\u66c6": "Ostasiatischer Kalender",
|
||||
"\u4e2d\u570b": "China",
|
||||
"\u6708\u306e\u5225\u540d": "Japanischer Monatsname",
|
||||
"\u66dc\u65e5": "Wochentag (japanisch)",
|
||||
"\u4e8c\u5341\u516b\u5bbf": "28 H\u00e4user",
|
||||
"zodiac sign": "Sternzeichen",
|
||||
"\u751f\u8096": "Chinesisches Tierkreiszeichen",
|
||||
"Year numbering": "Jahreszahl",
|
||||
"\u8457\u540d\u5730\u9ede\uff1a": "Ber\u00fchmte Orte:",
|
||||
"Loading %1%...": "Laden %1%...",
|
||||
"The bot operation is completed %1% in total": "Die Bot-Operation ist zu %1% abgeschlossen",
|
||||
"finished": "fertig",
|
||||
"No changes.": "Keine \u00c4nderungen.",
|
||||
"No page modified": "Keine Seite bearbeitet",
|
||||
"astronomy": "Astronomie",
|
||||
"\u4e0a\u5f26": "erstes Viertel",
|
||||
"\u671b": "Vollmond",
|
||||
"\u4e0b\u5f26": "letztes Viertel",
|
||||
"partial lunar eclipse": "partielle Mondfinsternis",
|
||||
"partial solar eclipse": "partielle Sonnenfinsternis",
|
||||
"total lunar eclipse": "totale Mondfinsternis",
|
||||
"total solar eclipse": "totale Sonnenfinsternis",
|
||||
"lunar eclipse": "Mondfinsternis",
|
||||
"solar eclipse": "Sonnenfinsternis",
|
||||
"moonrise": "Mondaufgang",
|
||||
"sunrise": "Sonnenaufgang",
|
||||
"moonset": "Monduntergang",
|
||||
"sunset": "Sonnenuntergang",
|
||||
"astronomical twilight begin": "Beginn der astronomischen D\u00e4mmerung",
|
||||
"civil twilight begin": "Beginn der b\u00fcrgerlichen D\u00e4mmerung",
|
||||
"nautical twilight begin": "Beginn der nautischen D\u00e4mmerung",
|
||||
"astronomical twilight end": "Ende der astronomischen D\u00e4mmerung",
|
||||
"civil twilight end": "Ende der b\u00fcrgerlichen D\u00e4mmerung",
|
||||
"nautical twilight end": "Ende der nautischen D\u00e4mmerung",
|
||||
"log-type-error": "Fehler",
|
||||
"Not Yet Implemented!": "Noch nicht implementiert!",
|
||||
"Language": "Sprache",
|
||||
"Comma-separator": ", ",
|
||||
"Abandon change": "\u00c4nderung verwerfen",
|
||||
"No reason provided": "Es wurde kein Grund angegeben",
|
||||
"No content": "Kein Inhalt",
|
||||
"%1 {{PLURAL:%1|result|results}}": "%1 {{PLURAL:%1|Ergebnis|Ergebnisse}}",
|
||||
"Invalid title: %1": "Ung\u00fcltiger Titel: %1",
|
||||
"Invalid parameter: %1": "Ung\u00fcltiger Parameter: %1",
|
||||
"Too many failed login attempts: %1": "Zu viele fehlgeschlagene Login-Versuche: %1",
|
||||
"\u7121\u9801\u9762\u91cd\u5b9a\u5411\u81f3\u672c\u9801": "Keine andere Seite leitet auf diese Seite weiter",
|
||||
"no change": "keine \u00c4nderung",
|
||||
"Missing page": "Fehlende Seite",
|
||||
"Invalid page title": "Ung\u00fcltiger Seitenname",
|
||||
"No user name or password provided. The login attempt was abandoned.": "Kein Benutzername oder Passwort angegeben. Der Anmeldeversuch wurde abgebrochen.",
|
||||
"file": "Datei",
|
||||
"files": "Dateien",
|
||||
"fso_file": "Dateipfad",
|
||||
"fso_files": "Dateipfade",
|
||||
"function": "Funktion",
|
||||
"number": "Zahl",
|
||||
"MESSAGE_NEED_RE_DOWNLOAD": "Der Download ist fehlgeschlagen, m\u00f6glicherweise ist der Server vor\u00fcbergehend nicht verf\u00fcgbar oder die Datei ist verloren gegangen (404). Bitte best\u00e4tige, dass der Fehler behoben wurde oder der Fehler nicht mehr besteht, und f\u00fchre den Download erneut aus.",
|
||||
"Retry %1/%2": "%1/%2 erneut versuchen",
|
||||
"File size: %1.": "Dateigr\u00f6\u00dfe: %1.",
|
||||
"Contents": "Inhalt",
|
||||
"Italy": "Italien",
|
||||
"Poland": "Polen",
|
||||
"Portugal": "Portugal",
|
||||
"Luxembourg": "Luxemburg",
|
||||
"Netherlands": "Niederlande",
|
||||
"Bavaria": "Bayern",
|
||||
"Austria": "\u00d6sterreich",
|
||||
"Switzerland": "Schweiz",
|
||||
"Hungary": "Ungarn",
|
||||
"Germany": "Deutschland",
|
||||
"Norway": "Norwegen",
|
||||
"Denmark": "D\u00e4nemark",
|
||||
"Sweden": "Schweden",
|
||||
"Finland": "Finnland",
|
||||
"Bulgaria": "Bulgarien",
|
||||
"Soviet Union": "Sowjetunion",
|
||||
"Serbia": "Serbien",
|
||||
"Romania": "Rum\u00e4nien",
|
||||
"Greece": "Griechenland",
|
||||
"T\u00fcrkiye": "T\u00fcrkei",
|
||||
"Egypt": "\u00c4gypten",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 {{PLURAL:%1|Minute|Minuten}}",
|
||||
"now": "jetzt",
|
||||
"several seconds ago": "vor einigen Sekunden",
|
||||
"soon": "bald",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "vor %1 {{PLURAL:%1|Sekunde|Sekunden}}",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "%1 {{PLURAL:$1|Sekunde|Sekunden}} sp\u00e4ter",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "vor %1 Minuten",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "%1 Minuten sp\u00e4ter",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "vor %1 Stunden",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 Stunden sp\u00e4ter",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "vor %1 Tagen",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1 Tage sp\u00e4ter",
|
||||
"\u7409\u7403": "Ryukyu",
|
||||
"\u65e5\u672c": "Japan",
|
||||
"\ud55c\uad6d": "Korea",
|
||||
"\u0e44\u0e17\u0e22": "Thailand",
|
||||
"India": "Indien",
|
||||
"\u2191Back to TOC": "\u2191Zur\u00fcck zum Inhaltsverzeichnis",
|
||||
"Contents of [%1]": "Inhalt von [%1]",
|
||||
"expand": "ausklappen",
|
||||
"collapse": "einklappen",
|
||||
"Duplicate task name %1! Will overwrite old task with new task: %2\u2192%3": "Doppelter Aufgabenname %1! \u00dcberschreibt die alte Aufgabe mit der neuen Aufgabe: %2\u2192%3",
|
||||
"\u8de8\u8a9e\u8a00\u6a21\u677f\u7684\u672c\u5730\u6a19\u984c\u8207\u5916\u8a9e\u6a19\u984c\u76f8\u540c": "Der lokale Titel in der interlingualen Vorlage ist derselbe wie der fremdsprachige Titel",
|
||||
"Local page title contains the local title in the interlanguage template": "Lokaler Seitentitel enth\u00e4lt den lokalen Titel in der Interlanguage-Vorlage",
|
||||
"user": "Benutzer",
|
||||
"%1 {{PLURAL:%1|page|pages}} modified": "%1 {{PLURAL:%1|Seite|Seiten}} bearbeitet",
|
||||
"Fixing broken anchor": "Korrigiere defekten Abschnittslink",
|
||||
"Remove %1 non-defunct {{PLURAL:%1|anchor|anchors}}": "Entferne %1 {{PLURAL:%1|defekten|defekte}} Abschnittstitel",
|
||||
"Anchor %1 links to a specific web page: %2.": "Abschnittstitel %1 verlinkt auf Webseite %2.",
|
||||
"The anchor (%2) is no longer available because it was [[Special:Diff/%1|deleted by a user]] before.": "Der Abschnittstitel %2 wurde schon einmal [[Spezial:Diff/%1|von einem anderen Benutzer]] gel\u00f6scht.",
|
||||
"Reminder of an inactive anchor": "Erinnerung an einen inaktiven Abschnittstitel",
|
||||
"Update links to archived section %1: %2": "Aktualisiere Links auf archivierten Abschnitt %1: %2",
|
||||
"Incorrect capitalization/spaced section title": "Falsche Gro\u00df- und Kleinschreibung oder Zusammen- und Getrenntschreibung in der Abschnitts\u00fcberschrift",
|
||||
"\u7e41\u7c21\u4e0d\u7b26\u5339\u914d\u800c\u5931\u6548\u7684\u7db2\u9801\u9328\u9ede": "Inkonsistenz zwischen traditionellem und vereinfachtem Chinesisch",
|
||||
"VERY DIFFERENT": "SEHR UNTERSCHIEDLICH",
|
||||
"Please help to check this edit.": "Bitte hilf dabei, diese Bearbeitung zu pr\u00fcfen.",
|
||||
"%1\u2192most alike anchor %2": "%1 am \u00e4hnlichsten zu Abschnitt %2",
|
||||
"\u8a9e\u8a00\u6578": "Anzahl der Sprachen",
|
||||
"\u4f5c\u54c1\u5df2\u5b8c\u7d50\u3002": "Serie ist beendet."
|
||||
},
|
||||
"de-DE");
|
||||
@@ -0,0 +1,135 @@
|
||||
/* gettext plural rules of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2022.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_plural_rules({
|
||||
ach: [2, function(n){return +(n > 1);}],
|
||||
af: [2, function(n){return +(n != 1);}],
|
||||
ak: [2, function(n){return +(n > 1);}],
|
||||
am: [2, function(n){return +(n > 1);}],
|
||||
ar: [6, function(n){return (n == 0) ? 0 : ( (n == 1) ? 1 : ( (n == 2) ? 2 : ( (n%100 >= 3 && n%100 <= 10) ? 3 : ( (n%100 >= 11 && n%100 <= 99) ? 4 : 5 ) ) ) );}],
|
||||
arn: [2, function(n){return +(n > 1);}],
|
||||
ast: [2, function(n){return +(n != 1);}],
|
||||
ay: [1, 0],
|
||||
az: [2, function(n){return +(n != 1);}],
|
||||
be: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
bg: [2, function(n){return +(n != 1);}],
|
||||
bn: [2, function(n){return +(n != 1);}],
|
||||
bo: [1, 0],
|
||||
br: [2, function(n){return +(n > 1);}],
|
||||
bs: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
ca: [2, function(n){return +(n != 1);}],
|
||||
cgg: [1, 0],
|
||||
cs: [3, function(n){return (n == 1) ? 0 : ( (n >= 2 && n <= 4) ? 1 : 2 );}],
|
||||
csb: [3, function(n){return (n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
cy: [6, function(n){return (n == 0) ? 0 : ( (n == 1) ? 1 : ( (n == 2) ? 2 : ( (n == 3) ? 3 : ( (n == 6) ? 4 : 5 ) ) ) );}],
|
||||
da: [2, function(n){return +(n != 1);}],
|
||||
de: [2, function(n){return +(n != 1);}],
|
||||
dz: [1, 0],
|
||||
el: [2, function(n){return +(n != 1);}],
|
||||
en: [2, function(n){return +(n != 1);}],
|
||||
"en-gb": [2, function(n){return +(n != 1);}],
|
||||
eo: [2, function(n){return +(n != 1);}],
|
||||
es: [2, function(n){return +(n != 1);}],
|
||||
et: [2, function(n){return +(n != 1);}],
|
||||
eu: [2, function(n){return +(n != 1);}],
|
||||
fa: [1, 0],
|
||||
fi: [2, function(n){return +(n != 1);}],
|
||||
fil: [2, function(n){return +(n > 1);}],
|
||||
fo: [2, function(n){return +(n != 1);}],
|
||||
fr: [2, function(n){return +(n > 1);}],
|
||||
fur: [2, function(n){return +(n != 1);}],
|
||||
fy: [2, function(n){return +(n != 1);}],
|
||||
ga: [5, function(n){return (n == 1) ? 0 : ( (n == 2) ? 1 : ( (n < 7) ? 2 : ( (n < 11) ? 3 : 4 ) ) );}],
|
||||
gd: [4, function(n){return (n == 1 || n == 11) ? 0 : (n == 2 || n == 12) ? 1 : (n > 2 && n < 20) ? 2 : 3;}],
|
||||
gl: [2, function(n){return +(n != 1);}],
|
||||
gu: [2, function(n){return +(n != 1);}],
|
||||
gun: [2, function(n){return +(n > 1);}],
|
||||
ha: [2, function(n){return +(n != 1);}],
|
||||
he: [2, function(n){return +(n != 1);}],
|
||||
hi: [2, function(n){return +(n != 1);}],
|
||||
hr: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
hu: [2, function(n){return +(n != 1);}],
|
||||
hy: [2, function(n){return +(n != 1);}],
|
||||
ia: [2, function(n){return +(n != 1);}],
|
||||
id: [1, 0],
|
||||
is: [2, function(n){return +(n != 1);}],
|
||||
it: [2, function(n){return +(n != 1);}],
|
||||
ja: [1, 0],
|
||||
jbo: [1, 0],
|
||||
jv: [2, function(n){return +(n != 0);}],
|
||||
ka: [1, 0],
|
||||
kk: [1, 0],
|
||||
km: [1, 0],
|
||||
kn: [2, function(n){return +(n != 1);}],
|
||||
ko: [1, 0],
|
||||
ku: [2, function(n){return +(n != 1);}],
|
||||
kw: [4, function(n){return (n == 1) ? 0 : ( (n == 2) ? 1 : ( (n == 3) ? 2 : 3 ) );}],
|
||||
ky: [1, 0],
|
||||
lb: [2, function(n){return +(n != 1);}],
|
||||
ln: [2, function(n){return +(n > 1);}],
|
||||
lo: [1, 0],
|
||||
lt: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
lv: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n != 0) ? 1 : 2 );}],
|
||||
mai: [2, function(n){return +(n != 1);}],
|
||||
mfe: [2, function(n){return +(n > 1);}],
|
||||
mg: [2, function(n){return +(n > 1);}],
|
||||
mi: [2, function(n){return +(n > 1);}],
|
||||
mk: [2, function(n){return +((n == 1 || n%10 == 1) ? 0 : 1);}],
|
||||
ml: [2, function(n){return +(n != 1);}],
|
||||
mn: [2, function(n){return +(n != 1);}],
|
||||
mnk: [3, function(n){return (n == 0) ? 0 : n == 1 ? 1 : 2;}],
|
||||
mr: [2, function(n){return +(n != 1);}],
|
||||
ms: [1, 0],
|
||||
mt: [4, function(n){return (n == 1) ? 0 : ( (n == 0 || (n%100 > 1 && n%100 < 11)) ? 1 : ( (n%100 > 10 && n%100 < 20) ? 2 : 3 ) );}],
|
||||
nah: [2, function(n){return +(n != 1);}],
|
||||
nap: [2, function(n){return +(n != 1);}],
|
||||
nb: [2, function(n){return +(n != 1);}],
|
||||
ne: [2, function(n){return +(n != 1);}],
|
||||
nl: [2, function(n){return +(n != 1);}],
|
||||
nn: [2, function(n){return +(n != 1);}],
|
||||
no: [2, function(n){return +(n != 1);}],
|
||||
nso: [2, function(n){return +(n > 1);}],
|
||||
oc: [2, function(n){return +(n > 1);}],
|
||||
or: [2, function(n){return +(n != 1);}],
|
||||
pa: [2, function(n){return +(n != 1);}],
|
||||
pap: [2, function(n){return +(n != 1);}],
|
||||
pl: [3, function(n){return (n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
pms: [2, function(n){return +(n != 1);}],
|
||||
ps: [2, function(n){return +(n != 1);}],
|
||||
pt: [2, function(n){return +(n != 1);}],
|
||||
"pt-br": [2, function(n){return +(n > 1);}],
|
||||
rm: [2, function(n){return +(n != 1);}],
|
||||
ro: [3, function(n){return (n == 1) ? 0 : ( (n == 0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2 );}],
|
||||
ru: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
sco: [2, function(n){return +(n != 1);}],
|
||||
si: [2, function(n){return +(n != 1);}],
|
||||
sk: [3, function(n){return (n == 1) ? 0 : ( (n >= 2 && n <= 4) ? 1 : 2 );}],
|
||||
sl: [4, function(n){return (n%100 == 1) ? 0 : ( (n%100 == 2) ? 1 : ( (n%100 == 3 || n%100 == 4) ? 2 : 3 ) );}],
|
||||
so: [2, function(n){return +(n != 1);}],
|
||||
sq: [2, function(n){return +(n != 1);}],
|
||||
sr: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
"sr-ec": [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
"sr-el": [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
su: [1, 0],
|
||||
sv: [2, function(n){return +(n != 1);}],
|
||||
sw: [2, function(n){return +(n != 1);}],
|
||||
ta: [2, function(n){return +(n != 1);}],
|
||||
te: [2, function(n){return +(n != 1);}],
|
||||
tg: [2, function(n){return +(n != 1);}],
|
||||
th: [1, 0],
|
||||
ti: [2, function(n){return +(n > 1);}],
|
||||
tk: [2, function(n){return +(n != 1);}],
|
||||
tr: [1, 0],
|
||||
tt: [1, 0],
|
||||
ug: [1, 0],
|
||||
uk: [3, function(n){return (n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );}],
|
||||
ur: [2, function(n){return +(n != 1);}],
|
||||
uz: [1, 0],
|
||||
vi: [1, 0],
|
||||
wa: [2, function(n){return +(n > 1);}],
|
||||
wo: [1, 0],
|
||||
yo: [2, function(n){return +(n != 1);}],
|
||||
zh: [1, 0],
|
||||
"zh-hans": [1, 0],
|
||||
"zh-hant": [1, 0],
|
||||
"zh-tw": [1, 0]
|
||||
});
|
||||
@@ -0,0 +1,97 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "Espa\u00f1a",
|
||||
"untranslated message count": "1000+",
|
||||
"\u516c\u5143": "Wh\u00e8 M\u00edt\u1ecdn",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "Myanmar",
|
||||
"\u5206\u985e": "Ogb\u1eb9\u0301",
|
||||
"%1 CE": "%1 CE",
|
||||
"\u5171\u6709 %1 \u500b\u5e74\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 owhe l\u1eb9",
|
||||
"\u5168\u4e0d\u9078": "De POPO L\u1eb8PO s\u1eb9",
|
||||
"\u541b\u4e3b\u751f\u5352": "Gb\u1eb9wh\u1eb9nu g\u00e1ndut\u1ecd l\u1eb9 t\u1ecdn",
|
||||
"\u6240\u6709\u570b\u5bb6": "Ot\u00f2 l\u1eb9po",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "APAJL\u1eb8",
|
||||
"Julian Day Number": "S\u1ecdha Azan Julian T\u1ecdn",
|
||||
"\u63a1\u7528\u66c6\u6cd5": "Sunzanhiawe he yin zinzan",
|
||||
"\u541b\u4e3b\u540d": "Yink\u1ecd m\u1eb9detiti t\u1ecdn",
|
||||
"\u901d\u4e16": "Ko K\u00fa",
|
||||
"\u7236\u89aa": "Ot\u1ecd\u0301",
|
||||
"\u6bcd\u89aa": "\u00d2n\u1ecd",
|
||||
"Taurus": "Taulusi",
|
||||
"Leo": "Leo",
|
||||
"Libra": "Libra",
|
||||
"JDN": "JDN",
|
||||
"JD": "JD",
|
||||
"\u6714": "osun y\u1ecdy\u1ecd",
|
||||
"\u65e5\u51fa\u65e5\u843d": "af\u1ecdnnu / whejai",
|
||||
"Gregorian calendar": "S\u00f9nz\u00e1nhiawe Gregorian t\u1ecdn",
|
||||
"Julian calendar": "Sunzanhiawe Julia t\u1ecdn",
|
||||
"\u4f0a\u65af\u862d\u66c6": "S\u00f9nz\u00e1nhiawe Mal\u00e9nu t\u1ecdn",
|
||||
"\u5e0c\u4f2f\u4f86\u66c6": "S\u00f9nz\u00e1nhiawe Heblu t\u1ecdn",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c \u1015\u103c\u1000\u1039\u1001\u1012\u102d\u1014\u103a": "S\u00f9nz\u00e1nhiawe Myanmar t\u1ecdn",
|
||||
"\u0939\u093f\u0928\u094d\u0926\u0942 \u092a\u0902\u091a\u093e\u0902\u0917": "Sunzanhiawe Hindu l\u1eb9 t\u1ecdn",
|
||||
"\u53e4\u57c3\u53ca\u66c6": "Sunzanhiawe Egipti t\u1ecdn",
|
||||
"\u4e2d\u570b": "China",
|
||||
"\u9ec3\u5e1d\u7d00\u5143": "Huangdi",
|
||||
"Holocene calendar": "S\u00f9nz\u00e1nhiawe Holocene t\u1ecdn",
|
||||
"No changes.": "Di\u1ecddo de matin",
|
||||
"sunrise": "Af\u1ecdnnu",
|
||||
"Language": "Ogb\u00e8",
|
||||
"Abandon change": "W\u1ecdny\u00e0na di\u1ecddo",
|
||||
"No reason provided": "Wh\u1eb9whinwh\u1eb9n depope ma yin nina",
|
||||
"no change": "Di\u1ecddo matin",
|
||||
"function": "Y\u1ecdn-na yizan",
|
||||
"number": "S\u1ecdha",
|
||||
"Italy": "Itali",
|
||||
"Poland": "Poland",
|
||||
"Portugal": "P\u1ecdtuga",
|
||||
"Luxembourg": "Luxembourg",
|
||||
"Netherlands": "Netherlands",
|
||||
"Bavaria": "Bavaria",
|
||||
"Austria": "Austria",
|
||||
"Switzerland": "Switzerland",
|
||||
"Hungary": "Hungary",
|
||||
"Norway": "Norway",
|
||||
"Denmark": "Denmark",
|
||||
"Sweden": "Sweden",
|
||||
"Finland": "Finland",
|
||||
"Soviet Union": "Soviet Union",
|
||||
"Serbia": "Sabia",
|
||||
"Greece": "Gliki",
|
||||
"Egypt": "Egipti",
|
||||
"%1 {{PLURAL:%1|year|years}}": "%1 Y",
|
||||
"%1 Y": "%1 Y",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 nuk",
|
||||
"%1 min": "%1 nuk",
|
||||
"yesterday, %H:%M": "\u1eccs\u1ecd he wayi, %H:%M",
|
||||
"today, %H:%M": "Egb\u00e9, %H:%M",
|
||||
"tomorrow, %H:%M": "os\u1ecd he ja, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "Az\u00e1n at\u1ecd\u0300n gb\u00e8, %H:%M",
|
||||
"3 days after tomorrow, %H:%M": "Az\u00e1n \u1eb9n\u1eb9 gbe, %H:%M",
|
||||
"now": "Din",
|
||||
"soon": "mad\u1eb9nm\u1eb9",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "%1 nukunwhiwhe del\u1eb9 die",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "%1 nukunwhiwhe del\u1eb9 godo",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1 ganhiho del\u1eb9 die",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 ganhiho l\u1eb9 godo",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 az\u00e1n del\u1eb9 die",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1 az\u00e1n l\u1eb9 godo",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "%1 \u1ecds\u1eb9 l\u1eb9 godo",
|
||||
"\u8df3\u904e [%1]\uff1a\u672c[%2]\u50c5\u4f9b\u53c3\u7167\u7528\u3002": "Das\u00e1 [%1]: %2 l\u1ecd tin na l\u1eb9ndai al\u1ecddl\u1eb9ndonu t\u1ecdn k\u1eb9d\u1eb9.",
|
||||
"\u7409\u7403": "Ryukyu",
|
||||
"\u65e5\u672c": "Japan",
|
||||
"\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\u0e2a\u0e38\u0e42\u0e02\u0e17\u0e31\u0e22": "Ah\u1ecdluduta Sukhothai t\u1ecdn",
|
||||
"Pagan": "Kosi",
|
||||
"Toungoo": "Toungoo",
|
||||
"\u1000\u102f\u1014\u103a\u1038\u1018\u1031\u102c\u1004\u103a\u1001\u1031\u1010\u103a": "Konbaung",
|
||||
"India": "India",
|
||||
"Babylon": "Babil\u1ecdni",
|
||||
"Persia": "P\u1eb9lsia",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "Sparta",
|
||||
"Hittite": "Hitinu",
|
||||
"Maya": "Maya",
|
||||
"\u2191Back to TOC": "\u2191L\u1eb9k\u1ecdyi TOC",
|
||||
"expand": "Dl\u1eb9n"
|
||||
},
|
||||
"guw-BJ");
|
||||
@@ -0,0 +1,210 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Brettchenweber",
|
||||
"Crazy1880",
|
||||
"DraconicDark",
|
||||
"Giftpflanze",
|
||||
"Justman10000",
|
||||
"Lukasaiko",
|
||||
"ThisCarthing",
|
||||
"ZiqiLiang"
|
||||
]
|
||||
},
|
||||
"españa": "Spanien",
|
||||
"french-republican-calendar": "Französischer republikanischer Kalender",
|
||||
"untranslated-message-count": "1000+",
|
||||
"clear-log": "Protokoll löschen",
|
||||
"show-hidden-log": "Protokoll anzeigen / ausblenden",
|
||||
"load-failed": "Laden fehlgeschlagen",
|
||||
"log-console": "Log-Konsole",
|
||||
"coordinates": "Koordinaten: ",
|
||||
"customize-output-format": "Ausgabeformat anpassen",
|
||||
"latitude": "Breitengrad: ",
|
||||
"longitude": "Längengrad: ",
|
||||
"output-format": "Ausgabeformat",
|
||||
"prefix": "Präfix",
|
||||
"timezone": "Zeitzone: ",
|
||||
"date-of-calendar-era": "Datum der Kalenderepoche",
|
||||
"date-of-common-era": "Datum einer gewöhnlichen Ära",
|
||||
"loading": "Laden...",
|
||||
"myanmar": "Myanmar",
|
||||
"vietnam": "Vietnam",
|
||||
"remove-the-column": "Spalte entfernen",
|
||||
"group": "Gruppe",
|
||||
"$1-$2-$3": "%1/%2/%3",
|
||||
"calendar-date": "Kalenderdatum",
|
||||
"remove-all": "ALLE entfernen",
|
||||
"add-the-column": "Spalte hinzufügen",
|
||||
"taiwan-earthquakes": "Erdbeben in Taiwan",
|
||||
"navigation": "Navigation:",
|
||||
"all-countries": "Alle Länder",
|
||||
"france": "Frankreich",
|
||||
"great-britain": "Großbritannien",
|
||||
"spain": "Spanien",
|
||||
"art-name": "Künstlername",
|
||||
"born": "Geboren",
|
||||
"died": "Gestorben",
|
||||
"reign": "Regierungszeit",
|
||||
"coronation": "Krönung",
|
||||
"predecessor": "Vorgänger",
|
||||
"successor": "Nachfolger",
|
||||
"father": "Vater",
|
||||
"mother": "Mutter",
|
||||
"initializing": "Initialisiere…",
|
||||
"aries": "Widder",
|
||||
"taurus": "Stier",
|
||||
"gemini": "Zwilling",
|
||||
"cancer": "Krebs",
|
||||
"leo": "Löwe",
|
||||
"virgo": "Jungfrau",
|
||||
"libra": "Waage",
|
||||
"scorpio": "Skorpion",
|
||||
"sagittarius": "Schütze",
|
||||
"capricorn": "Steinbock",
|
||||
"aquarius": "Wassermann",
|
||||
"pisces": "Fische",
|
||||
"lunar-phase": "Mondphase",
|
||||
"week-day": "Wochentag",
|
||||
"new-moon": "Neumond",
|
||||
"sunrise-sunset": "Sonnenaufgang / Sonnenuntergang",
|
||||
"twilight": "Dämmerung",
|
||||
"moonrise-moonset": "Mondaufgang / Monduntergang",
|
||||
"calendar": "Kalender",
|
||||
"gregorian-calendar": "Gregorianischer Kalender",
|
||||
"julian-calendar": "Julianischer Kalender",
|
||||
"islamic-calendar": "Islamischer Kalender",
|
||||
"modern-iranian-calendar": "Moderner iranischer Kalender",
|
||||
"hebrew-calendar": "Hebräischer Kalender",
|
||||
"long-count": "Lange Zählung",
|
||||
"dai-calendar": "Dai-Kalender",
|
||||
"myanmar-calendar": "Myanmar-Kalender",
|
||||
"yi-calendar": "Yi-Kalender",
|
||||
"hindu-calendar": "Hindu-Kalender",
|
||||
"bahá-í-calendar": "Bahá’í-Kalender",
|
||||
"coptic-calendar": "Koptischer Kalender",
|
||||
"ethiopian-calendar": "Äthiopischer Kalender",
|
||||
"armenian-calendar": "Armenischer Kalender",
|
||||
"byzantine-calendar": "Byzantinischer Kalender",
|
||||
"egyptian-calendar": "Ägyptischer Kalender",
|
||||
"east-asian-calendar": "Ostasiatischer Kalender",
|
||||
"china": "China",
|
||||
"japanese-month-name": "Japanischer Monatsname",
|
||||
"week-day-(japanese)": "Wochentag (japanisch)",
|
||||
"28-mansions": "28 Häuser",
|
||||
"zodiac-sign": "Sternzeichen",
|
||||
"chinese-zodiac": "Chinesisches Tierkreiszeichen",
|
||||
"year-numbering": "Jahreszahl",
|
||||
"famous-places": "Berühmte Orte:",
|
||||
"loading-$1$": "Laden %1%...",
|
||||
"the-bot-operation-is-completed-$1$-in-total": "Die Bot-Operation ist zu %1% abgeschlossen",
|
||||
"finished": "fertig",
|
||||
"no-changes": "Keine Änderungen.",
|
||||
"no-page-modified": "Keine Seite bearbeitet",
|
||||
"astronomy": "Astronomie",
|
||||
"first-quarter": "erstes Viertel",
|
||||
"full-moon": "Vollmond",
|
||||
"last-quarter": "letztes Viertel",
|
||||
"partial-lunar-eclipse": "partielle Mondfinsternis",
|
||||
"partial-solar-eclipse": "partielle Sonnenfinsternis",
|
||||
"total-lunar-eclipse": "totale Mondfinsternis",
|
||||
"total-solar-eclipse": "totale Sonnenfinsternis",
|
||||
"lunar-eclipse": "Mondfinsternis",
|
||||
"solar-eclipse": "Sonnenfinsternis",
|
||||
"moonrise": "Mondaufgang",
|
||||
"sunrise": "Sonnenaufgang",
|
||||
"moonset": "Monduntergang",
|
||||
"sunset": "Sonnenuntergang",
|
||||
"astronomical-twilight-begin": "Beginn der astronomischen Dämmerung",
|
||||
"civil-twilight-begin": "Beginn der bürgerlichen Dämmerung",
|
||||
"nautical-twilight-begin": "Beginn der nautischen Dämmerung",
|
||||
"astronomical-twilight-end": "Ende der astronomischen Dämmerung",
|
||||
"civil-twilight-end": "Ende der bürgerlichen Dämmerung",
|
||||
"nautical-twilight-end": "Ende der nautischen Dämmerung",
|
||||
"log-type-error": "Fehler",
|
||||
"not-yet-implemented": "Noch nicht implementiert!",
|
||||
"language": "Sprache",
|
||||
"Comma-separator": ", ",
|
||||
"abandon-change": "Änderung verwerfen",
|
||||
"no-reason-provided": "Es wurde kein Grund angegeben",
|
||||
"no-content": "Kein Inhalt",
|
||||
"$1-results": "%1 {{PLURAL:%1|Ergebnis|Ergebnisse}}",
|
||||
"invalid-title-$1": "Ungültiger Titel: %1",
|
||||
"invalid-parameter-$1": "Ungültiger Parameter: %1",
|
||||
"too-many-failed-login-attempts-$1": "Zu viele fehlgeschlagene Login-Versuche: %1",
|
||||
"no-page-redirects-to-this-page": "Keine andere Seite leitet auf diese Seite weiter",
|
||||
"no-change": "keine Änderung",
|
||||
"missing-page": "Fehlende Seite",
|
||||
"invalid-page-title": "Ungültiger Seitenname",
|
||||
"no-user-name-or-password-provided.-the-login-attempt-was-abandoned": "Kein Benutzername oder Passwort angegeben. Der Anmeldeversuch wurde abgebrochen.",
|
||||
"file": "Datei",
|
||||
"files": "Dateien",
|
||||
"fso_file": "Dateipfad",
|
||||
"fso_files": "Dateipfade",
|
||||
"function": "Funktion",
|
||||
"number": "Zahl",
|
||||
"message_need_re_download": "Der Download ist fehlgeschlagen, möglicherweise ist der Server vorübergehend nicht verfügbar oder die Datei ist verloren gegangen (404). Bitte bestätige, dass der Fehler behoben wurde oder der Fehler nicht mehr besteht, und führe den Download erneut aus.",
|
||||
"retry-$1-$2": "%1/%2 erneut versuchen",
|
||||
"file-size-$1": "Dateigröße: %1.",
|
||||
"contents": "Inhalt",
|
||||
"italy": "Italien",
|
||||
"poland": "Polen",
|
||||
"portugal": "Portugal",
|
||||
"luxembourg": "Luxemburg",
|
||||
"netherlands": "Niederlande",
|
||||
"bavaria": "Bayern",
|
||||
"austria": "Österreich",
|
||||
"switzerland": "Schweiz",
|
||||
"hungary": "Ungarn",
|
||||
"germany": "Deutschland",
|
||||
"norway": "Norwegen",
|
||||
"denmark": "Dänemark",
|
||||
"sweden": "Schweden",
|
||||
"finland": "Finnland",
|
||||
"bulgaria": "Bulgarien",
|
||||
"soviet-union": "Sowjetunion",
|
||||
"serbia": "Serbien",
|
||||
"romania": "Rumänien",
|
||||
"greece": "Griechenland",
|
||||
"turkey": "Türkei",
|
||||
"egypt": "Ägypten",
|
||||
"$1-minutes": "%1 {{PLURAL:%1|Minute|Minuten}}",
|
||||
"now": "jetzt",
|
||||
"several-seconds-ago": "vor einigen Sekunden",
|
||||
"soon": "bald",
|
||||
"$1-seconds-ago": "vor %1 {{PLURAL:%1|Sekunde|Sekunden}}",
|
||||
"$1-seconds-later": "%1 {{PLURAL:$1|Sekunde|Sekunden}} später",
|
||||
"$1-minutes-ago": "vor %1 Minuten",
|
||||
"$1-minutes-later": "%1 Minuten später",
|
||||
"$1-hours-ago": "vor %1 Stunden",
|
||||
"$1-hours-later": "%1 Stunden später",
|
||||
"$1-days-ago": "vor %1 Tagen",
|
||||
"$1-days-later": "%1 Tage später",
|
||||
"ryukyu": "Ryukyu",
|
||||
"japan": "Japan",
|
||||
"korea": "Korea",
|
||||
"thailand": "Thailand",
|
||||
"india": "Indien",
|
||||
"↑back-to-toc": "↑Zurück zum Inhaltsverzeichnis",
|
||||
"contents-of-$1": "Inhalt von [%1]",
|
||||
"expand": "ausklappen",
|
||||
"collapse": "einklappen",
|
||||
"duplicate-task-name-$1!-will-overwrite-old-task-with-new-task-$2→$3": "Doppelter Aufgabenname %1! Überschreibt die alte Aufgabe mit der neuen Aufgabe: %2→%3",
|
||||
"the-local-title-in-the-interlanguage-template-is-same-as-the-foreign-language-title": "Der lokale Titel in der interlingualen Vorlage ist derselbe wie der fremdsprachige Titel",
|
||||
"local-page-title-contains-the-local-title-in-the-interlanguage-template": "Lokaler Seitentitel enthält den lokalen Titel in der Interlanguage-Vorlage",
|
||||
"user": "Benutzer",
|
||||
"$1-pages-modified": "%1 {{PLURAL:%1|Seite|Seiten}} bearbeitet",
|
||||
"fixing-broken-anchor": "Korrigiere defekten Abschnittslink",
|
||||
"remove-$1-non-defunct-anchors": "Entferne %1 {{PLURAL:%1|defekten|defekte}} Abschnittstitel",
|
||||
"anchor-$1-links-to-a-specific-web-page-$2": "Abschnittstitel %1 verlinkt auf Webseite %2.",
|
||||
"the-anchor-($2)-has-been-deleted-by-other-users-before": "Der Abschnittstitel %2 wurde schon einmal [[Spezial:Diff/%1|von einem anderen Benutzer]] gelöscht.",
|
||||
"reminder-of-an-inactive-anchor": "Erinnerung an einen inaktiven Abschnittstitel",
|
||||
"update-links-to-archived-section-$1-$2": "Aktualisiere Links auf archivierten Abschnitt %1: %2",
|
||||
"incorrect-capitalization-spaced-section-title": "Falsche Groß- und Kleinschreibung oder Zusammen- und Getrenntschreibung in der Abschnittsüberschrift",
|
||||
"inconsistency-between-traditional-and-simplified-chinese": "Inkonsistenz zwischen traditionellem und vereinfachtem Chinesisch",
|
||||
"very-different": "SEHR UNTERSCHIEDLICH",
|
||||
"please-help-to-check-this-edit": "Bitte hilf dabei, diese Bearbeitung zu prüfen.",
|
||||
"$1→most-alike-anchor-$2": "%1 am ähnlichsten zu Abschnitt %2",
|
||||
"count-of-languages": "Anzahl der Sprachen",
|
||||
"series-has-ended": "Serie ist beendet."
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Atej2*",
|
||||
"Gadarawamo",
|
||||
"Samatics"
|
||||
]
|
||||
},
|
||||
"españa": "España",
|
||||
"untranslated-message-count": "1000+",
|
||||
"common-era": "Whè Mítọn",
|
||||
"myanmar": "Myanmar",
|
||||
"group": "Ogbẹ́",
|
||||
"$1-ce": "%1 CE",
|
||||
"total-$1-year-records": "%1 owhe lẹ",
|
||||
"remove-all": "De POPO LẸPO sẹ",
|
||||
"lifetime-of-rulers": "Gbẹwhẹnu gándutọ lẹ tọn",
|
||||
"all-countries": "Otò lẹpo",
|
||||
"example": "APAJLẸ",
|
||||
"julian-day-number": "Sọha Azan Julian Tọn",
|
||||
"calendar-used": "Sunzanhiawe he yin zinzan",
|
||||
"personal-name": "Yinkọ mẹdetiti tọn",
|
||||
"died": "Ko Kú",
|
||||
"father": "Otọ́",
|
||||
"mother": "Ònọ",
|
||||
"taurus": "Taulusi",
|
||||
"leo": "Leo",
|
||||
"libra": "Libra",
|
||||
"jdn": "JDN",
|
||||
"jd": "JD",
|
||||
"new-moon": "osun yọyọ",
|
||||
"sunrise-sunset": "afọnnu / whejai",
|
||||
"gregorian-calendar": "Sùnzánhiawe Gregorian tọn",
|
||||
"julian-calendar": "Sunzanhiawe Julia tọn",
|
||||
"islamic-calendar": "Sùnzánhiawe Malénu tọn",
|
||||
"hebrew-calendar": "Sùnzánhiawe Heblu tọn",
|
||||
"myanmar-calendar": "Sùnzánhiawe Myanmar tọn",
|
||||
"hindu-calendar": "Sunzanhiawe Hindu lẹ tọn",
|
||||
"egyptian-calendar": "Sunzanhiawe Egipti tọn",
|
||||
"china": "China",
|
||||
"huangdi": "Huangdi",
|
||||
"holocene-calendar": "Sùnzánhiawe Holocene tọn",
|
||||
"no-changes": "Diọdo de matin",
|
||||
"sunrise": "Afọnnu",
|
||||
"language": "Ogbè",
|
||||
"abandon-change": "Wọnyàna diọdo",
|
||||
"no-reason-provided": "Whẹwhinwhẹn depope ma yin nina",
|
||||
"no-change": "Diọdo matin",
|
||||
"function": "Yọn-na yizan",
|
||||
"number": "Sọha",
|
||||
"italy": "Itali",
|
||||
"poland": "Poland",
|
||||
"portugal": "Pọtuga",
|
||||
"luxembourg": "Luxembourg",
|
||||
"netherlands": "Netherlands",
|
||||
"bavaria": "Bavaria",
|
||||
"austria": "Austria",
|
||||
"switzerland": "Switzerland",
|
||||
"hungary": "Hungary",
|
||||
"norway": "Norway",
|
||||
"denmark": "Denmark",
|
||||
"sweden": "Sweden",
|
||||
"finland": "Finland",
|
||||
"soviet-union": "Soviet Union",
|
||||
"serbia": "Sabia",
|
||||
"greece": "Gliki",
|
||||
"egypt": "Egipti",
|
||||
"$1-years": "%1 Y",
|
||||
"$1-y": "%1 Y",
|
||||
"$1-minutes": "%1 nuk",
|
||||
"$1-min": "%1 nuk",
|
||||
"yesterday-$h-$m": "Ọsọ he wayi, %H:%M",
|
||||
"today-$h-$m": "Egbé, %H:%M",
|
||||
"tomorrow-$h-$m": "osọ he ja, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "Azán atọ̀n gbè, %H:%M",
|
||||
"3-days-after-tomorrow-$h-$m": "Azán ẹnẹ gbe, %H:%M",
|
||||
"now": "Din",
|
||||
"soon": "madẹnmẹ",
|
||||
"$1-minutes-ago": "%1 nukunwhiwhe delẹ die",
|
||||
"$1-minutes-later": "%1 nukunwhiwhe delẹ godo",
|
||||
"$1-hours-ago": "%1 ganhiho delẹ die",
|
||||
"$1-hours-later": "%1 ganhiho lẹ godo",
|
||||
"$1-days-ago": "%1 azán delẹ die",
|
||||
"$1-days-later": "%1 azán lẹ godo",
|
||||
"$1-weeks-later": "%1 ọsẹ lẹ godo",
|
||||
"skip-$1-the-$2-is-for-reference-purpose-only": "Dasá [%1]: %2 lọ tin na lẹndai alọdlẹndonu tọn kẹdẹ.",
|
||||
"ryukyu": "Ryukyu",
|
||||
"japan": "Japan",
|
||||
"sukhothai-kingdom": "Ahọluduta Sukhothai tọn",
|
||||
"pagan": "Kosi",
|
||||
"toungoo": "Toungoo",
|
||||
"konbaung": "Konbaung",
|
||||
"india": "India",
|
||||
"babylon": "Babilọni",
|
||||
"persia": "Pẹlsia",
|
||||
"sparta": "Sparta",
|
||||
"hittite": "Hitinu",
|
||||
"maya": "Maya",
|
||||
"↑back-to-toc": "↑Lẹkọyi TOC",
|
||||
"expand": "Dlẹn"
|
||||
}
|
||||
@@ -0,0 +1,654 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Anonymoususer12321",
|
||||
"Funa-enpitu",
|
||||
"Kanashimi",
|
||||
"MathXplore",
|
||||
"MirukuPC",
|
||||
"Mugenpman",
|
||||
"Omotecho",
|
||||
"Shirayuki",
|
||||
"Yamagata Yusuke",
|
||||
"もなー(偽物)"
|
||||
]
|
||||
},
|
||||
"españa": "スペイン",
|
||||
"french-republican-calendar": "フランス革命暦",
|
||||
"untranslated-message-count": "600+",
|
||||
"clear-log": "記録を消去する",
|
||||
"show-hidden-log": "ログ表示・非表示",
|
||||
"load-failed": "読み込みに失敗しました",
|
||||
"log-console": "メッセージや情報の記録帳",
|
||||
"ce-year-and-chinese-calendar-month-day": "西暦年、旧暦の月日",
|
||||
"convert-an-era-name-to-the-specified-format": "日時を指定する表現形式に置き換え",
|
||||
"coordinates": "地理座標: ",
|
||||
"customize-output-format": "特殊な出力形式",
|
||||
"era-calendar-converter": "紀年変換ツール",
|
||||
"latitude": "緯度: ",
|
||||
"longitude": "経度: ",
|
||||
"output-format": "出力形式",
|
||||
"prefix": "接頭辞",
|
||||
"timezone": "タイムゾーン: ",
|
||||
"warning-only-for-developers": "開発者向け機能なので、ご使用の際はお気をつけください。",
|
||||
"date-of-calendar-era": "紀年/元号暦日",
|
||||
"batch": "一括変換",
|
||||
"date-of-common-era": "西暦日付",
|
||||
"loading": "読み込み中…",
|
||||
"c.-$1": "%1年頃",
|
||||
"common-era": "西暦",
|
||||
"myanmar": "ビルマ",
|
||||
"vietnam": "ベトナム",
|
||||
"unpin": "外す",
|
||||
"pin": "ピン",
|
||||
"remove-the-column": "この列を削除する",
|
||||
"group": "分類",
|
||||
"$1-$2-$3": "%1/%2/%3",
|
||||
"$1-bce": "前%1年",
|
||||
"$1-ce": "%1年",
|
||||
"calendar-date": "年暦譜",
|
||||
"calendar-table": "暦日表",
|
||||
"total-$1-time-period-records": "%1 件の期間{{PLURAL:%1|記録}}",
|
||||
"total-$1-year-records": "%1 件の年{{PLURAL:%1|記録}}",
|
||||
"no-calendar-to-list": "ご提供できる情報がありません。",
|
||||
"try-to-append-date": "日付を追加する",
|
||||
"remove-all": "全ての列を削除する",
|
||||
"add-the-column": "この列を追加する",
|
||||
"lifetime-of-chinese-rulers": "中国皇帝の生歿",
|
||||
"taiwan-earthquakes": "台湾の地震",
|
||||
"lifetime-of-rulers": "君主の生歿",
|
||||
"unobvious-periods": "見づらい紀年: ",
|
||||
"general-data-layer": "全般",
|
||||
"data-layer": "情報レイヤ",
|
||||
"navigation": "ナビゲーション バー: ",
|
||||
"all-countries": "全ての国家",
|
||||
"contemporary-period": "共存の紀年",
|
||||
"example": "入力例",
|
||||
"record": "入力記録",
|
||||
"concept": "ご利用方法",
|
||||
"timeline": "時間軸",
|
||||
"configuration": "設定",
|
||||
"tagging": "古文書標注",
|
||||
"development": "開発ツール",
|
||||
"feedback": "問題報告",
|
||||
"stem-branches": "年・月・日の干支",
|
||||
"four-pillars": "四柱",
|
||||
"julian-day-number": "ユリウス通日",
|
||||
"france": "フランス",
|
||||
"great-britain": "イギリス",
|
||||
"spain": "スペイン",
|
||||
"calendar-used": "使用されていた暦",
|
||||
"data-source": "典拠",
|
||||
"personal-name": "帝王の御名",
|
||||
"courtesy-name": "字(あざな)",
|
||||
"art-name": "号(ごう)",
|
||||
"true-name": "諱(いみな)",
|
||||
"posthumous-name": "諡号",
|
||||
"temple-name": "廟号",
|
||||
"born": "誕生",
|
||||
"died": "崩御",
|
||||
"reign": "在位期間",
|
||||
"coronation": "戴冠",
|
||||
"predecessor": "先代",
|
||||
"successor": "次代",
|
||||
"father": "父親",
|
||||
"mother": "母親",
|
||||
"spouse": "配偶者",
|
||||
"showing-timeline": "時間軸を見る",
|
||||
"era-$1": "紀年 %1",
|
||||
"initializing": "初期化中…",
|
||||
"6-luminaries": "六曜",
|
||||
"options-of-timeline": "時間軸の設定:",
|
||||
"markup-current-era": "紀年を表示する",
|
||||
"combine-historical-periods": "時代区分を結合する",
|
||||
"adapt-lifetime-of-rulers": "君主の生存期間まで拡大する",
|
||||
"please-select-the-layer-you-want-to-load": "お求めになる情報レイヤを選んでください。",
|
||||
"function-(domain_name-arg)-{-return-$1-+-(1-<-arg-1-?-entries-entry-)-+-loaded.-}": "%1 件のデータを読み込みました。",
|
||||
"data-will-be-presented-at-next-calculation": "資料は次の計算で表示します。",
|
||||
"aries": "白羊宮 (おひつじ座)",
|
||||
"taurus": "金牛宮 (おうし座)",
|
||||
"gemini": "双児宮 (ふたご座)",
|
||||
"cancer": "巨蟹宮 (かに座)",
|
||||
"leo": "獅子宮 (しし座)",
|
||||
"virgo": "処女宮 (おとめ座)",
|
||||
"libra": "天秤宮 (てんびん座)",
|
||||
"scorpio": "天蝎宮 (さそり座)",
|
||||
"sagittarius": "人馬宮 (いて座)",
|
||||
"capricorn": "磨羯宮 (やぎ座)",
|
||||
"aquarius": "宝瓶宮 (みずがめ座)",
|
||||
"pisces": "双魚宮 (うお座)",
|
||||
"lunar-phase": "月相",
|
||||
"week-day": "曜日",
|
||||
"jdn": "ユリウス通日",
|
||||
"jd": "ユリウス日",
|
||||
"julian-date": "ユリウス日",
|
||||
"ordinal-date": "年日付",
|
||||
"week-date": "週日付",
|
||||
"unix-time": "Unix時間",
|
||||
"age-of-ruler": "君主年齢",
|
||||
"contemporary-period-(same-country)": "共存の同国紀年",
|
||||
"general-precession": "一般歳差",
|
||||
"solar-term-(astronomical)": "天文節気",
|
||||
"solar-term-ages": "節気からの経過日数",
|
||||
"sun-s-apparent-longitude": "太陽視黄経",
|
||||
"moon-longitude": "月視黄経",
|
||||
"moon-latitude": "月視黄緯",
|
||||
"apparent-longitude-moon-sun": "月日視黄経差",
|
||||
"new-moon-eve": "晦日",
|
||||
"new-moon": "新月",
|
||||
"saros-$1": "サロス系列%1",
|
||||
"sunrise-sunset": "日の出入り",
|
||||
"twilight": "夜明・日暮",
|
||||
"moonrise-moonset": "月の出入り",
|
||||
"calendar": "暦法",
|
||||
"gregorian-calendar": "グレゴリオ暦",
|
||||
"julian-calendar": "ユリウス暦",
|
||||
"revised-julian-calendar": "修正ユリウス暦",
|
||||
"islamic-calendar": "ヒジュラ暦",
|
||||
"modern-iranian-calendar": "イラン太陽暦",
|
||||
"bangla-calendar": "改訂ベンガル暦",
|
||||
"hebrew-calendar": "ユダヤ暦",
|
||||
"long-count": "マヤ長期暦",
|
||||
"maya-tzolk-in": "マヤ神聖暦",
|
||||
"maya-haab": "マヤ文化暦",
|
||||
"dai-calendar": "タイ暦",
|
||||
"myanmar-calendar": "ビルマ暦",
|
||||
"yi-calendar": "彝暦",
|
||||
"hindu-calendar": "ヒンドゥー暦",
|
||||
"indian-national-calendar": "インド国定暦",
|
||||
"chinese-buddhist": "仏暦",
|
||||
"nanakshahi-calendar": "新シク暦",
|
||||
"bahá-í-calendar": "バハイ暦",
|
||||
"coptic-calendar": "コプト暦",
|
||||
"ethiopian-calendar": "エチオピア暦",
|
||||
"armenian-calendar": "古アルメニア暦",
|
||||
"byzantine-calendar": "ビザンティン暦",
|
||||
"egyptian-calendar": "古エジプト暦",
|
||||
"east-asian-calendar": "中華圏の太陰太陽暦",
|
||||
"astronomical-chinese-lunisolar": "天文的な旧暦",
|
||||
"calendar-note": "暦注",
|
||||
"month-of-the-sexagenary-cycle": "月の干支",
|
||||
"day-of-the-sexagenary-cycle": "日の干支",
|
||||
"solar-term-(chinese)": "明清の節気",
|
||||
"jianchu": "十二直",
|
||||
"china": "中国",
|
||||
"japanese-month-name": "月の別名",
|
||||
"7-luminaries": "七曜",
|
||||
"week-day-(japanese)": "曜日",
|
||||
"28-mansions": "二十八宿",
|
||||
"27-mansions": "二十七宿",
|
||||
"zodiac-sign": "十二宮",
|
||||
"year-naming": "紀年法",
|
||||
"year-of-the-sexagenary-cycle": "年の干支",
|
||||
"chinese-zodiac": "十二支",
|
||||
"year-numbering": "編年方法",
|
||||
"minguo": "民国",
|
||||
"huangdi": "黄帝紀元",
|
||||
"japanese-imperial-year": "皇紀",
|
||||
"dangi": "檀君紀元",
|
||||
"thai-buddhist": "タイ仏暦",
|
||||
"ab-urbe-condita": "ローマ建国紀元",
|
||||
"seleucid-era": "セレウコス紀元",
|
||||
"before-present": "何年前",
|
||||
"holocene-calendar": "人類紀元",
|
||||
"gregorian-reform": "グレゴリオ改暦",
|
||||
"famous-places": "有名な都市: ",
|
||||
"loading-$1$": "読み込み中 %1%…",
|
||||
"the-bot-operation-is-completed-$1$-in-total": "今回のBot作業のうち%1%が完了しました",
|
||||
"finished": "完成",
|
||||
"no-changes": "全て変更なし。",
|
||||
"no-page-modified": "全記事変更なし",
|
||||
"to-chinese-numerals": "漢数字",
|
||||
"astronomy": "天文",
|
||||
"first-quarter": "上弦",
|
||||
"full-moon": "満月",
|
||||
"last-quarter": "下弦",
|
||||
"annular-solar-eclipse": "金環日食",
|
||||
"hybrid-solar-eclipse": "金環皆既日食",
|
||||
"partial-lunar-eclipse": "部分月食",
|
||||
"partial-solar-eclipse": "部分日食",
|
||||
"penumbral-lunar-eclipse": "半影食",
|
||||
"total-lunar-eclipse": "皆既月食",
|
||||
"total-solar-eclipse": "皆既日食",
|
||||
"lunar-eclipse": "月食",
|
||||
"solar-eclipse": "日食",
|
||||
"lower-culmination": "極下正中",
|
||||
"moonrise": "月の出",
|
||||
"sunrise": "日の出",
|
||||
"upper-culmination": "極上正中 (南中時)",
|
||||
"moonset": "月の入り",
|
||||
"sunset": "日の入り",
|
||||
"astronomical-twilight-begin": "天文薄明の始まり",
|
||||
"civil-twilight-begin": "市民薄明の始まり",
|
||||
"nautical-twilight-begin": "航海薄明の始まり",
|
||||
"astronomical-twilight-end": "天文薄明の終わり",
|
||||
"civil-twilight-end": "市民薄明の終わり",
|
||||
"nautical-twilight-end": "航海薄明の終わり",
|
||||
"log-type-debug": "デバッグ",
|
||||
"log-type-em": "重要",
|
||||
"log-type-error": "エラー",
|
||||
"log-type-fatal": "致命的エラー",
|
||||
"log-type-info": "情報",
|
||||
"log-type-log": "ログ",
|
||||
"log-type-trace": "トレース",
|
||||
"log-type-warn": "警告",
|
||||
"not-yet-implemented": "まだ実装されていません!",
|
||||
"$1-is-loaded-setting-up-user-domain-resources-now": "[%1] が読み込まれ、特殊な領域資源を設定します。",
|
||||
"force-loading-using-domain-locale-$2-($1)": "ドメイン/言語 [%2] (%1) を強制的に/二度使用します。",
|
||||
"loading-using-domain-locale-$2-($1)": "ドメイン/言語 [%2] (%1) を使用します。",
|
||||
"specified-domain-$1-is-not-yet-loaded.-you-may-need-to-set-the-force-flag": "指定されたドメイン [%1] はまだロードされていません。必要であれば、強制ロードのフラグを設定してください。",
|
||||
"unable-to-distinguish-domain-but-set-callback": "領域を区別できないが、呼び出し元を設定した。",
|
||||
"illegal-domain-alias-list-$1": "無効な領域別名一覧: [%1]",
|
||||
"adding-domain-alias-$1-→-$2": "領域別名 [%1] → [%2] を追加します。",
|
||||
"testing-domain-alias-$1": "領域別名 [%1] を検証中。",
|
||||
"failed-to-extract-gettext-id": "gettextのidを抜き出せませんでした。",
|
||||
"loading-language-domain-$1": "言語・領域 [%1] をロードしています。",
|
||||
"language-domain-$1-loaded": "言語・領域 [%1] が読み込まれました。",
|
||||
"language": "言語",
|
||||
"convert-number-$1-to-$2-format": "数値の変換: [%1]から%2形式。",
|
||||
"unable-to-convert-number-$1": "番号[%1]を変換できません!",
|
||||
"error-read-econnreset": "ピアによって接続がリセットされました",
|
||||
"error-socket-hang-up": "リンクがドロップされます",
|
||||
"error-unexpected-end-of-file": "不完全なデータを受信する",
|
||||
"error-write-econnaborted": "ソフトウェアが接続の中止を引き起こした",
|
||||
"illegal-chunk.content_length": "無効な chunk.content_length。",
|
||||
"got-error-when-retrieving-$1-$2": "[%1] を取得するときに問題が発生しました:%2",
|
||||
"invalid-cookie": "無効なCookie?",
|
||||
"using-new-agent": "新しいエージェントを使用します。",
|
||||
"using-custom-agent": "カスタムエージェントを使用します。",
|
||||
"using-generic-agent": "ジェネリックエージェントを使用します。",
|
||||
"retry-$1-$2-$3": "再試行 %1/%2: %3",
|
||||
"url-not-found-$1": "URLが見つかりませんでした: [%1]",
|
||||
"node.js-v12-and-later-versions-disable-tls-v1.0-and-v1.1-by-default": "Node.js v12以降のバージョンでは、TLS v1.0およびv1.1が既定により利用できません。",
|
||||
"please-set-tls.default_min_version-=-tlsv1-first": "前もって tls.DEFAULT_MIN_VERSION = \"TLSv1\" を設定してください。",
|
||||
"$1-redirecting-to-$2-←-$3": "%1 [%2] に転送されます ← [%3]",
|
||||
"response-headers-$1": "応答ヘッダー: %1",
|
||||
"http-status-code-$1-$2": "HTTP 状態コード:%1 %2",
|
||||
"no-file-name-specified": "ファイルを指定していません。",
|
||||
"Comma-separator": "、",
|
||||
"content-is-empty": "内容はクリアされます",
|
||||
"content-is-not-settled": "内容が設定されていません",
|
||||
"abandon-change": "編集を放棄した",
|
||||
"no-reason-provided": "説明がありません",
|
||||
"no-content": "本文なし",
|
||||
"$1-is-not-exist-in-$2": "%1は%2に存在しません。",
|
||||
"get-configurations-from-page-$1": "ページ %1 から設定を取得",
|
||||
"continue-key": "後続の索引",
|
||||
"cache-information-about-the-api-modules-of-$1-module-path=$2": "%1 のAPIモジュールに関する情報をキャッシュする: モジュールパスは %2",
|
||||
"found-$2-query-modules-$1": "クエリ・モジュールが %2 種類あります:%1",
|
||||
"invalid-parameter-$1": "無効なパラメーター:「%1」",
|
||||
"does-not-exist": "存在しません",
|
||||
"configuration-page-$1": "設定ページ: %1",
|
||||
"there-are-more-than-one-$1-in-$2": "%2 に複数の %1 が存在します。",
|
||||
"invalid-url-$1": "無効なURL: %1",
|
||||
"no-page-redirects-to-this-page": "このページにリダイレクトするページはありません",
|
||||
"total-$1-pages-redirected-to-this-page": "合計 %1 {{PLURAL:%1|ページ}}がこのページにリダイレクトします",
|
||||
"no-change": "無変更",
|
||||
"finished-$1": "終了: %1",
|
||||
"$1-elapsed-$3-at-$2": "%1 後、%2 %3",
|
||||
"first-it-takes-$1-to-get-$2-pages": "まずは %1 かかって、%2 ページを取得する。",
|
||||
"processed-$1-pages": "%1 {{PLURAL:$1|のページ}}を処理しました。",
|
||||
"page-handling-function-error-$1": "ページ処理関数エラー: %1",
|
||||
"edit-$1": "編集 %1",
|
||||
"missing-page": "ページが見つかりません",
|
||||
"invalid-page-title": "無効なページタイトル",
|
||||
"page-edit-function-error-$1": "ページの編集関数に例外が発生しました: %1",
|
||||
"$1-pages-processed": "%1 本の記事処理済み",
|
||||
"$1-pages-have-not-changed": "%1 本の記事変更なし、",
|
||||
"$1-elapsed": "経過時間 %1。",
|
||||
"stopped-give-up-editing": "編集を'''中止した'''。",
|
||||
"processing-chunks-$1-$2": "塊 %1–%2 を処理中",
|
||||
"cannot-detect-work-id-from-url-$1": "この作品IDが見つかりませんでした: %1",
|
||||
"starting-$1": "ロード中...%1",
|
||||
"the-allowed-data-type-for-$1-is-$4-but-it-was-set-to-{$2}-$3": "\"%1\"に該当するデータ型は %4 ですが、今は{%2} %3 に設定された。",
|
||||
"some-$2-path(s)-specified-by-$1-do-not-exist-$3": "\"%1\"が指定された%2の中に,幾かはパスが存在しません:%3",
|
||||
"directories": "ディレクトリ/フォルダ",
|
||||
"directory": "ディレクトリ/フォルダ",
|
||||
"file": "ファイル",
|
||||
"files": "ファイル",
|
||||
"unable-to-process-$1-condition-with-value-type-$2": "\"%1\"のデータ型は%2であると進行できません!",
|
||||
"$1-is-set-to-the-problematic-value-{$2}-$3": "\"%1\"は適用外の数値に設定されました: {%2} %3",
|
||||
"key-value-not-given": "パラメータを提供していませんでした",
|
||||
"using-proxy-server-$1": "プロキシサーバーを使用しています: %1",
|
||||
"failed-to-parse-time": "アクセス解析のタイムリミット",
|
||||
"user-agent-is-not-set": "User-Agent は指定されていません",
|
||||
"referer-cannot-be-undefined": "Refererを未定義にすることはできません。",
|
||||
"configure-referer-$1": "Refererを設定: %1",
|
||||
"min-image-size-should-be-greater-than-0": "最小画像サイズは0以上にしてください",
|
||||
"cannot-parse-$1": "%1は解析できません",
|
||||
"unable-to-set-$1-$2": "%1は設定できません: %2",
|
||||
"from-command-line": "コマンドラインから",
|
||||
"boolean": "ブーリアン",
|
||||
"fso_directories": "フオルダの位置",
|
||||
"fso_directory": "フオルダの位置",
|
||||
"fso_file": "ファイルの位置",
|
||||
"fso_files": "ファイルの位置",
|
||||
"function": "関数",
|
||||
"number": "数字",
|
||||
"string": "文字列",
|
||||
"skip-all-chapters": "全てのチャプターをスキップする",
|
||||
"«$1»": "『%1』:",
|
||||
"retry-$1-$2": "再試行 %1/%2",
|
||||
"$1-image(s)-left": "%1件の{{PLURAL:%1|画像}}を処理中です...",
|
||||
"$1-$2-image-download-error-recorded": "%1:%2画像ダウンロードエラーが記録されました",
|
||||
"update-image-archive-$1": "画像アーカイブを更新: %1",
|
||||
"create-image-archive-$1": "画像アーカイブを作成:%1",
|
||||
"$2-jump-to-chapter-$1": "%2: 章%1にジャンプ",
|
||||
"download-completed-for-$1": "%1のダウンロードが完了しました。",
|
||||
"some-are-paid-restricted-chapters": "一部は有料/制限付きの章です。",
|
||||
"chapter-$1": "章番号%1:",
|
||||
"preserve": "古いファイルを残す:",
|
||||
"move-to-→": "移動する→",
|
||||
"unspecified-image-data": "不特定の画像データ",
|
||||
"number-of-errors-$1": "エラー数:%1",
|
||||
"http-status-code-$1": "HTTPステータスコード%1。",
|
||||
"error-$1": "エラー: %1",
|
||||
"file-size-$1": "ファイルサイズ: %1。",
|
||||
"image-damaged": "破損した画像:",
|
||||
"failed-to-get-image": "画像の取得に失敗しました。",
|
||||
"image-without-content": "内容が見つかりません:",
|
||||
"$1-bytes-too-small": "%1 バイト、小さすぎる:",
|
||||
"$1-bytes": "%1 バイト:",
|
||||
"failed-to-download-image": "画像をダウンロードできませんでした",
|
||||
"login-as-$1": "[%1]としてログインする",
|
||||
"invalid-work-id-$1": "無効な作業 id: %1",
|
||||
"work_data.author": "作者",
|
||||
"work_data.chapter_count": "話数",
|
||||
"work_data.chapter_list": "チャプターリスト",
|
||||
"work_data.description": "あらすじ",
|
||||
"work_data.directory": "保存場所",
|
||||
"work_data.id": "作品ID",
|
||||
"work_data.last_download.chapter": "最後のダウンロードの章",
|
||||
"work_data.last_download.date": "最後のダウンロード時間",
|
||||
"work_data.last_update": "最新部分掲載日",
|
||||
"work_data.status": "状態",
|
||||
"work_data.title": "題名",
|
||||
"work_data.url": "ウェブ・アドレス",
|
||||
"work_status-finished": "完了",
|
||||
"work_status-limited": "制限あり",
|
||||
"work_status-not-found": "見つかりません",
|
||||
"work-information": "作品情報",
|
||||
"work_data.chapter_no": "章番号",
|
||||
"work_data.chapter_title": "章のタイトル",
|
||||
"no-content-found": "コンテンツが見つかりません",
|
||||
"last-saved-date": "最終保存日",
|
||||
"last-updated-date": "最終更新日",
|
||||
"unknown": "未知の",
|
||||
"removing-directory-$1": "ディレクトリを除去します: %1",
|
||||
"jscript-files-can-only-be-executed-in-windows-environment": "JScriptファイルはWindows環境でのみ実行できます!",
|
||||
"this-id-already-exists-will-change-the-id-of-former-chapter": "このidは既に存在し、後者のidを変更します。",
|
||||
"still-downloading": "ダウンロードを続けています:",
|
||||
"too-short": "短すぎる",
|
||||
"using-language-$1": "言語を使用: %1",
|
||||
"toc.calibre-series": "シリーズ",
|
||||
"toc.creator": "作者",
|
||||
"toc.date": "日付",
|
||||
"toc.dcterms-modified": "作品の最終更新日時",
|
||||
"toc.description": "あらすじ",
|
||||
"toc.identifier": "識別子",
|
||||
"toc.language": "言語",
|
||||
"toc.publisher": "発行者",
|
||||
"toc.source": "出典",
|
||||
"toc.subject": "ジャンル",
|
||||
"toc.title": "表題",
|
||||
"word-count": "文字数",
|
||||
"$1-words": "%1文字",
|
||||
"$1-chapters": "%1話",
|
||||
"contents": "目次",
|
||||
"waiting-for-all-resources-loaded": "すべてのリソースがロードされるのを待っています...",
|
||||
"start-writing-e-book-materials": "電子書籍の資料を書き始めます...",
|
||||
"start-building-e-books": "電子書籍の作成を開始します...",
|
||||
"removing-empty-directory-$1": "空のディレクトリを除去します: %1",
|
||||
"working-directory-$1": "作業ディレクトリ:%1",
|
||||
"callback-execution-error": "コールバック実行エラー!",
|
||||
"italy": "イタリア",
|
||||
"poland": "ポーランド",
|
||||
"portugal": "ポルトガル",
|
||||
"luxembourg": "ルクセンブルク",
|
||||
"netherlands": "オランダ",
|
||||
"bavaria": "バイエルン",
|
||||
"austria": "オーストリア",
|
||||
"switzerland": "スイス",
|
||||
"hungary": "ハンガリー",
|
||||
"germany": "ドイツ",
|
||||
"norway": "ノルウェー",
|
||||
"denmark": "デンマーク",
|
||||
"sweden": "スウェーデン",
|
||||
"finland": "フィンランド",
|
||||
"bulgaria": "ブルガリア",
|
||||
"soviet-union": "ソ連",
|
||||
"serbia": "セルビア",
|
||||
"romania": "ルーマニア",
|
||||
"greece": "ギリシャ",
|
||||
"turkey": "トルコ",
|
||||
"egypt": "エジプト",
|
||||
"$1-years-and-$2-months": "%1年%2ヶ月",
|
||||
"$1-y-$2-m": "%1年%2ヶ月",
|
||||
"$1-years": "%1年",
|
||||
"$1-y": "%1年",
|
||||
"$1-months": "%1ヶ月",
|
||||
"$1-m": "%1ヶ月",
|
||||
"$1-milliseconds": "%1ミリ秒",
|
||||
"$1-ms": "%1ミリ秒",
|
||||
"$1-seconds": "%1秒",
|
||||
"$1-s": "%1秒",
|
||||
"$1-minutes": "%1分",
|
||||
"$1-min": "%1分",
|
||||
"$1-hours": "%1時間",
|
||||
"$1-hr": "%1時間",
|
||||
"$1-days": "%1日",
|
||||
"$1-d": "%1日",
|
||||
"2-days-before-yesterday-$h-$m": "一昨々日の%H時%M分",
|
||||
"the-day-before-yesterday-$h-$m": "一昨日の%H時%M分",
|
||||
"yesterday-$h-$m": "昨日の%H時%M分頃",
|
||||
"today-$h-$m": "本日の%H時%M分",
|
||||
"tomorrow-$h-$m": "明日の%H時%M分",
|
||||
"the-day-after-tomorrow-$h-$m": "明後日の%H時%M分",
|
||||
"2-days-after-tomorrow-$h-$m": "明々後日の%H時%M分",
|
||||
"3-days-after-tomorrow-$h-$m": "弥の明後日の%H時%M分",
|
||||
"now": "今",
|
||||
"several-seconds-ago": "数秒前",
|
||||
"soon": "直ぐ",
|
||||
"$1-seconds-ago": "%1秒前",
|
||||
"$1-seconds-later": "%1秒後",
|
||||
"$1-minutes-ago": "%1分前",
|
||||
"$1-minutes-later": "%1分後",
|
||||
"$1-hours-ago": "%1時間前",
|
||||
"$1-hours-later": "%1時間後",
|
||||
"$1-days-ago": "%1日前",
|
||||
"$1-days-later": "%1日後",
|
||||
"$1-weeks-ago": "%1週間前",
|
||||
"$1-weeks-later": "%1週間後",
|
||||
"era-date": "元号",
|
||||
"note": "注釈",
|
||||
"wu-xing": "五行",
|
||||
"era-name": "元号",
|
||||
"skip-$1-the-$2-is-for-reference-purpose-only": "[%1] を抜かします:この[%2]は参考用だけです。",
|
||||
"ryukyu": "琉球",
|
||||
"japan": "日本",
|
||||
"korea": "朝鮮",
|
||||
"chinese-domination-of-vietnam": "北属期",
|
||||
"late-dynastic-epoch": "独立王朝時代",
|
||||
"thailand": "タイ",
|
||||
"phra-ruang-dynasty": "プラ・ルワン王朝",
|
||||
"sukhothai-kingdom": "スコータイ王朝",
|
||||
"ayutthaya-kingdom": "アユタヤ王朝",
|
||||
"taksin": "タークシン",
|
||||
"thonburi-dynasty": "トンブリー王朝",
|
||||
"thonburi-kingdom": "トンブリー王朝",
|
||||
"chakri-dynasty": "チャクリー王朝",
|
||||
"rattanakosin-kingdom": "ラタナコーシン王朝",
|
||||
"pagan": "バガン",
|
||||
"toungoo": "タウングー",
|
||||
"konbaung": "コンバウン",
|
||||
"republic-of-the-union-of-myanmar": "ミャンマー連邦共和国",
|
||||
"india": "インド",
|
||||
"mesopotamian": "メソポタミア文明",
|
||||
"neo-assyrian": "新アッシリア",
|
||||
"babylon": "バビロン",
|
||||
"babylonian-dynasty-of-e": "バビロンE王朝",
|
||||
"babylonian-calendar": "バビロニア暦",
|
||||
"neo-babylonian": "新バビロニア",
|
||||
"persia": "ペルシア",
|
||||
"macedon": "マケドニア",
|
||||
"seleucid": "セレウコス",
|
||||
"classical-athens": "アテナイ",
|
||||
"sparta": "スパルタ",
|
||||
"hittite": "ヒッタイト",
|
||||
"british": "イギリス",
|
||||
"maya": "マヤ",
|
||||
"palenque": "パレンケ",
|
||||
"syntax-error": "構文エラー!",
|
||||
"function-name-unmatched": "関数名が一致しません。",
|
||||
"treat-$1-as-regexp": "[%1]をRegExpとして扱います。",
|
||||
"invalid-flags-$1": "無効なフラグ: [%1]",
|
||||
"illegal-pattern-$1": "不正なパターン: [%1]",
|
||||
"unable-to-convert-mode-$1": "モード[%1]を変換できません!",
|
||||
"↑back-to-toc": "↑目次へ",
|
||||
"set-toc-to-left-or-right": "TOCを左または右にセットします",
|
||||
"contents-of-$1": "[%1] の目次",
|
||||
"expand": "展開する",
|
||||
"collapse": "折り畳む",
|
||||
"unknown-style-name-$1": "不明なスタイル名: [%1]。",
|
||||
"invalid-name-of-color-$1": "色の名前が無効です: [%1]。",
|
||||
"invalid-value-$1-of-style-$2": "スタイルの無効な値[%1]: [%2]:",
|
||||
"unable-to-convert-the-value-to-a-style": "値をスタイルに変換できません。",
|
||||
"the-style-value-is-not-a-number": "スタイル値は数値ではありません。",
|
||||
"set-style-$1-=-$2": "スタイルを設定する:\"%1\" = %2.",
|
||||
"unknown-style-$1": "不明なスタイル: [%1]。",
|
||||
"illegal-$1-$2": "不正な%1:[%2]",
|
||||
"conversion-pairs-of-$1": "%1の変換ペア:",
|
||||
"revision-id": "版の識別子",
|
||||
"the-requested-robot-task-begins": "Bot依頼の作業を始めます。",
|
||||
"the-section-does-not-set-the-task-configuration-$1": "セクション \"%1\" にタスクは設定されていません。",
|
||||
"add-warning-messages": "警告メッセージを追加する。",
|
||||
"no-title-found-for-$1": "タイトルが見つかりません:%1。",
|
||||
"will-not-automatically-notify-the-task-begins": "タスク開始の自動通知はしません!",
|
||||
"the-requested-robot-task-finished": "Bot依頼の作業が終了しました。",
|
||||
"robot-task-completion-notification": "{{BOTREQ|完了}} 修正しなかった場合や好ましくない状況がありましたら、お知らせください。今後の参考にさせていただきます。全て問題無い場合は{{tl|確認}}の貼り付けをお願いします。",
|
||||
"will-not-automatically-notify-the-task-finished": "タスク終了の自動通知はしません!",
|
||||
"problematic-articles": "問題のある記事",
|
||||
"archiving-operation": "記録保存",
|
||||
"here-is-a-list-of-interlanguage-links-that-need-to-be-manually-corrected.-this-list-will-be-updated-automatically-by-the-robot": "このリストは手動で修正する必要のある記事群です。リストはボットによって自動更新されます。",
|
||||
"edit-mark": "編",
|
||||
"a-total-of-$1-occurrences": "合計%1回発生しました",
|
||||
"report-generation-date-$1": "レポート作成日:%1",
|
||||
"cleanup-report-for-interlanguage-link-templates": "解消済み仮リンクを内部リンクに置き換える作業の報告",
|
||||
"convert-$1-to-wikilink": "解消済み仮リンク%1を内部リンクに置き換えます",
|
||||
"preserve-interlanguage-links-because-of-the-preserve-parameter-is-set": "強制表示引数(preserve)を指定するなので、修正の必要がありません。",
|
||||
"the-task-does-not-process-talk-pages": "ノートページを処理しない",
|
||||
"the-local-link-target-links-back-to-the-page-itself.-mos-circular": "[[WP:SELF|自己言及]]リンク。",
|
||||
"missing-converted-local-page-or-the-foreign-local-page-is-not-link-to-wikidata": "他言語版項目リンク先からの日本語版項目が存在しないか、他言語版とリンクしていません。",
|
||||
"from-the-parameter-of-template": "引数から",
|
||||
"from-foreign-language-title": "他言語版項目リンク先から",
|
||||
"the-local-title-is-different-from-the-one-given-by-the-template-parameters": "対応する日本語版の記事名がテンプレートに記載されているものと一致しません。",
|
||||
"the-corresponding-foreign-language-page-does-not-exist": "他言語版記事自体存在しません。",
|
||||
"the-corresponding-foreign-language-page-is-a-disambiguation-page": "他言語版項目リンク先が曖昧さ回避ページです。",
|
||||
"the-corresponding-foreign-language-page-is-redirected-to-a-section": "他言語版項目リンク先がセクションへ転送します。",
|
||||
"syntax-error-in-the-interlanguage-link-template": "言語間リンクテンプレートの構文エラー。",
|
||||
"could-not-retrieve-the-foreign-page.-i-will-retry-next-time": "他言語版項目を取得できないため、次回実行時に再試行します。",
|
||||
"ip-user": "IP 利用者",
|
||||
"user": "利用者",
|
||||
"(new-page)": "(新しいページ)",
|
||||
"fixing-broken-anchor": "切れたアンカーリンクを修復",
|
||||
"remove-$1-non-defunct-anchors": "切れたアンカーの告知を%1個削除しました",
|
||||
"anchor-$1-links-to-a-specific-web-page-$2": "アンカー %1 は、専属のページ %2 にリンクしています。",
|
||||
"the-anchor-($2)-has-been-deleted-by-other-users-before": "このアンカー(%2)は[[Special:Diff/%1|他の編集者によって削除されました]]。",
|
||||
"reminder-of-an-inactive-anchor": "切れたアンカーの告知",
|
||||
"update-links-to-archived-section-$1-$2": "アンカーリンク%1を過去ログ: %2内宛に更新",
|
||||
"incorrect-capitalization-spaced-section-title": "アンカーリンクの大小文字・空白文字・括弧間違いを訂正",
|
||||
"very-different": "ただし変更大につき誤推定の可能性あり",
|
||||
"please-help-to-check-this-edit": "この編集をチェックしてください。",
|
||||
"$1→most-alike-anchor-$2": "%1→もっとも似ているアンカー%2",
|
||||
"updating-$1": "%1の更新",
|
||||
"articles-in-$1": "%1版記事",
|
||||
"count-of-languages": "言語数",
|
||||
"average": "平均",
|
||||
"sum": "合計",
|
||||
"article-list": "記事一覧",
|
||||
"see-also": "関連項目",
|
||||
"no-label": "ラベル欠如",
|
||||
"very-sorry.-undo-the-robot-s-wrong-edits.-($1)": "大変申し訳ございません。ロボットの間違った編集を元に戻す。(%1)",
|
||||
"debug-level": "デバッグレベル",
|
||||
"move-$1": "移動 %1:",
|
||||
"compress-$1": "圧縮 %1:",
|
||||
"search-results": "検索結果",
|
||||
"download-options": "ダウンロードオプション",
|
||||
"favorite-series-list": "お気に入り作品",
|
||||
"search": "検索",
|
||||
"series-title-or-id": "タイトル / 🆔",
|
||||
"start-downloading": "ダウンロード開始",
|
||||
"cejs-online-novels-comics-downloader": "CeJSオンライン小説/コミックダウンローダー",
|
||||
"paste": "貼り付け",
|
||||
"checking-for-release-update": "アプデートを実行する……",
|
||||
"release-update-available-$1": "新たなバージョンをみつけた: %1",
|
||||
"traditional-chinese-webcomics": "中国繁体字のウェブコミック",
|
||||
"simplified-chinese-webcomics": "中国簡体字のウェブコミック",
|
||||
"japanese-webcomics": "日本語のウェブコミック",
|
||||
"english-webcomics": "英語のウェブコミック",
|
||||
"simplified-chinese-web-fictions": "中国簡体字のオンライン小説",
|
||||
"japanese-web-fictions": "日本語のオンライン小説",
|
||||
"no-longer-maintained": "サポートされていません",
|
||||
"download_options.archive_program_path": "引用符付きの7-Zip実行可能パス。",
|
||||
"download_options.chapter_filter": "章の題名のフィルター。例えば「単行本」。",
|
||||
"download_options.convert_to_language": "簡体字中国語の小説を繁体字中国語の小説に変換するか、順番に変換します。",
|
||||
"download_options.cookie": "ダウンロード時に追加するCookieを設定します。",
|
||||
"download_options.modify_work_list_when_archive_old_works": "同時に、達成すべき作業は作業リストから削除されます。",
|
||||
"download_options.overwrite_old_file": "新しく取得した小説ファイルが大きい場合は、古い小説ファイルを上書きしてください。",
|
||||
"download_options.proxy": "プロキシサーバー \"username:password@hostname:port\"",
|
||||
"download_options.rearrange_list_file": "リストファイルを更新します。",
|
||||
"download_options.recheck": "全作品の全チャプター、全画像を検出します。ただし、完成した画像の再ダウンロードは行いません。'multi_parts_changed'を設定すると、複数のパートがあるときだけ再確認します。",
|
||||
"download_options.reget_chapter": "検出された各章の内容を取得します。",
|
||||
"download_options.save_preference": "設定を保存します。",
|
||||
"download_options.search_again": "作品名をもう一度検索します。既定: キャッシュを使用して、再度検索しません。",
|
||||
"download_options.show_information_only": "キャラクタユーザインタフェース (CUI)で作業情報を表示します。",
|
||||
"download_options.start_chapter_no": "ダウンロードを開始/続行する章番号。",
|
||||
"download_options.start_chapter_title": "ダウンロードを開始/続行する章のタイトル。",
|
||||
"download_options.vertical_writing": "小説を縦書きにする。既定は横書き。",
|
||||
"local-language-name": "日本語",
|
||||
"there-are-currently-$1-$2-messages-that-have-not-been-translated.-welcome-to-translate-with-us": "現在、翻訳されていない%2のメッセージが%1件あります。一緒に訳しましょう!",
|
||||
"environment-variables-$1": "環境変数: %1",
|
||||
"default-download-directory-$1": "既定のダウンロードディレクトリ: %1",
|
||||
"let-s-<a>translate-the-interface<-a>-together": "一緒に<a>翻訳しましょう</a>!",
|
||||
"copy-and-paste-shortcuts": "ショートカット",
|
||||
"theme": "テーマ:",
|
||||
"dark-theme": "ダーク",
|
||||
"default-theme": "初期設定",
|
||||
"light-theme": "明るい",
|
||||
"reset-download-options": "ダウンロードのオプションをリセットする",
|
||||
"no-file-or-directory-selected": "ファイルまたはディレクトリが選択されていません。",
|
||||
"open-download-folder": "ダウンロードフォルダを開く",
|
||||
"link": "リンク",
|
||||
"work_crawler-search_result_columns-site": "ウェブサイト",
|
||||
"work_crawler-search_result_columns-title": "タイトル",
|
||||
"work_crawler-search_result_columns-author": "Author",
|
||||
"work_crawler-search_result_columns-favorite": "お気に入り",
|
||||
"number-of-chapters": "チャプター数",
|
||||
"work_crawler-search_result_columns-restricted": "制限付き",
|
||||
"work_crawler-search_result_columns-completed": "完了しました",
|
||||
"work_crawler-search_result_columns-status": "状態",
|
||||
"status-of-work": "仕事の状況",
|
||||
"error-reason": "エラーの原因",
|
||||
"website-of-the-work": "ウェブサイト",
|
||||
"cancel-search": "検索を取り消す",
|
||||
"stop": "一時休止",
|
||||
"pause-resume": "一時停止/再開 ",
|
||||
"cancel": "キャンセル",
|
||||
"cancel-download": "ダウンロードをキャンセル",
|
||||
"continue": "再開",
|
||||
"redownloading": "再ダウンロード",
|
||||
"clearing-downloaded-record": "ダウンロードしたレコードをクリアする",
|
||||
"update-completed": "更新が完了しました。",
|
||||
"restart-the-program": "プログラムを再起動します。",
|
||||
"all-current-jobs-will-be-interrupted": "現在のすべてのジョブが中断されます!",
|
||||
"update-failed": "アップデートに失敗しました",
|
||||
"warning-unable-to-access-the-storage-directory-$1": "警告: 作品を保存するディレクトリ [%1] にアクセスできません。",
|
||||
"the-downloaded-file-will-be-placed-in-the-default-directory": "ダウンロードされたファイルは既定のディレクトリに保存されます。",
|
||||
"to-use-the-graphical-interface-please-execute-`$1`": "GUIを使いたい場合、このコマンドを実行してください:`%1`。",
|
||||
"option=true": "オプション=true",
|
||||
"option=value": "オプション=値",
|
||||
"usage": "使用方法:",
|
||||
"work-title-work-id": "題名 / 作品ID",
|
||||
"work-list-file": "作品一覧",
|
||||
"options": "オプション:"
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"~aanzx",
|
||||
"ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ"
|
||||
]
|
||||
},
|
||||
"untranslated-message-count": "1000+",
|
||||
"timezone": "ಸಮಯ ವಲಯ: ",
|
||||
"loading": "ತುಂಬಿಸಲಾಗುತ್ತಿದೆ....",
|
||||
"myanmar": "ಮ್ಯಾನ್ಮಾರ್",
|
||||
"vietnam": "ವಿಯೆಟ್ನಾಂ",
|
||||
"group": "ಗುಂಪು",
|
||||
"$1-$2-$3": "%1/%2/%3",
|
||||
"$1-bce": "%1 ಕ್ರಿ.ಪೂ",
|
||||
"$1-ce": "%1 ಕ್ರಿ.ಶ",
|
||||
"total-$1-time-period-records": "%1 ಕಾಲಾವಧಿಯ {{PLURAL:%1|ದಾಖಲೆ|ದಾಖಲೆಗಳು}}",
|
||||
"total-$1-year-records": "%1 ವರ್ಷದ {{PLURAL:%1|ದಾಖಲೆ|ದಾಖಲೆಗಳು}}",
|
||||
"taiwan-earthquakes": "ತೈವಾನ್ ಭೂಕಂಪಗಳು",
|
||||
"all-countries": "ಎಲ್ಲಾ ದೇಶಗಳು",
|
||||
"contemporary-period": "ಸಮಕಾಲೀನ ಅವಧಿ",
|
||||
"example": "ಉದಾಹರಣೆ",
|
||||
"france": "ಫ್ರಾನ್ಸ್",
|
||||
"great-britain": "ಗ್ರೇಟ್ ಬ್ರಿಟನ್",
|
||||
"spain": "ಸ್ಪೇನ್",
|
||||
"father": "ತಂದೆ",
|
||||
"mother": "ತಾಯಿ",
|
||||
"aries": "ಮೇಷ",
|
||||
"taurus": "ವೃಷಭ",
|
||||
"gemini": "ಮಿಥುನ",
|
||||
"cancer": "ಕರ್ಕಾಟಕ",
|
||||
"leo": "ಸಿಂಹ",
|
||||
"virgo": "ಕನ್ಯಾ",
|
||||
"libra": "ತುಲಾ",
|
||||
"scorpio": "ವೃಶ್ಚಿಕ",
|
||||
"sagittarius": "ಧನುಸ್ಸು",
|
||||
"capricorn": "ಮಕರ",
|
||||
"aquarius": "ಕುಂಭ",
|
||||
"pisces": "ಮೀನ",
|
||||
"contemporary-period-(same-country)": "ಸಮಕಾಲೀನ ಅವಧಿ (ಅದೇ ದೇಶ)",
|
||||
"new-moon": "ಅಮಾವಾಸ್ಯೆ",
|
||||
"china": "ಚೀನಾ",
|
||||
"zodiac-sign": "ರಾಶಿ ಚಿಹ್ನೆ",
|
||||
"full-moon": "ಹುಣ್ಣಿಮೆ",
|
||||
"total-lunar-eclipse": "ಪೂರ್ಣ ಚಂದ್ರ ಗ್ರಹಣ",
|
||||
"total-solar-eclipse": "ಪೂರ್ಣ ಸೂರ್ಯ ಗ್ರಹಣ",
|
||||
"lunar-eclipse": "ಚಂದ್ರ ಗ್ರಹಣ",
|
||||
"solar-eclipse": "ಸೂರ್ಯ ಗ್ರಹಣ",
|
||||
"moonrise": "ಚಂದ್ರೋದಯ",
|
||||
"sunrise": "ಸೂರ್ಯೋದಯ",
|
||||
"moonset": "ಚಂದ್ರಾಸ್ತ",
|
||||
"sunset": "ಸೂರ್ಯಾಸ್ತ",
|
||||
"log-type-error": "ದೋಷ",
|
||||
"log-type-info": "ಮಾಹಿತಿ",
|
||||
"log-type-log": "ದಾಖಲೆ",
|
||||
"language": "ಭಾಷೆ",
|
||||
"number": "ಸಂಖ್ಯೆ",
|
||||
"contents": "ಪರಿವಿಡಿ",
|
||||
"italy": "ಇಟಲಿ",
|
||||
"poland": "ಪೋಲೆಂಡ್",
|
||||
"portugal": "ಪೋರ್ಚುಗಲ್",
|
||||
"luxembourg": "ಲಕ್ಸೆಂಬರ್ಗ್",
|
||||
"netherlands": "ನೆದರ್ಲೆಂಡ್",
|
||||
"bavaria": "ಬವೇರಿಯಾ",
|
||||
"austria": "ಆಸ್ಟ್ರಿಯಾ",
|
||||
"switzerland": "ಸ್ವಿಜರ್ಲೆಂಡ್",
|
||||
"hungary": "ಹಂಗೆರಿ",
|
||||
"germany": "ಜರ್ಮನಿ",
|
||||
"norway": "ನಾರ್ವೆ",
|
||||
"denmark": "ಡೆನ್ಮಾರ್ಕ್",
|
||||
"sweden": "ಸ್ವೀಡನ್",
|
||||
"finland": "ಫಿನ್ಲ್ಯಾಂಡ್",
|
||||
"bulgaria": "ಬಲ್ಗೇರಿಯಾ",
|
||||
"soviet-union": "ಸೋವಿಯತ್ ಒಕ್ಕೂಟ",
|
||||
"serbia": "ಸರ್ಬಿಯಾ",
|
||||
"romania": "ರೊಮಾನಿಯ",
|
||||
"greece": "ಗ್ರೀಸ್",
|
||||
"turkey": "ಟರ್ಕಿ",
|
||||
"egypt": "ಈಜಿಪ್ಟ್",
|
||||
"$1-years-and-$2-months": "%1 {{PLURAL:%1|ವರ್ಷ|ವರ್ಷಗಳು}} ಮತ್ತು %2 {{PLURAL:%1|ತಿಂಗಳು|ತಿಂಗಳುಗಳು}}",
|
||||
"$1-y-$2-m": "%1 ವ %2 ತಿಂ",
|
||||
"$1-years": "%1 {{PLURAL:%1|ವರ್ಷ|ವರ್ಷಗಳು}}",
|
||||
"$1-y": "%1 ವ",
|
||||
"$1-months": "%1 {{PLURAL:%1|ತಿಂಗಳು|ತಿಂಗಳುಗಳು}}",
|
||||
"$1-m": "%1 ತಿಂ",
|
||||
"$1-milliseconds": "%1 {{PLURAL:%1|ಮಿಲಿಸೆಕೆಂಡ್|ಮಿಲಿಸೆಕೆಂಡುಗಳು}}",
|
||||
"$1-ms": "%1 ಮಿ.ಸೆ",
|
||||
"$1-seconds": "%1 {{PLURAL:%1|ಕ್ಷಣ|ಕ್ಷಣಗಳು}}",
|
||||
"$1-s": "%1 ಸೆ",
|
||||
"$1-minutes": "%1 {{PLURAL:%1|ನಿಮಿಷ|ನಿಮಿಷಗಳು}}",
|
||||
"$1-min": "%1 ನಿ",
|
||||
"$1-hours": "%1 {{PLURAL:%1|ಗಂಟೆ|ಗಂಟೆಗಳು}}",
|
||||
"$1-hr": "%1 ಗಂ",
|
||||
"$1-days": "%1 {{PLURAL:%1|ದಿನ|ದಿನಗಳು}}",
|
||||
"$1-d": "%1 ದಿ",
|
||||
"2-days-before-yesterday-$h-$m": "ಅಚ್ಚೆ ಮೊನ್ನೆ, %H:%M",
|
||||
"the-day-before-yesterday-$h-$m": "ಮೊನ್ನೆ, %H:%M",
|
||||
"yesterday-$h-$m": "ನಿನ್ನೆ, %H:%M",
|
||||
"today-$h-$m": "ಇಂದು, %H:%M",
|
||||
"tomorrow-$h-$m": "ನಾಳೆ, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "ನಾಡಿದ್ದು, %H:%M",
|
||||
"2-days-after-tomorrow-$h-$m": "ಅಚ್ಚೆ ನಾಡಿದ್ದು, %H:%M",
|
||||
"now": "ಈಗ",
|
||||
"several-seconds-ago": "ಹಲವು ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ",
|
||||
"soon": "ಸದ್ಯದಲ್ಲೇ",
|
||||
"$1-seconds-ago": "%1 {{PLURAL:%1|ಸೆಕೆಂಡ್|ಸೆಕೆಂಡ್ಗಳ}} ಹಿಂದೆ",
|
||||
"$1-seconds-later": "%1 {{PLURAL:%1|ಸೆಕೆಂಡ್|ಸೆಕೆಂಡ್ಗಳ}} ನಂತರ",
|
||||
"$1-minutes-ago": "%1 {{PLURAL:%1|ನಿಮಿಷದ|ನಿಮಿಷಗಳ}} ಹಿಂದೆ",
|
||||
"$1-minutes-later": "%1 {{PLURAL:%1|ನಿಮಿಷದ|ನಿಮಿಷಗಳ}} ಹಿಂದೆ",
|
||||
"$1-hours-ago": "%1 {{PLURAL:%1|ಗಂಟೆಯ|ಗಂಟೆಗಳ}} ಹಿಂದೆ",
|
||||
"$1-hours-later": "%1 {{PLURAL:%1|ಗಂಟೆಯ|ಗಂಟೆಗಳ}} ನಂತರ",
|
||||
"$1-days-ago": "%1 {{PLURAL:%1|ದಿನದ|ದಿನಗಳ}} ಹಿಂದೆ",
|
||||
"$1-days-later": "%1 {{PLURAL:%1|ದಿನದ|ದಿನಗಳ}} ನಂತರ",
|
||||
"$1-weeks-ago": "%1 {{PLURAL:%1|ವಾರದ|ವಾರಗಳ}} ಹಿಂದೆ",
|
||||
"$1-weeks-later": "%1 {{PLURAL:%1|ವಾರದ|ವಾರಗಳ}} ನಂತರ",
|
||||
"japan": "ಜಪಾನ್",
|
||||
"korea": "ಕೊರಿಯಾ",
|
||||
"thailand": "ಥೈಲ್ಯಾಂಡ್",
|
||||
"india": "ಭಾರತ",
|
||||
"babylon": "ಬ್ಯಾಬಿಲಾನ್",
|
||||
"persia": "ಪರ್ಷಿಯಾ",
|
||||
"macedon": "ಮ್ಯಾಸಿಡಾನ್",
|
||||
"seleucid": "ಸೆಲ್ಯೂಸಿದ್",
|
||||
"sparta": "ಸ್ಪಾರ್ಟಾ",
|
||||
"british": "ಬ್ರಿಟಿಷ್",
|
||||
"maya": "ಮಾಯಾ"
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Bluehill",
|
||||
"Theshinster123",
|
||||
"Ykhwong"
|
||||
]
|
||||
},
|
||||
"untranslated-message-count": "1000+",
|
||||
"clear-log": "로그 지우기",
|
||||
"output-format": "출력 형식",
|
||||
"timezone": "시간대:",
|
||||
"loading": "불러오는 중...",
|
||||
"group": "그룹",
|
||||
"all-countries": "모든 국가",
|
||||
"feedback": "피드백",
|
||||
"france": "프랑스",
|
||||
"options-of-timeline": "타임라인 옵션:",
|
||||
"unix-time": "유닉스 시간",
|
||||
"julian-calendar": "율리우스력",
|
||||
"china": "중국",
|
||||
"dangi": "단군기원",
|
||||
"the-bot-operation-is-completed-$1$-in-total": "봇 작업이 총 %1% 완료되었습니다",
|
||||
"no-page-modified": "수정된 문서 없음",
|
||||
"first-quarter": "1분기",
|
||||
"not-yet-implemented": "아직 구현되지 않았습니다!",
|
||||
"language": "언어",
|
||||
"failed-to-get-file-$1": "파일 가져오기 실패: [%1]",
|
||||
"invalid-cookie": "유효하지 않은 쿠키?",
|
||||
"retry-$1-$2-$3": "다시 시도 %1/%2: %3",
|
||||
"http-status-code-$1-$2": "HTTP 상태 코드: %1 %2",
|
||||
"file-name-$1": "파일 이름: %1",
|
||||
"you-may-need-to-set-$1-=-$2": "%1 = %2 설정이 필요할 수 있습니다!",
|
||||
"all-wiki-submodules-are-loaded": "모든 위키 하위 모듈이 로드됩니다.",
|
||||
"Comma-separator": ", ",
|
||||
"abandon-change": "변경사항 버리기",
|
||||
"does-not-exist": "존재하지 않음",
|
||||
"invalid-url-$1": "잘못된 URL: %1",
|
||||
"edit-$1": "%1 편집",
|
||||
"missing-page": "문서 없음",
|
||||
"invalid-page-title": "잘못된 문서 제목",
|
||||
"directories": "디렉터리",
|
||||
"directory": "디렉터리",
|
||||
"file": "파일",
|
||||
"files": "파일",
|
||||
"using-proxy-server-$1": "프록시 서버 사용: %1",
|
||||
"user-agent-is-not-set": "User-Agent가 설정되어 있지 않습니다.",
|
||||
"from-command-line": "명령 줄에서",
|
||||
"fso_directories": "디렉터리 경로",
|
||||
"fso_directory": "디렉터리 경로",
|
||||
"fso_file": "파일 경로",
|
||||
"fso_files": "파일 경로",
|
||||
"«$1»": "«%1»:",
|
||||
"(this-download-has-processed-a-total-of-$1-word)": "{이 다운은 총 %1 처리했습니다 {{PLURAL:1|word|words}})",
|
||||
"http-status-code-$1": "HTTP 상태 코드 %1.",
|
||||
"error-$1": "오류: %1",
|
||||
"file-size-$1": "파일 크기: %1.",
|
||||
"unable-to-write-to-image-file-$1": "[%1] 이미지 파일을 쓸 수 없습니다.",
|
||||
"image-damaged": "이미지가 손상됨: ",
|
||||
"failed-to-get-image": "이미지 가져오기를 실패했습니다. ",
|
||||
"if-the-error-persists-you-can-set-skip_error=true-to-ignore-the-image-error": "오류가 지속되면 이미지 오류 무시를 위해 skip_error=true를 설정할 수 있습니다.",
|
||||
"failed-to-download-image": "이미지 다운로드 실패",
|
||||
"different-url-$1-≠-$2": "차이가 있는 URL: %1 ≠ %2",
|
||||
"work_data.directory": "스토리지 디렉터리",
|
||||
"work_data.id": "작품 ID",
|
||||
"work_data.title": "작품 제목",
|
||||
"work_data.url": "URL",
|
||||
"work_status-finished": "완료",
|
||||
"work-information": "작품 정보",
|
||||
"unknown": "알 수 없음",
|
||||
"move-$1-to-$2-failed-$3": "%1에서 %2(으)로 이동 실패: %3",
|
||||
"invalid-item-data-$1": "유효하지 않은 항목 데이터: %1",
|
||||
"the-file-is-not-in-the-download-queue-$1": "파일이 다운로드 대기열에 없습니다: %1",
|
||||
"still-downloading": "계속 다운로드 중:",
|
||||
"toc.calibre-series": "시리즈",
|
||||
"toc.identifier": "식별자",
|
||||
"toc.language": "언어",
|
||||
"toc.subject": "태그",
|
||||
"word-count": "단어 수",
|
||||
"contents": "목차",
|
||||
"waiting-for-all-resources-loaded": "모든 리소스가 로드되기를 기다리는 중...",
|
||||
"removing-empty-directory-$1": "빈 디렉터리를 제거하는 중: %1",
|
||||
"working-directory-$1": "작업 디렉터리: %1",
|
||||
"changing-working-directory-$1-→-$2": "작업 디렉터리 변경: [%1]→[%2]",
|
||||
"italy": "이탈리아",
|
||||
"norway": "노르웨이",
|
||||
"soon": "곧",
|
||||
"$1-hours-ago": "%1{{PLURAL:%1|시간}} 전",
|
||||
"$1-days-ago": "%1{{PLURAL:%1|일}} 전",
|
||||
"$1-days-later": "%1{{PLURAL:%1|일}} 후",
|
||||
"korea": "한국",
|
||||
"syntax-error": "구문 오류!",
|
||||
"illegal-pattern-$1": "잘못된 패턴: [%1]",
|
||||
"↑back-to-toc": "↑목차로 돌아가기",
|
||||
"cannot-move-to-$1": "%1로 옴길 수 없음",
|
||||
"change-section-title": "문단 제목 바꾸기:",
|
||||
"the-requested-robot-task-begins": "요청한 로봇 작업을 시작합니다.",
|
||||
"add-warning-messages": "경고 메시지를 추가합니다.",
|
||||
"the-requested-robot-task-finished": "요청한 로봇 작업이 끝났습니다.",
|
||||
"namespaces-$1": "이름공간: %1.",
|
||||
"number-of-templates": "#",
|
||||
"archiving-operation": "기구 아카이브 중",
|
||||
"ip-user": "IP 사용자",
|
||||
"(new-page)": "(새 문서)",
|
||||
"append-$1-topics": "%1 {{PLURAL:%1|topic|topics}} 추가",
|
||||
"remove-$1-topics": "%1 {{PLURAL:%1|topic|topics}} 제거",
|
||||
"it-is-a-executable-or-dll-file": "실행 파일 또는 DLL 파일입니다.",
|
||||
"cannot-read-directory-$1": "디렉터리를 읽을 수 없습니다: %1",
|
||||
"remove-empty-directory-$1": "빈 디렉터리 제거: %1",
|
||||
"target-exists-$1": "대상이 존재합니다: %1",
|
||||
"search-results": "검색 결과",
|
||||
"download-options": "다운로드 옵션",
|
||||
"open-the-download-directory": "다운로드 디렉터리 열기",
|
||||
"search": "검색",
|
||||
"searching-from-each-website-and-downloading-the-work": "각 웹사이트에서 검색 및 work 다운 중",
|
||||
"paste": "붙여넣기",
|
||||
"checking-for-release-update": "릴리스 업데이트 확인 중...",
|
||||
"release-update-available-$1": "사용 가능한 릴리스 업데이트: %1",
|
||||
"download_options.proxy": "프록시 서버. 포맷: \"사용자이름:비밀번호@호스트이름:포트\"",
|
||||
"local-language-name": "한국어",
|
||||
"there-are-currently-$1-$2-messages-that-have-not-been-translated.-welcome-to-translate-with-us": "There are currently %1 %2 messages that have not been translated. Welcome to translate with us!",
|
||||
"dark-theme": "다크",
|
||||
"reset-download-options": "다운로드 옵션 초기화",
|
||||
"no-file-or-directory-selected": "선택된 파일 또는 디렉터리가 없습니다.",
|
||||
"work_crawler-search_result_columns-site": "사이트",
|
||||
"work_crawler-search_result_columns-completed": "완료",
|
||||
"work_crawler-search_result_columns-status": "상태",
|
||||
"error-reason": "오류 원인",
|
||||
"website-of-the-work": "작품 웹사이트",
|
||||
"cancel-search": "검색 취소",
|
||||
"$1-sites-are-still-searching-$2": "%1 {{PLURAL:%1|site is|sites are}} 아직 검색 중 %2",
|
||||
"current-path-$1": "현재 경로: %1",
|
||||
"cancel": "취소",
|
||||
"cancel-download": "다운로드 취소",
|
||||
"continue": "계속",
|
||||
"update-completed": "업데이트 완료. ",
|
||||
"checking-update": "업데이트 확인 중...",
|
||||
"update-available-$1": "업데이트 사용 가능: %1",
|
||||
"update-failed": "업데이트 실패!",
|
||||
"option=value": "옵션=값",
|
||||
"usage": "사용법:",
|
||||
"options": "옵션:"
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Robby",
|
||||
"Volvox"
|
||||
]
|
||||
},
|
||||
"españa": "Spuenien",
|
||||
"untranslated-message-count": "1000+",
|
||||
"load-failed": "Lueden huet net funktionéiert",
|
||||
"coordinates": "Koordinaten: ",
|
||||
"latitude": "Breedegrad: ",
|
||||
"longitude": "Längegrad: ",
|
||||
"timezone": "Zäitzon: ",
|
||||
"loading": "Lueden...",
|
||||
"myanmar": "Myanmar",
|
||||
"vietnam": "Vietnam",
|
||||
"navigation": "Navigatioun: ",
|
||||
"all-countries": "All Länner",
|
||||
"example": "BEISPILL",
|
||||
"concept": "KONZEPT",
|
||||
"feedback": "FEEDBACK",
|
||||
"france": "Frankräich",
|
||||
"great-britain": "Groussbritannien",
|
||||
"spain": "Spuenien",
|
||||
"art-name": "Kënschtlernumm",
|
||||
"true-name": "Richtegen Numm",
|
||||
"born": "Gebuer",
|
||||
"died": "Gestuerwen",
|
||||
"reign": "Herrschaft",
|
||||
"coronation": "Kréinung",
|
||||
"predecessor": "Virgänger",
|
||||
"successor": "Nofollger",
|
||||
"father": "Papp",
|
||||
"mother": "Mamm",
|
||||
"initializing": "Initialiséieren...",
|
||||
"aries": "Widder",
|
||||
"taurus": "Stéier",
|
||||
"gemini": "Zwilling",
|
||||
"cancer": "Kriibs",
|
||||
"leo": "Léif",
|
||||
"virgo": "Jongfra",
|
||||
"libra": "Wo",
|
||||
"scorpio": "Skorpioun",
|
||||
"sagittarius": "Schütze",
|
||||
"capricorn": "Steebock",
|
||||
"aquarius": "Waassermann",
|
||||
"pisces": "Fësch",
|
||||
"lunar-phase": "Moundphas",
|
||||
"week-day": "Dag an der Woch",
|
||||
"week-date": "Dag an der Woch",
|
||||
"new-moon": "neit Liicht",
|
||||
"sunrise-sunset": "Sonnenopgang / Sonnenënnergang",
|
||||
"twilight": "Dämmerung",
|
||||
"moonrise-moonset": "Moundopgang / Moundënnergang",
|
||||
"calendar": "Kalenner",
|
||||
"gregorian-calendar": "Gregorianesche Kalenner",
|
||||
"julian-calendar": "Julianesche Kalenner",
|
||||
"islamic-calendar": "Islamesche Kalenner",
|
||||
"modern-iranian-calendar": "Modernen iranesche Kalenner",
|
||||
"hebrew-calendar": "Hebräesche Kalenner",
|
||||
"china": "China",
|
||||
"zodiac-sign": "Stärenzeechen",
|
||||
"famous-places": "Bekannt Plazen: ",
|
||||
"loading-$1$": "Lueden %1%...",
|
||||
"the-bot-operation-is-completed-$1$-in-total": "D'Bot-Operatioun ass zu %1% ofgeschloss",
|
||||
"finished": "fäerdeg",
|
||||
"no-changes": "Keng Ännerungen.",
|
||||
"no-page-modified": "Keng Säit geännert",
|
||||
"$1-word(s)-in-this-chapter": "%1 {{PLURAL:1|Wuert|Wierder}} an dësem Kapitel",
|
||||
"astronomy": "Astronomie",
|
||||
"first-quarter": "éischte Véierel",
|
||||
"full-moon": "Vollmound",
|
||||
"last-quarter": "leschte Véierel",
|
||||
"partial-lunar-eclipse": "partiell Moundfinsternis",
|
||||
"partial-solar-eclipse": "partiell Sonnenfinsternis",
|
||||
"total-lunar-eclipse": "total Moundfinsternis",
|
||||
"total-solar-eclipse": "total Sonnenfinsternis",
|
||||
"lunar-eclipse": "Moundfinsternis",
|
||||
"solar-eclipse": "Sonnenfinsternis",
|
||||
"moonrise": "Moundopgang",
|
||||
"sunrise": "Sonnenopgang",
|
||||
"moonset": "Moundënnergang",
|
||||
"sunset": "Sonnenënnergang",
|
||||
"log-type-error": "Feeler",
|
||||
"not-yet-implemented": "Nach net ëmgesat!",
|
||||
"language": "Sprooch",
|
||||
"Comma-separator": ", ",
|
||||
"content-is-empty": "Inhalt ass eidel",
|
||||
"abandon-change": "Ännerung opginn",
|
||||
"no-reason-provided": "Kee Grond uginn",
|
||||
"no-content": "Keen Inhalt",
|
||||
"$1-results": "%1 {{PLURAL:%1|Resultat|Resultater}}",
|
||||
"$1-is-not-exist-in-$2": "%1 gëtt et net op %2.",
|
||||
"unknown-api-response-$1": "Onbekannt API Äntwert: %1",
|
||||
"does-not-exist": "Gëtt et net",
|
||||
"configuration-page-$1": "Konfiguratiounssäit: %1",
|
||||
"no-page-redirects-to-this-page": "Keng Säit leed virun op dës Säit",
|
||||
"no-change": "keng Ännerung",
|
||||
"edit-$1": "%1 änneren",
|
||||
"missing-page": "Säit feelt",
|
||||
"function": "Funktioun",
|
||||
"number": "Zuel",
|
||||
"«$1»": "«%1»: ",
|
||||
"download-image-$1": "Bild #%1 eroflueden",
|
||||
"chapter-$1": "Kapitel %1: ",
|
||||
"image-without-content": "Bild ouni Inhalt:",
|
||||
"work_data.author": "Auteur",
|
||||
"work_data.last_update": "Lescht Aktualiséierung",
|
||||
"work_data.title": "Arbechtstitel",
|
||||
"work_status-finished": "Fäerdeg",
|
||||
"work_status-not-found": "Net fonnt",
|
||||
"work_data.chapter_no": "Nummer vum Kapitel",
|
||||
"the-work-does-not-exist-or-has-been-deleted": "D'Wierk gëtt et net oder gouf geläscht.",
|
||||
"unknown": "Onbekannt",
|
||||
"toc.date": "Datum",
|
||||
"toc.description": "Beschreiwung",
|
||||
"toc.language": "Sprooch",
|
||||
"toc.source": "Quell",
|
||||
"toc.title": "Titel",
|
||||
"contents": "Inhalter",
|
||||
"poland": "Polen",
|
||||
"portugal": "Portugal",
|
||||
"luxembourg": "Lëtzebuerg",
|
||||
"netherlands": "Holland",
|
||||
"bavaria": "Bayern",
|
||||
"austria": "Éisträich",
|
||||
"switzerland": "Schwäiz",
|
||||
"hungary": "Ungarn",
|
||||
"germany": "Däitschland",
|
||||
"norway": "Norweegen",
|
||||
"denmark": "Dänemark",
|
||||
"sweden": "Schweeden",
|
||||
"finland": "Finnland",
|
||||
"bulgaria": "Bulgarien",
|
||||
"soviet-union": "Sowjetunioun",
|
||||
"serbia": "Serbien",
|
||||
"romania": "Rumämnien",
|
||||
"greece": "Griicheland",
|
||||
"turkey": "Tierkei",
|
||||
"$1-minutes": "%1 {{PLURAL:%1|Minutt|Minutten}}",
|
||||
"$1-hours": "%1 {{PLURAL:%1|Stonn|Stonnen}}",
|
||||
"now": "elo",
|
||||
"several-seconds-ago": "virun e puer Sekonnen",
|
||||
"soon": "geschwënn",
|
||||
"$1-seconds-ago": "{{PLURAL:%1|virun 1 Sekonn|viru(n) %1 Sekonnen}}",
|
||||
"$1-minutes-later": "{{PLURAL:%1|eng Minutt|%1 Minutte}} méi spéit",
|
||||
"$1-hours-later": "%1 {{PLURAL:%1|Stonn|Stonne}} méi spéit",
|
||||
"$1-weeks-later": "%1 {{PLURAL:%1|Woch|Woche}} méi spéit",
|
||||
"invalid-date-$1": "Net valabelen Datum: %1",
|
||||
"note": "Notiz",
|
||||
"ryukyu": "Ryukyu",
|
||||
"japan": "Japan",
|
||||
"korea": "Korea",
|
||||
"chinese-domination-of-vietnam": "Chineesesch Dominatioun vum Vietnam",
|
||||
"india": "Indien",
|
||||
"mesopotamian": "Mesopotamesch",
|
||||
"babylon": "Babylonesch",
|
||||
"babylonian-calendar": "Babylonesche Kalenner",
|
||||
"sparta": "Sparta",
|
||||
"british": "Brittesch",
|
||||
"syntax-error": "Syntax-Feeler!",
|
||||
"↑back-to-toc": "↑Zréck op d'Inhaltsverzeechnes",
|
||||
"contents-of-$1": "Inhalter vu(n) [%1]",
|
||||
"expand": "opklappen",
|
||||
"collapse": "zesummeklappen",
|
||||
"no-title-found-for-$1": "Keen Titel fonnt fir %1.",
|
||||
"namespaces-$1": "Nummräim: %1.",
|
||||
"ip-user": "IP-Benotzer",
|
||||
"user": "Benotzer",
|
||||
"(new-page)": "(nei Säit)",
|
||||
"very-different": "GANZ VERSCHIDDEN",
|
||||
"please-help-to-check-this-edit": "Hëlleft wgl. fir dës Ännerung nozekucken.",
|
||||
"updating-$1": "%1 aktualiséieren",
|
||||
"articles-in-$1": "Artikelen op %1",
|
||||
"count-of-languages": "Zuel vu Sproochen",
|
||||
"average": "Duerchschnëtt",
|
||||
"sum": "Total",
|
||||
"article-list": "Artikel Lëscht",
|
||||
"see-also": "Kuckt och",
|
||||
"no-label": "Keng Etikett",
|
||||
"$1-does-not-start-with-$2": "%1 fänkt net mat %2 un",
|
||||
"revision-id-$1": "Versioun Id %1",
|
||||
"japanese-webcomics": "Japanesch Web-Comics",
|
||||
"local-language-name": "Lëtzebuergesch",
|
||||
"work_crawler-search_result_columns-title": "Titel",
|
||||
"work_crawler-search_result_columns-author": "Auteur",
|
||||
"number-of-chapters": "Zuel vun de Kapitelen",
|
||||
"work_crawler-search_result_columns-completed": "Fäerdeg",
|
||||
"lastest-chapter": "Lescht Kapitel",
|
||||
"error-reason": "Grond vum Feeler",
|
||||
"options": "Optiounen:"
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Bjankuloski06"
|
||||
]
|
||||
},
|
||||
"españa": "Шпанија",
|
||||
"french-republican-calendar": "Француски републикански календар",
|
||||
"untranslated-message-count": "1000+",
|
||||
"load-failed": "Вчитувањето не успеа",
|
||||
"latitude": "Г.Ш. ",
|
||||
"longitude": "Г.Д.: ",
|
||||
"loading": "Вчитувам...",
|
||||
"vietnam": "Виетнам",
|
||||
"france": "Франција",
|
||||
"great-britain": "Велика Британија",
|
||||
"spain": "Шпанија",
|
||||
"initializing": "Подготвувам...",
|
||||
"aries": "Овен",
|
||||
"taurus": "Бик",
|
||||
"gemini": "Близнаци",
|
||||
"cancer": "Рак",
|
||||
"leo": "Лав",
|
||||
"virgo": "Девица",
|
||||
"libra": "Вага",
|
||||
"scorpio": "Скорпија",
|
||||
"sagittarius": "Стрелец",
|
||||
"capricorn": "Јарец",
|
||||
"aquarius": "Водолија",
|
||||
"pisces": "Риби",
|
||||
"new-moon-eve": "мласомесечева вечер",
|
||||
"new-moon": "млада месечина",
|
||||
"sunrise-sunset": "изгрев / залез",
|
||||
"twilight": "самрак",
|
||||
"moonrise-moonset": "изгрев / залез на месечината",
|
||||
"bangla-calendar": "преработен Бенгалски календар",
|
||||
"myanmar-calendar": "Бурмански календар",
|
||||
"hindu-calendar": "Хиндуистички календар",
|
||||
"indian-national-calendar": "Индиски национален календар",
|
||||
"chinese-buddhist": "Кинески будистички",
|
||||
"nanakshahi-calendar": "Нанакшахи",
|
||||
"bahá-í-calendar": "Бахајски календар",
|
||||
"coptic-calendar": "Коптски календар",
|
||||
"ethiopian-calendar": "Етиопски календар",
|
||||
"armenian-calendar": "Ерменски календар",
|
||||
"byzantine-calendar": "Византиски календар",
|
||||
"egyptian-calendar": "Египетски календар",
|
||||
"month-of-the-sexagenary-cycle": "месец од шеесетеречниот циклус",
|
||||
"day-of-the-sexagenary-cycle": "ден од шеесетеречниот циклус",
|
||||
"china": "Кина",
|
||||
"japanese-month-name": "Јапонско име на месец",
|
||||
"week-day-(japanese)": "Ден од неделата (јапонски)",
|
||||
"zodiac-sign": "хороскопски знак",
|
||||
"year-of-the-sexagenary-cycle": "година од шеесетеречниот циклус",
|
||||
"chinese-zodiac": "Кинески зодијак",
|
||||
"minguo": "Мингуо",
|
||||
"famous-places": "Знаменити места:",
|
||||
"loading-$1$": "Вчитувам %1%...",
|
||||
"finished": "готово",
|
||||
"no-changes": "Нема промени.",
|
||||
"no-page-modified": "нема изменета страница",
|
||||
"first-quarter": "прва четвртина",
|
||||
"full-moon": "полна месечина",
|
||||
"last-quarter": "последна четвртина",
|
||||
"moonrise": "изгрејмесечина",
|
||||
"sunrise": "изгрејсонце",
|
||||
"moonset": "залез на месечината",
|
||||
"sunset": "залез",
|
||||
"log-type-debug": "исправка",
|
||||
"log-type-em": "нагласок",
|
||||
"log-type-error": "грешка",
|
||||
"log-type-fatal": "кобна",
|
||||
"log-type-info": "инфо",
|
||||
"log-type-log": "днев",
|
||||
"log-type-trace": "трага",
|
||||
"log-type-warn": "предупреди",
|
||||
"specified-domain-$1-is-not-yet-loaded.-you-may-need-to-set-the-force-flag": "Укажаниот домен [%1] засега не е вчитан. Може ќе реба да ја зададете ознаката FORCE.",
|
||||
"language": "Јазик",
|
||||
"no-change": "нема промени",
|
||||
"finished-$1": "исполнето: %1",
|
||||
"$1-elapsed-$3-at-$2": "Изминаа %1, %3 на %2",
|
||||
"first-it-takes-$1-to-get-$2-pages": "Најпрвин, потребно е %1 за добивање на %2 страници.",
|
||||
"$1-pages-processed": "%1 обработени страници",
|
||||
"$1-pages-have-not-changed": "%1 страници не се изменети,",
|
||||
"$1-elapsed": "поминати %1.",
|
||||
"stopped-give-up-editing": "'''Запрено''', откажано од урдување.",
|
||||
"function": "функција",
|
||||
"number": "број",
|
||||
"contents": "Содржина",
|
||||
"italy": "Италија",
|
||||
"poland": "Полска",
|
||||
"portugal": "Португалија",
|
||||
"luxembourg": "Луксембург",
|
||||
"netherlands": "Холандија",
|
||||
"bavaria": "Баварија",
|
||||
"austria": "Австрија",
|
||||
"switzerland": "Швајцарија",
|
||||
"hungary": "Унгарија",
|
||||
"germany": "Германија",
|
||||
"norway": "Норвешка",
|
||||
"denmark": "Данска",
|
||||
"sweden": "Шведска",
|
||||
"finland": "Финска",
|
||||
"bulgaria": "Бугарија",
|
||||
"soviet-union": "СССР",
|
||||
"serbia": "Србија",
|
||||
"romania": "Романија",
|
||||
"greece": "Грција",
|
||||
"turkey": "Турција",
|
||||
"egypt": "Египет",
|
||||
"$1-milliseconds": "%1 мс",
|
||||
"$1-ms": "%1 мс",
|
||||
"$1-seconds": "%1 с",
|
||||
"$1-s": "%1 с",
|
||||
"$1-minutes": "%1 мин",
|
||||
"$1-min": "%1 мин",
|
||||
"$1-hours": "%1 ч",
|
||||
"$1-hr": "%1 ч",
|
||||
"$1-days": "%1 д",
|
||||
"$1-d": "%1 д",
|
||||
"2-days-before-yesterday-$h-$m": "зад-завчера, %H:%M",
|
||||
"the-day-before-yesterday-$h-$m": "завчера, %H:%M",
|
||||
"yesterday-$h-$m": "вчера, %H:%M",
|
||||
"today-$h-$m": "денес, %H:%M",
|
||||
"tomorrow-$h-$m": "утре, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "задутре, %H:%M",
|
||||
"2-days-after-tomorrow-$h-$m": "зад-задутре, %H:%M",
|
||||
"3-days-after-tomorrow-$h-$m": "зад-зад-задутре, %H:%M",
|
||||
"now": "сега",
|
||||
"several-seconds-ago": "пред неколку секунди",
|
||||
"soon": "набргу",
|
||||
"$1-seconds-ago": "пред %1 секунди",
|
||||
"$1-seconds-later": "по %1 секунди",
|
||||
"$1-minutes-ago": "пред %1 минути",
|
||||
"$1-minutes-later": "по %1 минути",
|
||||
"$1-hours-ago": "пред %1 часа",
|
||||
"$1-hours-later": "по %1 часа",
|
||||
"$1-days-ago": "пред %1 дена",
|
||||
"$1-days-later": "по %1 дена",
|
||||
"$1-weeks-ago": "пред %1 недели",
|
||||
"$1-weeks-later": "по %1 недели",
|
||||
"ryukyu": "Рјукју",
|
||||
"japan": "Јапонија",
|
||||
"korea": "Кореја",
|
||||
"chinese-domination-of-vietnam": "Кинеска превласт над Виетнам",
|
||||
"late-dynastic-epoch": "Доцнодинастичка епоха",
|
||||
"thailand": "Тајланд",
|
||||
"macedon": "Македон",
|
||||
"sparta": "Спарта",
|
||||
"british": "Британија",
|
||||
"↑back-to-toc": "↑Назад кон содржината",
|
||||
"contents-of-$1": "Содржина на [%1]",
|
||||
"expand": "отвори",
|
||||
"collapse": "собери",
|
||||
"illegal-$1-$2": "Недозволена %1: [%2]",
|
||||
"debug-level": "степен на исправка на грешки"
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Dnlweijers",
|
||||
"Mainframe98",
|
||||
"McDutchie",
|
||||
"Vistaus"
|
||||
]
|
||||
},
|
||||
"untranslated-message-count": "1000+",
|
||||
"coordinates": "Coördinaten: ",
|
||||
"latitude": "Breedtegraad: ",
|
||||
"longitude": "Lengtegraad: ",
|
||||
"prefix": "voorvoegsel",
|
||||
"timezone": "Tijdzone: ",
|
||||
"warning-only-for-developers": "WAARSCHUWING: Alleen voor ontwikkelaars.",
|
||||
"loading": "Bezig met laden…",
|
||||
"remove-the-column": "Kolom verwijderen",
|
||||
"add-the-column": "Kolom toevoegen",
|
||||
"general-data-layer": "algemeen",
|
||||
"all-countries": "Alle landen",
|
||||
"france": "Frankrijk",
|
||||
"great-britain": "Groot Brittanië",
|
||||
"spain": "Spanje",
|
||||
"born": "Geboren",
|
||||
"died": "Overleden",
|
||||
"coronation": "Kroning",
|
||||
"predecessor": "Voorganger",
|
||||
"successor": "Opvolger",
|
||||
"father": "Vader",
|
||||
"mother": "Moeder",
|
||||
"spouse": "Echtgenoot",
|
||||
"initializing": "Initialiseren...",
|
||||
"aries": "Ram",
|
||||
"taurus": "Stier",
|
||||
"gemini": "Tweelingen",
|
||||
"cancer": "Kreeft",
|
||||
"leo": "Leeuw",
|
||||
"virgo": "Maagd",
|
||||
"libra": "Weegschaal",
|
||||
"scorpio": "Schorpioen",
|
||||
"sagittarius": "Boogschutter",
|
||||
"capricorn": "Steenbok",
|
||||
"aquarius": "Waterman",
|
||||
"pisces": "Vissen",
|
||||
"unix-time": "Unix tijd",
|
||||
"new-moon": "nieuwe maan",
|
||||
"twilight": "schemering",
|
||||
"calendar": "kalender",
|
||||
"gregorian-calendar": "Gregoriaanse kalender",
|
||||
"julian-calendar": "Juliaanse kalender",
|
||||
"finished": "voltooid",
|
||||
"no-changes": "Geen wijzigingen.",
|
||||
"no-page-modified": "Geen pagina aangepast",
|
||||
"first-quarter": "eerste kwartier",
|
||||
"full-moon": "volle maan",
|
||||
"last-quarter": "laatste kwartier",
|
||||
"sunrise": "zonsopkomst",
|
||||
"sunset": "zonsondergang",
|
||||
"language": "Taal",
|
||||
"no-reason-provided": "Geen reden opgegeven",
|
||||
"get-configurations-from-page-$1": "Configuraties ophalen van pagina %1",
|
||||
"reduce-the-maximum-number-of-pages-per-fetch-to-a-maximum-of-$1-pages": "Beperk het maximumaantal pagina's per keer tot %1 pagina's.",
|
||||
"unknown-api-response-$1": "Onbekend api-antwoord: %1",
|
||||
"no-change": "geen wijzigingen",
|
||||
"no-user-name-or-password-provided.-the-login-attempt-was-abandoned": "Geen gebruikersnaam of wachtwoord opgegeven. De aanmeldpoging is afgebroken.",
|
||||
"function": "functie",
|
||||
"number": "getal",
|
||||
"move-$1-to-$2-failed-$3": "Verplaatsing %1 naar %2 mislukt: %3",
|
||||
"contents": "Inhoud",
|
||||
"italy": "Italië",
|
||||
"poland": "Polen",
|
||||
"luxembourg": "Luxemburg",
|
||||
"netherlands": "Nederland",
|
||||
"bavaria": "Beieren",
|
||||
"austria": "Oosterrijk",
|
||||
"switzerland": "Zwitserland",
|
||||
"hungary": "Hongarije",
|
||||
"germany": "Duitsland",
|
||||
"norway": "Noorwegen",
|
||||
"denmark": "Denemarken",
|
||||
"sweden": "Zweden",
|
||||
"finland": "Finland",
|
||||
"bulgaria": "Bulgarije",
|
||||
"soviet-union": "Sovjet-Unie",
|
||||
"serbia": "Servië",
|
||||
"romania": "Roemenië",
|
||||
"greece": "Griekenland",
|
||||
"turkey": "Turkije",
|
||||
"egypt": "Egypte",
|
||||
"now": "zojuist",
|
||||
"several-seconds-ago": "enkele seconden geleden",
|
||||
"soon": "zodadelijk",
|
||||
"$1-seconds-ago": "%1 seconde{{PLURAL:%1||n}} geleden",
|
||||
"$1-minutes-ago": "%1 {{PLURAL:%1|minuut|minuten}} geleden",
|
||||
"$1-hours-ago": "%1 uur{{PLURAL:%1|}} geleden",
|
||||
"$1-days-ago": "%1 dag{{PLURAL:%1||en}} geleden",
|
||||
"$1-weeks-ago": "%1 {{PLURAL:%1|week|weken}} geleden",
|
||||
"invalid-date-$1": "Ongeldige datum: %1",
|
||||
"note": "Opmerking",
|
||||
"british": "Brits",
|
||||
"↑back-to-toc": "↑Terug naar inhoudsopgave",
|
||||
"expand": "uitvouwen",
|
||||
"collapse": "samenvouwen",
|
||||
"duplicate-task-name-$1!-will-overwrite-old-task-with-new-task-$2→$3": "Dubbele taaknaam %1! De oude taak wordt overschreven door de nieuwe: %2→%3",
|
||||
"the-section-does-not-set-the-task-configuration-$1": "De sectie stelt de taakconfiguratie niet in: %1",
|
||||
"$1-pages-modified": "%1 {{PLURAL:%1|pagina|pagina's}} bewerkt",
|
||||
"remove-$1-non-defunct-anchors": "%1 nog bestaande {{PLURAL:%1|anker|ankers}} verwijderen",
|
||||
"count-of-languages": "Aantal talen",
|
||||
"average": "Gemiddelde",
|
||||
"sum": "Som",
|
||||
"article-list": "Artikellijst",
|
||||
"see-also": "Zie ook",
|
||||
"no-label": "Geen label"
|
||||
}
|
||||
@@ -0,0 +1,536 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Re demz",
|
||||
"YuriNikolai"
|
||||
]
|
||||
},
|
||||
"españa": "Espanha",
|
||||
"french-republican-calendar": "Calendário Francês Republicano",
|
||||
"untranslated-message-count": "700+",
|
||||
"clear-log": "Limpar registro",
|
||||
"show-hidden-log": "Mostar / Esconder registro",
|
||||
"load-failed": "Erro ao carregar",
|
||||
"convert-an-era-name-to-the-specified-format": "Converter um nome de era para o formato especificado",
|
||||
"coordinates": "Coordenadas:",
|
||||
"customize-output-format": "Customizar formato de saída",
|
||||
"era-calendar-converter": "Conversor de Calendário de Eras",
|
||||
"latitude": "Latitude:",
|
||||
"longitude": "Longitude:",
|
||||
"output-format": "Formato de saída",
|
||||
"prefix": "prefixo",
|
||||
"timezone": "Fusos horários:",
|
||||
"warning-only-for-developers": "AVISO: Somente para desenvolvedores.",
|
||||
"loading": "Carregando...",
|
||||
"c.-$1": "c. %1",
|
||||
"myanmar": "Myanmar",
|
||||
"vietnam": "Vietnã",
|
||||
"group": "Grupo",
|
||||
"no-calendar-to-list": "Nenhum calendário para listar!",
|
||||
"taiwan-earthquakes": "Terremotos em Taiwan",
|
||||
"unobvious-periods": "Períodos não-óbvios:",
|
||||
"general-data-layer": "geral",
|
||||
"data-layer": "Camada de Dados",
|
||||
"navigation": "Navegação:",
|
||||
"all-countries": "Todos os Países",
|
||||
"example": "EXEMPLO",
|
||||
"france": "França",
|
||||
"great-britain": "Grã-Bretanha",
|
||||
"spain": "Espanha",
|
||||
"calendar-used": "Calendário usado",
|
||||
"data-source": "Fonte de dados",
|
||||
"personal-name": "Nome pessoal",
|
||||
"courtesy-name": "Nome de cortesia",
|
||||
"art-name": "Nome artístico",
|
||||
"true-name": "Nome verdadeiro",
|
||||
"posthumous-name": "Nome póstumo",
|
||||
"temple-name": "Nome de templo",
|
||||
"born": "Nascimento",
|
||||
"died": "Morte",
|
||||
"reign": "Reinado",
|
||||
"coronation": "Coroação",
|
||||
"father": "Pai",
|
||||
"mother": "Mãe",
|
||||
"showing-timeline": "Mostrando linha do tempo",
|
||||
"era-$1": "Era %1",
|
||||
"initializing": "Inicializando...",
|
||||
"options-of-timeline": "Opções da linha do tempo:",
|
||||
"combine-historical-periods": "Combinar períodos históricos",
|
||||
"please-select-the-layer-you-want-to-load": "Por favor, selecione a camada que deseja carregar.",
|
||||
"aries": "Áries",
|
||||
"taurus": "Touro",
|
||||
"gemini": "Gêmeos",
|
||||
"cancer": "Câncer",
|
||||
"leo": "Leão",
|
||||
"virgo": "Virgem",
|
||||
"libra": "Libra",
|
||||
"scorpio": "Escorpião",
|
||||
"sagittarius": "Sagitário",
|
||||
"capricorn": "Capricórnio",
|
||||
"aquarius": "Aquário",
|
||||
"pisces": "Peixes",
|
||||
"lunar-phase": "fase da lua",
|
||||
"week-day": "Dia da semana",
|
||||
"week-date": "Data semanal",
|
||||
"moon-longitude": "longitude lunar",
|
||||
"moon-latitude": "latitude lunar",
|
||||
"apparent-longitude-moon-sun": "longitude aparente: Lua - Sol",
|
||||
"new-moon": "lua nova",
|
||||
"sunrise-sunset": "nascer / pôr do sol",
|
||||
"twilight": "crepúsculo",
|
||||
"moonrise-moonset": "nascer / pôr da lua",
|
||||
"calendar": "calendário",
|
||||
"gregorian-calendar": "Calendário gregoriano",
|
||||
"julian-calendar": "Calendário juliano",
|
||||
"calendar-note": "Notas do calendário",
|
||||
"month-of-the-sexagenary-cycle": "mês do ciclo sexagenário",
|
||||
"day-of-the-sexagenary-cycle": "dia do ciclo sexagenário",
|
||||
"china": "China",
|
||||
"year-of-the-sexagenary-cycle": "ano do ciclo sexagenário",
|
||||
"chinese-zodiac": "zodíaco chinês",
|
||||
"before-present": "Antes do Presente",
|
||||
"famous-places": "Locais Famosos:",
|
||||
"loading-$1$": "Carregando %1%...",
|
||||
"finished": "concluído",
|
||||
"no-changes": "Sem alterações.",
|
||||
"to-chinese-numerals": "Para numerais chineses",
|
||||
"astronomy": "astronomia",
|
||||
"full-moon": "lua cheia",
|
||||
"total-solar-eclipse": "eclipse solar total",
|
||||
"lunar-eclipse": "eclipse lunar",
|
||||
"solar-eclipse": "eclipse solar",
|
||||
"moonrise": "nascer da lua",
|
||||
"sunrise": "nascer do sol",
|
||||
"moonset": "pôr da lua",
|
||||
"sunset": "pôr do sol",
|
||||
"not-yet-implemented": "Ainda não implementado!",
|
||||
"$1-is-loaded-setting-up-user-domain-resources-now": "[%1] está carregado, configurando recurso de domínio do usuário agora.",
|
||||
"force-loading-using-domain-locale-$2-($1)": "Carregamento forçado / usando domínio / local [%2] (%1).",
|
||||
"loading-using-domain-locale-$2-($1)": "Carregando/ usando domínio / local [%2] (%1).",
|
||||
"unable-to-distinguish-domain-but-set-callback": "Não foi possível distinguir o domínio, mas callback estabelecido",
|
||||
"illegal-domain-alias-list-$1": "Lista ilegal de alias de domínio: [%1]",
|
||||
"adding-domain-alias-$1-→-$2": "Adicionando alias de domínio [%1] → [%2]...",
|
||||
"testing-domain-alias-$1": "Testando o alias de domínio [%1]...",
|
||||
"failed-to-extract-gettext-id": "Falha em extrair o gettext id.",
|
||||
"loading-language-domain-$1": "Carregando linguagem / domínio [%1]...",
|
||||
"language-domain-$1-loaded": "Linguagem/ domínio [%1] carregado.",
|
||||
"cannot-find-menu-node-$1": "Não foi possível encontrar o nódulo do menu: [%1]",
|
||||
"convert-number-$1-to-$2-format": "Converter o número: [%1] para formato %2.",
|
||||
"unable-to-convert-number-$1": "Incapaz de converter o número [%1]!",
|
||||
"retry-$1-$2-$3": "Tente novamente %1/%2: %3",
|
||||
"get-configurations-from-page-$1": "Obtenha configurações da página %1",
|
||||
"invalid-url-$1": "URL inválida: %1",
|
||||
"finished-$1": "concluído: %1",
|
||||
"cannot-detect-work-id-from-url-$1": "id do projeto não foi encontrado pela URL: %1",
|
||||
"starting-$1": "Começando %1",
|
||||
"the-allowed-data-type-for-$1-is-$4-but-it-was-set-to-{$2}-$3": "O tipo permitido de dado para \"%1\" é %4, mas foi definido para {%2} %3",
|
||||
"some-$2-path(s)-specified-by-$1-do-not-exist-$3": "Algum(ns) caminho(s) %2 especificado(s) pelo \"%1\" não existe(m): %3",
|
||||
"directories": "diretórios",
|
||||
"directory": "diretório",
|
||||
"file": "arquivo",
|
||||
"files": "arquivos",
|
||||
"unable-to-process-$1-condition-with-value-type-$2": "Incapaz de processar a condição \"%1\" com o tipo de valor %2!",
|
||||
"$1-is-set-to-the-problematic-value-{$2}-$3": "\"%1\" é definido como o valor inválido: {%2} %3",
|
||||
"key-value-not-given": "Valor chave não informado",
|
||||
"using-proxy-server-$1": "Usando servidor proxy: %1",
|
||||
"failed-to-parse-time": "Tempo limite para análise de tráfego excedido",
|
||||
"user-agent-is-not-set": "User-Agent não definido.",
|
||||
"referer-cannot-be-undefined": "\"Referer\" não pode ser indefinido.",
|
||||
"configure-referer-$1": "Configure o Referer: %1",
|
||||
"min-image-size-should-be-greater-than-0": "Tamanho minímo da imagem deve ser maior que 0",
|
||||
"cannot-parse-$1": "Não foi possível analisar %1",
|
||||
"unable-to-set-$1-$2": "Nã foi possível definir %1 : 2",
|
||||
"from-command-line": "Por linha de comando",
|
||||
"boolean": "boolean",
|
||||
"fso_directories": "caminho dos diretórios",
|
||||
"fso_directory": "caminho do diretório",
|
||||
"fso_file": "caminho do arquivo",
|
||||
"fso_files": "caminho dos arquivos",
|
||||
"function": "função",
|
||||
"number": "número",
|
||||
"string": "texto",
|
||||
"«$1»": "«%1»:",
|
||||
"getting-data-of-chapter-$1-$2": "Obtendo dados do capítulo %1, %2",
|
||||
"getting-data-of-chapter-$1": "Obtendo dados do capítulo %1",
|
||||
"creating-a-chapter-directory-$1": "Criando o diretório do capítulo: %1",
|
||||
"extracting-image-files-$1": "Extraindo imagens: %1",
|
||||
"reading-image-archive-$1": "Lendo arquivos de imagem: %1",
|
||||
"deleting-image-from-chapter-$1": "Deletando imagem do capítulo: %1",
|
||||
"$1-$2-$3-images": "%1 [%2] %3 imagens.",
|
||||
"(limited-access)": "(Acesso limitado)",
|
||||
"file-extension-$1": "Extensão do arquivo: %1",
|
||||
"$1-the-work-has-been-dispatched-and-the-images-are-downloaded-in-parallel": "%1: A obra recebida e as imagens estão baixando em paralelo.",
|
||||
"download-image-$1": "Baixando imagem #%1",
|
||||
"waiting-for-$1-before-downloading-the-$2-image": "Esperando %2 antes de baixar %2 imagens.",
|
||||
"failed-to-get-data-of-chapter-$1": "Falha ao obter dados do capítulo %1",
|
||||
"skip-$1-§$2-and-continue-next-chapter": "Pulando %1 §%2 e indo para o próximo capítulo.",
|
||||
"message_need_re_download": "O download deu errado, o servidor pode estar temporariamente indisponível ou o arquivo foi perdido (404). Confirme se o erro foi eliminado ou se o erro está mais acontecendo e execute novamente para continuar o download.",
|
||||
"retry-$1-$2": "Tentando novamente %1/%2",
|
||||
"preserve": "Salvar os arquivos antigos:",
|
||||
"move-to-→": "Mover para →",
|
||||
"removed-old-files": "Remover arquivos antigos:",
|
||||
"http-status-code-$1": "Código de status do HTTP %1.",
|
||||
"error-$1": "Erro: %1",
|
||||
"image-damaged": "Imagem danificada:",
|
||||
"failed-to-get-image": "Falha em obter a imagem.",
|
||||
"image-without-content": "Nenhum conteúdo encontrado:",
|
||||
"$1-bytes-too-small": "%1 bytes, muito pequeno:",
|
||||
"$1-bytes": "%1 bytes:",
|
||||
"get-$2-servers-from-$1-$3": "Recendo %2 servidores de [%1]: %3",
|
||||
"unable-to-extract-the-image-server-list-from-$1": "Não foi possível extrair a lista de servidores de imagem de [%1]!",
|
||||
"$1-work_id-not-given": "%1: work_id não fornecido!",
|
||||
"starting-«$1»-save-to-$2": "Começando a baixar «%1», salvando em %2",
|
||||
"cannot-create-base-directory-$1": "Não é possível criar o diretório base: %1",
|
||||
"$1-at-the-back-of-listed-work-with-*-will-be-ignored": "\"%1\" na execução da tarefa listado com \"* /\" será ignorado",
|
||||
"cannot-read-series-titles-$1": "Não é possível ler os títulos das séries: %1",
|
||||
"rearrange-series-titles-$1": "Reorganizando títulos das séries: %1",
|
||||
"processed-$2-series-titles-$1": "%2 títulos de séries processados: %1",
|
||||
"commented-out-$2-series-titles-$1": "%2 títulos de séries comentandos: %1",
|
||||
"no-change-to-series-titles-$1": "Nenhuma alteração nos títulos das séries:% 1",
|
||||
"you-might-have-mistaken-the-download-tools-as-series-titles": "Você pode ter confundido as ferramentas de download com os títulos das séries: %1",
|
||||
"using-series-titles-$1": "Usando os títulos das séries:% 1",
|
||||
"invalid-work-id-$1": "Id da série inválida: %1",
|
||||
"remove-the-archived-work-from-the-list-of-works-«$1»": "Remova a série arquivada da lista de séries: «%1»",
|
||||
"archived": "Arquivado:",
|
||||
"archived-date-$1-last-download-date-$2": "data de arquivamento:%1, data do último download:%2",
|
||||
"archive-the-old-work-«$1»": "Arquivar o trabalho antigo: «%1»",
|
||||
"warning-downloading-a-list-of-works-starting-with-$2-and-length-$1.-repeating-the-download-of-the-work-list-may-cause-an-error": "Aviso: baixando uma lista de séries iniciados em \"%2\" até % 1. Repetir o download da lista de séries pode causar um erro!",
|
||||
"using-convert_id-$1": "Usando o converter_id[%1]",
|
||||
"using-convert_id-$1-via-url-$2": "Usando o converter_id[%1] via url: %2",
|
||||
"invalid-id-converter-for-$1": "conversor de id inválido para %1",
|
||||
"downloading-$1-$2": "Baixando %1: %2",
|
||||
"a-total-of-$1-works-have-been-downloaded": "Um total de %1 séries foram baixadas.",
|
||||
"$1-works-produced-special-conditions-recorded-in-$2": "%1 séries produziram uma condição especial, grava em [%2].",
|
||||
"work_data.author": "Autor",
|
||||
"work_data.chapter_count": "Quantidade de capítulos",
|
||||
"work_data.chapter_list": "Listagem do capítulo",
|
||||
"work_data.description": "Descrição",
|
||||
"work_data.directory": "Diretório",
|
||||
"work_data.id": "ID da obra",
|
||||
"work_data.last_download.chapter": "Último capítulo baixado",
|
||||
"work_data.last_download.date": "Última vez baixado",
|
||||
"work_data.last_update": "Última atualização",
|
||||
"work_data.status": "Status",
|
||||
"work_data.title": "Título da obra",
|
||||
"work_data.url": "URL",
|
||||
"work_status-finished": "Concluído",
|
||||
"work_status-limited": "Limitado",
|
||||
"work_status-not-found": "Não encontrado",
|
||||
"work-information": "Informações da obra",
|
||||
"work_data.chapter_no": "Número do capítulo",
|
||||
"work_data.chapter_title": "Título do capítulo",
|
||||
"you-may-set-start_chapter_no=chapter-number-or-start_chapter_title=chapter-title-to-decide-where-to-start-downloading": "Você pode definir \"start_chapter_NO = número do capítulo\" ou \"start_chapter_title = título do capítulo\" para decidir onde começa o download,",
|
||||
"or-set-chapter_filter=chapter-title-to-download-specific-chapter": "ou defina \"chapter_filter = título do capítulo\" para fazer o download de um capítulo específico.",
|
||||
"unknown": "Desconhecido",
|
||||
"jscript-files-can-only-be-executed-in-windows-environment": "Arquivo JScript só pode ser executado em Windows!",
|
||||
"unable-to-encode-invalid-id-$1": "id inválido para codificar: %1",
|
||||
"unable-to-decode-$1": "não é possível decodificar",
|
||||
"unable-to-determine-the-type-of-file-for-$1": "Não é possível determinar o tipo de arquivo do [%1].",
|
||||
"invalid-item-data-$1": "Dados inválidos do item: %1",
|
||||
"this-id-already-exists-will-change-the-id-of-former-chapter": "Esse id já existe, irá substituir o id do capítulo anterior.",
|
||||
"media-type-is-not-set-or-media-type-is-invalid-$1": "Media-type inválido ou não definido.",
|
||||
"skip-the-no-content-empty-chapter": "Pule o capítulo vazio/sem conteúdo:",
|
||||
"too-short": "muito curto",
|
||||
"if-this-chapter-already-exists-remove-it-first-$1": "Se esse capítulo já existe, remova-o primeiro: %1",
|
||||
"using-language-$1": "Usando a linguagem: %1",
|
||||
"toc.calibre-series": "Série",
|
||||
"toc.creator": "criador",
|
||||
"toc.date": "data",
|
||||
"toc.dcterms-modified": "Data da última modificação da obra",
|
||||
"toc.description": "descrição",
|
||||
"toc.identifier": "identificador",
|
||||
"toc.language": "língua",
|
||||
"toc.publisher": "editora",
|
||||
"toc.source": "fonte",
|
||||
"toc.subject": "marcadores",
|
||||
"toc.title": "título",
|
||||
"word-count": "Contador de palavras",
|
||||
"$1-words": "%1 palavras",
|
||||
"$1-chapters": "%1 capítulos",
|
||||
"contents": "Conteúdo",
|
||||
"working-directory-$1": "Diretório de trabalho: %1",
|
||||
"italy": "Itália",
|
||||
"poland": "Polônia",
|
||||
"portugal": "Portugal",
|
||||
"luxembourg": "Luxemburgo",
|
||||
"netherlands": "Países Baixos",
|
||||
"bavaria": "Baviera",
|
||||
"austria": "Áustria",
|
||||
"switzerland": "Suíça",
|
||||
"hungary": "Hungria",
|
||||
"germany": "Alemanha",
|
||||
"norway": "Noruega",
|
||||
"denmark": "Dinamarca",
|
||||
"sweden": "Suécia",
|
||||
"finland": "Finlândia",
|
||||
"bulgaria": "Bulgária",
|
||||
"soviet-union": "União Soviética",
|
||||
"serbia": "Sérvia",
|
||||
"romania": "Romênia",
|
||||
"greece": "Grécia",
|
||||
"turkey": "Turquia",
|
||||
"egypt": "Egito",
|
||||
"$1-years-and-$2-months": "%1 A %2 M",
|
||||
"$1-y-$2-m": "%1 A %2 M",
|
||||
"$1-years": "%1 A",
|
||||
"$1-y": "%1 A",
|
||||
"$1-months": "%1 M",
|
||||
"$1-m": "%1 M",
|
||||
"$1-milliseconds": "%1 ms",
|
||||
"$1-ms": "%1 ms",
|
||||
"$1-seconds": "%1 s",
|
||||
"$1-s": "%1 s",
|
||||
"$1-minutes": "%1 min",
|
||||
"$1-min": "%1 min",
|
||||
"$1-hours": "%1 hr",
|
||||
"$1-hr": "%1 hr",
|
||||
"$1-days": "%1 d",
|
||||
"$1-d": "%1 d",
|
||||
"2-days-before-yesterday-$h-$m": "2 dias antes de ontem, %H:%M",
|
||||
"the-day-before-yesterday-$h-$m": "anteontem, %H:%M",
|
||||
"yesterday-$h-$m": "ontem, %H:%M",
|
||||
"today-$h-$m": "hoje, %H:%M",
|
||||
"tomorrow-$h-$m": "amanhã, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "depois de amanhã, %H:%M",
|
||||
"2-days-after-tomorrow-$h-$m": "2 dias depois de amanhã, %H:%M",
|
||||
"3-days-after-tomorrow-$h-$m": "3 dias depois de amanhã, %H:%M",
|
||||
"now": "agora",
|
||||
"several-seconds-ago": "alguns segundos atrás",
|
||||
"soon": "em breve",
|
||||
"$1-seconds-ago": "%1 segundos atrás",
|
||||
"$1-seconds-later": "%1 segundos mais tarde",
|
||||
"$1-minutes-ago": "%1 minutos atrás",
|
||||
"$1-minutes-later": "%1 minutos mais tarde",
|
||||
"$1-hours-ago": "%1 horas atrás",
|
||||
"$1-hours-later": "%1 horas mais tarde",
|
||||
"$1-days-ago": "%1 dias atrás",
|
||||
"$1-days-later": "%1 dias mais tarde",
|
||||
"$1-weeks-ago": "%1 semanas atrás",
|
||||
"$1-weeks-later": "%1 semanas mais tarde",
|
||||
"era-date": "Data da era",
|
||||
"note": "Nota",
|
||||
"wu-xing": "Wu Xing",
|
||||
"era-name": "Nome da era",
|
||||
"ryukyu": "Ryukyu",
|
||||
"japan": "Japão",
|
||||
"korea": "Coréia",
|
||||
"chinese-domination-of-vietnam": "Dominação chinesa do Vietnã",
|
||||
"thailand": "Tailândia",
|
||||
"phra-ruang-dynasty": "Dinastia Phra Ruang",
|
||||
"sukhothai-kingdom": "Reino de Sucotai",
|
||||
"republic-of-the-union-of-myanmar": "República da União de Myanmar",
|
||||
"india": "Índia",
|
||||
"babylon": "Babilônia",
|
||||
"persia": "Pérsia",
|
||||
"macedon": "Macedônia",
|
||||
"classical-athens": "Atenas Clássica",
|
||||
"sparta": "Esparta",
|
||||
"syntax-error": "Erro de sintaxe!",
|
||||
"function-name-unmatched": "Nome da função não coincide.",
|
||||
"treat-$1-as-regexp": "Trate [%1] como RegExp",
|
||||
"invalid-flags-$1": "Marcações inválidas: [%1]",
|
||||
"illegal-pattern-$1": "Padrão ilegal: [%1]",
|
||||
"conversion-mode-$1-error-invalid-regexp?-$2": "Modo de conversão [%1] Erro: RegExep Inválido? %2",
|
||||
"treat-pattern-$1-as-windows-wildcard-search-string": "Trate o padrão [%1] como um termo curinga na pesquisa de texto do Windows.",
|
||||
"unable-to-convert-mode-$1": "Incapaz de converter o modo [%1]!",
|
||||
"↑back-to-toc": "Voltar ao Índice",
|
||||
"expand": "expandir",
|
||||
"collapse": "ocultar",
|
||||
"searching-style-{$2}-$1-in-sgr_code.style_value_alias": "Pesquisando o estilo {%2} [%1] em SGR_code.style_value_alias...",
|
||||
"find-style-$1-normalized-to-→-$2": "Encontre o estilo [%1] normalizado para → [%2]",
|
||||
"parse-{$2}-$1-if-it-is-a-primitive-value": "Analisar {%2} [%1] se for um valor primitivo.",
|
||||
"test-if-$1-is-+-style-name": "Testar se [%1] é \"[+-] style name\".",
|
||||
"invalid-configuration-of-style-$1": "Configuração de estilo inválida: [%1].",
|
||||
"set-style-$1-=-$2": "Definir estilo \"%1\" = %2.",
|
||||
"test-if-$1-is-style-name-=-style-value-(0-1-false-true-...)": "Testar se [%1] é \"style name = style value (0, 1, false, true, ...)\".",
|
||||
"parse-{$2}-$1-if-it-is-a-object": "Analisar {%2} [%1] se for um objeto.",
|
||||
"reset-style-{$2}-$1": "Redefinir estilo {%2} [%1].",
|
||||
"unknown-style-$1": "Estilo desconhecido: [%1].",
|
||||
"the-section-does-not-set-the-task-configuration-$1": "A seção não define a configuração da tarefa: %1",
|
||||
"move-$1": "Movendo %1:",
|
||||
"remove-empty-directory-$1": "Removendo o diretório vazio: %1",
|
||||
"$1-$2-compressing": "%1/%2 comprimindo",
|
||||
"compress-$1": "Comprimir %1:",
|
||||
"target-exists-$1": "Alvo exite: %1",
|
||||
"search-results": "Procurar resultados",
|
||||
"download-options": "Opções de download",
|
||||
"favorite-series-list": "Lista de séries favoritas",
|
||||
"open-devtools": "Abrir as ferramentas de desenvolvedor",
|
||||
"open-the-download-directory": "Abrir o diretório de download",
|
||||
"search": "Procurar",
|
||||
"searching-from-each-website-and-downloading-the-work": "Procurar em todos os sites e baixar a obra.",
|
||||
"series-title-or-id": "Título da série ou 🆔",
|
||||
"start-downloading": "Começar o download",
|
||||
"web-fictions-comics-sites": "sites de web novels/quadrinhos",
|
||||
"do-not-limit-log-lines": "Não limitar linhas de registro",
|
||||
"cejs-online-novels-comics-downloader": "CeJS online novels / downloader de quadrinhos",
|
||||
"paste": "Colar",
|
||||
"start-release-updating": "Iniciando atualização...",
|
||||
"you-are-on-git-master-branch-skipping-release-upgrade-check": "Você está na master branch do git, ignorando a verificação de atualização de versão.",
|
||||
"checking-for-release-update": "Verificando se há atualizações...",
|
||||
"release-update-available-$1": "Atualização disponível: %1",
|
||||
"started-downloading-the-installation-package.-if-you-have-not-downloaded-the-program-leave-the-program-and-download-it-from-the-beginning.-you-can-increase-the-debug-level-of-the-message-bar-to-know": "o pacote de instalação começou a ser baixado.Se você fechar o programa antes do download terminar , quando abrir novamente o programa o download começara do 0.Você pode aumentar o tamanho da barra de depuração para saber o progresso do download.",
|
||||
"release-update-not-available.-current-version-$1": "Nova atualização não disponível. Versão atual: %1",
|
||||
"error-in-auto-updater-$1": "Erro no atualizador autómatico: %1",
|
||||
"download-speed-$2-bytes-s-downloaded-$1": "Velocidade de download: %2 butes/s - Baixado %2",
|
||||
"the-installation-package-has-been-downloaded-$1-and-it-is-estimated-that-it-will-take-$2-minutes-to-complete": "O pacote de instação já baixou %1 e o tempo estimado para terminar de baixar é de %2 minutos.",
|
||||
"new-release-downloaded-$1": "Nova atualização baixada: %1",
|
||||
"restart-the-application-to-apply-the-updates": "Reinicie o programa para que as atualizações sejam aplicadas.",
|
||||
"there-was-a-problem-updating-the-application-$1": "Houve um problema na atualização do programa: %1",
|
||||
"traditional-chinese-webcomics": "Manhuas em chinês tradicional",
|
||||
"simplified-chinese-webcomics": "Manhuas em chinês simplificado",
|
||||
"japanese-webcomics": "Mangás digitais em japonês",
|
||||
"english-webcomics": "Webcomics em inglês",
|
||||
"simplified-chinese-web-fictions": "Web novels em chinês simplificado",
|
||||
"japanese-web-fictions": "Web novels em japonês",
|
||||
"no-longer-maintained": "Não tem mais suporte",
|
||||
"download_options.acceptable_types": "Categoria de imagem aceitas (extensão). Separado pelo caractere \"|\" , exemplo \"webp|jpg|jpeg|png\". Se não tiver configurado não será verificado. Digite \"imagens\" para aceitar todas as imagens. Se a imagem baixada não estiver incluída no tipo especificado, será considerada um erro. Essa ferramenta só baixar certos tipos de imagens. Essa opção é apenas para verificar imagens, não para selecionar o tipo de imagem que você deseja baixar.",
|
||||
"download_options.allow_eoi_error": "Quando a imagem não possui uma marcação de EOI (end of image) ou se algo que não é uma imagem for detectada, o arquivo será armazenado à força mesmo assim.",
|
||||
"download_options.archive_all_good_images_only": "Comprime os arquivos de imagem sem nenhum erro.",
|
||||
"download_options.archive_images": "Comprime os arquivos de imagem depois que terminar de baixar a obra.",
|
||||
"download_options.archive_old_works": "Obras antigas arquivadas. Atualmente só é útil para quadrinhos que estão compactados, você deve definir `archive_images = true`. Não está predefinido para selar obras antigas. Se você digitar \"3M\", ele será armazenado só por mais de 3 meses sem atualizar a obra baixada. Quando você digita true, o intervalo predefinido é de \"0,5Y\" (meio ano), e assim irá atualizar o download da obra por meio ano",
|
||||
"download_options.archive_program_path": "Caminho do executável do 7-Zip com as barras.",
|
||||
"download_options.cache_title_to_id": "Ao baixar uma obra pelo id, o título da obra correspondente ao cache do id será salvo. Depois de definir esta função, você não precisará procurar novamente quando inserir o título da obra na próxima vez. Se esse recurso não estiver definido, ele não será gerado como um arquivo em cache (o padrão é .search_result_file_name =search.json).",
|
||||
"download_options.chapter_filter": "Filtra as palavras-chaves no título do capítulo que você quer baixar. Por exemplo, \"Volume\".",
|
||||
"download_options.chapter_time_interval": "Quando o site não permite vários acessos em pouco tempo para leitura / visualização, você pode definir o tempo de espera (ms) antes de baixar as informações do capítulo /o conteúdo do capítulo. Por exemplo, pode demorar 30 segundos para ler um capítulo uma situação normal. Você pode configurá-lo para \"30s\". Pode ser usado com a opção one_by_one.",
|
||||
"download_options.cookie": "Define o cookie a ser adicionado ao fazer o download.",
|
||||
"download_options.data_directory": "Predefina o diretório principal de download. Os subdiretórios de cada site (por exemplo, diretório_principal) serão criados neste diretório e os arquivos baixados por cada site serão colocados nesses subdiretórios. Se excluído, o diretório de download será recriado.",
|
||||
"download_options.images_archive_extension": "A extensão dos arquivos. Por exemplo, \"cbz\". Padrão: \"zip\".",
|
||||
"download_options.main_directory": "O local de download das imagens e do log. Depois de baixar a obra no site, ela será armazenado neste diretório.",
|
||||
"download_options.max_error_retry": "Número de tentativas: o número de vezes que o download falhou e tentou baixar novamente quando um erro ocorreu. Se um mesmo arquivo exceder esse número de tentativas, ele será ignorado. Se o valor for muito pequeno, é fácil ter imagens quebradas em alguns sites.",
|
||||
"download_options.min_length": "Tamanho mínimo do arquivo de imagem (bytes). Se o valor for muito pequeno, uma imagem quebrada que possa estar no capítulo poderá ser tratada como uma imagem normal sem erros.",
|
||||
"download_options.modify_work_list_when_archive_old_works": "Ao mesmo tempo, a obra que será arquivada será também excluída da lista de obras.",
|
||||
"download_options.one_by_one": "Baixe as imagens uma por uma. Útil apenas para quadrinhos, não é útil para novels. Os capítulos de novels são baixados um por um de uma vez só.",
|
||||
"download_options.overwrite_old_file": "Substitua o arquivo da novel antiga quando o arquivo da novel recém-baixada for maior.",
|
||||
"download_options.play_finished_sound": "Tocar um som quando terminar de baixar.",
|
||||
"download_options.preserve_chapter_page": "Se deve manter a página do capítulo ou não. Falso: não será salva, a página do capítulo existente será excluída. Nota: Se .reget_chapter não estiver definido, preserve_chapter_page não será útil.",
|
||||
"download_options.preserve_download_work_layer": "Mantenha a barra de download quando tiver terminado de baixar.",
|
||||
"download_options.preserve_work_page": "Se o cache de dados da execução deve ser mantido em .cache_directory_name.",
|
||||
"download_options.proxy": "Servidor de Proxy: \"usuário:senha@nomedohost:porta\"",
|
||||
"download_options.rearrange_list_file": "Reorganize a lista de arquivos.",
|
||||
"download_options.recheck": "Todos os capítulos e imagens de todas as obras foram detectadas. Mas não fará o download novamente da imagem concluída. Quando 'multi_parts_changed' for definido, será verificado novamente SOMENTE quando houver várias partes.",
|
||||
"download_options.regenerate": "Quando não há alteração no número de capítulos, o cache ainda será usado para reconstruir os dados. (Por exemplo, ao baixar uma novel, não puxará novamente os dados do site, apenas recriará o arquivo do e-book.)",
|
||||
"download_options.reget_chapter": "Recupere o conteúdo de cada capítulo detectado.",
|
||||
"download_options.remove_ebook_directory": "Depois que o e-book é gerado, o diretório do e-book é completamente excluído. Observação: você deve primeiramente instalar a versão 7-Zip ** 18.01 ou superior **.",
|
||||
"download_options.remove_images_after_archive": "Depois de comprimir os arquivos de imagem, delete os arquviso de imagem originais.",
|
||||
"download_options.save_preference": "Salvar suas preferências.",
|
||||
"download_options.search_again": "Procure pelo título da obra novamente. Padrão: Usando cache, não procure novamente.",
|
||||
"download_options.show_information_only": "Mostra as informações da obra na interface de linha de comando.",
|
||||
"download_options.skip_chapter_data_error": "Quando os dados do capítulo não estiverem disponíveis, vá para o próximo capítulo automaticamente.",
|
||||
"download_options.skip_error": "Ignorar / imagens quebradas. Quando dá o erro 404 \"a imagem não existe\", quando o arquivo é muito pequeno ou foi detectado como algo que não é uma imagem (se não houver EOI), o arquivo mesmo assim será armazenado à força.",
|
||||
"download_options.start_chapter": "Começar/Continuar o download. Vai ser convertido aumáticamente para .start_chapter_NO ou .start_chapter_title. Para capítulos baixados, você deve refazer a verificação.",
|
||||
"download_options.start_chapter_no": "Começar/continuar o download a partir dessa numeração do capítulo.",
|
||||
"download_options.start_chapter_title": "Começar/continuar o download a partir desse título do capítulo.",
|
||||
"download_options.start_list_serial": "Especifique o número serial da obra para começar o download. A obra antes disso será pulada. Geralmente usada apenas em configurações de linha de comando. Padrão:1",
|
||||
"download_options.timeout": "Tempo limite (ms) para baixar um site ou imagem. Se a quantidade de tempo limite for muito pequena (por exemplo, 10 segundos), facilmente falhará quando se estiver baixando um arquivo grande.",
|
||||
"download_options.user_agent": "Identificação do navegador. Sempre mantenha o mesmo reconhecimento do navegador antes e depois da execução, isso não deve afetar o download.",
|
||||
"download_options.vertical_writing": "Muda a orientação da novel de horizontal para vertical.",
|
||||
"download_options.write_chapter_metadata": "Escreve as informações de cada capítulo em um arquivo JSON com o mesmo nome (adicione a extensão .json) para facilitar a importação de outras ferramentas.",
|
||||
"download_options.write_image_metadata": "Escreve as informações de cada imagem em um arquivo JSON com o mesmo nome (adicione a extensão .json) para facilitar a importação de outras ferramentas.",
|
||||
"limit-log-lines": "Limitar linhas de registro",
|
||||
"local-language-name": "Português",
|
||||
"there-are-currently-$1-$2-messages-that-have-not-been-translated.-welcome-to-translate-with-us": "Atualmente tem %1 mensagens em %2 que não foram traduzidas. Você é bem-vindo a traduzir conosco!",
|
||||
"environment-variables-$1": "Variáveis de ambiente: %1",
|
||||
"default-download-directory-$1": "Diretório de download padrão: %1",
|
||||
"let-s-<a>translate-the-interface<-a>-together": "Vamos <a>traduzir a interface</a> juntos!",
|
||||
"copy-and-paste-shortcuts": "Atalhos",
|
||||
"copy-selected-items": "Copiar:",
|
||||
"invalid-theme-name-$1": "Nome do tema inválido: %1",
|
||||
"theme": "Tema:",
|
||||
"dark-theme": "Escuro",
|
||||
"default-theme": "Padrão",
|
||||
"light-theme": "Claro",
|
||||
"select-$1-path": "Selecione o caminho %1",
|
||||
"auto-save-download-options-and-favorite-series-list": "Salvar automáticamente as opções de download e a lista de séries favoritas",
|
||||
"auto-save-download-options": "Salvar automáticamente as opções de download",
|
||||
"automatic-storage-setting-has-been-enabled": "A configuração de armazenamento automático foi ativada",
|
||||
"automatic-storage-setting-has-been-disabled": "A configuração de armazenamento automático foi desativada",
|
||||
"reset-download-options-and-favorite-series-list": "Redefinir opções de download e a lista de séries favoritas",
|
||||
"reset-download-options": "Redefinir opções de download",
|
||||
"no-file-or-directory-selected": "Nenhum arquivo ou diretório selecionado",
|
||||
"path-of-$2-selected-$1": "Caminho do %2 selecionado: %1",
|
||||
"download-options-reset": "Redefinir as opções de download.",
|
||||
"updating-and-setting-up-download-website-for-$1-$2-→-$3": "Atualizando e configurando o site de download para%1: %2 → %3",
|
||||
"the-old-download-directory-$1-is-an-empty-directory-so-it-will-be-removed": "O antigo diretório de download \"%1\" é um diretório vazio, então será removido.",
|
||||
"file-new-line-$1-which-does-not-match-the-system-new-line-$2": "O arquivo %1 não corresponde ao arquivo do sistema %2.",
|
||||
"there-may-be-garbled-characters-when-opening-the-file": "Pode haver caracteres ilegíveis ao abrir o arquivo.",
|
||||
"one-click-fix-file-wrap": "Substituição de quebra de linhas",
|
||||
"modified-file-wrap.-you-must-save-a-list-of-favorite-works-to-take-effect": "Quebra de linha do arquivo modificada. Você deve salvar sua lista de séries favoritas para funcionar.",
|
||||
"enter-one-series-title-or-id-per-line": "Entre um título de série ou 🆔 por linha",
|
||||
"save-favorite-series-list": "Salve a lista de séries favoritas",
|
||||
"discard-editing-favorite-series-list": "Discartar as edições da lista de séries favoritas",
|
||||
"favorite-series-list-not-found-or-empty.-using-old-favorite-series-list": "Lista de séries favoritas não encontrada ou vazia. Usando a antiga lista de séries favoritas.",
|
||||
"series-has-ended": "A série acabou.",
|
||||
"remove-series-from-favorite-series-list": "Remover série da lista de séries favoritas.",
|
||||
"$1-ended-series-or-id-$2": "%1 acabou as séries ou 🆔: %2",
|
||||
"check-and-download-updates-of-all-favorite-series": "Verificar e baixar atualizações de todas as séries favoritas.",
|
||||
"there-is-no-favorite-series-list": "Não tem lista de séries favoritas",
|
||||
"favorite-series-list-is-empty": "A lista de séries favoritas está vazia",
|
||||
"edit-favorite-series-list": "Editar a lista de séries favoritas",
|
||||
"delete-all-$1-annotations-$2-repetitions-and-$3-blank-lines": "Deletar todas as %1 anotações, %2 repetições e %3 linhas em branco.",
|
||||
"there-are-$1-duplicate-titles-or-ids-in-the-list": "Tem %1 títulos ou ids duplicados na lista.",
|
||||
"annotate-duplicate-work-names-or-id": "Anotar nomes de séries ou 🆔 duplicados",
|
||||
"delete-duplicate-work-names-or-id": "Deltar nome de séries ou duplicados 🆔 duplicados",
|
||||
"commented-out-$1-finished-work-names-or-id": "Comentado %1 nomes de séries ou 🆔 concluídos",
|
||||
"reading-the-website-information-file-of-this-website-to-determine-whether-the-work-has-been-downloaded-and-completed": "Lendo o arquivo de informações desse site para determinar se a série foi baixada e concluída.",
|
||||
"when-choosing-a-website-it-can-cause-few-seconds-of-unresponsiveness": "Ao escolher um site, pode causar alguns segundos de não funcionamento do programa.",
|
||||
"reading-the-work-information-from-all-websites": "Lendo as informações de série de todos os sites",
|
||||
"imported-configuration-of-$1-$2": "Configuração importada de %1: %2",
|
||||
"imported-preference-of-$1-$2": "Preferência importada de %1: %2",
|
||||
"link": "link",
|
||||
"work_crawler-search_result_columns-site": "Site",
|
||||
"work_crawler-search_result_columns-title": "Título",
|
||||
"only-if-the-title-of-the-obtained-work-is-special-and-different-from-the-title-of-the-work-in-question-will-it-be-marked": "Apenas se o título da obra obtida for especial e diferente do título da obra em questão, será marcado.",
|
||||
"work_crawler-search_result_columns-author": "Autor",
|
||||
"work_crawler-search_result_columns-favorite": "Favorito",
|
||||
"work_crawler-favorite_list_label": "😘: Na lista de favoritos, ➕: adiciona a lista de favoritos",
|
||||
"work_crawler-search_result_columns-chapters": "#capítulos",
|
||||
"number-of-chapters": "Número de capítulos",
|
||||
"work_crawler-search_result_columns-once-downloaded": "Quando baixado",
|
||||
"work_crawler-search_result_columns-restricted": "Restrito",
|
||||
"some-chapters-need-to-be-paid-locked-restricted": "Alguns capítulos precisam ser comprados/ estão trancados / estão restritos",
|
||||
"work_crawler-search_result_columns-completed": "Concluído",
|
||||
"work_crawler-search_result_columns-status": "Status",
|
||||
"status-of-work": "Status do trabalho",
|
||||
"work_crawler-search_result_columns-lastest": "Mais recente",
|
||||
"lastest-chapter": "Capítulo mais recente",
|
||||
"information-from-the-list-of-chapters": "Informação da lista de capítulos",
|
||||
"click-on-the-website-name-to-download-this-work-on-this-website": "Clique no nome do site para baixar essa obra nese site.",
|
||||
"this-work-was-not-found-on-all-websites": "Essa obra não foi encontrada em nenhum dos sites.",
|
||||
"search-results-for-$1": "Buscando resultados para [%1]:",
|
||||
"download-all-works-found-on-$1-websites": "Baixar todas as obras encontradas em %1 sites",
|
||||
"add-all-the-works-found-on-$1-websites-to-the-website-s-favorite-list": "Adicionar todas as obras encontradas em %1 sites a lista de sites favoritos.",
|
||||
"download-all-work-from-favorite-lists": "Baixar todas as obras da lista de favoritos",
|
||||
"the-following-$1-websites-could-not-find-this-work": "Os seguintes sites %1 não conseguiram encontrar essa obra:",
|
||||
"error-reason": "Motivo do erro",
|
||||
"website-of-the-work": "Website",
|
||||
"please-specify-the-category-of-the-item-you-want-to-search-in-the-online-production-area": "Especifique a categoria do item que você deseja pesquisar na área de pesquisa online.",
|
||||
"input-series-name-first": "Coloque o nome da série primeiro.",
|
||||
"searching-for-$1-you-must-cancel-the-current-search-process-before-you-can-search-again": "Procurando por [%1], você deve cancelar o processo de pesquisa atual antes de poder pesquisar novamente.",
|
||||
"the-language-used-by-title-seems-to-be-$1-but-it-was-set-to-$2": "O idioma do título da série parece ser %1, mas o idioma especificado foi %2.",
|
||||
"searching-for-$1": "Procurando por [%1]...",
|
||||
"there-are-no-website-returns-yet": "Nenhum site retornou resultados ainda...",
|
||||
"cancel-search": "Cancelar pesquisa",
|
||||
"abandon-the-website-that-has-not-yet-completed-the-search": "Abandonr o(s) site(s) que ainda não concluiu(iram) a pesquisa",
|
||||
"this-website-is-forced-to-wait-too-long-and-is-not-searched-for-anti-blocking": "Este site foi forçado a esperar muito tempo e não é pesquisado por anti-bloqueio.",
|
||||
"completed-$1": "%1 completado",
|
||||
"$1-sites-are-still-searching-$2": "Ainda está sendo pesquisado em %1 sites: %2",
|
||||
"please-specify-site-to-download-first": "Por favor, especifique primeiro o site para poder baixar.",
|
||||
"current-path-$1": "Caminho atual: %1",
|
||||
"select-download-tool-$1": "Selecione a ferramenta de download: %1",
|
||||
"download-task-initialization-reading-work-information": "Iniciado o processo de download, lendo as informações da obra...",
|
||||
"stop": "Parar",
|
||||
"pause-resume": "Parar/retomar",
|
||||
"cancel": "Cancelar",
|
||||
"cancel-download": "Cancelar o download",
|
||||
"continue": "Continuar",
|
||||
"input-series-name-or-id-first": "Coloque o nome da série ou 🆔 primeiro.",
|
||||
"warning-unable-to-access-the-storage-directory-$1": "Aviso: Não foi possível acessar o diretório de armazenamento [%1]!",
|
||||
"the-downloaded-file-will-be-placed-in-the-default-directory": "O arquivo baixado será colocado no diretório padrão.",
|
||||
"to-use-the-graphical-interface-please-execute-`$1`": "Para usar interface gráfica, por favor, execute \"%1\".",
|
||||
"option=true": "opção=true",
|
||||
"option=value": "opção=valor",
|
||||
"usage": "Uso:",
|
||||
"work-title-work-id": "título da obra / id da obra",
|
||||
"options": "Opções:"
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Deltaspace",
|
||||
"Gulka.nik",
|
||||
"Kareyac",
|
||||
"NR Deblocked",
|
||||
"Okras",
|
||||
"Pacha Tchernof",
|
||||
"Tanzun",
|
||||
"UniCollab",
|
||||
"Артём 13327",
|
||||
"Загребин Илья"
|
||||
]
|
||||
},
|
||||
"españa": "Испания",
|
||||
"french-republican-calendar": "Французский республиканский календарь",
|
||||
"untranslated-message-count": "1000+",
|
||||
"clear-log": "Очистить журнал",
|
||||
"show-hidden-log": "Показать / скрыть журнал",
|
||||
"load-failed": "Загрузка не удалась",
|
||||
"log-console": "Консоль журнала",
|
||||
"coordinates": "Координаты: ",
|
||||
"latitude": "Широта: ",
|
||||
"longitude": "Долгота: ",
|
||||
"output-format": "Формат вывода",
|
||||
"prefix": "префикс",
|
||||
"timezone": "Часовой пояс: ",
|
||||
"warning-only-for-developers": "ВНИМАНИЕ! Только для разработчиков.",
|
||||
"batch": "ВЕТВЬ",
|
||||
"loading": "Загружается…",
|
||||
"myanmar": "Мьянма",
|
||||
"vietnam": "Вьетнам",
|
||||
"unpin": "Открепить",
|
||||
"pin": "Закрепить",
|
||||
"remove-the-column": "Убрать колонку",
|
||||
"group": "Группа",
|
||||
"$1-$2-$3": "%3.%2.%1",
|
||||
"calendar-table": "КАЛЕНДАРНАЯ ТАБЛИЦА",
|
||||
"total-$1-time-period-records": "%1 период времени {{PLURAL:%1|запись|записи|записей}}",
|
||||
"total-$1-year-records": "%1 год {{PLURAL:%1|запись|записи|записей}}",
|
||||
"remove-all": "Убрать ВСЁ",
|
||||
"add-the-column": "Добавить колонку",
|
||||
"navigation": "Навигация: ",
|
||||
"all-countries": "Все страны",
|
||||
"contemporary-period": "Современный период",
|
||||
"example": "ПРИМЕР",
|
||||
"record": "ЗАПИСЬ",
|
||||
"concept": "КОНЦЕПЦИЯ",
|
||||
"timeline": "ХРОНОЛОГИЯ",
|
||||
"configuration": "КОНФИГУРАЦИЯ",
|
||||
"development": "РАЗРАБОТКА",
|
||||
"feedback": "ОБРАТНАЯ СВЯЗЬ",
|
||||
"france": "Франция",
|
||||
"great-britain": "Великобритания",
|
||||
"spain": "Испания",
|
||||
"calendar-used": "Используемый календарь",
|
||||
"data-source": "Источник данных",
|
||||
"personal-name": "Личное имя",
|
||||
"true-name": "Настоящее имя",
|
||||
"posthumous-name": "Посмертное имя",
|
||||
"temple-name": "Название храма",
|
||||
"born": "Род.",
|
||||
"died": "Ум.",
|
||||
"coronation": "Коронация",
|
||||
"predecessor": "Предшественник(-ца)",
|
||||
"successor": "Последователь(-ница)",
|
||||
"father": "Отец",
|
||||
"mother": "Мать",
|
||||
"spouse": "Супруг/Супруга",
|
||||
"initializing": "Инициализируется…",
|
||||
"function-(domain_name-arg)-{-return-$1-+-(1-<-arg-1-?-entries-entry-)-+-loaded.-}": "function (domain_name, arg) { var c, d; return '%1 ' + ((d = (c = arg[1] % 100) % 10) < 5 && (c < 10 || c > 20) ? d == 1 ? 'запись загружена' : 'записи загружены' : 'записей загружено') + '.'; }",
|
||||
"aries": "Овен",
|
||||
"taurus": "Телец",
|
||||
"gemini": "Близнецы",
|
||||
"cancer": "Рак",
|
||||
"leo": "Лев",
|
||||
"virgo": "Дева",
|
||||
"libra": "Весы",
|
||||
"scorpio": "Скорпион",
|
||||
"sagittarius": "Стрелец",
|
||||
"capricorn": "Козерог",
|
||||
"aquarius": "Водолей",
|
||||
"pisces": "Рыбы",
|
||||
"lunar-phase": "лунная фаза",
|
||||
"contemporary-period-(same-country)": "Современный период (та же страна)",
|
||||
"moon-longitude": "Лунная долгота",
|
||||
"moon-latitude": "Лунная широта",
|
||||
"calendar": "календарь",
|
||||
"gregorian-calendar": "Григорианский календарь",
|
||||
"julian-calendar": "Юлианский календарь",
|
||||
"ethiopian-calendar": "Эфиопский календарь",
|
||||
"armenian-calendar": "Армянский календарь",
|
||||
"byzantine-calendar": "Византийский календарь",
|
||||
"egyptian-calendar": "Египетский календарь",
|
||||
"china": "Китай",
|
||||
"zodiac-sign": "знак зодиака",
|
||||
"famous-places": "Знаменитые места: ",
|
||||
"loading-$1$": "Загружается %1%…",
|
||||
"finished": "завершено",
|
||||
"no-changes": "Без изменений.",
|
||||
"no-page-modified": "ни одна страница не изменена",
|
||||
"astronomy": "астрономия",
|
||||
"full-moon": "полнолуние",
|
||||
"moonrise": "восход луны",
|
||||
"sunrise": "восход солнца",
|
||||
"log-type-debug": "отладка",
|
||||
"log-type-error": "ошибка",
|
||||
"log-type-fatal": "смертельный",
|
||||
"log-type-info": "информация",
|
||||
"log-type-log": "журнал",
|
||||
"log-type-trace": "след",
|
||||
"log-type-warn": "предупреждение",
|
||||
"language": "Язык",
|
||||
"got-url-from-the-network-$1-$2-bytes": "Получен URL-адрес из сети: %1, %2 байт{{PLURAL:%2|||а}}.",
|
||||
"waiting-$1-$2-connections-$3": "Ожидание %1соединени{{PLURAL:%1|я|й}} / %2: %3",
|
||||
"write-$2-bytes-to-file-$1-$3": "Записать %2 байт{{PLURAL:%2|||а}} в файл [%1]: %3",
|
||||
"failed-to-write-$2-bytes-to-$1-$3": "Не удалось записать %2 байт{{PLURAL:%2|||а}} в [%1]: %3",
|
||||
"download-$1": "Скачать %1",
|
||||
"Comma-separator": ", ",
|
||||
"content-is-empty": "Содержимое отсутствует",
|
||||
"no-reason-provided": "Причина не указана",
|
||||
"$1-results": "%1 {{PLURAL:%1|результат|результата|результатов}}",
|
||||
"found-$2-query-modules-$1": "Найдено 1 модул{{PLURAL:%2|ь|ей|я}} запрос{{PLURAL:%2|а|ов|а}}: %1",
|
||||
"does-not-exist": "Не существует",
|
||||
"total-$1-pages-redirected-to-this-page": "Всего %1 страниц{{PLURAL:%1|а||ы}} перенаправлен{{PLURAL:%1|а|о|ы}} на эту страницу",
|
||||
"no-change": "без изменений",
|
||||
"finished-$1": "завершено: %1",
|
||||
"first-it-takes-$1-to-get-$2-pages": "Во-первых, для получения %2 страниц{{PLURAL:%2|ы|}} требуется %1.",
|
||||
"processed-$1-pages": "Обработана %1 страниц{{PLURAL:%1|а||ы}}.",
|
||||
"edit-$1": "Редактировать %1",
|
||||
"$1-pages-processed": "%1 {{PLURAL:%2|страница обработана|страницы обработаны|страниц обработаны}}",
|
||||
"$1-pages-have-not-changed": "%1 {{PLURAL:%1|страница не была изменена|страницы не были изменены|страниц не было изменено}},",
|
||||
"no-user-name-or-password-provided.-the-login-attempt-was-abandoned": "Имя пользователя или пароль не указаны. Попытка входа была прервана.",
|
||||
"must-rename-$1-to-$2-to-work": "Переименуйте %1 в %2 для работы!",
|
||||
"directories": "директории",
|
||||
"directory": "директория",
|
||||
"file": "файл",
|
||||
"function": "функция",
|
||||
"number": "число",
|
||||
"string": "строка",
|
||||
"check-only-$1-chapters-$2": "Проверить только %1 глав{{PLURAL:%1|у||ы}}: %2",
|
||||
"cancel-download-«$1»": "Отменить скачивание «%1».",
|
||||
"skipping-this-section-without-downloading": "Пропустить этот раздел без скачивания.",
|
||||
"«$1»": "«%1»: ",
|
||||
"$1-$2-$3-images": "%1 [%2] %3 изображени{{PLURAL:%3|е|й|я}}.",
|
||||
"waiting-for-$1-before-downloading-the-$2-image": "Ждём %1 перед загрузкой %2 {{PLURAL:%2|картинку|файлов}}",
|
||||
"$1-image(s)-left": "Осталось %1 изображени{{PLURAL:%1|е|й|я}}...",
|
||||
"$1-$2-image-download-error-recorded": "%1: зарегистрирована ошибка (загрузка %2 изображени{{PLURAL:%2|я|й}})",
|
||||
"(this-download-has-processed-a-total-of-$1-word)": "(Эта загрузка обработала всего %1 {{PLURAL:1|слово|слов}}",
|
||||
"(this-download-has-processed-a-total-of-$1-image)": "(Эта загрузка обработала всего %1 {{PLURAL:1|слово|слов}}",
|
||||
"$1-this-download-has-a-total-of-$2-image-download-errors": "%1: %2 ошиб{{PLURAL:%2|ка|ок|ки}} при скачивании изображений.",
|
||||
"chapter-$1": "%1-я глава: ",
|
||||
"too-few-words-($1-characters)": "Слишком мало слов (%1 символ{{PLURAL:%1||ов|а}})",
|
||||
"number-of-errors-$1": "Есть %1 ошиб{{PLURAL:%1|ка|ок|ки}}",
|
||||
"image-damaged": "Изображение повреждено: ",
|
||||
"failed-to-get-image": "Не удалось получить изображение. ",
|
||||
"$1-bytes-too-small": "%1 байт{{PLURAL:%1|||а}}, слишком мало:",
|
||||
"$1-bytes": "%1 {{PLURAL:%1|байт|байта|байтов}}:",
|
||||
"waiting-for-$2-and-retake-the-image-$1": "Ожидайте %2 и возьмите еще раз изображение %1.",
|
||||
"there-are-still-$1-reading-volume-but-$2-$3-chapter-has-not-been-downloaded-yet.-so-checking-from-this-chapter": "Остался %1 билет{{PLURAL:%1||ов}} на чтение, но глава %2/%3 еще не загружена. Итак, проверка из этой главы.",
|
||||
"continue-downloading-«$1»": "Продолжить скачивание «%1».",
|
||||
"estimated-$1-to-download": "Примерно %1 на скачивание.",
|
||||
"work_data.author": "Автор",
|
||||
"work_data.chapter_count": "Количества глав",
|
||||
"work_data.description": "Описание",
|
||||
"work_data.status": "Состояние",
|
||||
"work_data.url": "URL-адрес",
|
||||
"work_status-finished": "Завершено",
|
||||
"work_status-not-found": "Не найдено",
|
||||
"downloading-$1-table-of-contents-@-$2": "%1 скачивается — Содержание @ %2",
|
||||
"the-e-book-will-be-regenerated-from-$1$2": "Электронная книга будет сгенерирована заново с %1 %2.",
|
||||
"download-from-§$1": "Скачать из §%1.",
|
||||
"of-file-$1": "  файла %1",
|
||||
"toc.description": "описание",
|
||||
"toc.language": "язык",
|
||||
"toc.publisher": "издатель",
|
||||
"toc.source": "источник",
|
||||
"contents": "Содержание",
|
||||
"italy": "Италия",
|
||||
"poland": "Польша",
|
||||
"portugal": "Португалия",
|
||||
"luxembourg": "Люксембург",
|
||||
"netherlands": "Нидерланды",
|
||||
"bavaria": "Бавария",
|
||||
"austria": "Австрия",
|
||||
"switzerland": "Швейцария",
|
||||
"hungary": "Венгрия",
|
||||
"germany": "Германия",
|
||||
"norway": "Норвегия",
|
||||
"denmark": "Дания",
|
||||
"finland": "Финляндия",
|
||||
"bulgaria": "Болгария",
|
||||
"soviet-union": "Советский Союз",
|
||||
"serbia": "Сербия",
|
||||
"romania": "Румыния",
|
||||
"greece": "Греция",
|
||||
"turkey": "Турция",
|
||||
"egypt": "Египет",
|
||||
"$1-years-and-$2-months": "%1 {{PLURAL:%1|год|года|лет}} и %2 {{PLURAL:%1|месяц|месяца|месяцев}}",
|
||||
"$1-y-$2-m": "%1 г. %2 мес.",
|
||||
"$1-years": "%1 {{PLURAL:%1|год|года|лет}}",
|
||||
"$1-y": "%1 г.",
|
||||
"$1-months": "%1 {{PLURAL:%1|месяц|месяца|месяцев}}",
|
||||
"$1-m": "%1 мес.",
|
||||
"$1-milliseconds": "%1 {{PLURAL:%1|милисекунда|милисекунды|милисекунд}}",
|
||||
"$1-ms": "%1 мс",
|
||||
"$1-seconds": "%1 {{PLURAL:%1|секунда|секунды|секунд}}",
|
||||
"$1-s": "%1 с",
|
||||
"$1-minutes": "%1 {{PLURAL:%1|минута|минуты|минут}}",
|
||||
"$1-min": "%1 мин.",
|
||||
"$1-hours": "%1 {{PLURAL:%1|час|часа|часов}}",
|
||||
"$1-hr": "%1 ч.",
|
||||
"$1-days": "%1 {{PLURAL:%1|день|дня|дней}}",
|
||||
"$1-d": "%1 дн.",
|
||||
"2-days-before-yesterday-$h-$m": "день до позапозавчера, %H:%M",
|
||||
"the-day-before-yesterday-$h-$m": "позапозавчера, %H:%M",
|
||||
"yesterday-$h-$m": "вчера, %H:%M",
|
||||
"today-$h-$m": "сегодня, %H:%M",
|
||||
"tomorrow-$h-$m": "завтра, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "послезавтра, %H:%M",
|
||||
"2-days-after-tomorrow-$h-$m": "послепослезавтра, %H:%M",
|
||||
"3-days-after-tomorrow-$h-$m": "после послепослезавтра, %H:%M",
|
||||
"now": "сейчас",
|
||||
"several-seconds-ago": "несколько секунд назад",
|
||||
"soon": "скоро",
|
||||
"$1-seconds-ago": "{{PLURAL:%1|%1 секунду|%1 секунды|%1 секунд}} назад",
|
||||
"$1-seconds-later": "через {{PLURAL:%1|%1 секунду| %1 секунды|%1 секунд}}",
|
||||
"$1-minutes-ago": "{{PLURAL:%1|%1 минуту|%1 минуты|%1 минут}} назад",
|
||||
"$1-minutes-later": "через {{PLURAL:%1|%1 минуту|%1 минуты|%1 минут}}",
|
||||
"$1-hours-ago": "{{PLURAL:%1|%1 час|%1 часа|%1 часов}} назад",
|
||||
"$1-hours-later": "через {{PLURAL:%1|%1 час|%1 часа|%1 часов}}",
|
||||
"$1-days-ago": "%1 {{PLURAL:%1|день|дня|дней}} назад",
|
||||
"$1-days-later": "через {{PLURAL:%1|%1 день|%1 дня|%1 дней}}",
|
||||
"$1-weeks-ago": "{{PLURAL:%1|%1 неделю|%1 недели|%1 недель}} назад",
|
||||
"$1-weeks-later": "через {{PLURAL:%1|%1 неделю|%1 недели|%1 недель}}",
|
||||
"note": "Примечание",
|
||||
"skip-$1-the-$2-is-for-reference-purpose-only": "Пропустить [%1]: %2 используется только для справочных целей.",
|
||||
"japan": "Япония",
|
||||
"korea": "Корея",
|
||||
"thailand": "Таиланд",
|
||||
"india": "Индия",
|
||||
"babylon": "Вавилон",
|
||||
"persia": "Персия",
|
||||
"↑back-to-toc": "↑Назад к Таблице с cодержанием",
|
||||
"contents-of-$1": "Содержание [%1]",
|
||||
"expand": "развернуть",
|
||||
"collapse": "свернуть",
|
||||
"illegal-$1-$2": "нелегально %1: [%2]",
|
||||
"skip-the-loaded-file-$1": "Пропустить загружающийся файл: %1",
|
||||
"duplicate-task-name-$1!-will-overwrite-old-task-with-new-task-$2→$3": "Повторяющееся имя задачи %1! Будет перезаписана старая задача новой задачей: %2→%3",
|
||||
"number-of-templates": "#",
|
||||
"archiving-operation": "Операция архивирования",
|
||||
"edit-mark": "И",
|
||||
"the-local-title-in-the-interlanguage-template-is-same-as-the-foreign-language-title": "Местное название в межъязыковом шаблоне совпадает с названием на иностранном языке.",
|
||||
"local-page-title-contains-the-local-title-in-the-interlanguage-template": "Локальный заголовок страницы содержит локальный заголовок в межъязыковом шаблоне",
|
||||
"(new-page)": "(новая страница)",
|
||||
"append-$1-topics": "Добавить %1{{PLURAL:%1|тему|тем}}",
|
||||
"remove-$1-topics": "Убрать %1 {{PLURAL:%1|тему|тем}}",
|
||||
"the-link-redirects-to-a-page-that-is-not-embedded-in-this-template-$1": "Ссылка перенаправляет на страницу, не встроенную в этот шаблон: %1",
|
||||
"very-sorry.-undo-the-robot-s-wrong-edits.-($1)": "Очень жаль. Отмените неправильные правки бота. (%1)",
|
||||
"debug-level": "уровень отладки",
|
||||
"contains-$1-$2-images": "Содержит %1/%2 {{PLURAL:%2|изображения|изображений}}",
|
||||
"search": "Поиск",
|
||||
"searching-from-each-website-and-downloading-the-work": "Поиск с каждого веб-сайта и загрузка работы.",
|
||||
"local-language-name": "русский",
|
||||
"there-are-currently-$1-$2-messages-that-have-not-been-translated.-welcome-to-translate-with-us": "В настоящее время есть {{PLURAL:%1|%1 сообщение|%1 сообщения|%1 сообщений}}, которые не были переведены на %2. Добро пожаловать к нам на перевод!",
|
||||
"link": "ссылка",
|
||||
"work_crawler-search_result_columns-author": "Автор",
|
||||
"cancel": "Отмена",
|
||||
"update-completed": "Обновление завершено. ",
|
||||
"usage": "Использование:",
|
||||
"options": "Настройки:"
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Sabelöga",
|
||||
"WikiPhoenix"
|
||||
]
|
||||
},
|
||||
"españa": "Spanien",
|
||||
"french-republican-calendar": "Franska revolutionskalendern",
|
||||
"untranslated-message-count": "1000+",
|
||||
"clear-log": "Rensa logg",
|
||||
"show-hidden-log": "Visa / dölj logg",
|
||||
"load-failed": "Kunde inte ladda",
|
||||
"log-console": "Journalpanel",
|
||||
"coordinates": "Koordinater: ",
|
||||
"customize-output-format": "Anpassa utmatningsformat",
|
||||
"latitude": "Latitud: ",
|
||||
"longitude": "Longitud: ",
|
||||
"output-format": "Utmatningsformat",
|
||||
"prefix": "prefix",
|
||||
"timezone": "Tidszon: ",
|
||||
"warning-only-for-developers": "VARNING: Endast för utvecklare.",
|
||||
"batch": "BUNT",
|
||||
"loading": "Laddar...",
|
||||
"c.-$1": "ungef. %1",
|
||||
"myanmar": "Myanmar",
|
||||
"vietnam": "Vietnam",
|
||||
"unpin": "Lösgör",
|
||||
"pin": "Fäst",
|
||||
"remove-the-column": "Ta bort kolumnen",
|
||||
"group": "Gruppera",
|
||||
"$1-$2-$3": "%1/%2/%3",
|
||||
"$1-bce": "%1 f.v.t.",
|
||||
"$1-ce": "%1 f.v.t.",
|
||||
"calendar-date": "kalenderdatum",
|
||||
"calendar-table": "KALENDERTABELL",
|
||||
"total-$1-time-period-records": "%1 registreringar",
|
||||
"total-$1-year-records": "%1 år",
|
||||
"no-calendar-to-list": "Ingen kalender att lista!",
|
||||
"try-to-append-date": "Testa att tillfoga datum",
|
||||
"remove-all": "Ta bort ALLT",
|
||||
"add-the-column": "Lägg till kolumnen",
|
||||
"data-layer": "Datalager",
|
||||
"navigation": "Navigering: ",
|
||||
"all-countries": "Alla länder",
|
||||
"example": "EXEMPEL",
|
||||
"record": "REGISTRERING",
|
||||
"concept": "KONCEPT",
|
||||
"timeline": "TIDSLINJE",
|
||||
"configuration": "KONFIGURERING",
|
||||
"tagging": "TAGGNING",
|
||||
"development": "UTVECKLING",
|
||||
"feedback": "ÅTERKOPPLING",
|
||||
"julian-day-number": "Julianskt datumnummer",
|
||||
"france": "Frankrike",
|
||||
"great-britain": "Storbritannien",
|
||||
"spain": "Spanien",
|
||||
"calendar-used": "Kalender som används",
|
||||
"data-source": "Datakälla",
|
||||
"personal-name": "Personnamn",
|
||||
"courtesy-name": "Artighetsnamn",
|
||||
"art-name": "Artistnamn",
|
||||
"true-name": "Riktigt namn",
|
||||
"posthumous-name": "Postumt namn",
|
||||
"temple-name": "Tempelnamn",
|
||||
"born": "Född",
|
||||
"died": "Död",
|
||||
"reign": "Styre",
|
||||
"coronation": "Kröning",
|
||||
"predecessor": "Föregångare",
|
||||
"successor": "Efterträdare",
|
||||
"father": "Far",
|
||||
"mother": "Mor",
|
||||
"spouse": "Make/maka",
|
||||
"showing-timeline": "Visar tidslinje",
|
||||
"era-$1": "Era %1",
|
||||
"initializing": "Initierar...",
|
||||
"function-(domain_name-arg)-{-return-$1-+-(1-<-arg-1-?-entries-entry-)-+-loaded.-}": "function (domain_name, arg) { return '%1 ' + (1 < arg[1] ? 'inlägg' : 'inlägg') + ' laddad.'; }",
|
||||
"aries": "Väduren",
|
||||
"taurus": "Oxen",
|
||||
"gemini": "Tvillingarna",
|
||||
"cancer": "Kräftan",
|
||||
"leo": "Lejonet",
|
||||
"virgo": "Jungfrun",
|
||||
"libra": "Vågen",
|
||||
"scorpio": "Skorpionen",
|
||||
"sagittarius": "Skytten",
|
||||
"capricorn": "Stenbocken",
|
||||
"aquarius": "Vattumannen",
|
||||
"pisces": "Fiskarna",
|
||||
"lunar-phase": "månfas",
|
||||
"week-day": "Veckodag",
|
||||
"julian-date": "Julianskt datum",
|
||||
"week-date": "Veckodatum",
|
||||
"unix-time": "Unixtid",
|
||||
"calendar": "kalender",
|
||||
"gregorian-calendar": "Gregorianska kalendern",
|
||||
"julian-calendar": "Julianska kalendern",
|
||||
"calendar-note": "Kalenderanteckning",
|
||||
"china": "Kina",
|
||||
"loading-$1$": "Laddar %1%...",
|
||||
"finished": "klar",
|
||||
"no-changes": "Inga ändringar.",
|
||||
"no-page-modified": "ingen sida modifierad",
|
||||
"to-chinese-numerals": "Till kinesiska siffror",
|
||||
"astronomy": "astronomi",
|
||||
"log-type-debug": "felsökning",
|
||||
"log-type-em": "emfas",
|
||||
"log-type-error": "fel",
|
||||
"log-type-fatal": "kritisk",
|
||||
"log-type-info": "info",
|
||||
"log-type-log": "logg",
|
||||
"log-type-trace": "spår",
|
||||
"log-type-warn": "varna",
|
||||
"not-yet-implemented": "Inte ännu implementerad!",
|
||||
"specified-domain-$1-is-not-yet-loaded.-you-may-need-to-set-the-force-flag": "Angiven domän [%1] har ännu inte laddats. Du kan behöva ange FORCE-flagga.",
|
||||
"language": "Språk",
|
||||
"content-is-empty": "Innehållet är tomt",
|
||||
"content-is-not-settled": "Innehållet har inte etablerats",
|
||||
"abandon-change": "Överge ändring",
|
||||
"no-reason-provided": "Ingen anledning gavs",
|
||||
"continue-key": "Fortsättningsnyckel",
|
||||
"no-change": "ingen ändring",
|
||||
"finished-$1": "klar: %1",
|
||||
"$1-elapsed-$3-at-$2": "%1 passerad, %3 vid %2",
|
||||
"first-it-takes-$1-to-get-$2-pages": "Först tar den %1 och får %2 sidor.",
|
||||
"$1-pages-processed": "%1 sidor bearbetade",
|
||||
"$1-pages-have-not-changed": "%1 sidor har inte ändrats,",
|
||||
"$1-elapsed": "%1 passerad.",
|
||||
"stopped-give-up-editing": "'''Stannade''', överge redigering.",
|
||||
"function": "funktion",
|
||||
"number": "nummer",
|
||||
"contents": "Innehåll",
|
||||
"$1-years-and-$2-months": "%1 år %2 m",
|
||||
"$1-y-$2-m": "%1 år %2 m",
|
||||
"$1-years": "%1 år",
|
||||
"$1-y": "%1 år",
|
||||
"$1-months": "%1 m",
|
||||
"$1-m": "%1 m",
|
||||
"$1-milliseconds": "%1 ms",
|
||||
"$1-ms": "%1 ms",
|
||||
"$1-seconds": "%1 s",
|
||||
"$1-s": "%1 s",
|
||||
"$1-minutes": "%1 min",
|
||||
"$1-min": "%1 min",
|
||||
"$1-hours": "%1 tm",
|
||||
"$1-hr": "%1 tm",
|
||||
"$1-days": "%1 d",
|
||||
"$1-d": "%1 d",
|
||||
"2-days-before-yesterday-$h-$m": "I förrförrgår, %H:%M",
|
||||
"the-day-before-yesterday-$h-$m": "i förrgår, %H:%M",
|
||||
"yesterday-$h-$m": "igår, %H:%M",
|
||||
"today-$h-$m": "idag, %H:%M",
|
||||
"tomorrow-$h-$m": "imorgon, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "i övermorgon, %H:%M",
|
||||
"2-days-after-tomorrow-$h-$m": "i överövermorgon, %H:%M",
|
||||
"3-days-after-tomorrow-$h-$m": "om fyra dagar, %H:%M",
|
||||
"now": "nu",
|
||||
"several-seconds-ago": "flera sekunder sedan",
|
||||
"soon": "snart",
|
||||
"$1-seconds-ago": "%1 sekunder sen",
|
||||
"$1-seconds-later": "%1 sekunder senare",
|
||||
"$1-minutes-ago": "%1 minuter sedan",
|
||||
"$1-minutes-later": "%1 minuter senare",
|
||||
"$1-hours-ago": "%1 timme sedan",
|
||||
"$1-hours-later": "%1 timme senare",
|
||||
"$1-days-ago": "%1 dag sedan",
|
||||
"$1-days-later": "%1 dagar senare",
|
||||
"$1-weeks-ago": "%1 veckor sedan",
|
||||
"$1-weeks-later": "%1 veckor senare",
|
||||
"era-date": "Datum i era",
|
||||
"note": "Anteckning",
|
||||
"era-name": "Erans namn",
|
||||
"skip-$1-the-$2-is-for-reference-purpose-only": "Hoppa över [%1]: %2 ska bara användas för referenser.",
|
||||
"ryukyu": "Ryukyu",
|
||||
"japan": "Japan",
|
||||
"korea": "Korea",
|
||||
"chinese-domination-of-vietnam": "Kinesisk dominans över Vietnam",
|
||||
"late-dynastic-epoch": "Sen dynastisk epok",
|
||||
"thailand": "Thailand",
|
||||
"india": "Indien",
|
||||
"persia": "Persien",
|
||||
"macedon": "Makedonien",
|
||||
"classical-athens": "Klassiska Aten",
|
||||
"sparta": "Sparta",
|
||||
"↑back-to-toc": "↑Tillbaka till innehållsförteckning",
|
||||
"contents-of-$1": "Innehåll av [%1]",
|
||||
"expand": "visa",
|
||||
"collapse": "dölj",
|
||||
"illegal-$1-$2": "Otillåten %1: [%2]",
|
||||
"debug-level": "felsökningsnivå"
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"@metadata": {
|
||||
"authors": [
|
||||
"Riverman"
|
||||
]
|
||||
},
|
||||
"french-republican-calendar": "Француз Республикан Календар",
|
||||
"untranslated-message-count": "1000+",
|
||||
"era-calendar-converter": "Эра календар конвертери",
|
||||
"loading": "Чүдүрүг...",
|
||||
"group": "Бөлүк",
|
||||
"data-layer": "Медээлел каъды",
|
||||
"navigation": "Навигас:",
|
||||
"example": "ЧИЖЕК",
|
||||
"configuration": "КОНФИГУРАС",
|
||||
"julian-day-number": "Юлиан хүн дугаары",
|
||||
"great-britain": "Улуг Британия",
|
||||
"calendar-used": "Календар ажыглаттынган",
|
||||
"art-name": "Уран чүүл ады",
|
||||
"true-name": "Шын ады",
|
||||
"posthumous-name": "Мөчээн соонда ады",
|
||||
"died": "Мөчээни",
|
||||
"coronation": "Коронас",
|
||||
"predecessor": "Мурнундагызы",
|
||||
"successor": "Салгакчызы",
|
||||
"father": "Ада",
|
||||
"mother": "Ие",
|
||||
"era-$1": "Эра %1",
|
||||
"taurus": "Буга",
|
||||
"gemini": "Ийис",
|
||||
"leo": "Лео",
|
||||
"virgo": "Кыс",
|
||||
"pisces": "Балык",
|
||||
"contemporary-period-(same-country)": "Амгы шаг (ол-ла чурт)",
|
||||
"new-moon": "чаа ай",
|
||||
"sunrise-sunset": "хүн үнери / хүн ажары",
|
||||
"gregorian-calendar": "Грегориан календар",
|
||||
"revised-julian-calendar": "Эде көрдүнген Юлиан календар",
|
||||
"islamic-calendar": "Ислам календар",
|
||||
"modern-iranian-calendar": "Амгы шагның Иран календары",
|
||||
"long-count": "Узун санаашкын",
|
||||
"hindu-calendar": "Индий календар",
|
||||
"bahá-í-calendar": "Бахаи календар",
|
||||
"coptic-calendar": "Копт календар",
|
||||
"ethiopian-calendar": "Эфиоп календар",
|
||||
"byzantine-calendar": "Византий календар",
|
||||
"china": "Кыдат",
|
||||
"year-naming": "Чыл адаары",
|
||||
"chinese-zodiac": "Кыдат зодиак",
|
||||
"japanese-imperial-year": "Япон империал чыл",
|
||||
"ab-urbe-condita": "Хоорай",
|
||||
"holocene-calendar": "Голосен календар",
|
||||
"gregorian-reform": "Грегориан календар хүлээшкини",
|
||||
"loading-$1$": "Чүдүрери %1%...",
|
||||
"astronomy": "астрономия",
|
||||
"full-moon": "долу ай",
|
||||
"hybrid-solar-eclipse": "гибрид хүн туттуруушкуну",
|
||||
"partial-solar-eclipse": "долу эвес хүн туттуруушкуну",
|
||||
"lunar-eclipse": "ай туттуруушкуну",
|
||||
"nautical-twilight-end": "далай имир төнчүзү",
|
||||
"log-type-info": "инфо",
|
||||
"language": "Дыл",
|
||||
"content-is-not-settled": "Контентини дугурушпаан",
|
||||
"no-change": "өскерлиишкин чок",
|
||||
"finished-$1": "доозулган: %1",
|
||||
"luxembourg": "Люксембург",
|
||||
"netherlands": "Недерланд",
|
||||
"bavaria": "Бавариа",
|
||||
"austria": "Австрия",
|
||||
"hungary": "Венгрия",
|
||||
"norway": "Норвегия",
|
||||
"denmark": "Дани",
|
||||
"$1-milliseconds": "%1 мс",
|
||||
"$1-ms": "%1 мс",
|
||||
"$1-seconds": "%1 с",
|
||||
"$1-s": "%1 с",
|
||||
"today-$h-$m": "бо хүн, %H:%M",
|
||||
"the-day-after-tomorrow-$h-$m": "эртенги хүн соонда хүн, %H:%M",
|
||||
"2-days-after-tomorrow-$h-$m": "Эртенги хүн соонда 2 хүн, %H:%M",
|
||||
"soon": "удавас",
|
||||
"$1-seconds-later": "%1 секунда болгаш",
|
||||
"$1-hours-later": "%1 шак болгаш",
|
||||
"$1-days-ago": "%1 хүн бурунгаар",
|
||||
"era-name": "Эра ады",
|
||||
"japan": "Япония",
|
||||
"mesopotamian": "Месопотам",
|
||||
"neo-assyrian": "Чаа Ассирий",
|
||||
"babylon": "Вавилон",
|
||||
"sparta": "Спарта",
|
||||
"maya": "Майа",
|
||||
"debug-level": "эптээшкин деңнели"
|
||||
}
|
||||
@@ -0,0 +1,643 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "\u30b9\u30da\u30a4\u30f3",
|
||||
"Calendrier r\u00e9publicain": "\u30d5\u30e9\u30f3\u30b9\u9769\u547d\u66a6",
|
||||
"untranslated message count": "600+",
|
||||
"\u6e05\u9664\u8a0a\u606f": "\u8a18\u9332\u3092\u6d88\u53bb\u3059\u308b",
|
||||
"\u986f\u793a/\u96b1\u85cf\u8a0a\u606f": "\u30ed\u30b0\u8868\u793a\u30fb\u975e\u8868\u793a",
|
||||
"Load failed": "\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
|
||||
"\u8a0a\u606f\u63d0\u793a\u8207\u7d00\u9304\u6b04": "\u30e1\u30c3\u30bb\u30fc\u30b8\u3084\u60c5\u5831\u306e\u8a18\u9332\u5e33",
|
||||
"\u516c\u5143\u5e74/\u4e2d\u66c6\u6708\u65e5": "\u897f\u66a6\u5e74\u3001\u65e7\u66a6\u306e\u6708\u65e5",
|
||||
"Convert an era name to the specified format": "\u65e5\u6642\u3092\u6307\u5b9a\u3059\u308b\u8868\u73fe\u5f62\u5f0f\u306b\u7f6e\u304d\u63db\u3048",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "\u5730\u7406\u5ea7\u6a19: ",
|
||||
"\u81ea\u8a02\u8f38\u51fa\u683c\u5f0f": "\u7279\u6b8a\u306a\u51fa\u529b\u5f62\u5f0f",
|
||||
"\u7d00\u5e74\u8f49\u63db\u5de5\u5177": "\u7d00\u5e74\u5909\u63db\u30c4\u30fc\u30eb",
|
||||
"\u7def\u5ea6\uff1a": "\u7def\u5ea6: ",
|
||||
"\u7d93\u5ea6\uff1a": "\u7d4c\u5ea6: ",
|
||||
"\u8f38\u51fa\u683c\u5f0f": "\u51fa\u529b\u5f62\u5f0f",
|
||||
"\u524d\u7db4": "\u63a5\u982d\u8f9e",
|
||||
"\u6642\u5340\uff1a": "\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: ",
|
||||
"\u8acb\u6ce8\u610f\uff1a\u672c\u6b04\u50c5\u4f9b\u958b\u767c\u4eba\u54e1\u4f7f\u7528\u3002": "\u958b\u767a\u8005\u5411\u3051\u6a5f\u80fd\u306a\u306e\u3067\u3001\u3054\u4f7f\u7528\u306e\u969b\u306f\u304a\u6c17\u3092\u3064\u3051\u304f\u3060\u3055\u3044\u3002",
|
||||
"\u671d\u4ee3\u7d00\u5e74\u65e5\u671f": "\u7d00\u5e74/\u5143\u53f7\u66a6\u65e5",
|
||||
"\u6279\u6b21\u8f49\u63db": "\u4e00\u62ec\u5909\u63db",
|
||||
"\u516c\u5143\u65e5\u671f": "\u897f\u66a6\u65e5\u4ed8",
|
||||
"Loading...": "\u8aad\u307f\u8fbc\u307f\u4e2d\u2026",
|
||||
"\u7d04%1\u5e74": "%1\u5e74\u9803",
|
||||
"\u516c\u5143": "\u897f\u66a6",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "\u30d3\u30eb\u30de",
|
||||
"Vi\u1ec7t Nam": "\u30d9\u30c8\u30ca\u30e0",
|
||||
"Unpin": "\u5916\u3059",
|
||||
"Pin": "\u30d4\u30f3",
|
||||
"\u9664\u53bb\u6b64\u6b04": "\u3053\u306e\u5217\u3092\u524a\u9664\u3059\u308b",
|
||||
"\u5206\u985e": "\u5206\u985e",
|
||||
"%1/%2/%3": "%1/%2/%3",
|
||||
"%1 BCE": "\u524d%1\u5e74",
|
||||
"%1 CE": "%1\u5e74",
|
||||
"\u5e74\u8b5c": "\u5e74\u66a6\u8b5c",
|
||||
"\u66c6\u8b5c": "\u66a6\u65e5\u8868",
|
||||
"\u5171\u6709 %1 \u500b\u6642\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u4ef6\u306e\u671f\u9593{{PLURAL:%1|\u8a18\u9332}}",
|
||||
"\u5171\u6709 %1 \u500b\u5e74\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u4ef6\u306e\u5e74{{PLURAL:%1|\u8a18\u9332}}",
|
||||
"\u7121\u53ef\u4f9b\u5217\u51fa\u4e4b\u66c6\u8b5c\uff01": "\u3054\u63d0\u4f9b\u3067\u304d\u308b\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093\u3002",
|
||||
"\u5617\u8a66\u52a0\u6ce8\u65e5\u671f": "\u65e5\u4ed8\u3092\u8ffd\u52a0\u3059\u308b",
|
||||
"\u5168\u4e0d\u9078": "\u5168\u3066\u306e\u5217\u3092\u524a\u9664\u3059\u308b",
|
||||
"\u589e\u52a0\u6b64\u6b04": "\u3053\u306e\u5217\u3092\u8ffd\u52a0\u3059\u308b",
|
||||
"\u4e2d\u570b\u7687\u5e1d\u751f\u5352": "\u4e2d\u56fd\u7687\u5e1d\u306e\u751f\u6b7f",
|
||||
"\u81fa\u7063\u5730\u9707": "\u53f0\u6e7e\u306e\u5730\u9707",
|
||||
"\u541b\u4e3b\u751f\u5352": "\u541b\u4e3b\u306e\u751f\u6b7f",
|
||||
"\u96e3\u8fa8\u8b58\u6642\u6bb5\uff1a": "\u898b\u3065\u3089\u3044\u7d00\u5e74: ",
|
||||
"general data layer": "\u5168\u822c",
|
||||
"\u8cc7\u6599\u5716\u5c64": "\u60c5\u5831\u30ec\u30a4\u30e4",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 \u30d0\u30fc: ",
|
||||
"\u6240\u6709\u570b\u5bb6": "\u5168\u3066\u306e\u56fd\u5bb6",
|
||||
"\u5171\u5b58\u7d00\u5e74": "\u5171\u5b58\u306e\u7d00\u5e74",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "\u5165\u529b\u4f8b",
|
||||
"\u8f38\u5165\u7d00\u9304": "\u5165\u529b\u8a18\u9332",
|
||||
"\u4f7f\u7528\u8aaa\u660e": "\u3054\u5229\u7528\u65b9\u6cd5",
|
||||
"\u7d00\u5e74\u7dda\u5716": "\u6642\u9593\u8ef8",
|
||||
"\u8a2d\u5b9a": "\u8a2d\u5b9a",
|
||||
"\u6a19\u6ce8\u6587\u672c": "\u53e4\u6587\u66f8\u6a19\u6ce8",
|
||||
"\u66c6\u6578\u8655\u7406": "\u958b\u767a\u30c4\u30fc\u30eb",
|
||||
"\u554f\u984c\u56de\u5831": "\u554f\u984c\u5831\u544a",
|
||||
"\u5e74\u6708\u65e5\u5e72\u652f": "\u5e74\u30fb\u6708\u30fb\u65e5\u306e\u5e72\u652f",
|
||||
"\u56db\u67f1\u516b\u5b57": "\u56db\u67f1",
|
||||
"Julian Day Number": "\u30e6\u30ea\u30a6\u30b9\u901a\u65e5",
|
||||
"France": "\u30d5\u30e9\u30f3\u30b9",
|
||||
"Great Britain": "\u30a4\u30ae\u30ea\u30b9",
|
||||
"Spain": "\u30b9\u30da\u30a4\u30f3",
|
||||
"\u63a1\u7528\u66c6\u6cd5": "\u4f7f\u7528\u3055\u308c\u3066\u3044\u305f\u66a6",
|
||||
"\u51fa\u5178": "\u5178\u62e0",
|
||||
"\u541b\u4e3b\u540d": "\u5e1d\u738b\u306e\u5fa1\u540d",
|
||||
"\u8868\u5b57": "\u5b57\uff08\u3042\u3056\u306a\uff09",
|
||||
"\u541b\u4e3b\u865f": "\u53f7\uff08\u3054\u3046\uff09",
|
||||
"\u8af1": "\u8af1\uff08\u3044\u307f\u306a\uff09",
|
||||
"\u8ae1": "\u8ae1\u53f7",
|
||||
"\u5edf\u865f": "\u5edf\u53f7",
|
||||
"\u51fa\u751f": "\u8a95\u751f",
|
||||
"\u901d\u4e16": "\u5d29\u5fa1",
|
||||
"\u5728\u4f4d": "\u5728\u4f4d\u671f\u9593",
|
||||
"\u52a0\u5195": "\u6234\u51a0",
|
||||
"\u524d\u4efb": "\u5148\u4ee3",
|
||||
"\u7e7c\u4efb": "\u6b21\u4ee3",
|
||||
"\u7236\u89aa": "\u7236\u89aa",
|
||||
"\u6bcd\u89aa": "\u6bcd\u89aa",
|
||||
"\u914d\u5076": "\u914d\u5076\u8005",
|
||||
"\u5c55\u793a\u7dda\u5716": "\u6642\u9593\u8ef8\u3092\u898b\u308b",
|
||||
"\u7d00\u5e74 %1": "\u7d00\u5e74 %1",
|
||||
"Initializing...": "\u521d\u671f\u5316\u4e2d\u2026",
|
||||
"\u516d\u66dc": "\u516d\u66dc",
|
||||
"\u7d00\u5e74\u7dda\u5716\u9078\u9805\uff1a": "\u6642\u9593\u8ef8\u306e\u8a2d\u5b9a:",
|
||||
"\u6a19\u8a18\u6b63\u8655\u7406\u7684\u7d00\u5e74": "\u7d00\u5e74\u3092\u8868\u793a\u3059\u308b",
|
||||
"\u5408\u4f75\u6b77\u53f2\u6642\u671f": "\u6642\u4ee3\u533a\u5206\u3092\u7d50\u5408\u3059\u308b",
|
||||
"\u64f4\u5f35\u7bc4\u570d\u81f3\u541b\u4e3b\u5728\u4e16\u6642\u6bb5": "\u541b\u4e3b\u306e\u751f\u5b58\u671f\u9593\u307e\u3067\u62e1\u5927\u3059\u308b",
|
||||
"\u8acb\u9078\u64c7\u6240\u6b32\u8f09\u5165\u4e4b\u8cc7\u6599\u5716\u5c64\u3002": "\u304a\u6c42\u3081\u306b\u306a\u308b\u60c5\u5831\u30ec\u30a4\u30e4\u3092\u9078\u3093\u3067\u304f\u3060\u3055\u3044\u3002",
|
||||
"\u5df2\u8f09\u5165 %1 \u7b46\u8cc7\u6599\u3002": "%1 \u4ef6\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3057\u305f\u3002",
|
||||
"Data will be presented at next calculation.": "\u8cc7\u6599\u306f\u6b21\u306e\u8a08\u7b97\u3067\u8868\u793a\u3057\u307e\u3059\u3002",
|
||||
"Aries": "\u767d\u7f8a\u5bae (\u304a\u3072\u3064\u3058\u5ea7)",
|
||||
"Taurus": "\u91d1\u725b\u5bae (\u304a\u3046\u3057\u5ea7)",
|
||||
"Gemini": "\u53cc\u5150\u5bae (\u3075\u305f\u3054\u5ea7)",
|
||||
"Cancer": "\u5de8\u87f9\u5bae (\u304b\u306b\u5ea7)",
|
||||
"Leo": "\u7345\u5b50\u5bae (\u3057\u3057\u5ea7)",
|
||||
"Virgo": "\u51e6\u5973\u5bae (\u304a\u3068\u3081\u5ea7)",
|
||||
"Libra": "\u5929\u79e4\u5bae (\u3066\u3093\u3073\u3093\u5ea7)",
|
||||
"Scorpio": "\u5929\u874e\u5bae (\u3055\u305d\u308a\u5ea7)",
|
||||
"Sagittarius": "\u4eba\u99ac\u5bae (\u3044\u3066\u5ea7)",
|
||||
"Capricorn": "\u78e8\u7faf\u5bae (\u3084\u304e\u5ea7)",
|
||||
"Aquarius": "\u5b9d\u74f6\u5bae (\u307f\u305a\u304c\u3081\u5ea7)",
|
||||
"Pisces": "\u53cc\u9b5a\u5bae (\u3046\u304a\u5ea7)",
|
||||
"\u6708\u76f8": "\u6708\u76f8",
|
||||
"\u661f\u671f": "\u66dc\u65e5",
|
||||
"JDN": "\u30e6\u30ea\u30a6\u30b9\u901a\u65e5",
|
||||
"JD": "\u30e6\u30ea\u30a6\u30b9\u65e5",
|
||||
"Julian Date": "\u30e6\u30ea\u30a6\u30b9\u65e5",
|
||||
"\u5e74\u65e5\u671f": "\u5e74\u65e5\u4ed8",
|
||||
"\u9031\u65e5\u671f": "\u9031\u65e5\u4ed8",
|
||||
"Unix time": "Unix\u6642\u9593",
|
||||
"\u541b\u4e3b\u5be6\u6b72": "\u541b\u4e3b\u5e74\u9f62",
|
||||
"\u540c\u570b\u5171\u5b58\u7d00\u5e74": "\u5171\u5b58\u306e\u540c\u56fd\u7d00\u5e74",
|
||||
"general precession": "\u4e00\u822c\u6b73\u5dee",
|
||||
"\u5929\u6587\u7bc0\u6c23": "\u5929\u6587\u7bc0\u6c17",
|
||||
"\u7bc0\u6c23\u7d93\u904e\u65e5\u6578": "\u7bc0\u6c17\u304b\u3089\u306e\u7d4c\u904e\u65e5\u6570",
|
||||
"Sun's apparent longitude": "\u592a\u967d\u8996\u9ec4\u7d4c",
|
||||
"Moon longitude": "\u6708\u8996\u9ec4\u7d4c",
|
||||
"Moon latitude": "\u6708\u8996\u9ec4\u7def",
|
||||
"\u6708\u65e5\u8996\u9ec3\u7d93\u5dee": "\u6708\u65e5\u8996\u9ec4\u7d4c\u5dee",
|
||||
"\u6666\u65e5": "\u6666\u65e5",
|
||||
"\u6714": "\u65b0\u6708",
|
||||
"saros %1": "\u30b5\u30ed\u30b9\u7cfb\u5217%1",
|
||||
"\u65e5\u51fa\u65e5\u843d": "\u65e5\u306e\u51fa\u5165\u308a",
|
||||
"\u66d9\u66ae\u5149": "\u591c\u660e\u30fb\u65e5\u66ae",
|
||||
"\u6708\u51fa\u6708\u843d": "\u6708\u306e\u51fa\u5165\u308a",
|
||||
"calendar": "\u66a6\u6cd5",
|
||||
"Gregorian calendar": "\u30b0\u30ec\u30b4\u30ea\u30aa\u66a6",
|
||||
"Julian calendar": "\u30e6\u30ea\u30a6\u30b9\u66a6",
|
||||
"Revised Julian calendar": "\u4fee\u6b63\u30e6\u30ea\u30a6\u30b9\u66a6",
|
||||
"\u4f0a\u65af\u862d\u66c6": "\u30d2\u30b8\u30e5\u30e9\u66a6",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0647\u062c\u0631\u06cc \u062e\u0648\u0631\u0634\u06cc\u062f\u06cc": "\u30a4\u30e9\u30f3\u592a\u967d\u66a6",
|
||||
"Bangla calendar": "\u6539\u8a02\u30d9\u30f3\u30ac\u30eb\u66a6",
|
||||
"\u5e0c\u4f2f\u4f86\u66c6": "\u30e6\u30c0\u30e4\u66a6",
|
||||
"\u9577\u7d00\u66c6": "\u30de\u30e4\u9577\u671f\u66a6",
|
||||
"Maya Tzolk'in": "\u30de\u30e4\u795e\u8056\u66a6",
|
||||
"Maya Haab'": "\u30de\u30e4\u6587\u5316\u66a6",
|
||||
"\u50a3\u66c6": "\u30bf\u30a4\u66a6",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c \u1015\u103c\u1000\u1039\u1001\u1012\u102d\u1014\u103a": "\u30d3\u30eb\u30de\u66a6",
|
||||
"\u5f5d\u66c6": "\u5f5d\u66a6",
|
||||
"\u0939\u093f\u0928\u094d\u0926\u0942 \u092a\u0902\u091a\u093e\u0902\u0917": "\u30d2\u30f3\u30c9\u30a5\u30fc\u66a6",
|
||||
"\u092d\u093e\u0930\u0924\u0940\u092f \u0930\u093e\u0937\u094d\u091f\u094d\u0930\u0940\u092f \u092a\u0902\u091a\u093e\u0902\u0917": "\u30a4\u30f3\u30c9\u56fd\u5b9a\u66a6",
|
||||
"\u4f5b\u66c6": "\u4ecf\u66a6",
|
||||
"\u0a28\u0a3e\u0a28\u0a15\u0a38\u0a3c\u0a3e\u0a39\u0a40": "\u65b0\u30b7\u30af\u66a6",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0628\u0647\u0627\u0626\u06cc": "\u30d0\u30cf\u30a4\u66a6",
|
||||
"\u79d1\u666e\u7279\u66c6": "\u30b3\u30d7\u30c8\u66a6",
|
||||
"\u8863\u7d22\u6bd4\u4e9e\u66c6": "\u30a8\u30c1\u30aa\u30d4\u30a2\u66a6",
|
||||
"\u6559\u6703\u4e9e\u7f8e\u5c3c\u4e9e\u66c6": "\u53e4\u30a2\u30eb\u30e1\u30cb\u30a2\u66a6",
|
||||
"Byzantine calendar": "\u30d3\u30b6\u30f3\u30c6\u30a3\u30f3\u66a6",
|
||||
"\u53e4\u57c3\u53ca\u66c6": "\u53e4\u30a8\u30b8\u30d7\u30c8\u66a6",
|
||||
"\u6771\u4e9e\u9670\u967d\u66c6": "\u4e2d\u83ef\u570f\u306e\u592a\u9670\u592a\u967d\u66a6",
|
||||
"\u5929\u6587\u590f\u66c6": "\u5929\u6587\u7684\u306a\u65e7\u66a6",
|
||||
"\u66c6\u6ce8": "\u66a6\u6ce8",
|
||||
"\u6708\u5e72\u652f": "\u6708\u306e\u5e72\u652f",
|
||||
"\u65e5\u5e72\u652f": "\u65e5\u306e\u5e72\u652f",
|
||||
"\u660e\u6e05\u7bc0\u6c23": "\u660e\u6e05\u306e\u7bc0\u6c17",
|
||||
"\u5efa\u9664": "\u5341\u4e8c\u76f4",
|
||||
"\u4e2d\u570b": "\u4e2d\u56fd",
|
||||
"\u6708\u306e\u5225\u540d": "\u6708\u306e\u5225\u540d",
|
||||
"\u4e03\u66dc": "\u4e03\u66dc",
|
||||
"\u66dc\u65e5": "\u66dc\u65e5",
|
||||
"\u4e8c\u5341\u516b\u5bbf": "\u4e8c\u5341\u516b\u5bbf",
|
||||
"\u4e8c\u5341\u4e03\u5bbf": "\u4e8c\u5341\u4e03\u5bbf",
|
||||
"zodiac sign": "\u5341\u4e8c\u5bae",
|
||||
"Year naming": "\u7d00\u5e74\u6cd5",
|
||||
"\u6b72\u6b21": "\u5e74\u306e\u5e72\u652f",
|
||||
"\u751f\u8096": "\u5341\u4e8c\u652f",
|
||||
"Year numbering": "\u7de8\u5e74\u65b9\u6cd5",
|
||||
"\u6c11\u570b": "\u6c11\u56fd",
|
||||
"\u9ec3\u5e1d\u7d00\u5143": "\u9ec4\u5e1d\u7d00\u5143",
|
||||
"\u7687\u7d00": "\u7687\u7d00",
|
||||
"\ub2e8\uad70\uae30\uc6d0": "\u6a80\u541b\u7d00\u5143",
|
||||
"\u6cf0\u570b\u4f5b\u66c6": "\u30bf\u30a4\u4ecf\u66a6",
|
||||
"\u7f85\u99ac\u5efa\u57ce": "\u30ed\u30fc\u30de\u5efa\u56fd\u7d00\u5143",
|
||||
"Seleucid era": "\u30bb\u30ec\u30a6\u30b3\u30b9\u7d00\u5143",
|
||||
"Before Present": "\u4f55\u5e74\u524d",
|
||||
"Holocene calendar": "\u4eba\u985e\u7d00\u5143",
|
||||
"Gregorian reform": "\u30b0\u30ec\u30b4\u30ea\u30aa\u6539\u66a6",
|
||||
"\u8457\u540d\u5730\u9ede\uff1a": "\u6709\u540d\u306a\u90fd\u5e02: ",
|
||||
"Loading %1%...": "\u8aad\u307f\u8fbc\u307f\u4e2d %1%\u2026",
|
||||
"The bot operation is completed %1% in total": "\u4eca\u56de\u306eBot\u4f5c\u696d\u306e\u3046\u3061%1%\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f",
|
||||
"finished": "\u5b8c\u6210",
|
||||
"No changes.": "\u5168\u3066\u5909\u66f4\u306a\u3057\u3002",
|
||||
"No page modified": "\u5168\u8a18\u4e8b\u5909\u66f4\u306a\u3057",
|
||||
"\u4e2d\u6587\u6578\u5b57": "\u6f22\u6570\u5b57",
|
||||
"astronomy": "\u5929\u6587",
|
||||
"\u4e0a\u5f26": "\u4e0a\u5f26",
|
||||
"\u671b": "\u6e80\u6708",
|
||||
"\u4e0b\u5f26": "\u4e0b\u5f26",
|
||||
"annular solar eclipse": "\u91d1\u74b0\u65e5\u98df",
|
||||
"hybrid solar eclipse": "\u91d1\u74b0\u7686\u65e2\u65e5\u98df",
|
||||
"partial lunar eclipse": "\u90e8\u5206\u6708\u98df",
|
||||
"partial solar eclipse": "\u90e8\u5206\u65e5\u98df",
|
||||
"penumbral lunar eclipse": "\u534a\u5f71\u98df",
|
||||
"total lunar eclipse": "\u7686\u65e2\u6708\u98df",
|
||||
"total solar eclipse": "\u7686\u65e2\u65e5\u98df",
|
||||
"lunar eclipse": "\u6708\u98df",
|
||||
"solar eclipse": "\u65e5\u98df",
|
||||
"lower culmination": "\u6975\u4e0b\u6b63\u4e2d",
|
||||
"moonrise": "\u6708\u306e\u51fa",
|
||||
"sunrise": "\u65e5\u306e\u51fa",
|
||||
"upper culmination": "\u6975\u4e0a\u6b63\u4e2d (\u5357\u4e2d\u6642)",
|
||||
"moonset": "\u6708\u306e\u5165\u308a",
|
||||
"sunset": "\u65e5\u306e\u5165\u308a",
|
||||
"astronomical twilight begin": "\u5929\u6587\u8584\u660e\u306e\u59cb\u307e\u308a",
|
||||
"civil twilight begin": "\u5e02\u6c11\u8584\u660e\u306e\u59cb\u307e\u308a",
|
||||
"nautical twilight begin": "\u822a\u6d77\u8584\u660e\u306e\u59cb\u307e\u308a",
|
||||
"astronomical twilight end": "\u5929\u6587\u8584\u660e\u306e\u7d42\u308f\u308a",
|
||||
"civil twilight end": "\u5e02\u6c11\u8584\u660e\u306e\u7d42\u308f\u308a",
|
||||
"nautical twilight end": "\u822a\u6d77\u8584\u660e\u306e\u7d42\u308f\u308a",
|
||||
"log-type-debug": "\u30c7\u30d0\u30c3\u30b0",
|
||||
"log-type-em": "\u91cd\u8981",
|
||||
"log-type-error": "\u30a8\u30e9\u30fc",
|
||||
"log-type-fatal": "\u81f4\u547d\u7684\u30a8\u30e9\u30fc",
|
||||
"log-type-info": "\u60c5\u5831",
|
||||
"log-type-log": "\u30ed\u30b0",
|
||||
"log-type-trace": "\u30c8\u30ec\u30fc\u30b9",
|
||||
"log-type-warn": "\u8b66\u544a",
|
||||
"Not Yet Implemented!": "\u307e\u3060\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff01",
|
||||
"\u5df2\u8f09\u5165\u904e [%1]\uff0c\u76f4\u63a5\u8a2d\u5b9a\u4f7f\u7528\u8005\u81ea\u8a02\u8cc7\u6e90\u3002": "[%1] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u3001\u7279\u6b8a\u306a\u9818\u57df\u8cc7\u6e90\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002",
|
||||
"\u5f37\u5236\u518d\u6b21\u8f09\u5165/\u4f7f\u7528 [%2] (%1) \u9818\u57df/\u8a9e\u7cfb\u3002": "\u30c9\u30e1\u30a4\u30f3/\u8a00\u8a9e [%2] (%1) \u3092\u5f37\u5236\u7684\u306b/\u4e8c\u5ea6\u4f7f\u7528\u3057\u307e\u3059\u3002",
|
||||
"\u8f09\u5165/\u4f7f\u7528 [%2] (%1) \u9818\u57df/\u8a9e\u7cfb\u3002": "\u30c9\u30e1\u30a4\u30f3/\u8a00\u8a9e [%2] (%1) \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002",
|
||||
"\u6240\u6307\u5b9a\u4e4b domain [%1] \u5c1a\u672a\u8f09\u5165\uff0c\u82e5\u6709\u5fc5\u8981\u8acb\u4f7f\u7528\u5f37\u5236\u8f09\u5165 flag\u3002": "\u6307\u5b9a\u3055\u308c\u305f\u30c9\u30e1\u30a4\u30f3 [%1] \u306f\u307e\u3060\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u5fc5\u8981\u3067\u3042\u308c\u3070\u3001\u5f37\u5236\u30ed\u30fc\u30c9\u306e\u30d5\u30e9\u30b0\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
|
||||
"\u7121\u6cd5\u5224\u5225 domain\uff0c\u537b\u8a2d\u5b9a\u6709 callback\u3002": "\u9818\u57df\u3092\u533a\u5225\u3067\u304d\u306a\u3044\u304c\u3001\u547c\u3073\u51fa\u3057\u5143\u3092\u8a2d\u5b9a\u3057\u305f\u3002",
|
||||
"Illegal domain alias list: [%1]": "\u7121\u52b9\u306a\u9818\u57df\u5225\u540d\u4e00\u89a7: [%1]",
|
||||
"Adding domain alias [%1] \u2192 [%2]...": "\u9818\u57df\u5225\u540d [%1] \u2192 [%2] \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002",
|
||||
"Testing domain alias [%1]...": "\u9818\u57df\u5225\u540d [%1] \u3092\u691c\u8a3c\u4e2d\u3002",
|
||||
"Failed to extract gettext id.": "gettext\u306eid\u3092\u629c\u304d\u51fa\u305b\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
|
||||
"Loading language / domain [%1]...": "\u8a00\u8a9e\u30fb\u9818\u57df [%1] \u3092\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002",
|
||||
"Language / domain [%1] loaded.": "\u8a00\u8a9e\u30fb\u9818\u57df [%1] \u304c\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002",
|
||||
"Language": "\u8a00\u8a9e",
|
||||
"\u8f49\u63db\u6578\u5b57\uff1a[%1]\u6210 %2 \u683c\u5f0f\u3002": "\u6570\u5024\u306e\u5909\u63db: [%1]\u304b\u3089%2\u5f62\u5f0f\u3002",
|
||||
"\u7121\u6cd5\u8f49\u63db\u6578\u5b57 [%1]\uff01": "\u756a\u53f7[%1]\u3092\u5909\u63db\u3067\u304d\u307e\u305b\u3093\uff01",
|
||||
"Error: read ECONNRESET": "\u30d4\u30a2\u306b\u3088\u3063\u3066\u63a5\u7d9a\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3057\u305f",
|
||||
"Error: socket hang up": "\u30ea\u30f3\u30af\u304c\u30c9\u30ed\u30c3\u30d7\u3055\u308c\u307e\u3059",
|
||||
"Error: unexpected end of file": "\u4e0d\u5b8c\u5168\u306a\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u3059\u308b",
|
||||
"Error: write ECONNABORTED": "\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u63a5\u7d9a\u306e\u4e2d\u6b62\u3092\u5f15\u304d\u8d77\u3053\u3057\u305f",
|
||||
"Illegal chunk.content_length!": "\u7121\u52b9\u306a chunk.content_length\u3002",
|
||||
"Got error when retrieving [%1]: %2": "[%1] \u3092\u53d6\u5f97\u3059\u308b\u3068\u304d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a%2",
|
||||
"Invalid cookie?": "\u7121\u52b9\u306aCookie\uff1f",
|
||||
"\u4f7f\u7528\u65b0 agent\u3002": "\u65b0\u3057\u3044\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002",
|
||||
"\u4f7f\u7528\u81ea\u5b9a\u7fa9 agent\u3002": "\u30ab\u30b9\u30bf\u30e0\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002",
|
||||
"\u63a1\u7528\u6cdb\u7528\u7684 agent\u3002": "\u30b8\u30a7\u30cd\u30ea\u30c3\u30af\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002",
|
||||
"Retry %1/%2: %3": "\u518d\u8a66\u884c %1/%2: %3",
|
||||
"URL not found: [%1]": "URL\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f: [%1]",
|
||||
"Node.js v12 and later versions disable TLS v1.0 and v1.1 by default.": "Node.js v12\u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001TLS v1.0\u304a\u3088\u3073v1.1\u304c\u65e2\u5b9a\u306b\u3088\u308a\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002",
|
||||
"Please set tls.DEFAULT_MIN_VERSION = \"TLSv1\" first!": "\u524d\u3082\u3063\u3066 tls.DEFAULT_MIN_VERSION = \"TLSv1\" \u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
|
||||
"%1 Redirecting to [%2] \u2190 [%3]": "%1 [%2] \u306b\u8ee2\u9001\u3055\u308c\u307e\u3059 \u2190 [%3]",
|
||||
"response HEADERS: %1": "\u5fdc\u7b54\u30d8\u30c3\u30c0\u30fc: %1",
|
||||
"HTTP status code: %1 %2": "HTTP \u72b6\u614b\u30b3\u30fc\u30c9\uff1a%1 %2",
|
||||
"No file name specified.": "\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u3002",
|
||||
"Comma-separator": "\u3001",
|
||||
"Content is empty": "\u5185\u5bb9\u306f\u30af\u30ea\u30a2\u3055\u308c\u307e\u3059",
|
||||
"Content is not settled": "\u5185\u5bb9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093",
|
||||
"Abandon change": "\u7de8\u96c6\u3092\u653e\u68c4\u3057\u305f",
|
||||
"No reason provided": "\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093",
|
||||
"No content": "\u672c\u6587\u306a\u3057",
|
||||
"%1 is not exist in %2.": "%1\u306f%2\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002",
|
||||
"Get configurations from page %1": "\u30da\u30fc\u30b8 %1 \u304b\u3089\u8a2d\u5b9a\u3092\u53d6\u5f97",
|
||||
"Continue key": "\u5f8c\u7d9a\u306e\u7d22\u5f15",
|
||||
"Cache information about the API modules of %1: module path=%2": "%1 \u306eAPI\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b: \u30e2\u30b8\u30e5\u30fc\u30eb\u30d1\u30b9\u306f %2",
|
||||
"Found %2 query {{PLURAL:%2|module|modules}}: %1": "\u30af\u30a8\u30ea\u30fb\u30e2\u30b8\u30e5\u30fc\u30eb\u304c %2 \u7a2e\u985e\u3042\u308a\u307e\u3059\uff1a%1",
|
||||
"Invalid parameter: %1": "\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc:\u300c%1\u300d",
|
||||
"Does not exist": "\u5b58\u5728\u3057\u307e\u305b\u3093",
|
||||
"Configuration page: %1": "\u8a2d\u5b9a\u30da\u30fc\u30b8: %1",
|
||||
"There are more than one %1 in %2": "%2 \u306b\u8907\u6570\u306e %1 \u304c\u5b58\u5728\u3057\u307e\u3059\u3002",
|
||||
"\u7db2\u5740\u7121\u6548\uff1a%1": "\u7121\u52b9\u306aURL: %1",
|
||||
"\u7121\u9801\u9762\u91cd\u5b9a\u5411\u81f3\u672c\u9801": "\u3053\u306e\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u30da\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093",
|
||||
"\u5171\u6709%1\u500b{{PLURAL:%1|\u9801\u9762}}\u91cd\u5b9a\u5411\u81f3\u672c\u9801": "\u5408\u8a08 %1 {{PLURAL:%1|\u30da\u30fc\u30b8}}\u304c\u3053\u306e\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059",
|
||||
"no change": "\u7121\u5909\u66f4",
|
||||
"finished: %1": "\u7d42\u4e86: %1",
|
||||
"%1 elapsed, %3 at %2": "%1 \u5f8c\u3001%2 %3",
|
||||
"First, it takes %1 to get %2 {{PLURAL:%2|page|pages}}.": "\u307e\u305a\u306f %1 \u304b\u304b\u3063\u3066\u3001%2 \u30da\u30fc\u30b8\u3092\u53d6\u5f97\u3059\u308b\u3002",
|
||||
"Processed %1 {{PLURAL:%1|page|pages}}.": "%1 {{PLURAL:$1|\u306e\u30da\u30fc\u30b8}}\u3092\u51e6\u7406\u3057\u307e\u3057\u305f\u3002",
|
||||
"Page handling function error: %1": "\u30da\u30fc\u30b8\u51e6\u7406\u95a2\u6570\u30a8\u30e9\u30fc: %1",
|
||||
"Edit %1": "\u7de8\u96c6 %1",
|
||||
"Missing page": "\u30da\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093",
|
||||
"Invalid page title": "\u7121\u52b9\u306a\u30da\u30fc\u30b8\u30bf\u30a4\u30c8\u30eb",
|
||||
"Page edit function error: %1": "\u30da\u30fc\u30b8\u306e\u7de8\u96c6\u95a2\u6570\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %1",
|
||||
"%1 {{PLURAL:%2|page|pages}} processed": "%1 \u672c\u306e\u8a18\u4e8b\u51e6\u7406\u6e08\u307f",
|
||||
"%1 {{PLURAL:%1|page|pages}} have not changed,": "%1 \u672c\u306e\u8a18\u4e8b\u5909\u66f4\u306a\u3057\u3001",
|
||||
"%1 elapsed.": "\u7d4c\u904e\u6642\u9593 %1\u3002",
|
||||
"'''Stopped''', give up editing.": "\u7de8\u96c6\u3092'''\u4e2d\u6b62\u3057\u305f'''\u3002",
|
||||
"\u8655\u7406\u5206\u584a %1\u2013%2": "\u584a %1\u2013%2 \u3092\u51e6\u7406\u4e2d",
|
||||
"\u7121\u6cd5\u5f9e\u7db2\u5740\u64f7\u53d6\u4f5c\u54c1 id\uff1a%1": "\u3053\u306e\u4f5c\u54c1ID\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff1a %1",
|
||||
"Starting %1": "\u30ed\u30fc\u30c9\u4e2d...%1",
|
||||
"\"%1\" \u9019\u500b\u503c\u6240\u5141\u8a31\u7684\u6578\u503c\u985e\u578b\u70ba %4\uff0c\u4f46\u73fe\u5728\u88ab\u8a2d\u5b9a\u6210 {%2} %3": "\"%1\"\u306b\u8a72\u5f53\u3059\u308b\u30c7\u30fc\u30bf\u578b\u306f %4 \u3067\u3059\u304c\u3001\u4eca\u306f{%2} %3 \u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3002",
|
||||
"\u81f3\u5c11\u4e00\u500b\u7531\u300c%1\u300d\u6240\u6307\u5b9a\u7684%2\u8def\u5f91\u4e0d\u5b58\u5728\uff1a%3": "\"%1\"\u304c\u6307\u5b9a\u3055\u308c\u305f%2\u306e\u4e2d\u306b\uff0c\u5e7e\u304b\u306f\u30d1\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\uff1a%3",
|
||||
"directories": "\u30c7\u30a3\u30ec\u30af\u30c8\u30ea/\u30d5\u30a9\u30eb\u30c0",
|
||||
"directory": "\u30c7\u30a3\u30ec\u30af\u30c8\u30ea/\u30d5\u30a9\u30eb\u30c0",
|
||||
"file": "\u30d5\u30a1\u30a4\u30eb",
|
||||
"files": "\u30d5\u30a1\u30a4\u30eb",
|
||||
"\u7121\u6cd5\u8655\u7406 \"%1\" \u5728\u6578\u503c\u985e\u578b\u70ba %2 \u6642\u4e4b\u689d\u4ef6\uff01": "\"%1\"\u306e\u30c7\u30fc\u30bf\u578b\u306f%2\u3067\u3042\u308b\u3068\u9032\u884c\u3067\u304d\u307e\u305b\u3093\uff01",
|
||||
"\"%1\" \u88ab\u8a2d\u5b9a\u6210\u4e86\u6709\u554f\u984c\u7684\u503c\uff1a{%2} %3": "\"%1\"\u306f\u9069\u7528\u5916\u306e\u6570\u5024\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f: {%2} %3",
|
||||
"\u672a\u63d0\u4f9b\u9375\u503c": "\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f",
|
||||
"Using proxy server: %1": "\u30d7\u30ed\u30ad\u30b7\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059: %1",
|
||||
"\u7121\u6cd5\u89e3\u6790\u7684\u6642\u9593": "\u30a2\u30af\u30bb\u30b9\u89e3\u6790\u306e\u30bf\u30a4\u30e0\u30ea\u30df\u30c3\u30c8",
|
||||
"\u672a\u8a2d\u5b9a User-Agent\u3002": "User-Agent \u306f\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093",
|
||||
"Referer \u4e0d\u53ef\u70ba undefined\u3002": "Referer\u3092\u672a\u5b9a\u7fa9\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002",
|
||||
"\u8a2d\u5b9a Referer\uff1a%1": "Referer\u3092\u8a2d\u5b9a: %1",
|
||||
"\u6700\u5c0f\u5716\u7247\u5927\u5c0f\u61c9\u5927\u65bc\u7b49\u65bc\u96f6": "\u6700\u5c0f\u753b\u50cf\u30b5\u30a4\u30ba\u306f0\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044",
|
||||
"\u7121\u6cd5\u89e3\u6790 %1": "%1\u306f\u89e3\u6790\u3067\u304d\u307e\u305b\u3093",
|
||||
"\u7121\u6cd5\u8a2d\u5b9a %1\uff1a%2": "%1\u306f\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093: %2",
|
||||
"\u7531\u547d\u4ee4\u5217": "\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089",
|
||||
"boolean": "\u30d6\u30fc\u30ea\u30a2\u30f3",
|
||||
"fso_directories": "\u30d5\u30aa\u30eb\u30c0\u306e\u4f4d\u7f6e",
|
||||
"fso_directory": "\u30d5\u30aa\u30eb\u30c0\u306e\u4f4d\u7f6e",
|
||||
"fso_file": "\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e",
|
||||
"fso_files": "\u30d5\u30a1\u30a4\u30eb\u306e\u4f4d\u7f6e",
|
||||
"function": "\u95a2\u6570",
|
||||
"number": "\u6570\u5b57",
|
||||
"string": "\u6587\u5b57\u5217",
|
||||
"\u8df3\u904e\u6240\u6709\u7ae0\u7bc0": "\u5168\u3066\u306e\u30c1\u30e3\u30d7\u30bf\u30fc\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b",
|
||||
"\u300a%1\u300b\uff1a": "\u300e%1\u300f\uff1a",
|
||||
"Retry %1/%2": "\u518d\u8a66\u884c %1/%2",
|
||||
"\u5269 %1 \u5f35{{PLURAL:%1|\u5716}}...": "%1\u4ef6\u306e{{PLURAL:%1|\u753b\u50cf}}\u3092\u51e6\u7406\u4e2d\u3067\u3059...",
|
||||
"%1\uff1a%2\u7b46{{PLURAL:%2|\u5716\u7247}}\u4e0b\u8f09\u932f\u8aa4\u7d00\u9304": "%1\uff1a%2\u753b\u50cf\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30a8\u30e9\u30fc\u304c\u8a18\u9332\u3055\u308c\u307e\u3057\u305f",
|
||||
"\u66f4\u65b0\u5716\u7247\u58d3\u7e2e\u6a94\uff1a%1": "\u753b\u50cf\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u66f4\u65b0: %1",
|
||||
"\u5275\u5efa\u5716\u7247\u58d3\u7e2e\u6a94\uff1a%1": "\u753b\u50cf\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u4f5c\u6210\uff1a%1",
|
||||
"%2: jump to chapter %1": "%2: \u7ae0%1\u306b\u30b8\u30e3\u30f3\u30d7",
|
||||
"\u65bc %1 \u4e0b\u8f09\u5b8c\u7562\u3002": "%1\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002",
|
||||
"\u6709\u4e9b\u70ba\u4ed8\u8cbb/\u53d7\u9650\u7ae0\u7bc0\u3002": "\u4e00\u90e8\u306f\u6709\u6599/\u5236\u9650\u4ed8\u304d\u306e\u7ae0\u3067\u3059\u3002",
|
||||
"\u7ae0\u7bc0\u7de8\u865f%1\uff1a": "\u7ae0\u756a\u53f7%1\uff1a",
|
||||
"\u4fdd\u7559\u820a\u6a94\uff1a": "\u53e4\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u6b8b\u3059\uff1a",
|
||||
"\u642c\u79fb\u81f3 \u2192": "\u79fb\u52d5\u3059\u308b\u2192",
|
||||
"\u672a\u6307\u5b9a\u5716\u7247\u8cc7\u6599": "\u4e0d\u7279\u5b9a\u306e\u753b\u50cf\u30c7\u30fc\u30bf",
|
||||
"{{PLURAL:%1|%1}} \u6b21\u932f\u8aa4": "\u30a8\u30e9\u30fc\u6570\uff1a%1",
|
||||
"HTTP status code %1.": "HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9%1\u3002",
|
||||
"Error: %1": "\u30a8\u30e9\u30fc: %1",
|
||||
"File size: %1.": "\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba: %1\u3002",
|
||||
"\u5716\u6a94\u640d\u58de\uff1a": "\u7834\u640d\u3057\u305f\u753b\u50cf\uff1a",
|
||||
"\u7121\u6cd5\u53d6\u5f97\u5716\u7247\u3002": "\u753b\u50cf\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002",
|
||||
"\u5716\u7247\u7121\u5167\u5bb9\uff1a": "\u5185\u5bb9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\uff1a",
|
||||
"\u6a94\u6848\u904e\u5c0f\uff0c\u50c5 %1 {{PLURAL:%1|\u4f4d\u5143\u7d44}}\uff1a": "%1 \u30d0\u30a4\u30c8\u3001\u5c0f\u3055\u3059\u304e\u308b\uff1a",
|
||||
"\u6a94\u6848\u50c5 %1 {{PLURAL:%1|\u4f4d\u5143\u7d44}}\uff1a": "%1 \u30d0\u30a4\u30c8\uff1a",
|
||||
"\u5716\u7247\u4e0b\u8f09\u932f\u8aa4": "\u753b\u50cf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f",
|
||||
"Login as [%1]": "[%1]\u3068\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3059\u308b",
|
||||
"\u4f5c\u54c1 id \u7121\u6548\uff1a%1": "\u7121\u52b9\u306a\u4f5c\u696d id: %1",
|
||||
"work_data.author": "\u4f5c\u8005",
|
||||
"work_data.chapter_count": "\u8a71\u6570",
|
||||
"work_data.chapter_list": "\u30c1\u30e3\u30d7\u30bf\u30fc\u30ea\u30b9\u30c8",
|
||||
"work_data.description": "\u3042\u3089\u3059\u3058",
|
||||
"work_data.directory": "\u4fdd\u5b58\u5834\u6240",
|
||||
"work_data.id": "\u4f5c\u54c1ID",
|
||||
"work_data.last_download.chapter": "\u6700\u5f8c\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u7ae0",
|
||||
"work_data.last_download.date": "\u6700\u5f8c\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6642\u9593",
|
||||
"work_data.last_update": "\u6700\u65b0\u90e8\u5206\u63b2\u8f09\u65e5",
|
||||
"work_data.status": "\u72b6\u614b",
|
||||
"work_data.title": "\u984c\u540d",
|
||||
"work_data.url": "\u30a6\u30a7\u30d6\u30fb\u30a2\u30c9\u30ec\u30b9",
|
||||
"work_status-finished": "\u5b8c\u4e86",
|
||||
"work_status-limited": "\u5236\u9650\u3042\u308a",
|
||||
"work_status-not found": "\u898b\u3064\u304b\u308a\u307e\u305b\u3093",
|
||||
"Work information": "\u4f5c\u54c1\u60c5\u5831",
|
||||
"work_data.chapter_NO": "\u7ae0\u756a\u53f7",
|
||||
"work_data.chapter_title": "\u7ae0\u306e\u30bf\u30a4\u30c8\u30eb",
|
||||
"\u53d6\u5f97\u7a7a\u7684\u5167\u5bb9": "\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093",
|
||||
"last saved date": "\u6700\u7d42\u4fdd\u5b58\u65e5",
|
||||
"last updated date": "\u6700\u7d42\u66f4\u65b0\u65e5",
|
||||
"Unknown": "\u672a\u77e5\u306e",
|
||||
"Removing directory: %1": "\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u9664\u53bb\u3057\u307e\u3059: %1",
|
||||
"JScript \u6a94\u6848\u53ea\u80fd\u5728 Windows \u74b0\u5883\u4e0b\u57f7\u884c\uff01": "JScript\u30d5\u30a1\u30a4\u30eb\u306fWindows\u74b0\u5883\u3067\u306e\u307f\u5b9f\u884c\u3067\u304d\u307e\u3059\uff01",
|
||||
"\u5148\u524d\u5df2\u7d93\u5b58\u5728\u76f8\u540c id \u4e4b\u7ae0\u7bc0\uff0c\u5c07\u66f4\u6539\u5f8c\u8005\u4e4b id\u3002": "\u3053\u306eid\u306f\u65e2\u306b\u5b58\u5728\u3057\u3001\u5f8c\u8005\u306eid\u3092\u5909\u66f4\u3057\u307e\u3059\u3002",
|
||||
"\u8cc7\u6e90\u4ecd\u5728\u4e0b\u8f09\u4e2d\uff1a": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u7d9a\u3051\u3066\u3044\u307e\u3059:",
|
||||
"too short": "\u77ed\u3059\u304e\u308b",
|
||||
"Using language: %1": "\u8a00\u8a9e\u3092\u4f7f\u7528: %1",
|
||||
"TOC.calibre:series": "\u30b7\u30ea\u30fc\u30ba",
|
||||
"TOC.creator": "\u4f5c\u8005",
|
||||
"TOC.date": "\u65e5\u4ed8",
|
||||
"TOC.dcterms:modified": "\u4f5c\u54c1\u306e\u6700\u7d42\u66f4\u65b0\u65e5\u6642",
|
||||
"TOC.description": "\u3042\u3089\u3059\u3058",
|
||||
"TOC.identifier": "\u8b58\u5225\u5b50",
|
||||
"TOC.language": "\u8a00\u8a9e",
|
||||
"TOC.publisher": "\u767a\u884c\u8005",
|
||||
"TOC.source": "\u51fa\u5178",
|
||||
"TOC.subject": "\u30b8\u30e3\u30f3\u30eb",
|
||||
"TOC.title": "\u8868\u984c",
|
||||
"word count": "\u6587\u5b57\u6570",
|
||||
"%1 {{PLURAL:%1|word|words}}": "%1\u6587\u5b57",
|
||||
"%1 {{PLURAL:%1|chapter|chapters}}": "%1\u8a71",
|
||||
"Contents": "\u76ee\u6b21",
|
||||
"Waiting for all resources loaded...": "\u3059\u3079\u3066\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u30ed\u30fc\u30c9\u3055\u308c\u308b\u306e\u3092\u5f85\u3063\u3066\u3044\u307e\u3059...",
|
||||
"\u958b\u59cb\u5beb\u5165\u96fb\u5b50\u66f8\u8cc7\u6599\u2026\u2026": "\u96fb\u5b50\u66f8\u7c4d\u306e\u8cc7\u6599\u3092\u66f8\u304d\u59cb\u3081\u307e\u3059...",
|
||||
"\u958b\u59cb\u5efa\u69cb\u96fb\u5b50\u66f8\u2026\u2026": "\u96fb\u5b50\u66f8\u7c4d\u306e\u4f5c\u6210\u3092\u958b\u59cb\u3057\u307e\u3059...",
|
||||
"\u79fb\u9664\u7a7a\u76ee\u9304\uff1a%1": "\u7a7a\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u9664\u53bb\u3057\u307e\u3059: %1",
|
||||
"Working directory: %1": "\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff1a%1",
|
||||
"Callback execution error!": "\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u5b9f\u884c\u30a8\u30e9\u30fc\uff01",
|
||||
"Italy": "\u30a4\u30bf\u30ea\u30a2",
|
||||
"Poland": "\u30dd\u30fc\u30e9\u30f3\u30c9",
|
||||
"Portugal": "\u30dd\u30eb\u30c8\u30ac\u30eb",
|
||||
"Luxembourg": "\u30eb\u30af\u30bb\u30f3\u30d6\u30eb\u30af",
|
||||
"Netherlands": "\u30aa\u30e9\u30f3\u30c0",
|
||||
"Bavaria": "\u30d0\u30a4\u30a8\u30eb\u30f3",
|
||||
"Austria": "\u30aa\u30fc\u30b9\u30c8\u30ea\u30a2",
|
||||
"Switzerland": "\u30b9\u30a4\u30b9",
|
||||
"Hungary": "\u30cf\u30f3\u30ac\u30ea\u30fc",
|
||||
"Germany": "\u30c9\u30a4\u30c4",
|
||||
"Norway": "\u30ce\u30eb\u30a6\u30a7\u30fc",
|
||||
"Denmark": "\u30c7\u30f3\u30de\u30fc\u30af",
|
||||
"Sweden": "\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3",
|
||||
"Finland": "\u30d5\u30a3\u30f3\u30e9\u30f3\u30c9",
|
||||
"Bulgaria": "\u30d6\u30eb\u30ac\u30ea\u30a2",
|
||||
"Soviet Union": "\u30bd\u9023",
|
||||
"Serbia": "\u30bb\u30eb\u30d3\u30a2",
|
||||
"Romania": "\u30eb\u30fc\u30de\u30cb\u30a2",
|
||||
"Greece": "\u30ae\u30ea\u30b7\u30e3",
|
||||
"T\u00fcrkiye": "\u30c8\u30eb\u30b3",
|
||||
"Egypt": "\u30a8\u30b8\u30d7\u30c8",
|
||||
"%1 {{PLURAL:%1|year|years}} and %2 {{PLURAL:%2|month|months}}": "%1\u5e74%2\u30f6\u6708",
|
||||
"%1 Y %2 M": "%1\u5e74%2\u30f6\u6708",
|
||||
"%1 {{PLURAL:%1|year|years}}": "%1\u5e74",
|
||||
"%1 Y": "%1\u5e74",
|
||||
"%1 {{PLURAL:%1|month|months}}": "%1\u30f6\u6708",
|
||||
"%1 M": "%1\u30f6\u6708",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1\u30df\u30ea\u79d2",
|
||||
"%1 ms": "%1\u30df\u30ea\u79d2",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1\u79d2",
|
||||
"%1 s": "%1\u79d2",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1\u5206",
|
||||
"%1 min": "%1\u5206",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1\u6642\u9593",
|
||||
"%1 hr": "%1\u6642\u9593",
|
||||
"%1 {{PLURAL:%1|day|days}}": "%1\u65e5",
|
||||
"%1 d": "%1\u65e5",
|
||||
"2 days before yesterday, %H:%M": "\u4e00\u6628\u3005\u65e5\u306e%H\u6642%M\u5206",
|
||||
"the day before yesterday, %H:%M": "\u4e00\u6628\u65e5\u306e%H\u6642%M\u5206",
|
||||
"yesterday, %H:%M": "\u6628\u65e5\u306e%H\u6642%M\u5206\u9803",
|
||||
"today, %H:%M": "\u672c\u65e5\u306e%H\u6642%M\u5206",
|
||||
"tomorrow, %H:%M": "\u660e\u65e5\u306e%H\u6642%M\u5206",
|
||||
"the day after tomorrow, %H:%M": "\u660e\u5f8c\u65e5\u306e%H\u6642%M\u5206",
|
||||
"2 days after tomorrow, %H:%M": "\u660e\u3005\u5f8c\u65e5\u306e%H\u6642%M\u5206",
|
||||
"3 days after tomorrow, %H:%M": "\u5f25\u306e\u660e\u5f8c\u65e5\u306e%H\u6642%M\u5206",
|
||||
"now": "\u4eca",
|
||||
"several seconds ago": "\u6570\u79d2\u524d",
|
||||
"soon": "\u76f4\u3050",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "%1\u79d2\u524d",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "%1\u79d2\u5f8c",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "%1\u5206\u524d",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "%1\u5206\u5f8c",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1\u6642\u9593\u524d",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1\u6642\u9593\u5f8c",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1\u65e5\u524d",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1\u65e5\u5f8c",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "%1\u9031\u9593\u524d",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "%1\u9031\u9593\u5f8c",
|
||||
"\u5e74\u865f": "\u5143\u53f7",
|
||||
"\u8a3b": "\u6ce8\u91c8",
|
||||
"\u4e94\u884c": "\u4e94\u884c",
|
||||
"\u7d00\u5e74": "\u5143\u53f7",
|
||||
"\u8df3\u904e [%1]\uff1a\u672c[%2]\u50c5\u4f9b\u53c3\u7167\u7528\u3002": "[%1] \u3092\u629c\u304b\u3057\u307e\u3059\uff1a\u3053\u306e[%2]\u306f\u53c2\u8003\u7528\u3060\u3051\u3067\u3059\u3002",
|
||||
"\u7409\u7403": "\u7409\u7403",
|
||||
"\u65e5\u672c": "\u65e5\u672c",
|
||||
"\ud55c\uad6d": "\u671d\u9bae",
|
||||
"B\u1eafc thu\u1ed9c": "\u5317\u5c5e\u671f",
|
||||
"Th\u1eddi k\u1ef3 \u0111\u1ed9c l\u1eadp": "\u72ec\u7acb\u738b\u671d\u6642\u4ee3",
|
||||
"\u0e44\u0e17\u0e22": "\u30bf\u30a4",
|
||||
"\u0e23\u0e32\u0e0a\u0e27\u0e07\u0e28\u0e4c\u0e1e\u0e23\u0e30\u0e23\u0e48\u0e27\u0e07": "\u30d7\u30e9\u30fb\u30eb\u30ef\u30f3\u738b\u671d",
|
||||
"\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\u0e2a\u0e38\u0e42\u0e02\u0e17\u0e31\u0e22": "\u30b9\u30b3\u30fc\u30bf\u30a4\u738b\u671d",
|
||||
"\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\u0e2d\u0e22\u0e38\u0e18\u0e22\u0e32": "\u30a2\u30e6\u30bf\u30e4\u738b\u671d",
|
||||
"\u0e2a\u0e21\u0e40\u0e14\u0e47\u0e08\u0e1e\u0e23\u0e30\u0e40\u0e08\u0e49\u0e32\u0e01\u0e23\u0e38\u0e07\u0e18\u0e19\u0e1a\u0e38\u0e23\u0e35": "\u30bf\u30fc\u30af\u30b7\u30f3",
|
||||
"\u0e23\u0e32\u0e0a\u0e27\u0e07\u0e28\u0e4c\u0e18\u0e19\u0e1a\u0e38\u0e23\u0e35": "\u30c8\u30f3\u30d6\u30ea\u30fc\u738b\u671d",
|
||||
"\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\u0e18\u0e19\u0e1a\u0e38\u0e23\u0e35": "\u30c8\u30f3\u30d6\u30ea\u30fc\u738b\u671d",
|
||||
"\u0e23\u0e32\u0e0a\u0e27\u0e07\u0e28\u0e4c\u0e08\u0e31\u0e01\u0e23\u0e35": "\u30c1\u30e3\u30af\u30ea\u30fc\u738b\u671d",
|
||||
"\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\u0e23\u0e31\u0e15\u0e19\u0e42\u0e01\u0e2a\u0e34\u0e19\u0e17\u0e23\u0e4c": "\u30e9\u30bf\u30ca\u30b3\u30fc\u30b7\u30f3\u738b\u671d",
|
||||
"Pagan": "\u30d0\u30ac\u30f3",
|
||||
"Toungoo": "\u30bf\u30a6\u30f3\u30b0\u30fc",
|
||||
"\u1000\u102f\u1014\u103a\u1038\u1018\u1031\u102c\u1004\u103a\u1001\u1031\u1010\u103a": "\u30b3\u30f3\u30d0\u30a6\u30f3",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c\u1015\u103c\u100a\u103a": "\u30df\u30e3\u30f3\u30de\u30fc\u9023\u90a6\u5171\u548c\u56fd",
|
||||
"India": "\u30a4\u30f3\u30c9",
|
||||
"Mesopotamian": "\u30e1\u30bd\u30dd\u30bf\u30df\u30a2\u6587\u660e",
|
||||
"Neo-Assyrian": "\u65b0\u30a2\u30c3\u30b7\u30ea\u30a2",
|
||||
"Babylon": "\u30d0\u30d3\u30ed\u30f3",
|
||||
"Babylonian Dynasty of E": "\u30d0\u30d3\u30ed\u30f3E\u738b\u671d",
|
||||
"Babylonian calendar": "\u30d0\u30d3\u30ed\u30cb\u30a2\u66a6",
|
||||
"Neo-Babylonian": "\u65b0\u30d0\u30d3\u30ed\u30cb\u30a2",
|
||||
"Persia": "\u30da\u30eb\u30b7\u30a2",
|
||||
"\u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1": "\u30de\u30b1\u30c9\u30cb\u30a2",
|
||||
"\u03a3\u03b5\u03bb\u03b5\u03c5\u03ba\u03b9\u03b4\u03ce\u03bd": "\u30bb\u30ec\u30a6\u30b3\u30b9",
|
||||
"\u1f08\u03b8\u1fc6\u03bd\u03b1\u03b9": "\u30a2\u30c6\u30ca\u30a4",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "\u30b9\u30d1\u30eb\u30bf",
|
||||
"Hittite": "\u30d2\u30c3\u30bf\u30a4\u30c8",
|
||||
"British": "\u30a4\u30ae\u30ea\u30b9",
|
||||
"Maya": "\u30de\u30e4",
|
||||
"Palenque": "\u30d1\u30ec\u30f3\u30b1",
|
||||
"\u8a9e\u6cd5\u932f\u8aa4\uff01": "\u69cb\u6587\u30a8\u30e9\u30fc\uff01",
|
||||
"\u51fd\u6578\u540d\u7a31\u4e0d\u76f8\u7b26\uff0c\u53ef\u80fd\u662f\u7528\u4e86 reference\uff1f": "\u95a2\u6570\u540d\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002",
|
||||
"Treat [%1] as RegExp.": "[%1]\u3092RegExp\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002",
|
||||
"Invalid flags: [%1]": "\u7121\u52b9\u306a\u30d5\u30e9\u30b0: [%1]",
|
||||
"Illegal pattern: [%1]": "\u4e0d\u6b63\u306a\u30d1\u30bf\u30fc\u30f3: [%1]",
|
||||
"\u7121\u6cd5\u8f49\u63db\u6a21\u5f0f [%1]\uff01": "\u30e2\u30fc\u30c9[%1]\u3092\u5909\u63db\u3067\u304d\u307e\u305b\u3093\uff01",
|
||||
"\u2191Back to TOC": "\u2191\u76ee\u6b21\u3078",
|
||||
"Set TOC to left or right": "TOC\u3092\u5de6\u307e\u305f\u306f\u53f3\u306b\u30bb\u30c3\u30c8\u3057\u307e\u3059",
|
||||
"Contents of [%1]": "[%1] \u306e\u76ee\u6b21",
|
||||
"expand": "\u5c55\u958b\u3059\u308b",
|
||||
"collapse": "\u6298\u308a\u7573\u3080",
|
||||
"Unknown style name: [%1].": "\u4e0d\u660e\u306a\u30b9\u30bf\u30a4\u30eb\u540d: [%1]\u3002",
|
||||
"Invalid name of color: [%1].": "\u8272\u306e\u540d\u524d\u304c\u7121\u52b9\u3067\u3059: [%1]\u3002",
|
||||
"Invalid value [%1] of style: [%2]:": "\u30b9\u30bf\u30a4\u30eb\u306e\u7121\u52b9\u306a\u5024[%1]: [%2]:",
|
||||
"\u7121\u6cd5\u5c07\u771f\u507d\u503c\u8f49\u70ba\u6a23\u5f0f\u3002": "\u5024\u3092\u30b9\u30bf\u30a4\u30eb\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002",
|
||||
"\u6b32\u8a2d\u5b9a\u7684\u6a23\u5f0f\u503c\u4e26\u975e\u6578\u5b57\u3002": "\u30b9\u30bf\u30a4\u30eb\u5024\u306f\u6570\u5024\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002",
|
||||
"Set style \"%1\" = %2.": "\u30b9\u30bf\u30a4\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\uff1a\"%1\" = %2.",
|
||||
"Unknown style: [%1].": "\u4e0d\u660e\u306a\u30b9\u30bf\u30a4\u30eb: [%1]\u3002",
|
||||
"Illegal %1: [%2]": "\u4e0d\u6b63\u306a%1\uff1a[%2]",
|
||||
"%1\u8f49\u63db\u5c0d\uff1a": "%1\u306e\u5909\u63db\u30da\u30a2:",
|
||||
"revision id": "\u7248\u306e\u8b58\u5225\u5b50",
|
||||
"The requested robot task begins.": "Bot\u4f9d\u983c\u306e\u4f5c\u696d\u3092\u59cb\u3081\u307e\u3059\u3002",
|
||||
"\u672c\u7ae0\u7bc0\u672a\u8a2d\u5b9a\u4efb\u52d9\u5167\u5bb9: %1": "\u30bb\u30af\u30b7\u30e7\u30f3 \"%1\" \u306b\u30bf\u30b9\u30af\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002",
|
||||
"Add warning messages.": "\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8ffd\u52a0\u3059\u308b\u3002",
|
||||
"No title found for %1.": "\u30bf\u30a4\u30c8\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\uff1a%1\u3002",
|
||||
"Will not automatically notify the task begins!": "\u30bf\u30b9\u30af\u958b\u59cb\u306e\u81ea\u52d5\u901a\u77e5\u306f\u3057\u307e\u305b\u3093\uff01",
|
||||
"The requested robot task finished.": "Bot\u4f9d\u983c\u306e\u4f5c\u696d\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002",
|
||||
"{{Done}} Please check the results and let me know if there is something wrong, thank you.": "{{BOTREQ|\u5b8c\u4e86}} \u4fee\u6b63\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u3084\u597d\u307e\u3057\u304f\u306a\u3044\u72b6\u6cc1\u304c\u3042\u308a\u307e\u3057\u305f\u3089\u3001\u304a\u77e5\u3089\u305b\u304f\u3060\u3055\u3044\u3002\u4eca\u5f8c\u306e\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u3002\u5168\u3066\u554f\u984c\u7121\u3044\u5834\u5408\u306f{{tl|\u78ba\u8a8d}}\u306e\u8cbc\u308a\u4ed8\u3051\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002",
|
||||
"Will not automatically notify the task finished!": "\u30bf\u30b9\u30af\u7d42\u4e86\u306e\u81ea\u52d5\u901a\u77e5\u306f\u3057\u307e\u305b\u3093\uff01",
|
||||
"Problematic articles": "\u554f\u984c\u306e\u3042\u308b\u8a18\u4e8b",
|
||||
"Archiving operation": "\u8a18\u9332\u4fdd\u5b58",
|
||||
"Here is a list of interlanguage links that need to be manually corrected. This list will be updated automatically by the robot.": "\u3053\u306e\u30ea\u30b9\u30c8\u306f\u624b\u52d5\u3067\u4fee\u6b63\u3059\u308b\u5fc5\u8981\u306e\u3042\u308b\u8a18\u4e8b\u7fa4\u3067\u3059\u3002\u30ea\u30b9\u30c8\u306f\u30dc\u30c3\u30c8\u306b\u3088\u3063\u3066\u81ea\u52d5\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002",
|
||||
"edit-mark": "\u7de8",
|
||||
"... A total of %1 {{PLURAL:%1|occurrence|occurrences}}.": "\u5408\u8a08%1\u56de\u767a\u751f\u3057\u307e\u3057\u305f",
|
||||
"Report generation date: %1": "\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u65e5\uff1a%1",
|
||||
"Cleanup report for interlanguage link templates": "\u89e3\u6d88\u6e08\u307f\u4eee\u30ea\u30f3\u30af\u3092\u5185\u90e8\u30ea\u30f3\u30af\u306b\u7f6e\u304d\u63db\u3048\u308b\u4f5c\u696d\u306e\u5831\u544a",
|
||||
"Convert %1 to wikilink": "\u89e3\u6d88\u6e08\u307f\u4eee\u30ea\u30f3\u30af%1\u3092\u5185\u90e8\u30ea\u30f3\u30af\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059",
|
||||
"Preserve interlanguage links because of the \"preserve\" parameter is set.": "\u5f37\u5236\u8868\u793a\u5f15\u6570(preserve)\u3092\u6307\u5b9a\u3059\u308b\u306a\u306e\u3067\u3001\u4fee\u6b63\u306e\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002",
|
||||
"The task does not process talk pages": "\u30ce\u30fc\u30c8\u30da\u30fc\u30b8\u3092\u51e6\u7406\u3057\u306a\u3044",
|
||||
"The local link target links back to the page itself. [[MOS:CIRCULAR]]?": "[[WP:SELF|\u81ea\u5df1\u8a00\u53ca]]\u30ea\u30f3\u30af\u3002",
|
||||
"\u5916\u8a9e\u689d\u76ee\u6c92\u6709\u76f8\u5c0d\u61c9\u7684\u4e2d\u6587\u689d\u76ee\uff0c\u6216\u61c9\u5c0d\u61c9\u7684\u4e2d\u6587\u689d\u76ee\u4e26\u6c92\u6709\u9023\u7d50\u5230\u6b63\u78ba\u7684Wikidata\u9805\u76ee\u3002": "\u4ed6\u8a00\u8a9e\u7248\u9805\u76ee\u30ea\u30f3\u30af\u5148\u304b\u3089\u306e\u65e5\u672c\u8a9e\u7248\u9805\u76ee\u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u4ed6\u8a00\u8a9e\u7248\u3068\u30ea\u30f3\u30af\u3057\u3066\u3044\u307e\u305b\u3093\u3002",
|
||||
"From the parameter of template": "\u5f15\u6570\u304b\u3089",
|
||||
"From foreign language title": "\u4ed6\u8a00\u8a9e\u7248\u9805\u76ee\u30ea\u30f3\u30af\u5148\u304b\u3089",
|
||||
"The local title is different from the one given by the template parameters.": "\u5bfe\u5fdc\u3059\u308b\u65e5\u672c\u8a9e\u7248\u306e\u8a18\u4e8b\u540d\u304c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002",
|
||||
"The corresponding foreign language page does not exist.": "\u4ed6\u8a00\u8a9e\u7248\u8a18\u4e8b\u81ea\u4f53\u5b58\u5728\u3057\u307e\u305b\u3093\u3002",
|
||||
"The corresponding foreign language page is a disambiguation page.": "\u4ed6\u8a00\u8a9e\u7248\u9805\u76ee\u30ea\u30f3\u30af\u5148\u304c\u66d6\u6627\u3055\u56de\u907f\u30da\u30fc\u30b8\u3067\u3059\u3002",
|
||||
"The corresponding foreign language page is redirected to a section.": "\u4ed6\u8a00\u8a9e\u7248\u9805\u76ee\u30ea\u30f3\u30af\u5148\u304c\u30bb\u30af\u30b7\u30e7\u30f3\u3078\u8ee2\u9001\u3057\u307e\u3059\u3002",
|
||||
"Syntax error in the interlanguage link template.": "\u8a00\u8a9e\u9593\u30ea\u30f3\u30af\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u69cb\u6587\u30a8\u30e9\u30fc\u3002",
|
||||
"Could not retrieve the foreign page. I will retry next time.": "\u4ed6\u8a00\u8a9e\u7248\u9805\u76ee\u3092\u53d6\u5f97\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u6b21\u56de\u5b9f\u884c\u6642\u306b\u518d\u8a66\u884c\u3057\u307e\u3059\u3002",
|
||||
"IP user": "IP \u5229\u7528\u8005",
|
||||
"user": "\u5229\u7528\u8005",
|
||||
"(new page)": "(\u65b0\u3057\u3044\u30da\u30fc\u30b8)",
|
||||
"Fixing broken anchor": "\u5207\u308c\u305f\u30a2\u30f3\u30ab\u30fc\u30ea\u30f3\u30af\u3092\u4fee\u5fa9",
|
||||
"Remove %1 non-defunct {{PLURAL:%1|anchor|anchors}}": "\u5207\u308c\u305f\u30a2\u30f3\u30ab\u30fc\u306e\u544a\u77e5\u3092%1\u500b\u524a\u9664\u3057\u307e\u3057\u305f",
|
||||
"Anchor %1 links to a specific web page: %2.": "\u30a2\u30f3\u30ab\u30fc %1 \u306f\u3001\u5c02\u5c5e\u306e\u30da\u30fc\u30b8 %2 \u306b\u30ea\u30f3\u30af\u3057\u3066\u3044\u307e\u3059\u3002",
|
||||
"The anchor (%2) is no longer available because it was [[Special:Diff/%1|deleted by a user]] before.": "\u3053\u306e\u30a2\u30f3\u30ab\u30fc\uff08%2\uff09\u306f[[Special:Diff/%1|\u4ed6\u306e\u7de8\u96c6\u8005\u306b\u3088\u3063\u3066\u524a\u9664\u3055\u308c\u307e\u3057\u305f]]\u3002",
|
||||
"Reminder of an inactive anchor": "\u5207\u308c\u305f\u30a2\u30f3\u30ab\u30fc\u306e\u544a\u77e5",
|
||||
"Update links to archived section %1: %2": "\u30a2\u30f3\u30ab\u30fc\u30ea\u30f3\u30af%1\u3092\u904e\u53bb\u30ed\u30b0: %2\u5185\u5b9b\u306b\u66f4\u65b0",
|
||||
"Incorrect capitalization/spaced section title": "\u30a2\u30f3\u30ab\u30fc\u30ea\u30f3\u30af\u306e\u5927\u5c0f\u6587\u5b57\u30fb\u7a7a\u767d\u6587\u5b57\u30fb\u62ec\u5f27\u9593\u9055\u3044\u3092\u8a02\u6b63",
|
||||
"VERY DIFFERENT": "\u305f\u3060\u3057\u5909\u66f4\u5927\u306b\u3064\u304d\u8aa4\u63a8\u5b9a\u306e\u53ef\u80fd\u6027\u3042\u308a",
|
||||
"Please help to check this edit.": "\u3053\u306e\u7de8\u96c6\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
|
||||
"%1\u2192most alike anchor %2": "%1\u2192\u3082\u3063\u3068\u3082\u4f3c\u3066\u3044\u308b\u30a2\u30f3\u30ab\u30fc%2",
|
||||
"\u66f4\u65b0%1": "%1\u306e\u66f4\u65b0",
|
||||
"%1\u7248\u689d\u76ee": "%1\u7248\u8a18\u4e8b",
|
||||
"\u8a9e\u8a00\u6578": "\u8a00\u8a9e\u6570",
|
||||
"\u5e73\u5747": "\u5e73\u5747",
|
||||
"\u5408\u8a08": "\u5408\u8a08",
|
||||
"\u689d\u76ee\u4e00\u89bd": "\u8a18\u4e8b\u4e00\u89a7",
|
||||
"See also": "\u95a2\u9023\u9805\u76ee",
|
||||
"\u7121\u6a19\u7c64": "\u30e9\u30d9\u30eb\u6b20\u5982",
|
||||
"Very Sorry. Undo the robot's wrong edits. (%1)": "\u5927\u5909\u7533\u3057\u8a33\u3054\u3056\u3044\u307e\u305b\u3093\u3002\u30ed\u30dc\u30c3\u30c8\u306e\u9593\u9055\u3063\u305f\u7de8\u96c6\u3092\u5143\u306b\u623b\u3059\u3002\uff08%1\uff09",
|
||||
"debug level": "\u30c7\u30d0\u30c3\u30b0\u30ec\u30d9\u30eb",
|
||||
"Move %1:": "\u79fb\u52d5 %1:",
|
||||
"Compress %1:": "\u5727\u7e2e %1:",
|
||||
"\u641c\u5c0b\u7d50\u679c": "\u691c\u7d22\u7d50\u679c",
|
||||
"\u4e0b\u8f09\u9078\u9805": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30aa\u30d7\u30b7\u30e7\u30f3",
|
||||
"\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "\u304a\u6c17\u306b\u5165\u308a\u4f5c\u54c1",
|
||||
"\u641c\u5c0b": "\u691c\u7d22",
|
||||
"\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94": "\u30bf\u30a4\u30c8\u30eb / \ud83c\udd94",
|
||||
"\u958b\u59cb\u4e0b\u8f09": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u958b\u59cb",
|
||||
"CeJS \u7db2\u8def\u5c0f\u8aaa\u6f2b\u756b\u4e0b\u8f09\u5de5\u5177": "CeJS\u30aa\u30f3\u30e9\u30a4\u30f3\u5c0f\u8aac/\u30b3\u30df\u30c3\u30af\u30c0\u30a6\u30f3\u30ed\u30fc\u30c0\u30fc",
|
||||
"\u8cbc\u4e0a": "\u8cbc\u308a\u4ed8\u3051",
|
||||
"\u958b\u59cb\u6aa2\u6e2c\u5b89\u88dd\u5305\u66f4\u65b0\u2026\u2026": "\u30a2\u30d7\u30c7\u30fc\u30c8\u3092\u5b9f\u884c\u3059\u308b\u2026\u2026",
|
||||
"\u6709\u65b0\u7248\u5b89\u88dd\u5305\uff1a%1": "\u65b0\u305f\u306a\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u307f\u3064\u3051\u305f: %1",
|
||||
"\u7e41\u9ad4\u5b57\u6f2b\u756b": "\u4e2d\u56fd\u7e41\u4f53\u5b57\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af",
|
||||
"\u4e2d\u56fd\u5185\u5730\u6f2b\u753b": "\u4e2d\u56fd\u7c21\u4f53\u5b57\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af",
|
||||
"\u65e5\u672c\u8a9e\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af": "\u65e5\u672c\u8a9e\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af",
|
||||
"English webcomics": "\u82f1\u8a9e\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af",
|
||||
"\u4e2d\u56fd\u5185\u5730\u5c0f\u8bf4": "\u4e2d\u56fd\u7c21\u4f53\u5b57\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u5c0f\u8aac",
|
||||
"\u65e5\u672c\u8a9e\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u5c0f\u8aac": "\u65e5\u672c\u8a9e\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u5c0f\u8aac",
|
||||
"\u4e0d\u518d\u7dad\u8b77": "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093",
|
||||
"download_options.archive_program_path": "\u5f15\u7528\u7b26\u4ed8\u304d\u306e7-Zip\u5b9f\u884c\u53ef\u80fd\u30d1\u30b9\u3002",
|
||||
"download_options.chapter_filter": "\u7ae0\u306e\u984c\u540d\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3002\u4f8b\u3048\u3070\uff62\u5358\u884c\u672c\uff63\u3002",
|
||||
"download_options.convert_to_language": "\u7c21\u4f53\u5b57\u4e2d\u56fd\u8a9e\u306e\u5c0f\u8aac\u3092\u7e41\u4f53\u5b57\u4e2d\u56fd\u8a9e\u306e\u5c0f\u8aac\u306b\u5909\u63db\u3059\u308b\u304b\u3001\u9806\u756a\u306b\u5909\u63db\u3057\u307e\u3059\u3002",
|
||||
"download_options.cookie": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6642\u306b\u8ffd\u52a0\u3059\u308bCookie\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002",
|
||||
"download_options.modify_work_list_when_archive_old_works": "\u540c\u6642\u306b\u3001\u9054\u6210\u3059\u3079\u304d\u4f5c\u696d\u306f\u4f5c\u696d\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002",
|
||||
"download_options.overwrite_old_file": "\u65b0\u3057\u304f\u53d6\u5f97\u3057\u305f\u5c0f\u8aac\u30d5\u30a1\u30a4\u30eb\u304c\u5927\u304d\u3044\u5834\u5408\u306f\u3001\u53e4\u3044\u5c0f\u8aac\u30d5\u30a1\u30a4\u30eb\u3092\u4e0a\u66f8\u304d\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
|
||||
"download_options.proxy": "\u30d7\u30ed\u30ad\u30b7\u30b5\u30fc\u30d0\u30fc \"username:password@hostname:port\"",
|
||||
"download_options.rearrange_list_file": "\u30ea\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002",
|
||||
"download_options.recheck": "\u5168\u4f5c\u54c1\u306e\u5168\u30c1\u30e3\u30d7\u30bf\u30fc\u3001\u5168\u753b\u50cf\u3092\u691c\u51fa\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u5b8c\u6210\u3057\u305f\u753b\u50cf\u306e\u518d\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306f\u884c\u3044\u307e\u305b\u3093\u3002'multi_parts_changed'\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u8907\u6570\u306e\u30d1\u30fc\u30c8\u304c\u3042\u308b\u3068\u304d\u3060\u3051\u518d\u78ba\u8a8d\u3057\u307e\u3059\u3002",
|
||||
"download_options.reget_chapter": "\u691c\u51fa\u3055\u308c\u305f\u5404\u7ae0\u306e\u5185\u5bb9\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002",
|
||||
"download_options.save_preference": "\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002",
|
||||
"download_options.search_again": "\u4f5c\u54c1\u540d\u3092\u3082\u3046\u4e00\u5ea6\u691c\u7d22\u3057\u307e\u3059\u3002\u65e2\u5b9a: \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3057\u3066\u3001\u518d\u5ea6\u691c\u7d22\u3057\u307e\u305b\u3093\u3002",
|
||||
"download_options.show_information_only": "\u30ad\u30e3\u30e9\u30af\u30bf\u30e6\u30fc\u30b6\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9 (CUI)\u3067\u4f5c\u696d\u60c5\u5831\u3092\u8868\u793a\u3057\u307e\u3059\u3002",
|
||||
"download_options.start_chapter_NO": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u958b\u59cb/\u7d9a\u884c\u3059\u308b\u7ae0\u756a\u53f7\u3002",
|
||||
"download_options.start_chapter_title": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u958b\u59cb/\u7d9a\u884c\u3059\u308b\u7ae0\u306e\u30bf\u30a4\u30c8\u30eb\u3002",
|
||||
"download_options.vertical_writing": "\u5c0f\u8aac\u3092\u7e26\u66f8\u304d\u306b\u3059\u308b\u3002\u65e2\u5b9a\u306f\u6a2a\u66f8\u304d\u3002",
|
||||
"local-language-name": "\u65e5\u672c\u8a9e",
|
||||
"\u73fe\u6709%1\u689d%2\u8a0a\u606f\u5c1a\u672a\u7ffb\u8b6f\uff0c\u6b61\u8fce\u60a8\u4e00\u540c\u53c3\u8207\u7ffb\u8b6f\u8a0a\u606f\uff01": "\u73fe\u5728\u3001\u7ffb\u8a33\u3055\u308c\u3066\u3044\u306a\u3044%2\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c%1\u4ef6\u3042\u308a\u307e\u3059\u3002\u4e00\u7dd2\u306b\u8a33\u3057\u307e\u3057\u3087\u3046\uff01",
|
||||
"\u6240\u6709\u74b0\u5883\u8b8a\u6578\uff1a%1": "\u74b0\u5883\u5909\u6570: %1",
|
||||
"Default download directory: %1": "\u65e2\u5b9a\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea: %1",
|
||||
"\u6b61\u8fce\u8207\u6211\u5011\u4e00\u540c<a>\u7ffb\u8b6f\u4ecb\u9762\u6587\u5b57</a>\uff01": "\u4e00\u7dd2\u306b<a>\u7ffb\u8a33\u3057\u307e\u3057\u3087\u3046</a>\uff01",
|
||||
"\u8907\u88fd\u8cbc\u4e0a\u5feb\u901f\u9375": "\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",
|
||||
"\u5e03\u666f\u4e3b\u984c\uff1a": "\u30c6\u30fc\u30de:",
|
||||
"dark theme": "\u30c0\u30fc\u30af",
|
||||
"default theme": "\u521d\u671f\u8a2d\u5b9a",
|
||||
"light theme": "\u660e\u308b\u3044",
|
||||
"\u91cd\u8a2d\u4e0b\u8f09\u9078\u9805": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30ea\u30bb\u30c3\u30c8\u3059\u308b",
|
||||
"\u672a\u9078\u64c7\u6a94\u6848\u6216\u76ee\u9304\u3002": "\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002",
|
||||
"\u958b\u5553\u4f5c\u54c1\u4e0b\u8f09\u76ee\u9304": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30d5\u30a9\u30eb\u30c0\u3092\u958b\u304f",
|
||||
"\u9023\u7d50": "\u30ea\u30f3\u30af",
|
||||
"work_crawler-search_result_columns-site": "\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8",
|
||||
"work_crawler-search_result_columns-title": "\u30bf\u30a4\u30c8\u30eb",
|
||||
"work_crawler-search_result_columns-author": "Author",
|
||||
"work_crawler-search_result_columns-favorite": "\u304a\u6c17\u306b\u5165\u308a",
|
||||
"\u7ae0\u7bc0\u6578\u91cf": "\u30c1\u30e3\u30d7\u30bf\u30fc\u6570",
|
||||
"work_crawler-search_result_columns-restricted": "\u5236\u9650\u4ed8\u304d",
|
||||
"work_crawler-search_result_columns-completed": "\u5b8c\u4e86\u3057\u307e\u3057\u305f",
|
||||
"work_crawler-search_result_columns-status": "\u72b6\u614b",
|
||||
"\u4f5c\u54c1\u72c0\u6cc1": "\u4ed5\u4e8b\u306e\u72b6\u6cc1",
|
||||
"\u932f\u8aa4\u539f\u56e0": "\u30a8\u30e9\u30fc\u306e\u539f\u56e0",
|
||||
"\u4f5c\u54c1\u7db2\u7ad9": "\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8",
|
||||
"\u53d6\u6d88\u641c\u5c0b": "\u691c\u7d22\u3092\u53d6\u308a\u6d88\u3059",
|
||||
"\u66ab\u505c": "\u4e00\u6642\u4f11\u6b62",
|
||||
"\u66ab\u505c/\u6062\u5fa9\u4e0b\u8f09": "\u4e00\u6642\u505c\u6b62/\u518d\u958b\u3000",
|
||||
"\u53d6\u6d88": "\u30ad\u30e3\u30f3\u30bb\u30eb",
|
||||
"\u53d6\u6d88\u4e0b\u8f09": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb",
|
||||
"\u7e7c\u7e8c": "\u518d\u958b",
|
||||
"\u91cd\u65b0\u4e0b\u8f09": "\u518d\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",
|
||||
"\u6e05\u9664\u672c\u4e0b\u8f09\u7d00\u9304": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u30ec\u30b3\u30fc\u30c9\u3092\u30af\u30ea\u30a2\u3059\u308b",
|
||||
"\u66f4\u65b0\u5b8c\u7562\u3002": "\u66f4\u65b0\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002",
|
||||
"\u91cd\u65b0\u555f\u52d5\u61c9\u7528\u7a0b\u5f0f\u3002": "\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002",
|
||||
"\u6240\u6709\u7576\u524d\u4f5c\u696d\u90fd\u6703\u4e2d\u65b7\uff01": "\u73fe\u5728\u306e\u3059\u3079\u3066\u306e\u30b8\u30e7\u30d6\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\uff01",
|
||||
"\u66f4\u65b0\u5931\u6557\uff01": "\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
|
||||
"\u8b66\u544a\uff1a\u7121\u6cd5\u5b58\u53d6\u4f5c\u54c1\u5b58\u653e\u76ee\u9304 [%1]\uff01": "\u8b66\u544a: \u4f5c\u54c1\u3092\u4fdd\u5b58\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea [%1] \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002",
|
||||
"\u4e0b\u8f09\u7684\u6a94\u6848\u5c07\u653e\u5728\u9810\u8a2d\u76ee\u9304\u4e0b\u3002": "\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u65e2\u5b9a\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002",
|
||||
"\u6b32\u63a1\u7528\u5716\u5f62\u4ecb\u9762\u8acb\u57f7\u884c `%1`\u3002": "GUI\u3092\u4f7f\u3044\u305f\u3044\u5834\u5408\u3001\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\uff1a`%1`\u3002",
|
||||
"option=true": "\u30aa\u30d7\u30b7\u30e7\u30f3=true",
|
||||
"option=value": "\u30aa\u30d7\u30b7\u30e7\u30f3=\u5024",
|
||||
"Usage:": "\u4f7f\u7528\u65b9\u6cd5:",
|
||||
"\u4f5c\u54c1\u6a19\u984c\u6216 id": "\u984c\u540d / \u4f5c\u54c1ID",
|
||||
"\u4f5c\u54c1\u5217\u8868\u6a94\u6848": "\u4f5c\u54c1\u4e00\u89a7",
|
||||
"Options:": "\u30aa\u30d7\u30b7\u30e7\u30f3:"
|
||||
},
|
||||
"ja-JP");
|
||||
@@ -0,0 +1,296 @@
|
||||
/*
|
||||
kana romaji table
|
||||
仮名/ロマ字(羅馬字)
|
||||
|
||||
see also: JIS input tool, jit.htm
|
||||
*/
|
||||
|
||||
// ロマ字 平仮名(ひらがな)
|
||||
a あ
|
||||
i い
|
||||
u う
|
||||
//e へ
|
||||
e え
|
||||
o お
|
||||
ka か
|
||||
ki き
|
||||
ku く
|
||||
ke け
|
||||
ko こ
|
||||
ga が
|
||||
gi ぎ
|
||||
gu ぐ
|
||||
ge げ
|
||||
go ご
|
||||
sa さ
|
||||
si し
|
||||
ci し
|
||||
shi し
|
||||
su す
|
||||
se せ
|
||||
so そ
|
||||
za ざ
|
||||
ji じ
|
||||
zu ず
|
||||
ze ぜ
|
||||
zo ぞ
|
||||
ta た
|
||||
ti ち
|
||||
chi ち
|
||||
thi ち
|
||||
tu つ
|
||||
tsu つ
|
||||
te て
|
||||
to と
|
||||
da だ
|
||||
di ぢ
|
||||
zi ぢ
|
||||
zzu づ
|
||||
de で
|
||||
do ど
|
||||
na な
|
||||
ni に
|
||||
nu ぬ
|
||||
ne ね
|
||||
no の
|
||||
ha は
|
||||
hi ひ
|
||||
hu ふ
|
||||
he へ
|
||||
ho ほ
|
||||
ba ば
|
||||
bi び
|
||||
bu ぶ
|
||||
be べ
|
||||
bo ぼ
|
||||
pa ぱ
|
||||
pi ぴ
|
||||
pu ぷ
|
||||
pe ぺ
|
||||
po ぽ
|
||||
ma ま
|
||||
mi み
|
||||
mu む
|
||||
me め
|
||||
mo も
|
||||
ya や
|
||||
yu ゆ
|
||||
yo よ
|
||||
ra ら
|
||||
ri り
|
||||
ru る
|
||||
re れ
|
||||
ro ろ
|
||||
//wa は
|
||||
wa わ
|
||||
oo を
|
||||
n ん
|
||||
x っ
|
||||
kya きゃ
|
||||
kyu きゅ
|
||||
kyo きょ
|
||||
sya しゃ
|
||||
sha しゃ
|
||||
syu しゅ
|
||||
shu しゅ
|
||||
syo しょ
|
||||
sho しょ
|
||||
cha ちゃ
|
||||
chu ちゅ
|
||||
cho ちょ
|
||||
nya にゃ
|
||||
nyu にゅ
|
||||
nyo にょ
|
||||
rya りゃ
|
||||
ryu りゅ
|
||||
ryo りょ
|
||||
zya じゃ
|
||||
zyu じゅ
|
||||
zyo じょ
|
||||
ja じゃ
|
||||
ju じゅ
|
||||
jo じょ
|
||||
xa ぁ
|
||||
xi ぃ
|
||||
xu ぅ
|
||||
xe ぇ
|
||||
xo ぉ
|
||||
xka ヵ
|
||||
xya ゃ
|
||||
xyu ゅ
|
||||
xyo ょ
|
||||
|
||||
// ロマ字 片仮名(カタカナ)
|
||||
A ア
|
||||
I イ
|
||||
U ウ
|
||||
//E ヘ
|
||||
E エ
|
||||
O オ
|
||||
KA カ
|
||||
KI キ
|
||||
KU ク
|
||||
KE ケ
|
||||
KO コ
|
||||
GA ガ
|
||||
GI ギ
|
||||
GU グ
|
||||
GE ゲ
|
||||
GO ゴ
|
||||
SA サ
|
||||
SI シ
|
||||
CI シ
|
||||
SHI シ
|
||||
SU ス
|
||||
SE セ
|
||||
SO ソ
|
||||
ZA ザ
|
||||
ZI ジ
|
||||
ZU ズ
|
||||
ZE ゼ
|
||||
ZO ゾ
|
||||
TA タ
|
||||
TI チ
|
||||
CHI チ
|
||||
THI チ
|
||||
TU ツ
|
||||
TSU ツ
|
||||
TE テ
|
||||
TO ト
|
||||
DA ダ
|
||||
DI ヂ
|
||||
JI ヂ
|
||||
ZZU ヅ
|
||||
DE デ
|
||||
DO ド
|
||||
NA ナ
|
||||
NI ニ
|
||||
NU ヌ
|
||||
NE ネ
|
||||
NO ノ
|
||||
HA ハ
|
||||
HI ヒ
|
||||
HU フ
|
||||
HE ヘ
|
||||
HO ホ
|
||||
BA バ
|
||||
BI ビ
|
||||
BU ブ
|
||||
BE ベ
|
||||
BO ボ
|
||||
PA パ
|
||||
PI ピ
|
||||
PU プ
|
||||
PE ペ
|
||||
PO ポ
|
||||
MA マ
|
||||
MI ミ
|
||||
MU ム
|
||||
ME メ
|
||||
MO モ
|
||||
YA ヤ
|
||||
YU ユ
|
||||
YO ヨ
|
||||
RA ラ
|
||||
RI リ
|
||||
RU ル
|
||||
RE レ
|
||||
RO ロ
|
||||
WA ワ
|
||||
WWA ヮ
|
||||
OO ヲ
|
||||
N ン
|
||||
X ッ
|
||||
KYA キャ
|
||||
KYU キュ
|
||||
KYO キョ
|
||||
SYA シャ
|
||||
SHA シャ
|
||||
SYU シュ
|
||||
SHU シュ
|
||||
SYO ショ
|
||||
SHO ショ
|
||||
CHA チャ
|
||||
CHU チュ
|
||||
CHO チョ
|
||||
NYA ニャ
|
||||
NYU ニュ
|
||||
NYO ニョ
|
||||
RYA リャ
|
||||
RYU リュ
|
||||
RYO リョ
|
||||
ZYA ジャ
|
||||
ZYU ジュ
|
||||
ZYO ジョ
|
||||
JA ジャ
|
||||
JU ジュ
|
||||
JO ジョ
|
||||
XA ァ
|
||||
XI ィ
|
||||
XU ゥ
|
||||
XE ェ
|
||||
XO ォ
|
||||
XKA ヶ
|
||||
XYA ャ
|
||||
XYU ュ
|
||||
XYO ョ
|
||||
|
||||
/*
|
||||
aa あぁ
|
||||
- ー
|
||||
.. 々
|
||||
,, ゝ
|
||||
... …
|
||||
0 0
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
8 8
|
||||
9 9
|
||||
* ☆
|
||||
/. ・
|
||||
. 。
|
||||
? ?
|
||||
, 、
|
||||
~ 〜
|
||||
^ ^
|
||||
; ;
|
||||
( (
|
||||
) )
|
||||
! !
|
||||
> >
|
||||
|
||||
II 私
|
||||
watashi 私
|
||||
watasi 私
|
||||
tomo 友
|
||||
tathi 達
|
||||
ai 会
|
||||
tw 台湾
|
||||
saikin 最近
|
||||
kana 仮名
|
||||
onaji 同じ
|
||||
nou 脳
|
||||
omo 思
|
||||
youbi 曜日
|
||||
yakusoku 約束
|
||||
hen 変
|
||||
gakusei 学生
|
||||
//ijiban 一番
|
||||
isoga 忙
|
||||
//kane 金
|
||||
zotsugyo 卒業
|
||||
akogare 憧れ
|
||||
tanoshi 楽し
|
||||
//kura 暮ら
|
||||
//hunou 不能
|
||||
muri 無理
|
||||
suu すぅ
|
||||
ganba 頑張
|
||||
deki 出来
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,124 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"untranslated message count": "1000+",
|
||||
"\u6642\u5340\uff1a": "\u0cb8\u0cae\u0caf \u0cb5\u0cb2\u0caf: ",
|
||||
"Loading...": "\u0ca4\u0cc1\u0c82\u0cac\u0cbf\u0cb8\u0cb2\u0cbe\u0c97\u0cc1\u0ca4\u0ccd\u0ca4\u0cbf\u0ca6\u0cc6....",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "\u0cae\u0ccd\u0caf\u0cbe\u0ca8\u0ccd\u0cae\u0cbe\u0cb0\u0ccd",
|
||||
"Vi\u1ec7t Nam": "\u0cb5\u0cbf\u0caf\u0cc6\u0c9f\u0ccd\u0ca8\u0cbe\u0c82",
|
||||
"\u5206\u985e": "\u0c97\u0cc1\u0c82\u0caa\u0cc1",
|
||||
"%1/%2/%3": "%1/%2/%3",
|
||||
"%1 BCE": "%1 \u0c95\u0ccd\u0cb0\u0cbf.\u0caa\u0cc2",
|
||||
"%1 CE": "%1 \u0c95\u0ccd\u0cb0\u0cbf.\u0cb6",
|
||||
"\u5171\u6709 %1 \u500b\u6642\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u0c95\u0cbe\u0cb2\u0cbe\u0cb5\u0ca7\u0cbf\u0caf {{PLURAL:%1|\u0ca6\u0cbe\u0c96\u0cb2\u0cc6|\u0ca6\u0cbe\u0c96\u0cb2\u0cc6\u0c97\u0cb3\u0cc1}}",
|
||||
"\u5171\u6709 %1 \u500b\u5e74\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u0cb5\u0cb0\u0ccd\u0cb7\u0ca6 {{PLURAL:%1|\u0ca6\u0cbe\u0c96\u0cb2\u0cc6|\u0ca6\u0cbe\u0c96\u0cb2\u0cc6\u0c97\u0cb3\u0cc1}}",
|
||||
"\u81fa\u7063\u5730\u9707": "\u0ca4\u0cc8\u0cb5\u0cbe\u0ca8\u0ccd \u0cad\u0cc2\u0c95\u0c82\u0caa\u0c97\u0cb3\u0cc1",
|
||||
"\u6240\u6709\u570b\u5bb6": "\u0c8e\u0cb2\u0ccd\u0cb2\u0cbe \u0ca6\u0cc7\u0cb6\u0c97\u0cb3\u0cc1",
|
||||
"\u5171\u5b58\u7d00\u5e74": "\u0cb8\u0cae\u0c95\u0cbe\u0cb2\u0cc0\u0ca8 \u0c85\u0cb5\u0ca7\u0cbf",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "\u0c89\u0ca6\u0cbe\u0cb9\u0cb0\u0ca3\u0cc6",
|
||||
"France": "\u0cab\u0ccd\u0cb0\u0cbe\u0ca8\u0ccd\u0cb8\u0ccd",
|
||||
"Great Britain": "\u0c97\u0ccd\u0cb0\u0cc7\u0c9f\u0ccd \u0cac\u0ccd\u0cb0\u0cbf\u0c9f\u0ca8\u0ccd",
|
||||
"Spain": "\u0cb8\u0ccd\u0caa\u0cc7\u0ca8\u0ccd",
|
||||
"\u7236\u89aa": "\u0ca4\u0c82\u0ca6\u0cc6",
|
||||
"\u6bcd\u89aa": "\u0ca4\u0cbe\u0caf\u0cbf",
|
||||
"Aries": "\u0cae\u0cc7\u0cb7",
|
||||
"Taurus": "\u0cb5\u0cc3\u0cb7\u0cad",
|
||||
"Gemini": "\u0cae\u0cbf\u0ca5\u0cc1\u0ca8",
|
||||
"Cancer": "\u0c95\u0cb0\u0ccd\u0c95\u0cbe\u0c9f\u0c95",
|
||||
"Leo": "\u0cb8\u0cbf\u0c82\u0cb9",
|
||||
"Virgo": "\u0c95\u0ca8\u0ccd\u0caf\u0cbe",
|
||||
"Libra": "\u0ca4\u0cc1\u0cb2\u0cbe",
|
||||
"Scorpio": "\u0cb5\u0cc3\u0cb6\u0ccd\u0c9a\u0cbf\u0c95",
|
||||
"Sagittarius": "\u0ca7\u0ca8\u0cc1\u0cb8\u0ccd\u0cb8\u0cc1",
|
||||
"Capricorn": "\u0cae\u0c95\u0cb0",
|
||||
"Aquarius": "\u0c95\u0cc1\u0c82\u0cad",
|
||||
"Pisces": "\u0cae\u0cc0\u0ca8",
|
||||
"\u540c\u570b\u5171\u5b58\u7d00\u5e74": "\u0cb8\u0cae\u0c95\u0cbe\u0cb2\u0cc0\u0ca8 \u0c85\u0cb5\u0ca7\u0cbf (\u0c85\u0ca6\u0cc7 \u0ca6\u0cc7\u0cb6)",
|
||||
"\u6714": "\u0c85\u0cae\u0cbe\u0cb5\u0cbe\u0cb8\u0ccd\u0caf\u0cc6",
|
||||
"\u4e2d\u570b": "\u0c9a\u0cc0\u0ca8\u0cbe",
|
||||
"zodiac sign": "\u0cb0\u0cbe\u0cb6\u0cbf \u0c9a\u0cbf\u0cb9\u0ccd\u0ca8\u0cc6",
|
||||
"\u671b": "\u0cb9\u0cc1\u0ca3\u0ccd\u0ca3\u0cbf\u0cae\u0cc6",
|
||||
"total lunar eclipse": "\u0caa\u0cc2\u0cb0\u0ccd\u0ca3 \u0c9a\u0c82\u0ca6\u0ccd\u0cb0 \u0c97\u0ccd\u0cb0\u0cb9\u0ca3",
|
||||
"total solar eclipse": "\u0caa\u0cc2\u0cb0\u0ccd\u0ca3 \u0cb8\u0cc2\u0cb0\u0ccd\u0caf \u0c97\u0ccd\u0cb0\u0cb9\u0ca3",
|
||||
"lunar eclipse": "\u0c9a\u0c82\u0ca6\u0ccd\u0cb0 \u0c97\u0ccd\u0cb0\u0cb9\u0ca3",
|
||||
"solar eclipse": "\u0cb8\u0cc2\u0cb0\u0ccd\u0caf \u0c97\u0ccd\u0cb0\u0cb9\u0ca3",
|
||||
"moonrise": "\u0c9a\u0c82\u0ca6\u0ccd\u0cb0\u0ccb\u0ca6\u0caf",
|
||||
"sunrise": "\u0cb8\u0cc2\u0cb0\u0ccd\u0caf\u0ccb\u0ca6\u0caf",
|
||||
"moonset": "\u0c9a\u0c82\u0ca6\u0ccd\u0cb0\u0cbe\u0cb8\u0ccd\u0ca4",
|
||||
"sunset": "\u0cb8\u0cc2\u0cb0\u0ccd\u0caf\u0cbe\u0cb8\u0ccd\u0ca4",
|
||||
"log-type-error": "\u0ca6\u0ccb\u0cb7",
|
||||
"log-type-info": "\u0cae\u0cbe\u0cb9\u0cbf\u0ca4\u0cbf",
|
||||
"log-type-log": "\u0ca6\u0cbe\u0c96\u0cb2\u0cc6",
|
||||
"Language": "\u0cad\u0cbe\u0cb7\u0cc6",
|
||||
"number": "\u0cb8\u0c82\u0c96\u0ccd\u0caf\u0cc6",
|
||||
"Contents": "\u0caa\u0cb0\u0cbf\u0cb5\u0cbf\u0ca1\u0cbf",
|
||||
"Italy": "\u0c87\u0c9f\u0cb2\u0cbf",
|
||||
"Poland": "\u0caa\u0ccb\u0cb2\u0cc6\u0c82\u0ca1\u0ccd",
|
||||
"Portugal": "\u0caa\u0ccb\u0cb0\u0ccd\u0c9a\u0cc1\u0c97\u0cb2\u0ccd",
|
||||
"Luxembourg": "\u0cb2\u0c95\u0ccd\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd\u0c97\u0ccd",
|
||||
"Netherlands": "\u0ca8\u0cc6\u0ca6\u0cb0\u0ccd\u0cb2\u0cc6\u0c82\u0ca1\u0ccd",
|
||||
"Bavaria": "\u0cac\u0cb5\u0cc7\u0cb0\u0cbf\u0caf\u0cbe",
|
||||
"Austria": "\u0c86\u0cb8\u0ccd\u0c9f\u0ccd\u0cb0\u0cbf\u0caf\u0cbe",
|
||||
"Switzerland": "\u0cb8\u0ccd\u0cb5\u0cbf\u0c9c\u0cb0\u0ccd\u0cb2\u0cc6\u0c82\u0ca1\u0ccd",
|
||||
"Hungary": "\u0cb9\u0c82\u0c97\u0cc6\u0cb0\u0cbf",
|
||||
"Germany": "\u0c9c\u0cb0\u0ccd\u0cae\u0ca8\u0cbf",
|
||||
"Norway": "\u0ca8\u0cbe\u0cb0\u0ccd\u0cb5\u0cc6",
|
||||
"Denmark": "\u0ca1\u0cc6\u0ca8\u0ccd\u0cae\u0cbe\u0cb0\u0ccd\u0c95\u0ccd",
|
||||
"Sweden": "\u0cb8\u0ccd\u0cb5\u0cc0\u0ca1\u0ca8\u0ccd",
|
||||
"Finland": "\u0cab\u0cbf\u0ca8\u0ccd\u0cb2\u0ccd\u0caf\u0cbe\u0c82\u0ca1\u0ccd",
|
||||
"Bulgaria": "\u0cac\u0cb2\u0ccd\u0c97\u0cc7\u0cb0\u0cbf\u0caf\u0cbe",
|
||||
"Soviet Union": "\u0cb8\u0ccb\u0cb5\u0cbf\u0caf\u0ca4\u0ccd \u0c92\u0c95\u0ccd\u0c95\u0cc2\u0c9f",
|
||||
"Serbia": "\u0cb8\u0cb0\u0ccd\u0cac\u0cbf\u0caf\u0cbe",
|
||||
"Romania": "\u0cb0\u0cca\u0cae\u0cbe\u0ca8\u0cbf\u0caf",
|
||||
"Greece": "\u0c97\u0ccd\u0cb0\u0cc0\u0cb8\u0ccd",
|
||||
"T\u00fcrkiye": "\u0c9f\u0cb0\u0ccd\u0c95\u0cbf",
|
||||
"Egypt": "\u0c88\u0c9c\u0cbf\u0caa\u0ccd\u0c9f\u0ccd",
|
||||
"%1 {{PLURAL:%1|year|years}} and %2 {{PLURAL:%2|month|months}}": "%1 {{PLURAL:%1|\u0cb5\u0cb0\u0ccd\u0cb7|\u0cb5\u0cb0\u0ccd\u0cb7\u0c97\u0cb3\u0cc1}} \u0cae\u0ca4\u0ccd\u0ca4\u0cc1 %2 {{PLURAL:%1|\u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1|\u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 Y %2 M": "%1 \u0cb5 %2 \u0ca4\u0cbf\u0c82",
|
||||
"%1 {{PLURAL:%1|year|years}}": "%1 {{PLURAL:%1|\u0cb5\u0cb0\u0ccd\u0cb7|\u0cb5\u0cb0\u0ccd\u0cb7\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 Y": "%1 \u0cb5",
|
||||
"%1 {{PLURAL:%1|month|months}}": "%1 {{PLURAL:%1|\u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1|\u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 M": "%1 \u0ca4\u0cbf\u0c82",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1 {{PLURAL:%1|\u0cae\u0cbf\u0cb2\u0cbf\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd|\u0cae\u0cbf\u0cb2\u0cbf\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 ms": "%1 \u0cae\u0cbf.\u0cb8\u0cc6",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1 {{PLURAL:%1|\u0c95\u0ccd\u0cb7\u0ca3|\u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 s": "%1 \u0cb8\u0cc6",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 {{PLURAL:%1|\u0ca8\u0cbf\u0cae\u0cbf\u0cb7|\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 min": "%1 \u0ca8\u0cbf",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1 {{PLURAL:%1|\u0c97\u0c82\u0c9f\u0cc6|\u0c97\u0c82\u0c9f\u0cc6\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 hr": "%1 \u0c97\u0c82",
|
||||
"%1 {{PLURAL:%1|day|days}}": "%1 {{PLURAL:%1|\u0ca6\u0cbf\u0ca8|\u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1}}",
|
||||
"%1 d": "%1 \u0ca6\u0cbf",
|
||||
"2 days before yesterday, %H:%M": "\u0c85\u0c9a\u0ccd\u0c9a\u0cc6 \u0cae\u0cca\u0ca8\u0ccd\u0ca8\u0cc6, %H:%M",
|
||||
"the day before yesterday, %H:%M": "\u0cae\u0cca\u0ca8\u0ccd\u0ca8\u0cc6, %H:%M",
|
||||
"yesterday, %H:%M": "\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6, %H:%M",
|
||||
"today, %H:%M": "\u0c87\u0c82\u0ca6\u0cc1, %H:%M",
|
||||
"tomorrow, %H:%M": "\u0ca8\u0cbe\u0cb3\u0cc6, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "\u0ca8\u0cbe\u0ca1\u0cbf\u0ca6\u0ccd\u0ca6\u0cc1, %H:%M",
|
||||
"2 days after tomorrow, %H:%M": "\u0c85\u0c9a\u0ccd\u0c9a\u0cc6 \u0ca8\u0cbe\u0ca1\u0cbf\u0ca6\u0ccd\u0ca6\u0cc1, %H:%M",
|
||||
"now": "\u0c88\u0c97",
|
||||
"several seconds ago": "\u0cb9\u0cb2\u0cb5\u0cc1 \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3 \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"soon": "\u0cb8\u0ca6\u0ccd\u0caf\u0ca6\u0cb2\u0ccd\u0cb2\u0cc7",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "%1 {{PLURAL:%1|\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd|\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd\u200c\u0c97\u0cb3}} \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "%1 {{PLURAL:%1|\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd|\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd\u200c\u0c97\u0cb3}} \u0ca8\u0c82\u0ca4\u0cb0",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "%1 {{PLURAL:%1|\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0ca6|\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0c97\u0cb3}} \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "%1 {{PLURAL:%1|\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0ca6|\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0c97\u0cb3}} \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1 {{PLURAL:%1|\u0c97\u0c82\u0c9f\u0cc6\u0caf|\u0c97\u0c82\u0c9f\u0cc6\u0c97\u0cb3}} \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 {{PLURAL:%1|\u0c97\u0c82\u0c9f\u0cc6\u0caf|\u0c97\u0c82\u0c9f\u0cc6\u0c97\u0cb3}} \u0ca8\u0c82\u0ca4\u0cb0",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 {{PLURAL:%1|\u0ca6\u0cbf\u0ca8\u0ca6|\u0ca6\u0cbf\u0ca8\u0c97\u0cb3}} \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1 {{PLURAL:%1|\u0ca6\u0cbf\u0ca8\u0ca6|\u0ca6\u0cbf\u0ca8\u0c97\u0cb3}} \u0ca8\u0c82\u0ca4\u0cb0",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "%1 {{PLURAL:%1|\u0cb5\u0cbe\u0cb0\u0ca6|\u0cb5\u0cbe\u0cb0\u0c97\u0cb3}} \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "%1 {{PLURAL:%1|\u0cb5\u0cbe\u0cb0\u0ca6|\u0cb5\u0cbe\u0cb0\u0c97\u0cb3}} \u0ca8\u0c82\u0ca4\u0cb0",
|
||||
"\u65e5\u672c": "\u0c9c\u0caa\u0cbe\u0ca8\u0ccd",
|
||||
"\ud55c\uad6d": "\u0c95\u0cca\u0cb0\u0cbf\u0caf\u0cbe",
|
||||
"\u0e44\u0e17\u0e22": "\u0ca5\u0cc8\u0cb2\u0ccd\u0caf\u0cbe\u0c82\u0ca1\u0ccd",
|
||||
"India": "\u0cad\u0cbe\u0cb0\u0ca4",
|
||||
"Babylon": "\u0cac\u0ccd\u0caf\u0cbe\u0cac\u0cbf\u0cb2\u0cbe\u0ca8\u0ccd",
|
||||
"Persia": "\u0caa\u0cb0\u0ccd\u0cb7\u0cbf\u0caf\u0cbe",
|
||||
"\u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1": "\u0cae\u0ccd\u0caf\u0cbe\u0cb8\u0cbf\u0ca1\u0cbe\u0ca8\u0ccd",
|
||||
"\u03a3\u03b5\u03bb\u03b5\u03c5\u03ba\u03b9\u03b4\u03ce\u03bd": "\u0cb8\u0cc6\u0cb2\u0ccd\u0caf\u0cc2\u0cb8\u0cbf\u0ca6\u0ccd",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "\u0cb8\u0ccd\u0caa\u0cbe\u0cb0\u0ccd\u0c9f\u0cbe",
|
||||
"British": "\u0cac\u0ccd\u0cb0\u0cbf\u0c9f\u0cbf\u0cb7\u0ccd",
|
||||
"Maya": "\u0cae\u0cbe\u0caf\u0cbe"
|
||||
},
|
||||
"kn-IN");
|
||||
@@ -0,0 +1,139 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"untranslated message count": "1000+",
|
||||
"\u6e05\u9664\u8a0a\u606f": "\ub85c\uadf8 \uc9c0\uc6b0\uae30",
|
||||
"\u8f38\u51fa\u683c\u5f0f": "\ucd9c\ub825 \ud615\uc2dd",
|
||||
"\u6642\u5340\uff1a": "\uc2dc\uac04\ub300:",
|
||||
"Loading...": "\ubd88\ub7ec\uc624\ub294 \uc911...",
|
||||
"\u5206\u985e": "\uadf8\ub8f9",
|
||||
"\u6240\u6709\u570b\u5bb6": "\ubaa8\ub4e0 \uad6d\uac00",
|
||||
"\u554f\u984c\u56de\u5831": "\ud53c\ub4dc\ubc31",
|
||||
"France": "\ud504\ub791\uc2a4",
|
||||
"\u7d00\u5e74\u7dda\u5716\u9078\u9805\uff1a": "\ud0c0\uc784\ub77c\uc778 \uc635\uc158:",
|
||||
"Unix time": "\uc720\ub2c9\uc2a4 \uc2dc\uac04",
|
||||
"Julian calendar": "\uc728\ub9ac\uc6b0\uc2a4\ub825",
|
||||
"\u4e2d\u570b": "\uc911\uad6d",
|
||||
"\ub2e8\uad70\uae30\uc6d0": "\ub2e8\uad70\uae30\uc6d0",
|
||||
"The bot operation is completed %1% in total": "\ubd07 \uc791\uc5c5\uc774 \ucd1d %1% \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
|
||||
"No page modified": "\uc218\uc815\ub41c \ubb38\uc11c \uc5c6\uc74c",
|
||||
"\u4e0a\u5f26": "1\ubd84\uae30",
|
||||
"Not Yet Implemented!": "\uc544\uc9c1 \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4!",
|
||||
"Language": "\uc5b8\uc5b4",
|
||||
"Failed to get file: [%1]": "\ud30c\uc77c \uac00\uc838\uc624\uae30 \uc2e4\ud328: [%1]",
|
||||
"Invalid cookie?": "\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ucfe0\ud0a4?",
|
||||
"Retry %1/%2: %3": "\ub2e4\uc2dc \uc2dc\ub3c4 %1/%2: %3",
|
||||
"HTTP status code: %1 %2": "HTTP \uc0c1\ud0dc \ucf54\ub4dc: %1 %2",
|
||||
"\u6a94\u6848\u540d\u7a31\uff1a%1": "\ud30c\uc77c \uc774\ub984: %1",
|
||||
"You may need to set %1 = %2!": "%1 = %2 \uc124\uc815\uc774 \ud544\uc694\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4!",
|
||||
"All wiki submodules are loaded.": "\ubaa8\ub4e0 \uc704\ud0a4 \ud558\uc704 \ubaa8\ub4c8\uc774 \ub85c\ub4dc\ub429\ub2c8\ub2e4.",
|
||||
"Comma-separator": ", ",
|
||||
"Abandon change": "\ubcc0\uacbd\uc0ac\ud56d \ubc84\ub9ac\uae30",
|
||||
"Does not exist": "\uc874\uc7ac\ud558\uc9c0 \uc54a\uc74c",
|
||||
"\u7db2\u5740\u7121\u6548\uff1a%1": "\uc798\ubabb\ub41c URL: %1",
|
||||
"Edit %1": "%1 \ud3b8\uc9d1",
|
||||
"Missing page": "\ubb38\uc11c \uc5c6\uc74c",
|
||||
"Invalid page title": "\uc798\ubabb\ub41c \ubb38\uc11c \uc81c\ubaa9",
|
||||
"directories": "\ub514\ub809\ud130\ub9ac",
|
||||
"directory": "\ub514\ub809\ud130\ub9ac",
|
||||
"file": "\ud30c\uc77c",
|
||||
"files": "\ud30c\uc77c",
|
||||
"Using proxy server: %1": "\ud504\ub85d\uc2dc \uc11c\ubc84 \uc0ac\uc6a9: %1",
|
||||
"\u672a\u8a2d\u5b9a User-Agent\u3002": "User-Agent\uac00 \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",
|
||||
"\u7531\u547d\u4ee4\u5217": "\uba85\ub839 \uc904\uc5d0\uc11c",
|
||||
"fso_directories": "\ub514\ub809\ud130\ub9ac \uacbd\ub85c",
|
||||
"fso_directory": "\ub514\ub809\ud130\ub9ac \uacbd\ub85c",
|
||||
"fso_file": "\ud30c\uc77c \uacbd\ub85c",
|
||||
"fso_files": "\ud30c\uc77c \uacbd\ub85c",
|
||||
"\u300a%1\u300b\uff1a": "\u00ab%1\u00bb:",
|
||||
"\uff08\u672c\u6b21\u4e0b\u8f09\u5171\u8655\u7406 %1\u500b{{PLURAL:%1|\u5b57}}\uff09": "{\uc774 \ub2e4\uc6b4\uc740 \ucd1d %1 \ucc98\ub9ac\ud588\uc2b5\ub2c8\ub2e4 {{PLURAL:1|word|words}})",
|
||||
"HTTP status code %1.": "HTTP \uc0c1\ud0dc \ucf54\ub4dc %1.",
|
||||
"Error: %1": "\uc624\ub958: %1",
|
||||
"File size: %1.": "\ud30c\uc77c \ud06c\uae30: %1.",
|
||||
"\u7121\u6cd5\u5beb\u5165\u5716\u7247\u6a94\u6848 [%1]\u3002": "[%1] \uc774\ubbf8\uc9c0 \ud30c\uc77c\uc744 \uc4f8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
|
||||
"\u5716\u6a94\u640d\u58de\uff1a": "\uc774\ubbf8\uc9c0\uac00 \uc190\uc0c1\ub428: ",
|
||||
"\u7121\u6cd5\u53d6\u5f97\u5716\u7247\u3002": "\uc774\ubbf8\uc9c0 \uac00\uc838\uc624\uae30\ub97c \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. ",
|
||||
"\u82e5\u932f\u8aa4\u6301\u7e8c\u767c\u751f\uff0c\u60a8\u53ef\u4ee5\u8a2d\u5b9a skip_error=true \u4f86\u5ffd\u7565\u5716\u7247\u932f\u8aa4\u3002": "\uc624\ub958\uac00 \uc9c0\uc18d\ub418\uba74 \uc774\ubbf8\uc9c0 \uc624\ub958 \ubb34\uc2dc\ub97c \uc704\ud574 skip_error=true\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
|
||||
"\u5716\u7247\u4e0b\u8f09\u932f\u8aa4": "\uc774\ubbf8\uc9c0 \ub2e4\uc6b4\ub85c\ub4dc \uc2e4\ud328",
|
||||
"Different url: %1 \u2260 %2": "\ucc28\uc774\uac00 \uc788\ub294 URL: %1 \u2260 %2",
|
||||
"work_data.directory": "\uc2a4\ud1a0\ub9ac\uc9c0 \ub514\ub809\ud130\ub9ac",
|
||||
"work_data.id": "\uc791\ud488 ID",
|
||||
"work_data.title": "\uc791\ud488 \uc81c\ubaa9",
|
||||
"work_data.url": "URL",
|
||||
"work_status-finished": "\uc644\ub8cc",
|
||||
"Work information": "\uc791\ud488 \uc815\ubcf4",
|
||||
"Unknown": "\uc54c \uc218 \uc5c6\uc74c",
|
||||
"Move %1 to %2 failed: %3": "%1\uc5d0\uc11c %2(\uc73c)\ub85c \uc774\ub3d9 \uc2e4\ud328: %3",
|
||||
"\u9805\u76ee\u8cc7\u8a0a\u7121\u6548\uff1a%1": "\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud56d\ubaa9 \ub370\uc774\ud130: %1",
|
||||
"\u6a94\u6848\u4e26\u672a\u5728\u4e0b\u8f09\u968a\u5217\u4e2d\uff1a%1": "\ud30c\uc77c\uc774 \ub2e4\uc6b4\ub85c\ub4dc \ub300\uae30\uc5f4\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4: %1",
|
||||
"\u8cc7\u6e90\u4ecd\u5728\u4e0b\u8f09\u4e2d\uff1a": "\uacc4\uc18d \ub2e4\uc6b4\ub85c\ub4dc \uc911:",
|
||||
"TOC.calibre:series": "\uc2dc\ub9ac\uc988",
|
||||
"TOC.identifier": "\uc2dd\ubcc4\uc790",
|
||||
"TOC.language": "\uc5b8\uc5b4",
|
||||
"TOC.subject": "\ud0dc\uadf8",
|
||||
"word count": "\ub2e8\uc5b4 \uc218",
|
||||
"Contents": "\ubaa9\ucc28",
|
||||
"Waiting for all resources loaded...": "\ubaa8\ub4e0 \ub9ac\uc18c\uc2a4\uac00 \ub85c\ub4dc\ub418\uae30\ub97c \uae30\ub2e4\ub9ac\ub294 \uc911...",
|
||||
"\u79fb\u9664\u7a7a\u76ee\u9304\uff1a%1": "\ube48 \ub514\ub809\ud130\ub9ac\ub97c \uc81c\uac70\ud558\ub294 \uc911: %1",
|
||||
"Working directory: %1": "\uc791\uc5c5 \ub514\ub809\ud130\ub9ac: %1",
|
||||
"Changing working directory: [%1]\u2192[%2]": "\uc791\uc5c5 \ub514\ub809\ud130\ub9ac \ubcc0\uacbd: [%1]\u2192[%2]",
|
||||
"Italy": "\uc774\ud0c8\ub9ac\uc544",
|
||||
"Norway": "\ub178\ub974\uc6e8\uc774",
|
||||
"soon": "\uace7",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1{{PLURAL:%1|\uc2dc\uac04}} \uc804",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1{{PLURAL:%1|\uc77c}} \uc804",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1{{PLURAL:%1|\uc77c}} \ud6c4",
|
||||
"\ud55c\uad6d": "\ud55c\uad6d",
|
||||
"\u8a9e\u6cd5\u932f\u8aa4\uff01": "\uad6c\ubb38 \uc624\ub958!",
|
||||
"Illegal pattern: [%1]": "\uc798\ubabb\ub41c \ud328\ud134: [%1]",
|
||||
"\u2191Back to TOC": "\u2191\ubaa9\ucc28\ub85c \ub3cc\uc544\uac00\uae30",
|
||||
"Cannot move to %1": "%1\ub85c \uc634\uae38 \uc218 \uc5c6\uc74c",
|
||||
"Change section title:": "\ubb38\ub2e8 \uc81c\ubaa9 \ubc14\uafb8\uae30:",
|
||||
"The requested robot task begins.": "\uc694\uccad\ud55c \ub85c\ubd07 \uc791\uc5c5\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.",
|
||||
"Add warning messages.": "\uacbd\uace0 \uba54\uc2dc\uc9c0\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.",
|
||||
"The requested robot task finished.": "\uc694\uccad\ud55c \ub85c\ubd07 \uc791\uc5c5\uc774 \ub05d\ub0ac\uc2b5\ub2c8\ub2e4.",
|
||||
"Namespaces: %1.": "\uc774\ub984\uacf5\uac04: %1.",
|
||||
"number-of-templates": "#",
|
||||
"Archiving operation": "\uae30\uad6c \uc544\uce74\uc774\ube0c \uc911",
|
||||
"IP user": "IP \uc0ac\uc6a9\uc790",
|
||||
"(new page)": "(\uc0c8 \ubb38\uc11c)",
|
||||
"Append %1 {{PLURAL:%1|topic|topics}}": "%1 {{PLURAL:%1|topic|topics}} \ucd94\uac00",
|
||||
"Remove %1 {{PLURAL:%1|topic|topics}}": "%1 {{PLURAL:%1|topic|topics}} \uc81c\uac70",
|
||||
"\u70ba\u53ef\u57f7\u884c\u6a94\u6216\u51fd\u5f0f\u5eab": "\uc2e4\ud589 \ud30c\uc77c \ub610\ub294 DLL \ud30c\uc77c\uc785\ub2c8\ub2e4.",
|
||||
"Cannot read directory: %1": "\ub514\ub809\ud130\ub9ac\ub97c \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: %1",
|
||||
"Remove empty directory: %1": "\ube48 \ub514\ub809\ud130\ub9ac \uc81c\uac70: %1",
|
||||
"Target exists: %1": "\ub300\uc0c1\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4: %1",
|
||||
"\u641c\u5c0b\u7d50\u679c": "\uac80\uc0c9 \uacb0\uacfc",
|
||||
"\u4e0b\u8f09\u9078\u9805": "\ub2e4\uc6b4\ub85c\ub4dc \uc635\uc158",
|
||||
"\u958b\u5553\u4e0b\u8f09\u76ee\u9304": "\ub2e4\uc6b4\ub85c\ub4dc \ub514\ub809\ud130\ub9ac \uc5f4\uae30",
|
||||
"\u641c\u5c0b": "\uac80\uc0c9",
|
||||
"\u641c\u5c0b\u5404\u7db2\u7ad9\u4e26\u4e0b\u8f09\u4f5c\u54c1\u3002": "\uac01 \uc6f9\uc0ac\uc774\ud2b8\uc5d0\uc11c \uac80\uc0c9 \ubc0f work \ub2e4\uc6b4 \uc911",
|
||||
"\u8cbc\u4e0a": "\ubd99\uc5ec\ub123\uae30",
|
||||
"\u958b\u59cb\u6aa2\u6e2c\u5b89\u88dd\u5305\u66f4\u65b0\u2026\u2026": "\ub9b4\ub9ac\uc2a4 \uc5c5\ub370\uc774\ud2b8 \ud655\uc778 \uc911...",
|
||||
"\u6709\u65b0\u7248\u5b89\u88dd\u5305\uff1a%1": "\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub9b4\ub9ac\uc2a4 \uc5c5\ub370\uc774\ud2b8: %1",
|
||||
"download_options.proxy": "\ud504\ub85d\uc2dc \uc11c\ubc84. \ud3ec\ub9f7: \"\uc0ac\uc6a9\uc790\uc774\ub984:\ube44\ubc00\ubc88\ud638@\ud638\uc2a4\ud2b8\uc774\ub984:\ud3ec\ud2b8\"",
|
||||
"local-language-name": "\ud55c\uad6d\uc5b4",
|
||||
"\u73fe\u6709%1\u689d%2\u8a0a\u606f\u5c1a\u672a\u7ffb\u8b6f\uff0c\u6b61\u8fce\u60a8\u4e00\u540c\u53c3\u8207\u7ffb\u8b6f\u8a0a\u606f\uff01": "There are currently %1 %2 messages that have not been translated. Welcome to translate with us!",
|
||||
"dark theme": "\ub2e4\ud06c",
|
||||
"\u91cd\u8a2d\u4e0b\u8f09\u9078\u9805": "\ub2e4\uc6b4\ub85c\ub4dc \uc635\uc158 \ucd08\uae30\ud654",
|
||||
"\u672a\u9078\u64c7\u6a94\u6848\u6216\u76ee\u9304\u3002": "\uc120\ud0dd\ub41c \ud30c\uc77c \ub610\ub294 \ub514\ub809\ud130\ub9ac\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.",
|
||||
"work_crawler-search_result_columns-site": "\uc0ac\uc774\ud2b8",
|
||||
"work_crawler-search_result_columns-completed": "\uc644\ub8cc",
|
||||
"work_crawler-search_result_columns-status": "\uc0c1\ud0dc",
|
||||
"\u932f\u8aa4\u539f\u56e0": "\uc624\ub958 \uc6d0\uc778",
|
||||
"\u4f5c\u54c1\u7db2\u7ad9": "\uc791\ud488 \uc6f9\uc0ac\uc774\ud2b8",
|
||||
"\u53d6\u6d88\u641c\u5c0b": "\uac80\uc0c9 \ucde8\uc18c",
|
||||
"%1\u500b{{PLURAL:%1|\u7db2\u7ad9}}\u4ecd\u5728\u641c\u5c0b\u4e2d\uff1a%2": "%1 {{PLURAL:%1|site is|sites are}} \uc544\uc9c1 \uac80\uc0c9 \uc911 %2",
|
||||
"\u7576\u524d\u8def\u5f91\uff1a%1": "\ud604\uc7ac \uacbd\ub85c: %1",
|
||||
"\u53d6\u6d88": "\ucde8\uc18c",
|
||||
"\u53d6\u6d88\u4e0b\u8f09": "\ub2e4\uc6b4\ub85c\ub4dc \ucde8\uc18c",
|
||||
"\u7e7c\u7e8c": "\uacc4\uc18d",
|
||||
"\u66f4\u65b0\u5b8c\u7562\u3002": "\uc5c5\ub370\uc774\ud2b8 \uc644\ub8cc. ",
|
||||
"\u6aa2\u67e5\u66f4\u65b0\u4e2d\u2026\u2026": "\uc5c5\ub370\uc774\ud2b8 \ud655\uc778 \uc911...",
|
||||
"\u6709\u65b0\u7248\u672c\uff1a%1": "\uc5c5\ub370\uc774\ud2b8 \uc0ac\uc6a9 \uac00\ub2a5: %1",
|
||||
"\u66f4\u65b0\u5931\u6557\uff01": "\uc5c5\ub370\uc774\ud2b8 \uc2e4\ud328!",
|
||||
"option=value": "\uc635\uc158=\uac12",
|
||||
"Usage:": "\uc0ac\uc6a9\ubc95:",
|
||||
"Options:": "\uc635\uc158:"
|
||||
},
|
||||
"ko-KR");
|
||||
@@ -0,0 +1,190 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "Spuenien",
|
||||
"untranslated message count": "1000+",
|
||||
"Load failed": "Lueden huet net funktion\u00e9iert",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "Koordinaten: ",
|
||||
"\u7def\u5ea6\uff1a": "Breedegrad: ",
|
||||
"\u7d93\u5ea6\uff1a": "L\u00e4ngegrad: ",
|
||||
"\u6642\u5340\uff1a": "Z\u00e4itzon: ",
|
||||
"Loading...": "Lueden...",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "Myanmar",
|
||||
"Vi\u1ec7t Nam": "Vietnam",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "Navigatioun: ",
|
||||
"\u6240\u6709\u570b\u5bb6": "All L\u00e4nner",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "BEISPILL",
|
||||
"\u4f7f\u7528\u8aaa\u660e": "KONZEPT",
|
||||
"\u554f\u984c\u56de\u5831": "FEEDBACK",
|
||||
"France": "Frankr\u00e4ich",
|
||||
"Great Britain": "Groussbritannien",
|
||||
"Spain": "Spuenien",
|
||||
"\u541b\u4e3b\u865f": "K\u00ebnschtlernumm",
|
||||
"\u8af1": "Richtegen Numm",
|
||||
"\u51fa\u751f": "Gebuer",
|
||||
"\u901d\u4e16": "Gestuerwen",
|
||||
"\u5728\u4f4d": "Herrschaft",
|
||||
"\u52a0\u5195": "Kr\u00e9inung",
|
||||
"\u524d\u4efb": "Virg\u00e4nger",
|
||||
"\u7e7c\u4efb": "Nofollger",
|
||||
"\u7236\u89aa": "Papp",
|
||||
"\u6bcd\u89aa": "Mamm",
|
||||
"Initializing...": "Initialis\u00e9ieren...",
|
||||
"Aries": "Widder",
|
||||
"Taurus": "St\u00e9ier",
|
||||
"Gemini": "Zwilling",
|
||||
"Cancer": "Kriibs",
|
||||
"Leo": "L\u00e9if",
|
||||
"Virgo": "Jongfra",
|
||||
"Libra": "Wo",
|
||||
"Scorpio": "Skorpioun",
|
||||
"Sagittarius": "Sch\u00fctze",
|
||||
"Capricorn": "Steebock",
|
||||
"Aquarius": "Waassermann",
|
||||
"Pisces": "F\u00ebsch",
|
||||
"\u6708\u76f8": "Moundphas",
|
||||
"\u661f\u671f": "Dag an der Woch",
|
||||
"\u9031\u65e5\u671f": "Dag an der Woch",
|
||||
"\u6714": "neit Liicht",
|
||||
"\u65e5\u51fa\u65e5\u843d": "Sonnenopgang / Sonnen\u00ebnnergang",
|
||||
"\u66d9\u66ae\u5149": "D\u00e4mmerung",
|
||||
"\u6708\u51fa\u6708\u843d": "Moundopgang / Mound\u00ebnnergang",
|
||||
"calendar": "Kalenner",
|
||||
"Gregorian calendar": "Gregorianesche Kalenner",
|
||||
"Julian calendar": "Julianesche Kalenner",
|
||||
"\u4f0a\u65af\u862d\u66c6": "Islamesche Kalenner",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0647\u062c\u0631\u06cc \u062e\u0648\u0631\u0634\u06cc\u062f\u06cc": "Modernen iranesche Kalenner",
|
||||
"\u5e0c\u4f2f\u4f86\u66c6": "Hebr\u00e4esche Kalenner",
|
||||
"\u4e2d\u570b": "China",
|
||||
"zodiac sign": "St\u00e4renzeechen",
|
||||
"\u8457\u540d\u5730\u9ede\uff1a": "Bekannt Plazen: ",
|
||||
"Loading %1%...": "Lueden %1%...",
|
||||
"The bot operation is completed %1% in total": "D'Bot-Operatioun ass zu %1% ofgeschloss",
|
||||
"finished": "f\u00e4erdeg",
|
||||
"No changes.": "Keng \u00c4nnerungen.",
|
||||
"No page modified": "Keng S\u00e4it ge\u00e4nnert",
|
||||
"\u672c\u7ae0\u5171 %1 {{PLURAL:1|\u500b\u5b57}}": "%1 {{PLURAL:1|Wuert|Wierder}} an d\u00ebsem Kapitel",
|
||||
"astronomy": "Astronomie",
|
||||
"\u4e0a\u5f26": "\u00e9ischte V\u00e9ierel",
|
||||
"\u671b": "Vollmound",
|
||||
"\u4e0b\u5f26": "leschte V\u00e9ierel",
|
||||
"partial lunar eclipse": "partiell Moundfinsternis",
|
||||
"partial solar eclipse": "partiell Sonnenfinsternis",
|
||||
"total lunar eclipse": "total Moundfinsternis",
|
||||
"total solar eclipse": "total Sonnenfinsternis",
|
||||
"lunar eclipse": "Moundfinsternis",
|
||||
"solar eclipse": "Sonnenfinsternis",
|
||||
"moonrise": "Moundopgang",
|
||||
"sunrise": "Sonnenopgang",
|
||||
"moonset": "Mound\u00ebnnergang",
|
||||
"sunset": "Sonnen\u00ebnnergang",
|
||||
"log-type-error": "Feeler",
|
||||
"Not Yet Implemented!": "Nach net \u00ebmgesat!",
|
||||
"Language": "Sprooch",
|
||||
"Comma-separator": ", ",
|
||||
"Content is empty": "Inhalt ass eidel",
|
||||
"Abandon change": "\u00c4nnerung opginn",
|
||||
"No reason provided": "Kee Grond uginn",
|
||||
"No content": "Keen Inhalt",
|
||||
"%1 {{PLURAL:%1|result|results}}": "%1 {{PLURAL:%1|Resultat|Resultater}}",
|
||||
"%1 is not exist in %2.": "%1 g\u00ebtt et net op %2.",
|
||||
"Unknown API response: %1": "Onbekannt API \u00c4ntwert: %1",
|
||||
"Does not exist": "G\u00ebtt et net",
|
||||
"Configuration page: %1": "Konfiguratiounss\u00e4it: %1",
|
||||
"\u7121\u9801\u9762\u91cd\u5b9a\u5411\u81f3\u672c\u9801": "Keng S\u00e4it leed virun op d\u00ebs S\u00e4it",
|
||||
"no change": "keng \u00c4nnerung",
|
||||
"Edit %1": "%1 \u00e4nneren",
|
||||
"Missing page": "S\u00e4it feelt",
|
||||
"function": "Funktioun",
|
||||
"number": "Zuel",
|
||||
"\u300a%1\u300b\uff1a": "\u00ab%1\u00bb: ",
|
||||
"\u4e0b\u8f09\u5716 %1": "Bild #%1 eroflueden",
|
||||
"\u7ae0\u7bc0\u7de8\u865f%1\uff1a": "Kapitel %1: ",
|
||||
"\u5716\u7247\u7121\u5167\u5bb9\uff1a": "Bild ouni Inhalt:",
|
||||
"work_data.author": "Auteur",
|
||||
"work_data.last_update": "Lescht Aktualis\u00e9ierung",
|
||||
"work_data.title": "Arbechtstitel",
|
||||
"work_status-finished": "F\u00e4erdeg",
|
||||
"work_status-not found": "Net fonnt",
|
||||
"work_data.chapter_NO": "Nummer vum Kapitel",
|
||||
"\u4f5c\u54c1\u4e0d\u5b58\u5728\u6216\u5df2\u88ab\u522a\u9664\u3002": "D'Wierk g\u00ebtt et net oder gouf gel\u00e4scht.",
|
||||
"Unknown": "Onbekannt",
|
||||
"TOC.date": "Datum",
|
||||
"TOC.description": "Beschreiwung",
|
||||
"TOC.language": "Sprooch",
|
||||
"TOC.source": "Quell",
|
||||
"TOC.title": "Titel",
|
||||
"Contents": "Inhalter",
|
||||
"Poland": "Polen",
|
||||
"Portugal": "Portugal",
|
||||
"Luxembourg": "L\u00ebtzebuerg",
|
||||
"Netherlands": "Holland",
|
||||
"Bavaria": "Bayern",
|
||||
"Austria": "\u00c9istr\u00e4ich",
|
||||
"Switzerland": "Schw\u00e4iz",
|
||||
"Hungary": "Ungarn",
|
||||
"Germany": "D\u00e4itschland",
|
||||
"Norway": "Norweegen",
|
||||
"Denmark": "D\u00e4nemark",
|
||||
"Sweden": "Schweeden",
|
||||
"Finland": "Finnland",
|
||||
"Bulgaria": "Bulgarien",
|
||||
"Soviet Union": "Sowjetunioun",
|
||||
"Serbia": "Serbien",
|
||||
"Romania": "Rum\u00e4mnien",
|
||||
"Greece": "Griicheland",
|
||||
"T\u00fcrkiye": "Tierkei",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 {{PLURAL:%1|Minutt|Minutten}}",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1 {{PLURAL:%1|Stonn|Stonnen}}",
|
||||
"now": "elo",
|
||||
"several seconds ago": "virun e puer Sekonnen",
|
||||
"soon": "geschw\u00ebnn",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "{{PLURAL:%1|virun 1 Sekonn|viru(n) %1 Sekonnen}}",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "{{PLURAL:%1|eng Minutt|%1 Minutte}} m\u00e9i sp\u00e9it",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 {{PLURAL:%1|Stonn|Stonne}} m\u00e9i sp\u00e9it",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "%1 {{PLURAL:%1|Woch|Woche}} m\u00e9i sp\u00e9it",
|
||||
"Invalid date: %1": "Net valabelen Datum: %1",
|
||||
"\u8a3b": "Notiz",
|
||||
"\u7409\u7403": "Ryukyu",
|
||||
"\u65e5\u672c": "Japan",
|
||||
"\ud55c\uad6d": "Korea",
|
||||
"B\u1eafc thu\u1ed9c": "Chineesesch Dominatioun vum Vietnam",
|
||||
"India": "Indien",
|
||||
"Mesopotamian": "Mesopotamesch",
|
||||
"Babylon": "Babylonesch",
|
||||
"Babylonian calendar": "Babylonesche Kalenner",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "Sparta",
|
||||
"British": "Brittesch",
|
||||
"\u8a9e\u6cd5\u932f\u8aa4\uff01": "Syntax-Feeler!",
|
||||
"\u2191Back to TOC": "\u2191Zr\u00e9ck op d'Inhaltsverzeechnes",
|
||||
"Contents of [%1]": "Inhalter vu(n) [%1]",
|
||||
"expand": "opklappen",
|
||||
"collapse": "zesummeklappen",
|
||||
"No title found for %1.": "Keen Titel fonnt fir %1.",
|
||||
"Namespaces: %1.": "Nummr\u00e4im: %1.",
|
||||
"IP user": "IP-Benotzer",
|
||||
"user": "Benotzer",
|
||||
"(new page)": "(nei S\u00e4it)",
|
||||
"VERY DIFFERENT": "GANZ VERSCHIDDEN",
|
||||
"Please help to check this edit.": "H\u00eblleft wgl. fir d\u00ebs \u00c4nnerung nozekucken.",
|
||||
"\u66f4\u65b0%1": "%1 aktualis\u00e9ieren",
|
||||
"%1\u7248\u689d\u76ee": "Artikelen op %1",
|
||||
"\u8a9e\u8a00\u6578": "Zuel vu Sproochen",
|
||||
"\u5e73\u5747": "Duerchschn\u00ebtt",
|
||||
"\u5408\u8a08": "Total",
|
||||
"\u689d\u76ee\u4e00\u89bd": "Artikel L\u00ebscht",
|
||||
"See also": "Kuckt och",
|
||||
"\u7121\u6a19\u7c64": "Keng Etikett",
|
||||
"%1 does not start with %2": "%1 f\u00e4nkt net mat %2 un",
|
||||
"Revision id %1": "Versioun Id %1",
|
||||
"\u65e5\u672c\u8a9e\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af": "Japanesch Web-Comics",
|
||||
"local-language-name": "L\u00ebtzebuergesch",
|
||||
"work_crawler-search_result_columns-title": "Titel",
|
||||
"work_crawler-search_result_columns-author": "Auteur",
|
||||
"\u7ae0\u7bc0\u6578\u91cf": "Zuel vun de Kapitelen",
|
||||
"work_crawler-search_result_columns-completed": "F\u00e4erdeg",
|
||||
"\u6700\u65b0\u7ae0\u7bc0": "Lescht Kapitel",
|
||||
"\u932f\u8aa4\u539f\u56e0": "Grond vum Feeler",
|
||||
"Options:": "Optiounen:"
|
||||
},
|
||||
"lb-LU");
|
||||
|
After Width: | Height: | Size: 6.5 KiB |
@@ -0,0 +1,155 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "\u0428\u043f\u0430\u043d\u0438\u0458\u0430",
|
||||
"Calendrier r\u00e9publicain": "\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438 \u0440\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"untranslated message count": "1000+",
|
||||
"Load failed": "\u0412\u0447\u0438\u0442\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u043d\u0435 \u0443\u0441\u043f\u0435\u0430",
|
||||
"\u7def\u5ea6\uff1a": "\u0413.\u0428. ",
|
||||
"\u7d93\u5ea6\uff1a": "\u0413.\u0414.: ",
|
||||
"Loading...": "\u0412\u0447\u0438\u0442\u0443\u0432\u0430\u043c...",
|
||||
"Vi\u1ec7t Nam": "\u0412\u0438\u0435\u0442\u043d\u0430\u043c",
|
||||
"France": "\u0424\u0440\u0430\u043d\u0446\u0438\u0458\u0430",
|
||||
"Great Britain": "\u0412\u0435\u043b\u0438\u043a\u0430 \u0411\u0440\u0438\u0442\u0430\u043d\u0438\u0458\u0430",
|
||||
"Spain": "\u0428\u043f\u0430\u043d\u0438\u0458\u0430",
|
||||
"Initializing...": "\u041f\u043e\u0434\u0433\u043e\u0442\u0432\u0443\u0432\u0430\u043c...",
|
||||
"Aries": "\u041e\u0432\u0435\u043d",
|
||||
"Taurus": "\u0411\u0438\u043a",
|
||||
"Gemini": "\u0411\u043b\u0438\u0437\u043d\u0430\u0446\u0438",
|
||||
"Cancer": "\u0420\u0430\u043a",
|
||||
"Leo": "\u041b\u0430\u0432",
|
||||
"Virgo": "\u0414\u0435\u0432\u0438\u0446\u0430",
|
||||
"Libra": "\u0412\u0430\u0433\u0430",
|
||||
"Scorpio": "\u0421\u043a\u043e\u0440\u043f\u0438\u0458\u0430",
|
||||
"Sagittarius": "\u0421\u0442\u0440\u0435\u043b\u0435\u0446",
|
||||
"Capricorn": "\u0408\u0430\u0440\u0435\u0446",
|
||||
"Aquarius": "\u0412\u043e\u0434\u043e\u043b\u0438\u0458\u0430",
|
||||
"Pisces": "\u0420\u0438\u0431\u0438",
|
||||
"\u6666\u65e5": "\u043c\u043b\u0430\u0441\u043e\u043c\u0435\u0441\u0435\u0447\u0435\u0432\u0430 \u0432\u0435\u0447\u0435\u0440",
|
||||
"\u6714": "\u043c\u043b\u0430\u0434\u0430 \u043c\u0435\u0441\u0435\u0447\u0438\u043d\u0430",
|
||||
"\u65e5\u51fa\u65e5\u843d": "\u0438\u0437\u0433\u0440\u0435\u0432 / \u0437\u0430\u043b\u0435\u0437",
|
||||
"\u66d9\u66ae\u5149": "\u0441\u0430\u043c\u0440\u0430\u043a",
|
||||
"\u6708\u51fa\u6708\u843d": "\u0438\u0437\u0433\u0440\u0435\u0432 / \u0437\u0430\u043b\u0435\u0437 \u043d\u0430 \u043c\u0435\u0441\u0435\u0447\u0438\u043d\u0430\u0442\u0430",
|
||||
"Bangla calendar": "\u043f\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0435\u043d \u0411\u0435\u043d\u0433\u0430\u043b\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c \u1015\u103c\u1000\u1039\u1001\u1012\u102d\u1014\u103a": "\u0411\u0443\u0440\u043c\u0430\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u0939\u093f\u0928\u094d\u0926\u0942 \u092a\u0902\u091a\u093e\u0902\u0917": "\u0425\u0438\u043d\u0434\u0443\u0438\u0441\u0442\u0438\u0447\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u092d\u093e\u0930\u0924\u0940\u092f \u0930\u093e\u0937\u094d\u091f\u094d\u0930\u0940\u092f \u092a\u0902\u091a\u093e\u0902\u0917": "\u0418\u043d\u0434\u0438\u0441\u043a\u0438 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u4f5b\u66c6": "\u041a\u0438\u043d\u0435\u0441\u043a\u0438 \u0431\u0443\u0434\u0438\u0441\u0442\u0438\u0447\u043a\u0438",
|
||||
"\u0a28\u0a3e\u0a28\u0a15\u0a38\u0a3c\u0a3e\u0a39\u0a40": "\u041d\u0430\u043d\u0430\u043a\u0448\u0430\u0445\u0438",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0628\u0647\u0627\u0626\u06cc": "\u0411\u0430\u0445\u0430\u0458\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u79d1\u666e\u7279\u66c6": "\u041a\u043e\u043f\u0442\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u8863\u7d22\u6bd4\u4e9e\u66c6": "\u0415\u0442\u0438\u043e\u043f\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u6559\u6703\u4e9e\u7f8e\u5c3c\u4e9e\u66c6": "\u0415\u0440\u043c\u0435\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"Byzantine calendar": "\u0412\u0438\u0437\u0430\u043d\u0442\u0438\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u53e4\u57c3\u53ca\u66c6": "\u0415\u0433\u0438\u043f\u0435\u0442\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u6708\u5e72\u652f": "\u043c\u0435\u0441\u0435\u0446 \u043e\u0434 \u0448\u0435\u0435\u0441\u0435\u0442\u0435\u0440\u0435\u0447\u043d\u0438\u043e\u0442 \u0446\u0438\u043a\u043b\u0443\u0441",
|
||||
"\u65e5\u5e72\u652f": "\u0434\u0435\u043d \u043e\u0434 \u0448\u0435\u0435\u0441\u0435\u0442\u0435\u0440\u0435\u0447\u043d\u0438\u043e\u0442 \u0446\u0438\u043a\u043b\u0443\u0441",
|
||||
"\u4e2d\u570b": "\u041a\u0438\u043d\u0430",
|
||||
"\u6708\u306e\u5225\u540d": "\u0408\u0430\u043f\u043e\u043d\u0441\u043a\u043e \u0438\u043c\u0435 \u043d\u0430 \u043c\u0435\u0441\u0435\u0446",
|
||||
"\u66dc\u65e5": "\u0414\u0435\u043d \u043e\u0434 \u043d\u0435\u0434\u0435\u043b\u0430\u0442\u0430 (\u0458\u0430\u043f\u043e\u043d\u0441\u043a\u0438)",
|
||||
"zodiac sign": "\u0445\u043e\u0440\u043e\u0441\u043a\u043e\u043f\u0441\u043a\u0438 \u0437\u043d\u0430\u043a",
|
||||
"\u6b72\u6b21": "\u0433\u043e\u0434\u0438\u043d\u0430 \u043e\u0434 \u0448\u0435\u0435\u0441\u0435\u0442\u0435\u0440\u0435\u0447\u043d\u0438\u043e\u0442 \u0446\u0438\u043a\u043b\u0443\u0441",
|
||||
"\u751f\u8096": "\u041a\u0438\u043d\u0435\u0441\u043a\u0438 \u0437\u043e\u0434\u0438\u0458\u0430\u043a",
|
||||
"\u6c11\u570b": "\u041c\u0438\u043d\u0433\u0443\u043e",
|
||||
"\u8457\u540d\u5730\u9ede\uff1a": "\u0417\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u0438 \u043c\u0435\u0441\u0442\u0430:",
|
||||
"Loading %1%...": "\u0412\u0447\u0438\u0442\u0443\u0432\u0430\u043c %1%...",
|
||||
"finished": "\u0433\u043e\u0442\u043e\u0432\u043e",
|
||||
"No changes.": "\u041d\u0435\u043c\u0430 \u043f\u0440\u043e\u043c\u0435\u043d\u0438.",
|
||||
"No page modified": "\u043d\u0435\u043c\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
|
||||
"\u4e0a\u5f26": "\u043f\u0440\u0432\u0430 \u0447\u0435\u0442\u0432\u0440\u0442\u0438\u043d\u0430",
|
||||
"\u671b": "\u043f\u043e\u043b\u043d\u0430 \u043c\u0435\u0441\u0435\u0447\u0438\u043d\u0430",
|
||||
"\u4e0b\u5f26": "\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430 \u0447\u0435\u0442\u0432\u0440\u0442\u0438\u043d\u0430",
|
||||
"moonrise": "\u0438\u0437\u0433\u0440\u0435\u0458\u043c\u0435\u0441\u0435\u0447\u0438\u043d\u0430",
|
||||
"sunrise": "\u0438\u0437\u0433\u0440\u0435\u0458\u0441\u043e\u043d\u0446\u0435",
|
||||
"moonset": "\u0437\u0430\u043b\u0435\u0437 \u043d\u0430 \u043c\u0435\u0441\u0435\u0447\u0438\u043d\u0430\u0442\u0430",
|
||||
"sunset": "\u0437\u0430\u043b\u0435\u0437",
|
||||
"log-type-debug": "\u0438\u0441\u043f\u0440\u0430\u0432\u043a\u0430",
|
||||
"log-type-em": "\u043d\u0430\u0433\u043b\u0430\u0441\u043e\u043a",
|
||||
"log-type-error": "\u0433\u0440\u0435\u0448\u043a\u0430",
|
||||
"log-type-fatal": "\u043a\u043e\u0431\u043d\u0430",
|
||||
"log-type-info": "\u0438\u043d\u0444\u043e",
|
||||
"log-type-log": "\u0434\u043d\u0435\u0432",
|
||||
"log-type-trace": "\u0442\u0440\u0430\u0433\u0430",
|
||||
"log-type-warn": "\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438",
|
||||
"\u6240\u6307\u5b9a\u4e4b domain [%1] \u5c1a\u672a\u8f09\u5165\uff0c\u82e5\u6709\u5fc5\u8981\u8acb\u4f7f\u7528\u5f37\u5236\u8f09\u5165 flag\u3002": "\u0423\u043a\u0430\u0436\u0430\u043d\u0438\u043e\u0442 \u0434\u043e\u043c\u0435\u043d [%1] \u0437\u0430\u0441\u0435\u0433\u0430 \u043d\u0435 \u0435 \u0432\u0447\u0438\u0442\u0430\u043d. \u041c\u043e\u0436\u0435 \u045c\u0435 \u0440\u0435\u0431\u0430 \u0434\u0430 \u0458\u0430 \u0437\u0430\u0434\u0430\u0434\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u0430\u0442\u0430 FORCE.",
|
||||
"Language": "\u0408\u0430\u0437\u0438\u043a",
|
||||
"no change": "\u043d\u0435\u043c\u0430 \u043f\u0440\u043e\u043c\u0435\u043d\u0438",
|
||||
"finished: %1": "\u0438\u0441\u043f\u043e\u043b\u043d\u0435\u0442\u043e: %1",
|
||||
"%1 elapsed, %3 at %2": "\u0418\u0437\u043c\u0438\u043d\u0430\u0430 %1, %3 \u043d\u0430 %2",
|
||||
"First, it takes %1 to get %2 {{PLURAL:%2|page|pages}}.": "\u041d\u0430\u0458\u043f\u0440\u0432\u0438\u043d, \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e \u0435 %1 \u0437\u0430 \u0434\u043e\u0431\u0438\u0432\u0430\u045a\u0435 \u043d\u0430 %2 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0438.",
|
||||
"%1 {{PLURAL:%2|page|pages}} processed": "%1 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0435\u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0438",
|
||||
"%1 {{PLURAL:%1|page|pages}} have not changed,": "%1 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0438 \u043d\u0435 \u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u0442\u0438,",
|
||||
"%1 elapsed.": "\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u0438 %1.",
|
||||
"'''Stopped''', give up editing.": "'''\u0417\u0430\u043f\u0440\u0435\u043d\u043e''', \u043e\u0442\u043a\u0430\u0436\u0430\u043d\u043e \u043e\u0434 \u0443\u0440\u0434\u0443\u0432\u0430\u045a\u0435.",
|
||||
"function": "\u0444\u0443\u043d\u043a\u0446\u0438\u0458\u0430",
|
||||
"number": "\u0431\u0440\u043e\u0458",
|
||||
"Contents": "\u0421\u043e\u0434\u0440\u0436\u0438\u043d\u0430",
|
||||
"Italy": "\u0418\u0442\u0430\u043b\u0438\u0458\u0430",
|
||||
"Poland": "\u041f\u043e\u043b\u0441\u043a\u0430",
|
||||
"Portugal": "\u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u0458\u0430",
|
||||
"Luxembourg": "\u041b\u0443\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433",
|
||||
"Netherlands": "\u0425\u043e\u043b\u0430\u043d\u0434\u0438\u0458\u0430",
|
||||
"Bavaria": "\u0411\u0430\u0432\u0430\u0440\u0438\u0458\u0430",
|
||||
"Austria": "\u0410\u0432\u0441\u0442\u0440\u0438\u0458\u0430",
|
||||
"Switzerland": "\u0428\u0432\u0430\u0458\u0446\u0430\u0440\u0438\u0458\u0430",
|
||||
"Hungary": "\u0423\u043d\u0433\u0430\u0440\u0438\u0458\u0430",
|
||||
"Germany": "\u0413\u0435\u0440\u043c\u0430\u043d\u0438\u0458\u0430",
|
||||
"Norway": "\u041d\u043e\u0440\u0432\u0435\u0448\u043a\u0430",
|
||||
"Denmark": "\u0414\u0430\u043d\u0441\u043a\u0430",
|
||||
"Sweden": "\u0428\u0432\u0435\u0434\u0441\u043a\u0430",
|
||||
"Finland": "\u0424\u0438\u043d\u0441\u043a\u0430",
|
||||
"Bulgaria": "\u0411\u0443\u0433\u0430\u0440\u0438\u0458\u0430",
|
||||
"Soviet Union": "\u0421\u0421\u0421\u0420",
|
||||
"Serbia": "\u0421\u0440\u0431\u0438\u0458\u0430",
|
||||
"Romania": "\u0420\u043e\u043c\u0430\u043d\u0438\u0458\u0430",
|
||||
"Greece": "\u0413\u0440\u0446\u0438\u0458\u0430",
|
||||
"T\u00fcrkiye": "\u0422\u0443\u0440\u0446\u0438\u0458\u0430",
|
||||
"Egypt": "\u0415\u0433\u0438\u043f\u0435\u0442",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1 \u043c\u0441",
|
||||
"%1 ms": "%1 \u043c\u0441",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1 \u0441",
|
||||
"%1 s": "%1 \u0441",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 \u043c\u0438\u043d",
|
||||
"%1 min": "%1 \u043c\u0438\u043d",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1 \u0447",
|
||||
"%1 hr": "%1 \u0447",
|
||||
"%1 {{PLURAL:%1|day|days}}": "%1 \u0434",
|
||||
"%1 d": "%1 \u0434",
|
||||
"2 days before yesterday, %H:%M": "\u0437\u0430\u0434-\u0437\u0430\u0432\u0447\u0435\u0440\u0430, %H:%M",
|
||||
"the day before yesterday, %H:%M": "\u0437\u0430\u0432\u0447\u0435\u0440\u0430, %H:%M",
|
||||
"yesterday, %H:%M": "\u0432\u0447\u0435\u0440\u0430, %H:%M",
|
||||
"today, %H:%M": "\u0434\u0435\u043d\u0435\u0441, %H:%M",
|
||||
"tomorrow, %H:%M": "\u0443\u0442\u0440\u0435, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "\u0437\u0430\u0434\u0443\u0442\u0440\u0435, %H:%M",
|
||||
"2 days after tomorrow, %H:%M": "\u0437\u0430\u0434-\u0437\u0430\u0434\u0443\u0442\u0440\u0435, %H:%M",
|
||||
"3 days after tomorrow, %H:%M": "\u0437\u0430\u0434-\u0437\u0430\u0434-\u0437\u0430\u0434\u0443\u0442\u0440\u0435, %H:%M",
|
||||
"now": "\u0441\u0435\u0433\u0430",
|
||||
"several seconds ago": "\u043f\u0440\u0435\u0434 \u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",
|
||||
"soon": "\u043d\u0430\u0431\u0440\u0433\u0443",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "\u043f\u0440\u0435\u0434 %1 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "\u043f\u043e %1 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "\u043f\u0440\u0435\u0434 %1 \u043c\u0438\u043d\u0443\u0442\u0438",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "\u043f\u043e %1 \u043c\u0438\u043d\u0443\u0442\u0438",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "\u043f\u0440\u0435\u0434 %1 \u0447\u0430\u0441\u0430",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "\u043f\u043e %1 \u0447\u0430\u0441\u0430",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "\u043f\u0440\u0435\u0434 %1 \u0434\u0435\u043d\u0430",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "\u043f\u043e %1 \u0434\u0435\u043d\u0430",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "\u043f\u0440\u0435\u0434 %1 \u043d\u0435\u0434\u0435\u043b\u0438",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "\u043f\u043e %1 \u043d\u0435\u0434\u0435\u043b\u0438",
|
||||
"\u7409\u7403": "\u0420\u0458\u0443\u043a\u0458\u0443",
|
||||
"\u65e5\u672c": "\u0408\u0430\u043f\u043e\u043d\u0438\u0458\u0430",
|
||||
"\ud55c\uad6d": "\u041a\u043e\u0440\u0435\u0458\u0430",
|
||||
"B\u1eafc thu\u1ed9c": "\u041a\u0438\u043d\u0435\u0441\u043a\u0430 \u043f\u0440\u0435\u0432\u043b\u0430\u0441\u0442 \u043d\u0430\u0434 \u0412\u0438\u0435\u0442\u043d\u0430\u043c",
|
||||
"Th\u1eddi k\u1ef3 \u0111\u1ed9c l\u1eadp": "\u0414\u043e\u0446\u043d\u043e\u0434\u0438\u043d\u0430\u0441\u0442\u0438\u0447\u043a\u0430 \u0435\u043f\u043e\u0445\u0430",
|
||||
"\u0e44\u0e17\u0e22": "\u0422\u0430\u0458\u043b\u0430\u043d\u0434",
|
||||
"\u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "\u0421\u043f\u0430\u0440\u0442\u0430",
|
||||
"British": "\u0411\u0440\u0438\u0442\u0430\u043d\u0438\u0458\u0430",
|
||||
"\u2191Back to TOC": "\u2191\u041d\u0430\u0437\u0430\u0434 \u043a\u043e\u043d \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430\u0442\u0430",
|
||||
"Contents of [%1]": "\u0421\u043e\u0434\u0440\u0436\u0438\u043d\u0430 \u043d\u0430 [%1]",
|
||||
"expand": "\u043e\u0442\u0432\u043e\u0440\u0438",
|
||||
"collapse": "\u0441\u043e\u0431\u0435\u0440\u0438",
|
||||
"Illegal %1: [%2]": "\u041d\u0435\u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u0430 %1: [%2]",
|
||||
"debug level": "\u0441\u0442\u0435\u043f\u0435\u043d \u043d\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0438"
|
||||
},
|
||||
"mk-MK");
|
||||
@@ -0,0 +1,110 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"untranslated message count": "1000+",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "Co\u00f6rdinaten: ",
|
||||
"\u7def\u5ea6\uff1a": "Breedtegraad: ",
|
||||
"\u7d93\u5ea6\uff1a": "Lengtegraad: ",
|
||||
"\u524d\u7db4": "voorvoegsel",
|
||||
"\u6642\u5340\uff1a": "Tijdzone: ",
|
||||
"\u8acb\u6ce8\u610f\uff1a\u672c\u6b04\u50c5\u4f9b\u958b\u767c\u4eba\u54e1\u4f7f\u7528\u3002": "WAARSCHUWING: Alleen voor ontwikkelaars.",
|
||||
"Loading...": "Bezig met laden\u2026",
|
||||
"\u9664\u53bb\u6b64\u6b04": "Kolom verwijderen",
|
||||
"\u589e\u52a0\u6b64\u6b04": "Kolom toevoegen",
|
||||
"general data layer": "algemeen",
|
||||
"\u6240\u6709\u570b\u5bb6": "Alle landen",
|
||||
"France": "Frankrijk",
|
||||
"Great Britain": "Groot Brittani\u00eb",
|
||||
"Spain": "Spanje",
|
||||
"\u51fa\u751f": "Geboren",
|
||||
"\u901d\u4e16": "Overleden",
|
||||
"\u52a0\u5195": "Kroning",
|
||||
"\u524d\u4efb": "Voorganger",
|
||||
"\u7e7c\u4efb": "Opvolger",
|
||||
"\u7236\u89aa": "Vader",
|
||||
"\u6bcd\u89aa": "Moeder",
|
||||
"\u914d\u5076": "Echtgenoot",
|
||||
"Initializing...": "Initialiseren...",
|
||||
"Aries": "Ram",
|
||||
"Taurus": "Stier",
|
||||
"Gemini": "Tweelingen",
|
||||
"Cancer": "Kreeft",
|
||||
"Leo": "Leeuw",
|
||||
"Virgo": "Maagd",
|
||||
"Libra": "Weegschaal",
|
||||
"Scorpio": "Schorpioen",
|
||||
"Sagittarius": "Boogschutter",
|
||||
"Capricorn": "Steenbok",
|
||||
"Aquarius": "Waterman",
|
||||
"Pisces": "Vissen",
|
||||
"Unix time": "Unix tijd",
|
||||
"\u6714": "nieuwe maan",
|
||||
"\u66d9\u66ae\u5149": "schemering",
|
||||
"calendar": "kalender",
|
||||
"Gregorian calendar": "Gregoriaanse kalender",
|
||||
"Julian calendar": "Juliaanse kalender",
|
||||
"finished": "voltooid",
|
||||
"No changes.": "Geen wijzigingen.",
|
||||
"No page modified": "Geen pagina aangepast",
|
||||
"\u4e0a\u5f26": "eerste kwartier",
|
||||
"\u671b": "volle maan",
|
||||
"\u4e0b\u5f26": "laatste kwartier",
|
||||
"sunrise": "zonsopkomst",
|
||||
"sunset": "zonsondergang",
|
||||
"Language": "Taal",
|
||||
"No reason provided": "Geen reden opgegeven",
|
||||
"Get configurations from page %1": "Configuraties ophalen van pagina %1",
|
||||
"\u8abf\u964d\u53d6\u5f97\u9801\u9762\u7684\u4e0a\u9650\uff0c\u6539\u6210\u6bcf\u6b21\u6700\u591a %1 \u500b\u9801\u9762\u3002": "Beperk het maximumaantal pagina's per keer tot %1 pagina's.",
|
||||
"Unknown API response: %1": "Onbekend api-antwoord: %1",
|
||||
"no change": "geen wijzigingen",
|
||||
"No user name or password provided. The login attempt was abandoned.": "Geen gebruikersnaam of wachtwoord opgegeven. De aanmeldpoging is afgebroken.",
|
||||
"function": "functie",
|
||||
"number": "getal",
|
||||
"Move %1 to %2 failed: %3": "Verplaatsing %1 naar %2 mislukt: %3",
|
||||
"Contents": "Inhoud",
|
||||
"Italy": "Itali\u00eb",
|
||||
"Poland": "Polen",
|
||||
"Luxembourg": "Luxemburg",
|
||||
"Netherlands": "Nederland",
|
||||
"Bavaria": "Beieren",
|
||||
"Austria": "Oosterrijk",
|
||||
"Switzerland": "Zwitserland",
|
||||
"Hungary": "Hongarije",
|
||||
"Germany": "Duitsland",
|
||||
"Norway": "Noorwegen",
|
||||
"Denmark": "Denemarken",
|
||||
"Sweden": "Zweden",
|
||||
"Finland": "Finland",
|
||||
"Bulgaria": "Bulgarije",
|
||||
"Soviet Union": "Sovjet-Unie",
|
||||
"Serbia": "Servi\u00eb",
|
||||
"Romania": "Roemeni\u00eb",
|
||||
"Greece": "Griekenland",
|
||||
"T\u00fcrkiye": "Turkije",
|
||||
"Egypt": "Egypte",
|
||||
"now": "zojuist",
|
||||
"several seconds ago": "enkele seconden geleden",
|
||||
"soon": "zodadelijk",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "%1 seconde{{PLURAL:%1||n}} geleden",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "%1 {{PLURAL:%1|minuut|minuten}} geleden",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1 uur{{PLURAL:%1|}} geleden",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 dag{{PLURAL:%1||en}} geleden",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "%1 {{PLURAL:%1|week|weken}} geleden",
|
||||
"Invalid date: %1": "Ongeldige datum: %1",
|
||||
"\u8a3b": "Opmerking",
|
||||
"British": "Brits",
|
||||
"\u2191Back to TOC": "\u2191Terug naar inhoudsopgave",
|
||||
"expand": "uitvouwen",
|
||||
"collapse": "samenvouwen",
|
||||
"Duplicate task name %1! Will overwrite old task with new task: %2\u2192%3": "Dubbele taaknaam %1! De oude taak wordt overschreven door de nieuwe: %2\u2192%3",
|
||||
"\u672c\u7ae0\u7bc0\u672a\u8a2d\u5b9a\u4efb\u52d9\u5167\u5bb9: %1": "De sectie stelt de taakconfiguratie niet in: %1",
|
||||
"%1 {{PLURAL:%1|page|pages}} modified": "%1 {{PLURAL:%1|pagina|pagina's}} bewerkt",
|
||||
"Remove %1 non-defunct {{PLURAL:%1|anchor|anchors}}": "%1 nog bestaande {{PLURAL:%1|anker|ankers}} verwijderen",
|
||||
"\u8a9e\u8a00\u6578": "Aantal talen",
|
||||
"\u5e73\u5747": "Gemiddelde",
|
||||
"\u5408\u8a08": "Som",
|
||||
"\u689d\u76ee\u4e00\u89bd": "Artikellijst",
|
||||
"See also": "Zie ook",
|
||||
"\u7121\u6a19\u7c64": "Geen label"
|
||||
},
|
||||
"nl-NL");
|
||||
@@ -0,0 +1,533 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "Espanha",
|
||||
"Calendrier r\u00e9publicain": "Calend\u00e1rio Franc\u00eas Republicano",
|
||||
"untranslated message count": "700+",
|
||||
"\u6e05\u9664\u8a0a\u606f": "Limpar registro",
|
||||
"\u986f\u793a/\u96b1\u85cf\u8a0a\u606f": "Mostar / Esconder registro",
|
||||
"Load failed": "Erro ao carregar",
|
||||
"Convert an era name to the specified format": "Converter um nome de era para o formato especificado",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "Coordenadas:",
|
||||
"\u81ea\u8a02\u8f38\u51fa\u683c\u5f0f": "Customizar formato de sa\u00edda",
|
||||
"\u7d00\u5e74\u8f49\u63db\u5de5\u5177": "Conversor de Calend\u00e1rio de Eras",
|
||||
"\u7def\u5ea6\uff1a": "Latitude:",
|
||||
"\u7d93\u5ea6\uff1a": "Longitude:",
|
||||
"\u8f38\u51fa\u683c\u5f0f": "Formato de sa\u00edda",
|
||||
"\u524d\u7db4": "prefixo",
|
||||
"\u6642\u5340\uff1a": "Fusos hor\u00e1rios:",
|
||||
"\u8acb\u6ce8\u610f\uff1a\u672c\u6b04\u50c5\u4f9b\u958b\u767c\u4eba\u54e1\u4f7f\u7528\u3002": "AVISO: Somente para desenvolvedores.",
|
||||
"Loading...": "Carregando...",
|
||||
"\u7d04%1\u5e74": "c. %1",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "Myanmar",
|
||||
"Vi\u1ec7t Nam": "Vietn\u00e3",
|
||||
"\u5206\u985e": "Grupo",
|
||||
"\u7121\u53ef\u4f9b\u5217\u51fa\u4e4b\u66c6\u8b5c\uff01": "Nenhum calend\u00e1rio para listar!",
|
||||
"\u81fa\u7063\u5730\u9707": "Terremotos em Taiwan",
|
||||
"\u96e3\u8fa8\u8b58\u6642\u6bb5\uff1a": "Per\u00edodos n\u00e3o-\u00f3bvios:",
|
||||
"general data layer": "geral",
|
||||
"\u8cc7\u6599\u5716\u5c64": "Camada de Dados",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "Navega\u00e7\u00e3o:",
|
||||
"\u6240\u6709\u570b\u5bb6": "Todos os Pa\u00edses",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "EXEMPLO",
|
||||
"France": "Fran\u00e7a",
|
||||
"Great Britain": "Gr\u00e3-Bretanha",
|
||||
"Spain": "Espanha",
|
||||
"\u63a1\u7528\u66c6\u6cd5": "Calend\u00e1rio usado",
|
||||
"\u51fa\u5178": "Fonte de dados",
|
||||
"\u541b\u4e3b\u540d": "Nome pessoal",
|
||||
"\u8868\u5b57": "Nome de cortesia",
|
||||
"\u541b\u4e3b\u865f": "Nome art\u00edstico",
|
||||
"\u8af1": "Nome verdadeiro",
|
||||
"\u8ae1": "Nome p\u00f3stumo",
|
||||
"\u5edf\u865f": "Nome de templo",
|
||||
"\u51fa\u751f": "Nascimento",
|
||||
"\u901d\u4e16": "Morte",
|
||||
"\u5728\u4f4d": "Reinado",
|
||||
"\u52a0\u5195": "Coroa\u00e7\u00e3o",
|
||||
"\u7236\u89aa": "Pai",
|
||||
"\u6bcd\u89aa": "M\u00e3e",
|
||||
"\u5c55\u793a\u7dda\u5716": "Mostrando linha do tempo",
|
||||
"\u7d00\u5e74 %1": "Era %1",
|
||||
"Initializing...": "Inicializando...",
|
||||
"\u7d00\u5e74\u7dda\u5716\u9078\u9805\uff1a": "Op\u00e7\u00f5es da linha do tempo:",
|
||||
"\u5408\u4f75\u6b77\u53f2\u6642\u671f": "Combinar per\u00edodos hist\u00f3ricos",
|
||||
"\u8acb\u9078\u64c7\u6240\u6b32\u8f09\u5165\u4e4b\u8cc7\u6599\u5716\u5c64\u3002": "Por favor, selecione a camada que deseja carregar.",
|
||||
"Aries": "\u00c1ries",
|
||||
"Taurus": "Touro",
|
||||
"Gemini": "G\u00eameos",
|
||||
"Cancer": "C\u00e2ncer",
|
||||
"Leo": "Le\u00e3o",
|
||||
"Virgo": "Virgem",
|
||||
"Libra": "Libra",
|
||||
"Scorpio": "Escorpi\u00e3o",
|
||||
"Sagittarius": "Sagit\u00e1rio",
|
||||
"Capricorn": "Capric\u00f3rnio",
|
||||
"Aquarius": "Aqu\u00e1rio",
|
||||
"Pisces": "Peixes",
|
||||
"\u6708\u76f8": "fase da lua",
|
||||
"\u661f\u671f": "Dia da semana",
|
||||
"\u9031\u65e5\u671f": "Data semanal",
|
||||
"Moon longitude": "longitude lunar",
|
||||
"Moon latitude": "latitude lunar",
|
||||
"\u6708\u65e5\u8996\u9ec3\u7d93\u5dee": "longitude aparente: Lua - Sol",
|
||||
"\u6714": "lua nova",
|
||||
"\u65e5\u51fa\u65e5\u843d": "nascer / p\u00f4r do sol",
|
||||
"\u66d9\u66ae\u5149": "crep\u00fasculo",
|
||||
"\u6708\u51fa\u6708\u843d": "nascer / p\u00f4r da lua",
|
||||
"calendar": "calend\u00e1rio",
|
||||
"Gregorian calendar": "Calend\u00e1rio gregoriano",
|
||||
"Julian calendar": "Calend\u00e1rio juliano",
|
||||
"\u66c6\u6ce8": "Notas do calend\u00e1rio",
|
||||
"\u6708\u5e72\u652f": "m\u00eas do ciclo sexagen\u00e1rio",
|
||||
"\u65e5\u5e72\u652f": "dia do ciclo sexagen\u00e1rio",
|
||||
"\u4e2d\u570b": "China",
|
||||
"\u6b72\u6b21": "ano do ciclo sexagen\u00e1rio",
|
||||
"\u751f\u8096": "zod\u00edaco chin\u00eas",
|
||||
"Before Present": "Antes do Presente",
|
||||
"\u8457\u540d\u5730\u9ede\uff1a": "Locais Famosos:",
|
||||
"Loading %1%...": "Carregando %1%...",
|
||||
"finished": "conclu\u00eddo",
|
||||
"No changes.": "Sem altera\u00e7\u00f5es.",
|
||||
"\u4e2d\u6587\u6578\u5b57": "Para numerais chineses",
|
||||
"astronomy": "astronomia",
|
||||
"\u671b": "lua cheia",
|
||||
"total solar eclipse": "eclipse solar total",
|
||||
"lunar eclipse": "eclipse lunar",
|
||||
"solar eclipse": "eclipse solar",
|
||||
"moonrise": "nascer da lua",
|
||||
"sunrise": "nascer do sol",
|
||||
"moonset": "p\u00f4r da lua",
|
||||
"sunset": "p\u00f4r do sol",
|
||||
"Not Yet Implemented!": "Ainda n\u00e3o implementado!",
|
||||
"\u5df2\u8f09\u5165\u904e [%1]\uff0c\u76f4\u63a5\u8a2d\u5b9a\u4f7f\u7528\u8005\u81ea\u8a02\u8cc7\u6e90\u3002": "[%1] est\u00e1 carregado, configurando recurso de dom\u00ednio do usu\u00e1rio agora.",
|
||||
"\u5f37\u5236\u518d\u6b21\u8f09\u5165/\u4f7f\u7528 [%2] (%1) \u9818\u57df/\u8a9e\u7cfb\u3002": "Carregamento for\u00e7ado / usando dom\u00ednio / local [%2] (%1).",
|
||||
"\u8f09\u5165/\u4f7f\u7528 [%2] (%1) \u9818\u57df/\u8a9e\u7cfb\u3002": "Carregando/ usando dom\u00ednio / local [%2] (%1).",
|
||||
"\u7121\u6cd5\u5224\u5225 domain\uff0c\u537b\u8a2d\u5b9a\u6709 callback\u3002": "N\u00e3o foi poss\u00edvel distinguir o dom\u00ednio, mas callback estabelecido",
|
||||
"Illegal domain alias list: [%1]": "Lista ilegal de alias de dom\u00ednio: [%1]",
|
||||
"Adding domain alias [%1] \u2192 [%2]...": "Adicionando alias de dom\u00ednio [%1] \u2192 [%2]...",
|
||||
"Testing domain alias [%1]...": "Testando o alias de dom\u00ednio [%1]...",
|
||||
"Failed to extract gettext id.": "Falha em extrair o gettext id.",
|
||||
"Loading language / domain [%1]...": "Carregando linguagem / dom\u00ednio [%1]...",
|
||||
"Language / domain [%1] loaded.": "Linguagem/ dom\u00ednio [%1] carregado.",
|
||||
"Cannot find menu node: [%1]": "N\u00e3o foi poss\u00edvel encontrar o n\u00f3dulo do menu: [%1]",
|
||||
"\u8f49\u63db\u6578\u5b57\uff1a[%1]\u6210 %2 \u683c\u5f0f\u3002": "Converter o n\u00famero: [%1] para formato %2.",
|
||||
"\u7121\u6cd5\u8f49\u63db\u6578\u5b57 [%1]\uff01": "Incapaz de converter o n\u00famero [%1]!",
|
||||
"Retry %1/%2: %3": "Tente novamente %1/%2: %3",
|
||||
"Get configurations from page %1": "Obtenha configura\u00e7\u00f5es da p\u00e1gina %1",
|
||||
"\u7db2\u5740\u7121\u6548\uff1a%1": "URL inv\u00e1lida: %1",
|
||||
"finished: %1": "conclu\u00eddo: %1",
|
||||
"\u7121\u6cd5\u5f9e\u7db2\u5740\u64f7\u53d6\u4f5c\u54c1 id\uff1a%1": "id do projeto n\u00e3o foi encontrado pela URL: %1",
|
||||
"Starting %1": "Come\u00e7ando %1",
|
||||
"\"%1\" \u9019\u500b\u503c\u6240\u5141\u8a31\u7684\u6578\u503c\u985e\u578b\u70ba %4\uff0c\u4f46\u73fe\u5728\u88ab\u8a2d\u5b9a\u6210 {%2} %3": "O tipo permitido de dado para \"%1\" \u00e9 %4, mas foi definido para {%2} %3",
|
||||
"\u81f3\u5c11\u4e00\u500b\u7531\u300c%1\u300d\u6240\u6307\u5b9a\u7684%2\u8def\u5f91\u4e0d\u5b58\u5728\uff1a%3": "Algum(ns) caminho(s) %2 especificado(s) pelo \"%1\" n\u00e3o existe(m): %3",
|
||||
"directories": "diret\u00f3rios",
|
||||
"directory": "diret\u00f3rio",
|
||||
"file": "arquivo",
|
||||
"files": "arquivos",
|
||||
"\u7121\u6cd5\u8655\u7406 \"%1\" \u5728\u6578\u503c\u985e\u578b\u70ba %2 \u6642\u4e4b\u689d\u4ef6\uff01": "Incapaz de processar a condi\u00e7\u00e3o \"%1\" com o tipo de valor %2!",
|
||||
"\"%1\" \u88ab\u8a2d\u5b9a\u6210\u4e86\u6709\u554f\u984c\u7684\u503c\uff1a{%2} %3": "\"%1\" \u00e9 definido como o valor inv\u00e1lido: {%2} %3",
|
||||
"\u672a\u63d0\u4f9b\u9375\u503c": "Valor chave n\u00e3o informado",
|
||||
"Using proxy server: %1": "Usando servidor proxy: %1",
|
||||
"\u7121\u6cd5\u89e3\u6790\u7684\u6642\u9593": "Tempo limite para an\u00e1lise de tr\u00e1fego excedido",
|
||||
"\u672a\u8a2d\u5b9a User-Agent\u3002": "User-Agent n\u00e3o definido.",
|
||||
"Referer \u4e0d\u53ef\u70ba undefined\u3002": "\"Referer\" n\u00e3o pode ser indefinido.",
|
||||
"\u8a2d\u5b9a Referer\uff1a%1": "Configure o Referer: %1",
|
||||
"\u6700\u5c0f\u5716\u7247\u5927\u5c0f\u61c9\u5927\u65bc\u7b49\u65bc\u96f6": "Tamanho min\u00edmo da imagem deve ser maior que 0",
|
||||
"\u7121\u6cd5\u89e3\u6790 %1": "N\u00e3o foi poss\u00edvel analisar %1",
|
||||
"\u7121\u6cd5\u8a2d\u5b9a %1\uff1a%2": "N\u00e3 foi poss\u00edvel definir %1 : 2",
|
||||
"\u7531\u547d\u4ee4\u5217": "Por linha de comando",
|
||||
"boolean": "boolean",
|
||||
"fso_directories": "caminho dos diret\u00f3rios",
|
||||
"fso_directory": "caminho do diret\u00f3rio",
|
||||
"fso_file": "caminho do arquivo",
|
||||
"fso_files": "caminho dos arquivos",
|
||||
"function": "fun\u00e7\u00e3o",
|
||||
"number": "n\u00famero",
|
||||
"string": "texto",
|
||||
"\u300a%1\u300b\uff1a": "\u00ab%1\u00bb:",
|
||||
"Getting data of chapter %1, %2": "Obtendo dados do cap\u00edtulo %1, %2",
|
||||
"Getting data of chapter %1": "Obtendo dados do cap\u00edtulo %1",
|
||||
"\u5148\u5275\u5efa\u7ae0\u7bc0\u76ee\u9304\uff1a%1": "Criando o diret\u00f3rio do cap\u00edtulo: %1",
|
||||
"\u89e3\u958b\u5716\u7247\u58d3\u7e2e\u6a94\uff1a%1": "Extraindo imagens: %1",
|
||||
"\u8b80\u53d6\u5716\u7247\u58d3\u7e2e\u6a94\uff1a%1": "Lendo arquivos de imagem: %1",
|
||||
"\u522a\u9664\u7ae0\u7bc0\u5167\u5bb9\u9801\u9762\uff1a%1": "Deletando imagem do cap\u00edtulo: %1",
|
||||
"%1 [%2] %3 {{PLURAL:%3|image|images}}.": "%1 [%2] %3 imagens.",
|
||||
"\uff08\u672c\u7ae0\u70ba\u9700\u8981\u4ed8\u8cbb/\u88ab\u9396\u4f4f\u7684\u7ae0\u7bc0\uff09": "(Acesso limitado)",
|
||||
"File extension: %1": "Extens\u00e3o do arquivo: %1",
|
||||
"%1\uff1a\u5df2\u6d3e\u767c\u5b8c\u5de5\u4f5c\uff0c\u958b\u59cb\u4e26\u884c\u4e0b\u8f09\u5404\u5716\u7247\u3002": "%1: A obra recebida e as imagens est\u00e3o baixando em paralelo.",
|
||||
"\u4e0b\u8f09\u5716 %1": "Baixando imagem #%1",
|
||||
"\u4e0b\u8f7d\u7b2c %2 \u5f35{{PLURAL:%2|\u5716\u7247}}\u524d\u5148\u7b49\u5f85 %1\u3002": "Esperando %2 antes de baixar %2 imagens.",
|
||||
"\u7121\u6cd5\u53d6\u5f97\u7b2c %1 \u7ae0\u7684\u5167\u5bb9\u3002": "Falha ao obter dados do cap\u00edtulo %1",
|
||||
"\u8df3\u904e %1 \u00a7%2 \u4e26\u63a5\u8457\u4e0b\u8f09\u4e0b\u4e00\u7ae0\u3002": "Pulando %1 \u00a7%2 e indo para o pr\u00f3ximo cap\u00edtulo.",
|
||||
"MESSAGE_NEED_RE_DOWNLOAD": "O download deu errado, o servidor pode estar temporariamente indispon\u00edvel ou o arquivo foi perdido (404). Confirme se o erro foi eliminado ou se o erro est\u00e1 mais acontecendo e execute novamente para continuar o download.",
|
||||
"Retry %1/%2": "Tentando novamente %1/%2",
|
||||
"\u4fdd\u7559\u820a\u6a94\uff1a": "Salvar os arquivos antigos:",
|
||||
"\u642c\u79fb\u81f3 \u2192": "Mover para \u2192",
|
||||
"\u79fb\u9664\u820a\u6a94\u6848\uff1a": "Remover arquivos antigos:",
|
||||
"HTTP status code %1.": "C\u00f3digo de status do HTTP %1.",
|
||||
"Error: %1": "Erro: %1",
|
||||
"\u5716\u6a94\u640d\u58de\uff1a": "Imagem danificada:",
|
||||
"\u7121\u6cd5\u53d6\u5f97\u5716\u7247\u3002": "Falha em obter a imagem.",
|
||||
"\u5716\u7247\u7121\u5167\u5bb9\uff1a": "Nenhum conte\u00fado encontrado:",
|
||||
"\u6a94\u6848\u904e\u5c0f\uff0c\u50c5 %1 {{PLURAL:%1|\u4f4d\u5143\u7d44}}\uff1a": "%1 bytes, muito pequeno:",
|
||||
"\u6a94\u6848\u50c5 %1 {{PLURAL:%1|\u4f4d\u5143\u7d44}}\uff1a": "%1 bytes:",
|
||||
"\u5f9e[%1]\u53d6\u5f97 %2 \u500b\u5716\u7247\u4f3a\u670d\u5668\uff1a%3": "Recendo %2 servidores de [%1]: %3",
|
||||
"\u7121\u6cd5\u5f9e[%1]\u62bd\u53d6\u51fa\u5716\u7247\u4f3a\u670d\u5668\u5217\u8868\uff01": "N\u00e3o foi poss\u00edvel extrair a lista de servidores de imagem de [%1]!",
|
||||
"%1: \u6c92\u6709\u8f38\u5165 work_id\uff01": "%1: work_id n\u00e3o fornecido!",
|
||||
"\u958b\u59cb\u8655\u7406\u300a%1\u300b\uff0c\u5132\u5b58\u81f3 %2": "Come\u00e7ando a baixar \u00ab%1\u00bb, salvando em %2",
|
||||
"Cannot create the base directory for downloading files: %1": "N\u00e3o \u00e9 poss\u00edvel criar o diret\u00f3rio base: %1",
|
||||
"\u4f5c\u54c1\u5217\u8868\u5340\u584a\u6ce8\u89e3 \"*/\" \u5f8c\u9762\u7684\"%1\"\u6703\u88ab\u5ffd\u7565": "\"%1\" na execu\u00e7\u00e3o da tarefa listado com \"* /\" ser\u00e1 ignorado",
|
||||
"\u7121\u6cd5\u8b80\u53d6\u4f5c\u54c1\u6e05\u55ae\u6a94\u6848\uff1a%1": "N\u00e3o \u00e9 poss\u00edvel ler os t\u00edtulos das s\u00e9ries: %1",
|
||||
"\u91cd\u65b0\u6574\u7406\u4f5c\u54c1\u6e05\u55ae\u6a94\u6848\uff1a%1": "Reorganizando t\u00edtulos das s\u00e9ries: %1",
|
||||
"\u91cd\u65b0\u6574\u7406\u4f5c\u54c1\u6e05\u55ae\u6a94\u6848 [%1]\uff0c\u8655\u7406\u4e86 %2 \u500b\u4f5c\u54c1{{PLURAL:%2|\u6a19\u984c}}\u3002": "%2 t\u00edtulos de s\u00e9ries processados: %1",
|
||||
"\u91cd\u65b0\u6574\u7406\u5217\u8868\u6a94\u6848 [%1]\uff0c\u6ce8\u89e3/\u6392\u9664\u4e86%2\u500b{{PLURAL:%2|\u4f5c\u54c1}}\u3002": "%2 t\u00edtulos de s\u00e9ries comentandos: %1",
|
||||
"\u4f5c\u54c1\u6e05\u55ae\u6a94\u6848\u672a\u4f5c\u6539\u8b8a\uff1a[%1]": "Nenhuma altera\u00e7\u00e3o nos t\u00edtulos das s\u00e9ries:% 1",
|
||||
"\u60a8\u53ef\u80fd\u932f\u628a\u4e0b\u8f09\u5de5\u5177\u6a94\u7576\u4f5c\u4e86\u5217\u8868\u6a94\u6848\uff1a%1": "Voc\u00ea pode ter confundido as ferramentas de download com os t\u00edtulos das s\u00e9ries: %1",
|
||||
"\u6539\u70ba\u63a1\u7528\u4f5c\u54c1\u6e05\u55ae\u6a94\u6848\uff1a%1": "Usando os t\u00edtulos das s\u00e9ries:% 1",
|
||||
"\u4f5c\u54c1 id \u7121\u6548\uff1a%1": "Id da s\u00e9rie inv\u00e1lida: %1",
|
||||
"\u81ea\u4f5c\u54c1\u5217\u8868\u4e2d\u522a\u9664\u5c07\u5c01\u5b58\u4e4b\u4f5c\u54c1\uff1a\u300a%1\u300b": "Remova a s\u00e9rie arquivada da lista de s\u00e9ries: \u00ab%1\u00bb",
|
||||
"\u5df2\u5c01\u5b58\uff1a": "Arquivado:",
|
||||
"\u5c01\u5b58\u65e5\u671f\uff1a%1\uff0c\u6700\u5f8c\u4e00\u6b21\u65bc %2 \u4e0b\u8f09": "data de arquivamento:%1, data do \u00faltimo download:%2",
|
||||
"\u5c01\u5b58\u820a\u4f5c\u54c1\uff1a\u300a%1\u300b": "Arquivar o trabalho antigo: \u00ab%1\u00bb",
|
||||
"\u8b66\u544a\uff1a\u6b63\u4e0b\u8f09\u4ee5\"%2\"\u958b\u59cb\u3001\u9577\u5ea6 %1 \u7684\u4f5c\u54c1\u5217\u8868\u4e2d\u3002\u91cd\u8907\u4e0b\u8f09\u4f5c\u54c1\u5217\u8868\u53ef\u80fd\u9020\u6210\u932f\u8aa4\uff01": "Aviso: baixando uma lista de s\u00e9ries iniciados em \"%2\" at\u00e9 % 1. Repetir o download da lista de s\u00e9ries pode causar um erro!",
|
||||
"Using convert_id[%1]": "Usando o converter_id[%1]",
|
||||
"Using convert_id[%1] via url: %2": "Usando o converter_id[%1] via url: %2",
|
||||
"Invalid id converter for %1": "conversor de id inv\u00e1lido para %1",
|
||||
"Downloading %1: %2": "Baixando %1: %2",
|
||||
"\u5171%1\u500b\u4f5c\u54c1\u4e0b\u8f09\u5b8c\u7562\u3002": "Um total de %1 s\u00e9ries foram baixadas.",
|
||||
"\u5171%1\u500b\u4f5c\u54c1\u51fa\u73fe\u7279\u6b8a\u72c0\u6cc1\uff0c\u8a18\u9304\u65bc[%2]\u3002": "%1 s\u00e9ries produziram uma condi\u00e7\u00e3o especial, grava em [%2].",
|
||||
"work_data.author": "Autor",
|
||||
"work_data.chapter_count": "Quantidade de cap\u00edtulos",
|
||||
"work_data.chapter_list": "Listagem do cap\u00edtulo",
|
||||
"work_data.description": "Descri\u00e7\u00e3o",
|
||||
"work_data.directory": "Diret\u00f3rio",
|
||||
"work_data.id": "ID da obra",
|
||||
"work_data.last_download.chapter": "\u00daltimo cap\u00edtulo baixado",
|
||||
"work_data.last_download.date": "\u00daltima vez baixado",
|
||||
"work_data.last_update": "\u00daltima atualiza\u00e7\u00e3o",
|
||||
"work_data.status": "Status",
|
||||
"work_data.title": "T\u00edtulo da obra",
|
||||
"work_data.url": "URL",
|
||||
"work_status-finished": "Conclu\u00eddo",
|
||||
"work_status-limited": "Limitado",
|
||||
"work_status-not found": "N\u00e3o encontrado",
|
||||
"Work information": "Informa\u00e7\u00f5es da obra",
|
||||
"work_data.chapter_NO": "N\u00famero do cap\u00edtulo",
|
||||
"work_data.chapter_title": "T\u00edtulo do cap\u00edtulo",
|
||||
"\u60a8\u53ef\u6307\u5b9a \"start_chapter_NO=\u7ae0\u7bc0\u7de8\u865f\u6578\u5b57\" \u6216 \"start_chapter_title=\u7ae0\u7bc0\u6a19\u984c\" \u4f86\u9078\u64c7\u8981\u958b\u59cb\u4e0b\u8f09\u7684\u7ae0\u7bc0\u3002": "Voc\u00ea pode definir \"start_chapter_NO = n\u00famero do cap\u00edtulo\" ou \"start_chapter_title = t\u00edtulo do cap\u00edtulo\" para decidir onde come\u00e7a o download,",
|
||||
"\u6216\u6307\u5b9a \"chapter_filter=\u7ae0\u7bc0\u6a19\u984c\" \u50c5\u4e0b\u8f09\u67d0\u500b\u7ae0\u7bc0\u3002": "ou defina \"chapter_filter = t\u00edtulo do cap\u00edtulo\" para fazer o download de um cap\u00edtulo espec\u00edfico.",
|
||||
"Unknown": "Desconhecido",
|
||||
"JScript \u6a94\u6848\u53ea\u80fd\u5728 Windows \u74b0\u5883\u4e0b\u57f7\u884c\uff01": "Arquivo JScript s\u00f3 pode ser executado em Windows!",
|
||||
"\u7121\u6cd5\u7de8\u78bc\u7121\u6548\u7684 id\uff1a%1": "id inv\u00e1lido para codificar: %1",
|
||||
"\u7121\u6cd5\u89e3\u78bc\uff1a[%1]": "n\u00e3o \u00e9 poss\u00edvel decodificar",
|
||||
"\u7121\u6cd5\u5224\u5225\u6a94\u6848 [%1] \u7684\u985e\u578b\u3002": "N\u00e3o \u00e9 poss\u00edvel determinar o tipo de arquivo do [%1].",
|
||||
"\u9805\u76ee\u8cc7\u8a0a\u7121\u6548\uff1a%1": "Dados inv\u00e1lidos do item: %1",
|
||||
"\u5148\u524d\u5df2\u7d93\u5b58\u5728\u76f8\u540c id \u4e4b\u7ae0\u7bc0\uff0c\u5c07\u66f4\u6539\u5f8c\u8005\u4e4b id\u3002": "Esse id j\u00e1 existe, ir\u00e1 substituir o id do cap\u00edtulo anterior.",
|
||||
"\u672a\u8a2d\u5b9a media-type\uff0c\u6216 media-type \u7121\u6548\uff1a%1": "Media-type inv\u00e1lido ou n\u00e3o definido.",
|
||||
"\u8df3\u904e\u7121\u5167\u5bb9/\u7a7a\u7ae0\u7bc0\uff1a": "Pule o cap\u00edtulo vazio/sem conte\u00fado:",
|
||||
"too short": "muito curto",
|
||||
"\u82e5\u662f\u5df2\u5b58\u5728\u6b64\u7ae0\u7bc0\u5247\u5148\u79fb\u9664\uff1a%1": "Se esse cap\u00edtulo j\u00e1 existe, remova-o primeiro: %1",
|
||||
"Using language: %1": "Usando a linguagem: %1",
|
||||
"TOC.calibre:series": "S\u00e9rie",
|
||||
"TOC.creator": "criador",
|
||||
"TOC.date": "data",
|
||||
"TOC.dcterms:modified": "Data da \u00faltima modifica\u00e7\u00e3o da obra",
|
||||
"TOC.description": "descri\u00e7\u00e3o",
|
||||
"TOC.identifier": "identificador",
|
||||
"TOC.language": "l\u00edngua",
|
||||
"TOC.publisher": "editora",
|
||||
"TOC.source": "fonte",
|
||||
"TOC.subject": "marcadores",
|
||||
"TOC.title": "t\u00edtulo",
|
||||
"word count": "Contador de palavras",
|
||||
"%1 {{PLURAL:%1|word|words}}": "%1 palavras",
|
||||
"%1 {{PLURAL:%1|chapter|chapters}}": "%1 cap\u00edtulos",
|
||||
"Contents": "Conte\u00fado",
|
||||
"Working directory: %1": "Diret\u00f3rio de trabalho: %1",
|
||||
"Italy": "It\u00e1lia",
|
||||
"Poland": "Pol\u00f4nia",
|
||||
"Portugal": "Portugal",
|
||||
"Luxembourg": "Luxemburgo",
|
||||
"Netherlands": "Pa\u00edses Baixos",
|
||||
"Bavaria": "Baviera",
|
||||
"Austria": "\u00c1ustria",
|
||||
"Switzerland": "Su\u00ed\u00e7a",
|
||||
"Hungary": "Hungria",
|
||||
"Germany": "Alemanha",
|
||||
"Norway": "Noruega",
|
||||
"Denmark": "Dinamarca",
|
||||
"Sweden": "Su\u00e9cia",
|
||||
"Finland": "Finl\u00e2ndia",
|
||||
"Bulgaria": "Bulg\u00e1ria",
|
||||
"Soviet Union": "Uni\u00e3o Sovi\u00e9tica",
|
||||
"Serbia": "S\u00e9rvia",
|
||||
"Romania": "Rom\u00eania",
|
||||
"Greece": "Gr\u00e9cia",
|
||||
"T\u00fcrkiye": "Turquia",
|
||||
"Egypt": "Egito",
|
||||
"%1 {{PLURAL:%1|year|years}} and %2 {{PLURAL:%2|month|months}}": "%1 A %2 M",
|
||||
"%1 Y %2 M": "%1 A %2 M",
|
||||
"%1 {{PLURAL:%1|year|years}}": "%1 A",
|
||||
"%1 Y": "%1 A",
|
||||
"%1 {{PLURAL:%1|month|months}}": "%1 M",
|
||||
"%1 M": "%1 M",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1 ms",
|
||||
"%1 ms": "%1 ms",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1 s",
|
||||
"%1 s": "%1 s",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 min",
|
||||
"%1 min": "%1 min",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1 hr",
|
||||
"%1 hr": "%1 hr",
|
||||
"%1 {{PLURAL:%1|day|days}}": "%1 d",
|
||||
"%1 d": "%1 d",
|
||||
"2 days before yesterday, %H:%M": "2 dias antes de ontem, %H:%M",
|
||||
"the day before yesterday, %H:%M": "anteontem, %H:%M",
|
||||
"yesterday, %H:%M": "ontem, %H:%M",
|
||||
"today, %H:%M": "hoje, %H:%M",
|
||||
"tomorrow, %H:%M": "amanh\u00e3, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "depois de amanh\u00e3, %H:%M",
|
||||
"2 days after tomorrow, %H:%M": "2 dias depois de amanh\u00e3, %H:%M",
|
||||
"3 days after tomorrow, %H:%M": "3 dias depois de amanh\u00e3, %H:%M",
|
||||
"now": "agora",
|
||||
"several seconds ago": "alguns segundos atr\u00e1s",
|
||||
"soon": "em breve",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "%1 segundos atr\u00e1s",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "%1 segundos mais tarde",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "%1 minutos atr\u00e1s",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "%1 minutos mais tarde",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1 horas atr\u00e1s",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 horas mais tarde",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 dias atr\u00e1s",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1 dias mais tarde",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "%1 semanas atr\u00e1s",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "%1 semanas mais tarde",
|
||||
"\u5e74\u865f": "Data da era",
|
||||
"\u8a3b": "Nota",
|
||||
"\u4e94\u884c": "Wu Xing",
|
||||
"\u7d00\u5e74": "Nome da era",
|
||||
"\u7409\u7403": "Ryukyu",
|
||||
"\u65e5\u672c": "Jap\u00e3o",
|
||||
"\ud55c\uad6d": "Cor\u00e9ia",
|
||||
"B\u1eafc thu\u1ed9c": "Domina\u00e7\u00e3o chinesa do Vietn\u00e3",
|
||||
"\u0e44\u0e17\u0e22": "Tail\u00e2ndia",
|
||||
"\u0e23\u0e32\u0e0a\u0e27\u0e07\u0e28\u0e4c\u0e1e\u0e23\u0e30\u0e23\u0e48\u0e27\u0e07": "Dinastia Phra Ruang",
|
||||
"\u0e2d\u0e32\u0e13\u0e32\u0e08\u0e31\u0e01\u0e23\u0e2a\u0e38\u0e42\u0e02\u0e17\u0e31\u0e22": "Reino de Sucotai",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c\u1015\u103c\u100a\u103a": "Rep\u00fablica da Uni\u00e3o de Myanmar",
|
||||
"India": "\u00cdndia",
|
||||
"Babylon": "Babil\u00f4nia",
|
||||
"Persia": "P\u00e9rsia",
|
||||
"\u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1": "Maced\u00f4nia",
|
||||
"\u1f08\u03b8\u1fc6\u03bd\u03b1\u03b9": "Atenas Cl\u00e1ssica",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "Esparta",
|
||||
"\u8a9e\u6cd5\u932f\u8aa4\uff01": "Erro de sintaxe!",
|
||||
"\u51fd\u6578\u540d\u7a31\u4e0d\u76f8\u7b26\uff0c\u53ef\u80fd\u662f\u7528\u4e86 reference\uff1f": "Nome da fun\u00e7\u00e3o n\u00e3o coincide.",
|
||||
"Treat [%1] as RegExp.": "Trate [%1] como RegExp",
|
||||
"Invalid flags: [%1]": "Marca\u00e7\u00f5es inv\u00e1lidas: [%1]",
|
||||
"Illegal pattern: [%1]": "Padr\u00e3o ilegal: [%1]",
|
||||
"\u8f49\u63db\u6a21\u5f0f [%1] \u51fa\u932f\uff1a\u4e26\u975e RegExp\uff1f %2": "Modo de convers\u00e3o [%1] Erro: RegExep Inv\u00e1lido? %2",
|
||||
"Treat pattern [%1] as Windows wildcard search string.": "Trate o padr\u00e3o [%1] como um termo curinga na pesquisa de texto do Windows.",
|
||||
"\u7121\u6cd5\u8f49\u63db\u6a21\u5f0f [%1]\uff01": "Incapaz de converter o modo [%1]!",
|
||||
"\u2191Back to TOC": "Voltar ao \u00cdndice",
|
||||
"expand": "expandir",
|
||||
"collapse": "ocultar",
|
||||
"Searching style {%2} [%1] in SGR_code.style_value_alias...": "Pesquisando o estilo {%2} [%1] em SGR_code.style_value_alias...",
|
||||
"Find style [%1] normalized to \u2192 [%2]": "Encontre o estilo [%1] normalizado para \u2192 [%2]",
|
||||
"Parse {%2} [%1] if it is a primitive value.": "Analisar {%2} [%1] se for um valor primitivo.",
|
||||
"Test if [%1] is \"[+-] style name\".": "Testar se [%1] \u00e9 \"[+-] style name\".",
|
||||
"Invalid configuration of style: [%1].": "Configura\u00e7\u00e3o de estilo inv\u00e1lida: [%1].",
|
||||
"Set style \"%1\" = %2.": "Definir estilo \"%1\" = %2.",
|
||||
"Test if [%1] is \"style name = style value (0, 1, false, true, ...)\".": "Testar se [%1] \u00e9 \"style name = style value (0, 1, false, true, ...)\".",
|
||||
"Parse {%2} [%1] if it is a object.": "Analisar {%2} [%1] se for um objeto.",
|
||||
"Reset style {%2} [%1].": "Redefinir estilo {%2} [%1].",
|
||||
"Unknown style: [%1].": "Estilo desconhecido: [%1].",
|
||||
"\u672c\u7ae0\u7bc0\u672a\u8a2d\u5b9a\u4efb\u52d9\u5167\u5bb9: %1": "A se\u00e7\u00e3o n\u00e3o define a configura\u00e7\u00e3o da tarefa: %1",
|
||||
"Move %1:": "Movendo %1:",
|
||||
"Remove empty directory: %1": "Removendo o diret\u00f3rio vazio: %1",
|
||||
"%1/%2 compressing": "%1/%2 comprimindo",
|
||||
"Compress %1:": "Comprimir %1:",
|
||||
"Target exists: %1": "Alvo exite: %1",
|
||||
"\u641c\u5c0b\u7d50\u679c": "Procurar resultados",
|
||||
"\u4e0b\u8f09\u9078\u9805": "Op\u00e7\u00f5es de download",
|
||||
"\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "Lista de s\u00e9ries favoritas",
|
||||
"\u958b\u555f\u5075\u932f\u5de5\u5177": "Abrir as ferramentas de desenvolvedor",
|
||||
"\u958b\u5553\u4e0b\u8f09\u76ee\u9304": "Abrir o diret\u00f3rio de download",
|
||||
"\u641c\u5c0b": "Procurar",
|
||||
"\u641c\u5c0b\u5404\u7db2\u7ad9\u4e26\u4e0b\u8f09\u4f5c\u54c1\u3002": "Procurar em todos os sites e baixar a obra.",
|
||||
"\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94": "T\u00edtulo da s\u00e9rie ou \ud83c\udd94",
|
||||
"\u958b\u59cb\u4e0b\u8f09": "Come\u00e7ar o download",
|
||||
"\u7db2\u8def\u4f5c\u54c1\u7db2\u7ad9": "sites de web novels/quadrinhos",
|
||||
"\u4e0d\u9650\u5236\u8a0a\u606f\u884c\u6578": "N\u00e3o limitar linhas de registro",
|
||||
"CeJS \u7db2\u8def\u5c0f\u8aaa\u6f2b\u756b\u4e0b\u8f09\u5de5\u5177": "CeJS online novels / downloader de quadrinhos",
|
||||
"\u8cbc\u4e0a": "Colar",
|
||||
"\u958b\u59cb\u6aa2\u6e2c\u4e26\u66f4\u65b0\u5b89\u88dd\u5305\u2026\u2026": "Iniciando atualiza\u00e7\u00e3o...",
|
||||
"\u6240\u57f7\u884c\u7684\u4e26\u975e\u5b89\u88dd\u5305\u7248\u672c\uff0c\u56e0\u6b64\u4e0d\u57f7\u884c\u5b89\u88dd\u5305\u7248\u672c\u7684\u5347\u7d1a\u6aa2\u67e5\u3002": "Voc\u00ea est\u00e1 na master branch do git, ignorando a verifica\u00e7\u00e3o de atualiza\u00e7\u00e3o de vers\u00e3o.",
|
||||
"\u958b\u59cb\u6aa2\u6e2c\u5b89\u88dd\u5305\u66f4\u65b0\u2026\u2026": "Verificando se h\u00e1 atualiza\u00e7\u00f5es...",
|
||||
"\u6709\u65b0\u7248\u5b89\u88dd\u5305\uff1a%1": "Atualiza\u00e7\u00e3o dispon\u00edvel: %1",
|
||||
"\u958b\u59cb\u4e0b\u8f09\u5b89\u88dd\u5305\u3002\u82e5\u9084\u6c92\u4e0b\u8f09\u5b8c\u5c31\u96e2\u958b\u7a0b\u5f0f\u3001\u51fa\u932f\uff0c\u4e0b\u6b21\u6703\u5f9e\u982d\u4e0b\u8f09\u3002\u60a8\u53ef\u5347\u9ad8\u8a0a\u606f\u6b04\u7684\u5075\u932f\u7b49\u7d1a\uff0c\u4ee5\u5f97\u77e5\u4e0b\u8f09\u9032\u5ea6\u3002": "o pacote de instala\u00e7\u00e3o come\u00e7ou a ser baixado.Se voc\u00ea fechar o programa antes do download terminar , quando abrir novamente o programa o download come\u00e7ara do 0.Voc\u00ea pode aumentar o tamanho da barra de depura\u00e7\u00e3o para saber o progresso do download.",
|
||||
"\u6c92\u6709\u65b0\u5b89\u88dd\u5305\u3002\u7576\u524d\u7248\u672c\uff1a%1": "Nova atualiza\u00e7\u00e3o n\u00e3o dispon\u00edvel. Vers\u00e3o atual: %1",
|
||||
"\u5b89\u88dd\u5305\u66f4\u65b0\u51fa\u932f\uff1a%1": "Erro no atualizador aut\u00f3matico: %1",
|
||||
"\u5b89\u88dd\u5305\u5df2\u4e0b\u8f09 %1\uff0c\u4e0b\u8f09\u901f\u5ea6 %2 {{PLURAL:%2|byte|bytes}}/s\u3002": "Velocidade de download: %2 butes/s - Baixado %2",
|
||||
"\u5b89\u88dd\u5305\u5df2\u4e0b\u8f09 %1\uff0c\u9810\u4f30\u9084\u9700 %2 {{PLURAL:%2|\u5206\u9418}}\u4e0b\u8f09\u5b8c\u7562\u3002": "O pacote de insta\u00e7\u00e3o j\u00e1 baixou %1 e o tempo estimado para terminar de baixar \u00e9 de %2 minutos.",
|
||||
"\u65b0\u7248\u5b89\u88dd\u5305\u4e0b\u8f09\u5b8c\u6210\uff1a%1": "Nova atualiza\u00e7\u00e3o baixada: %1",
|
||||
"\u91cd\u65b0\u555f\u52d5\u7a0b\u5f0f\u5373\u53ef\u66f4\u65b0\u3002": "Reinicie o programa para que as atualiza\u00e7\u00f5es sejam aplicadas.",
|
||||
"\u5b89\u88dd\u5305\u66f4\u65b0\u5931\u6557\uff1a%1": "Houve um problema na atualiza\u00e7\u00e3o do programa: %1",
|
||||
"\u7e41\u9ad4\u5b57\u6f2b\u756b": "Manhuas em chin\u00eas tradicional",
|
||||
"\u4e2d\u56fd\u5185\u5730\u6f2b\u753b": "Manhuas em chin\u00eas simplificado",
|
||||
"\u65e5\u672c\u8a9e\u306e\u30a6\u30a7\u30d6\u30b3\u30df\u30c3\u30af": "Mang\u00e1s digitais em japon\u00eas",
|
||||
"English webcomics": "Webcomics em ingl\u00eas",
|
||||
"\u4e2d\u56fd\u5185\u5730\u5c0f\u8bf4": "Web novels em chin\u00eas simplificado",
|
||||
"\u65e5\u672c\u8a9e\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u5c0f\u8aac": "Web novels em japon\u00eas",
|
||||
"\u4e0d\u518d\u7dad\u8b77": "N\u00e3o tem mais suporte",
|
||||
"download_options.acceptable_types": "Categoria de imagem aceitas (extens\u00e3o). Separado pelo caractere \"|\" , exemplo \"webp|jpg|jpeg|png\". Se n\u00e3o tiver configurado n\u00e3o ser\u00e1 verificado. Digite \"imagens\" para aceitar todas as imagens. Se a imagem baixada n\u00e3o estiver inclu\u00edda no tipo especificado, ser\u00e1 considerada um erro. Essa ferramenta s\u00f3 baixar certos tipos de imagens. Essa op\u00e7\u00e3o \u00e9 apenas para verificar imagens, n\u00e3o para selecionar o tipo de imagem que voc\u00ea deseja baixar.",
|
||||
"download_options.allow_EOI_error": "Quando a imagem n\u00e3o possui uma marca\u00e7\u00e3o de EOI (end of image) ou se algo que n\u00e3o \u00e9 uma imagem for detectada, o arquivo ser\u00e1 armazenado \u00e0 for\u00e7a mesmo assim.",
|
||||
"download_options.archive_all_good_images_only": "Comprime os arquivos de imagem sem nenhum erro.",
|
||||
"download_options.archive_images": "Comprime os arquivos de imagem depois que terminar de baixar a obra.",
|
||||
"download_options.archive_old_works": "Obras antigas arquivadas. Atualmente s\u00f3 \u00e9 \u00fatil para quadrinhos que est\u00e3o compactados, voc\u00ea deve definir `archive_images = true`. N\u00e3o est\u00e1 predefinido para selar obras antigas. Se voc\u00ea digitar \"3M\", ele ser\u00e1 armazenado s\u00f3 por mais de 3 meses sem atualizar a obra baixada. Quando voc\u00ea digita true, o intervalo predefinido \u00e9 de \"0,5Y\" (meio ano), e assim ir\u00e1 atualizar o download da obra por meio ano",
|
||||
"download_options.archive_program_path": "Caminho do execut\u00e1vel do 7-Zip com as barras.",
|
||||
"download_options.cache_title_to_id": "Ao baixar uma obra pelo id, o t\u00edtulo da obra correspondente ao cache do id ser\u00e1 salvo. Depois de definir esta fun\u00e7\u00e3o, voc\u00ea n\u00e3o precisar\u00e1 procurar novamente quando inserir o t\u00edtulo da obra na pr\u00f3xima vez. Se esse recurso n\u00e3o estiver definido, ele n\u00e3o ser\u00e1 gerado como um arquivo em cache (o padr\u00e3o \u00e9 .search_result_file_name =search.json).",
|
||||
"download_options.chapter_filter": "Filtra as palavras-chaves no t\u00edtulo do cap\u00edtulo que voc\u00ea quer baixar. Por exemplo, \"Volume\".",
|
||||
"download_options.chapter_time_interval": "Quando o site n\u00e3o permite v\u00e1rios acessos em pouco tempo para leitura / visualiza\u00e7\u00e3o, voc\u00ea pode definir o tempo de espera (ms) antes de baixar as informa\u00e7\u00f5es do cap\u00edtulo /o conte\u00fado do cap\u00edtulo. Por exemplo, pode demorar 30 segundos para ler um cap\u00edtulo uma situa\u00e7\u00e3o normal. Voc\u00ea pode configur\u00e1-lo para \"30s\". Pode ser usado com a op\u00e7\u00e3o one_by_one.",
|
||||
"download_options.cookie": "Define o cookie a ser adicionado ao fazer o download.",
|
||||
"download_options.data_directory": "Predefina o diret\u00f3rio principal de download. Os subdiret\u00f3rios de cada site (por exemplo, diret\u00f3rio_principal) ser\u00e3o criados neste diret\u00f3rio e os arquivos baixados por cada site ser\u00e3o colocados nesses subdiret\u00f3rios. Se exclu\u00eddo, o diret\u00f3rio de download ser\u00e1 recriado.",
|
||||
"download_options.images_archive_extension": "A extens\u00e3o dos arquivos. Por exemplo, \"cbz\". Padr\u00e3o: \"zip\".",
|
||||
"download_options.main_directory": "O local de download das imagens e do log. Depois de baixar a obra no site, ela ser\u00e1 armazenado neste diret\u00f3rio.",
|
||||
"download_options.MAX_ERROR_RETRY": "N\u00famero de tentativas: o n\u00famero de vezes que o download falhou e tentou baixar novamente quando um erro ocorreu. Se um mesmo arquivo exceder esse n\u00famero de tentativas, ele ser\u00e1 ignorado. Se o valor for muito pequeno, \u00e9 f\u00e1cil ter imagens quebradas em alguns sites.",
|
||||
"download_options.MIN_LENGTH": "Tamanho m\u00ednimo do arquivo de imagem (bytes). Se o valor for muito pequeno, uma imagem quebrada que possa estar no cap\u00edtulo poder\u00e1 ser tratada como uma imagem normal sem erros.",
|
||||
"download_options.modify_work_list_when_archive_old_works": "Ao mesmo tempo, a obra que ser\u00e1 arquivada ser\u00e1 tamb\u00e9m exclu\u00edda da lista de obras.",
|
||||
"download_options.one_by_one": "Baixe as imagens uma por uma. \u00datil apenas para quadrinhos, n\u00e3o \u00e9 \u00fatil para novels. Os cap\u00edtulos de novels s\u00e3o baixados um por um de uma vez s\u00f3.",
|
||||
"download_options.overwrite_old_file": "Substitua o arquivo da novel antiga quando o arquivo da novel rec\u00e9m-baixada for maior.",
|
||||
"download_options.play_finished_sound": "Tocar um som quando terminar de baixar.",
|
||||
"download_options.preserve_chapter_page": "Se deve manter a p\u00e1gina do cap\u00edtulo ou n\u00e3o. Falso: n\u00e3o ser\u00e1 salva, a p\u00e1gina do cap\u00edtulo existente ser\u00e1 exclu\u00edda. Nota: Se .reget_chapter n\u00e3o estiver definido, preserve_chapter_page n\u00e3o ser\u00e1 \u00fatil.",
|
||||
"download_options.preserve_download_work_layer": "Mantenha a barra de download quando tiver terminado de baixar.",
|
||||
"download_options.preserve_work_page": "Se o cache de dados da execu\u00e7\u00e3o deve ser mantido em .cache_directory_name.",
|
||||
"download_options.proxy": "Servidor de Proxy: \"usu\u00e1rio:senha@nomedohost:porta\"",
|
||||
"download_options.rearrange_list_file": "Reorganize a lista de arquivos.",
|
||||
"download_options.recheck": "Todos os cap\u00edtulos e imagens de todas as obras foram detectadas. Mas n\u00e3o far\u00e1 o download novamente da imagem conclu\u00edda. Quando 'multi_parts_changed' for definido, ser\u00e1 verificado novamente SOMENTE quando houver v\u00e1rias partes.",
|
||||
"download_options.regenerate": "Quando n\u00e3o h\u00e1 altera\u00e7\u00e3o no n\u00famero de cap\u00edtulos, o cache ainda ser\u00e1 usado para reconstruir os dados. (Por exemplo, ao baixar uma novel, n\u00e3o puxar\u00e1 novamente os dados do site, apenas recriar\u00e1 o arquivo do e-book.)",
|
||||
"download_options.reget_chapter": "Recupere o conte\u00fado de cada cap\u00edtulo detectado.",
|
||||
"download_options.remove_ebook_directory": "Depois que o e-book \u00e9 gerado, o diret\u00f3rio do e-book \u00e9 completamente exclu\u00eddo. Observa\u00e7\u00e3o: voc\u00ea deve primeiramente instalar a vers\u00e3o 7-Zip ** 18.01 ou superior **.",
|
||||
"download_options.remove_images_after_archive": "Depois de comprimir os arquivos de imagem, delete os arquviso de imagem originais.",
|
||||
"download_options.save_preference": "Salvar suas prefer\u00eancias.",
|
||||
"download_options.search_again": "Procure pelo t\u00edtulo da obra novamente. Padr\u00e3o: Usando cache, n\u00e3o procure novamente.",
|
||||
"download_options.show_information_only": "Mostra as informa\u00e7\u00f5es da obra na interface de linha de comando.",
|
||||
"download_options.skip_chapter_data_error": "Quando os dados do cap\u00edtulo n\u00e3o estiverem dispon\u00edveis, v\u00e1 para o pr\u00f3ximo cap\u00edtulo automaticamente.",
|
||||
"download_options.skip_error": "Ignorar / imagens quebradas. Quando d\u00e1 o erro 404 \"a imagem n\u00e3o existe\", quando o arquivo \u00e9 muito pequeno ou foi detectado como algo que n\u00e3o \u00e9 uma imagem (se n\u00e3o houver EOI), o arquivo mesmo assim ser\u00e1 armazenado \u00e0 for\u00e7a.",
|
||||
"download_options.start_chapter": "Come\u00e7ar/Continuar o download. Vai ser convertido aum\u00e1ticamente para .start_chapter_NO ou .start_chapter_title. Para cap\u00edtulos baixados, voc\u00ea deve refazer a verifica\u00e7\u00e3o.",
|
||||
"download_options.start_chapter_NO": "Come\u00e7ar/continuar o download a partir dessa numera\u00e7\u00e3o do cap\u00edtulo.",
|
||||
"download_options.start_chapter_title": "Come\u00e7ar/continuar o download a partir desse t\u00edtulo do cap\u00edtulo.",
|
||||
"download_options.start_list_serial": "Especifique o n\u00famero serial da obra para come\u00e7ar o download. A obra antes disso ser\u00e1 pulada. Geralmente usada apenas em configura\u00e7\u00f5es de linha de comando. Padr\u00e3o:1",
|
||||
"download_options.timeout": "Tempo limite (ms) para baixar um site ou imagem. Se a quantidade de tempo limite for muito pequena (por exemplo, 10 segundos), facilmente falhar\u00e1 quando se estiver baixando um arquivo grande.",
|
||||
"download_options.user_agent": "Identifica\u00e7\u00e3o do navegador. Sempre mantenha o mesmo reconhecimento do navegador antes e depois da execu\u00e7\u00e3o, isso n\u00e3o deve afetar o download.",
|
||||
"download_options.vertical_writing": "Muda a orienta\u00e7\u00e3o da novel de horizontal para vertical.",
|
||||
"download_options.write_chapter_metadata": "Escreve as informa\u00e7\u00f5es de cada cap\u00edtulo em um arquivo JSON com o mesmo nome (adicione a extens\u00e3o .json) para facilitar a importa\u00e7\u00e3o de outras ferramentas.",
|
||||
"download_options.write_image_metadata": "Escreve as informa\u00e7\u00f5es de cada imagem em um arquivo JSON com o mesmo nome (adicione a extens\u00e3o .json) para facilitar a importa\u00e7\u00e3o de outras ferramentas.",
|
||||
"\u9650\u5236\u8a0a\u606f\u884c\u6578": "Limitar linhas de registro",
|
||||
"local-language-name": "Portugu\u00eas",
|
||||
"\u73fe\u6709%1\u689d%2\u8a0a\u606f\u5c1a\u672a\u7ffb\u8b6f\uff0c\u6b61\u8fce\u60a8\u4e00\u540c\u53c3\u8207\u7ffb\u8b6f\u8a0a\u606f\uff01": "Atualmente tem %1 mensagens em %2 que n\u00e3o foram traduzidas. Voc\u00ea \u00e9 bem-vindo a traduzir conosco!",
|
||||
"\u6240\u6709\u74b0\u5883\u8b8a\u6578\uff1a%1": "Vari\u00e1veis de ambiente: %1",
|
||||
"Default download directory: %1": "Diret\u00f3rio de download padr\u00e3o: %1",
|
||||
"\u6b61\u8fce\u8207\u6211\u5011\u4e00\u540c<a>\u7ffb\u8b6f\u4ecb\u9762\u6587\u5b57</a>\uff01": "Vamos <a>traduzir a interface</a> juntos!",
|
||||
"\u8907\u88fd\u8cbc\u4e0a\u5feb\u901f\u9375": "Atalhos",
|
||||
"\u8907\u88fd\u9078\u53d6\u7684\u9805\u76ee\uff1a": "Copiar:",
|
||||
"Invalid theme name: %1": "Nome do tema inv\u00e1lido: %1",
|
||||
"\u5e03\u666f\u4e3b\u984c\uff1a": "Tema:",
|
||||
"dark theme": "Escuro",
|
||||
"default theme": "Padr\u00e3o",
|
||||
"light theme": "Claro",
|
||||
"\u9078\u64c7%1\u8def\u5f91": "Selecione o caminho %1",
|
||||
"\u81ea\u52d5\u5132\u5b58\u9078\u9805\u8a2d\u5b9a\u8207\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "Salvar autom\u00e1ticamente as op\u00e7\u00f5es de download e a lista de s\u00e9ries favoritas",
|
||||
"\u81ea\u52d5\u5132\u5b58\u9078\u9805\u8a2d\u5b9a": "Salvar autom\u00e1ticamente as op\u00e7\u00f5es de download",
|
||||
"\u5df2\u8a2d\u5b9a\u81ea\u52d5\u5132\u5b58\u9078\u9805\u8a2d\u5b9a\u3002": "A configura\u00e7\u00e3o de armazenamento autom\u00e1tico foi ativada",
|
||||
"\u5df2\u8a2d\u5b9a\u4e0d\u81ea\u52d5\u5132\u5b58\u9078\u9805\u8a2d\u5b9a\u3002": "A configura\u00e7\u00e3o de armazenamento autom\u00e1tico foi desativada",
|
||||
"\u91cd\u8a2d\u4e0b\u8f09\u9078\u9805\u8207\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "Redefinir op\u00e7\u00f5es de download e a lista de s\u00e9ries favoritas",
|
||||
"\u91cd\u8a2d\u4e0b\u8f09\u9078\u9805": "Redefinir op\u00e7\u00f5es de download",
|
||||
"\u672a\u9078\u64c7\u6a94\u6848\u6216\u76ee\u9304\u3002": "Nenhum arquivo ou diret\u00f3rio selecionado",
|
||||
"\u9078\u64c7\u4e86%2\u7684\u8def\u5f91\uff1a%1": "Caminho do %2 selecionado: %1",
|
||||
"\u5df2\u91cd\u8a2d\u4e0b\u8f09\u9078\u9805\u3002": "Redefinir as op\u00e7\u00f5es de download.",
|
||||
"\u540c\u6642\u66f4\u6539\u5df2\u624b\u52d5\u8a2d\u5b9a\u4e0b\u8f09\u76ee\u9304\u7684\u7db2\u7ad9 %1\uff1a%2 \u2192 %3": "Atualizando e configurando o site de download para%1: %2 \u2192 %3",
|
||||
"\u820a\u4e0b\u8f09\u76ee\u9304 \"%1\" \u70ba\u7a7a\u76ee\u9304\uff0c\u5c07\u4e4b\u79fb\u9664\u3002": "O antigo diret\u00f3rio de download \"%1\" \u00e9 um diret\u00f3rio vazio, ent\u00e3o ser\u00e1 removido.",
|
||||
"\u6a94\u6848\u63db\u884c%1\u548c\u7cfb\u7d71\u63db\u884c%2\u4e0d\u7b26\u3002": "O arquivo %1 n\u00e3o corresponde ao arquivo do sistema %2.",
|
||||
"\u958b\u555f\u6a94\u6848\u6642\u53ef\u80fd\u6703\u6709\u4e82\u78bc\u3002": "Pode haver caracteres ileg\u00edveis ao abrir o arquivo.",
|
||||
"\u4e00\u9375\u4fee\u6b63\u6a94\u6848\u63db\u884c": "Substitui\u00e7\u00e3o de quebra de linhas",
|
||||
"\u5df2\u4fee\u6539\u6a94\u6848\u63db\u884c\u3002\u60a8\u5fc5\u9808\u5132\u5b58\u6700\u611b\u4f5c\u54c1\u6e05\u55ae\u624d\u80fd\u751f\u6548\u3002": "Quebra de linha do arquivo modificada. Voc\u00ea deve salvar sua lista de s\u00e9ries favoritas para funcionar.",
|
||||
"\u8acb\u5728\u6bcf\u4e00\u884c\u9375\u5165\u4e00\u500b\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94\uff1a": "Entre um t\u00edtulo de s\u00e9rie ou \ud83c\udd94 por linha",
|
||||
"\u5132\u5b58\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "Salve a lista de s\u00e9ries favoritas",
|
||||
"\u653e\u68c4\u7de8\u8f2f\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "Discartar as edi\u00e7\u00f5es da lista de s\u00e9ries favoritas",
|
||||
"\u5132\u5b58\u6700\u611b\u4f5c\u54c1\u6e05\u55ae\u7684\u6a94\u6848\u4e0d\u5b58\u5728\u6216\u8005\u6c92\u6709\u5167\u5bb9\u3002\u63a1\u7528\u820a\u6709\u7684\u6700\u611b\u4f5c\u54c1\u5217\u8868\u3002": "Lista de s\u00e9ries favoritas n\u00e3o encontrada ou vazia. Usando a antiga lista de s\u00e9ries favoritas.",
|
||||
"\u4f5c\u54c1\u5df2\u5b8c\u7d50\u3002": "A s\u00e9rie acabou.",
|
||||
"\u5f9e\u6700\u611b\u540d\u55ae\u4e2d\u6ce8\u89e3\u6389\u672c\u4f5c\u54c1\u3002": "Remover s\u00e9rie da lista de s\u00e9ries favoritas.",
|
||||
"%1 \u5df2\u5b8c\u7d50\u7684\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94\uff1a%2": "%1 acabou as s\u00e9ries ou \ud83c\udd94: %2",
|
||||
"\u6aa2\u67e5\u6240\u6709\u6700\u611b\u4f5c\u54c1\u4e4b\u66f4\u65b0\uff0c\u4e26\u4e0b\u8f09\u66f4\u65b0\u4f5c\u54c1\u3002": "Verificar e baixar atualiza\u00e7\u00f5es de todas as s\u00e9ries favoritas.",
|
||||
"\ud83c\ude33 \u5c1a\u7121\u6700\u611b\u4f5c\u54c1\u3002": "N\u00e3o tem lista de s\u00e9ries favoritas",
|
||||
"\ud83c\ude33 \u5c1a\u672a\u8a2d\u5b9a\u6700\u611b\u4f5c\u54c1\u3002": "A lista de s\u00e9ries favoritas est\u00e1 vazia",
|
||||
"\u7de8\u8f2f\u6700\u611b\u4f5c\u54c1\u6e05\u55ae": "Editar a lista de s\u00e9ries favoritas",
|
||||
"\u522a\u9664\u6240\u6709 %1 \u500b{{PLURAL:%1|\u8a3b\u89e3}}\u3001%2 \u500b{{PLURAL:%2|\u91cd\u8907\u4f5c\u54c1\u540d\u7a31}}\u8207 %3 \u500b{{PLURAL:%3|\u7a7a\u884c}}\u3002": "Deletar todas as %1 anota\u00e7\u00f5es, %2 repeti\u00e7\u00f5es e %3 linhas em branco.",
|
||||
"\u5217\u8868\u6a94\u6848\u4e2d\u6709%1\u500b\u91cd\u8907\u4f5c\u54c1\u540d\u7a31\u6216 id\u3002": "Tem %1 t\u00edtulos ou ids duplicados na lista.",
|
||||
"\u6ce8\u89e3\u6389\u91cd\u8907\u7684\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94": "Anotar nomes de s\u00e9ries ou \ud83c\udd94 duplicados",
|
||||
"\u522a\u9664\u91cd\u8907\u7684\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94": "Deltar nome de s\u00e9ries ou duplicados \ud83c\udd94 duplicados",
|
||||
"\u6ce8\u89e3\u6389%1\u500b\u5df2\u5b8c\u7d50\u7684\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94": "Comentado %1 nomes de s\u00e9ries ou \ud83c\udd94 conclu\u00eddos",
|
||||
"\u8b80\u53d6\u672c\u7db2\u7ad9\u5404\u4f5c\u54c1\u4e4b\u8cc7\u8a0a\u6a94\u6848\uff0c\u4ee5\u5224\u5225\u4f5c\u54c1\u662f\u5426\u5df2\u4e0b\u8f09\u904e\u3001\u662f\u5426\u5b8c\u7d50\u3002": "Lendo o arquivo de informa\u00e7\u00f5es desse site para determinar se a s\u00e9rie foi baixada e conclu\u00edda.",
|
||||
"\u9078\u64c7\u7db2\u7ad9\u6642\uff0c\u9019\u53ef\u80fd\u9020\u6210\u5e7e\u5341\u79d2\u9418\u7121\u56de\u61c9\u3002": "Ao escolher um site, pode causar alguns segundos de n\u00e3o funcionamento do programa.",
|
||||
"\u8b80\u53d6\u6240\u6709\u7db2\u7ad9\u4e4b\u4f5c\u54c1\u8cc7\u8a0a\u6a94\u6848": "Lendo as informa\u00e7\u00f5es de s\u00e9rie de todos os sites",
|
||||
"Imported configuration of %1: %2": "Configura\u00e7\u00e3o importada de %1: %2",
|
||||
"Imported preference of %1: %2": "Prefer\u00eancia importada de %1: %2",
|
||||
"\u9023\u7d50": "link",
|
||||
"work_crawler-search_result_columns-site": "Site",
|
||||
"work_crawler-search_result_columns-title": "T\u00edtulo",
|
||||
"\u50c5\u65bc\u6240\u7372\u5f97\u4e4b\u4f5c\u54c1\u6a19\u984c\u7279\u6b8a\uff0c\u4e0d\u540c\u65bc\u6240\u67e5\u8a62\u4e4b\u4f5c\u54c1\u6a19\u984c\u6642\uff0c\u624d\u6703\u6a19\u793a\u3002": "Apenas se o t\u00edtulo da obra obtida for especial e diferente do t\u00edtulo da obra em quest\u00e3o, ser\u00e1 marcado.",
|
||||
"work_crawler-search_result_columns-author": "Autor",
|
||||
"work_crawler-search_result_columns-favorite": "Favorito",
|
||||
"work_crawler-favorite_list_label": "\ud83d\ude18: Na lista de favoritos, \u2795: adiciona a lista de favoritos",
|
||||
"work_crawler-search_result_columns-chapters": "#cap\u00edtulos",
|
||||
"\u7ae0\u7bc0\u6578\u91cf": "N\u00famero de cap\u00edtulos",
|
||||
"work_crawler-search_result_columns-once-downloaded": "Quando baixado",
|
||||
"work_crawler-search_result_columns-restricted": "Restrito",
|
||||
"\u90e8\u4efd\u7ae0\u7bc0\u9808\u4ed8\u8cbb\uff0f\u5df2\u9396\u5b9a\uff0f\u53d7\u9650": "Alguns cap\u00edtulos precisam ser comprados/ est\u00e3o trancados / est\u00e3o restritos",
|
||||
"work_crawler-search_result_columns-completed": "Conclu\u00eddo",
|
||||
"work_crawler-search_result_columns-status": "Status",
|
||||
"\u4f5c\u54c1\u72c0\u6cc1": "Status do trabalho",
|
||||
"work_crawler-search_result_columns-lastest": "Mais recente",
|
||||
"\u6700\u65b0\u7ae0\u7bc0": "Cap\u00edtulo mais recente",
|
||||
"\u8cc7\u8a0a\u4f86\u81ea\u7ae0\u7bc0\u6e05\u55ae": "Informa\u00e7\u00e3o da lista de cap\u00edtulos",
|
||||
"\u9ede\u64ca\u7db2\u7ad9\u540d\u7a31\u53ef\u4e0b\u8f09\u6b64\u7db2\u7ad9\u4e4b\u672c\u4f5c\u54c1\u3002": "Clique no nome do site para baixar essa obra nese site.",
|
||||
"\u6240\u6709\u7db2\u7ad9\u90fd\u672a\u80fd\u627e\u5230\u672c\u4f5c\u54c1\u3002": "Essa obra n\u00e3o foi encontrada em nenhum dos sites.",
|
||||
"\u641c\u5c0b\u4f5c\u54c1[%1]\u4e4b\u7d50\u679c\uff1a": "Buscando resultados para [%1]:",
|
||||
"\u4e0b\u8f09\u6240\u6709%1\u500b{{PLURAL:%1|\u7db2\u7ad9}}\u627e\u5230\u7684\u4f5c\u54c1": "Baixar todas as obras encontradas em %1 sites",
|
||||
"\u5c07\u6240\u6709%1\u500b\u7db2\u7ad9\u627e\u5230\u7684\u4f5c\u54c1\u5168\u90e8\u52a0\u5165\u7db2\u7ad9\u5404\u81ea\u4e4b\u6700\u611b\u6e05\u55ae": "Adicionar todas as obras encontradas em %1 sites a lista de sites favoritos.",
|
||||
"\u4e0b\u8f09\u6240\u6709\u6700\u611b\u6e05\u55ae\u4e2d\u7684\u672c\u4f5c\u54c1": "Baixar todas as obras da lista de favoritos",
|
||||
"\u4ee5\u4e0b%1\u500b\u7db2\u7ad9\u672a\u80fd\u627e\u5230\u672c\u4f5c\u54c1\uff1a": "Os seguintes sites %1 n\u00e3o conseguiram encontrar essa obra:",
|
||||
"\u932f\u8aa4\u539f\u56e0": "Motivo do erro",
|
||||
"\u4f5c\u54c1\u7db2\u7ad9": "Website",
|
||||
"\u8acb\u5148\u5728\u7db2\u8def\u4f5c\u54c1\u5340\u6307\u5b9a\u8981\u641c\u5c0b\u7684\u9805\u76ee\u985e\u5225\u3002": "Especifique a categoria do item que voc\u00ea deseja pesquisar na \u00e1rea de pesquisa online.",
|
||||
"\u8acb\u5148\u8f38\u5165\u4f5c\u54c1\u540d\u7a31\u3002": "Coloque o nome da s\u00e9rie primeiro.",
|
||||
"\u6b63\u5728\u641c\u5c0b[%1]\u4e2d\uff0c\u5fc5\u9808\u5148\u53d6\u6d88\u7576\u524d\u7684\u641c\u5c0b\u7a0b\u5e8f\u624d\u80fd\u91cd\u65b0\u641c\u5c0b\u3002": "Procurando por [%1], voc\u00ea deve cancelar o processo de pesquisa atual antes de poder pesquisar novamente.",
|
||||
"\u4f5c\u54c1\u540d\u7a31\u4e4b\u8a9e\u8a00\u4f3c\u4e4e\u70ba%1\uff0c\u4f46\u6307\u5b9a\u4e86%2\u3002": "O idioma do t\u00edtulo da s\u00e9rie parece ser %1, mas o idioma especificado foi %2.",
|
||||
"\u6b63\u5728\u641c\u5c0b[%1]\u4e2d\u2026\u2026": "Procurando por [%1]...",
|
||||
"\u5c1a\u7121\u4efb\u4f55\u7db2\u7ad9\u56de\u50b3\u7d50\u679c\u2026\u2026": "Nenhum site retornou resultados ainda...",
|
||||
"\u53d6\u6d88\u641c\u5c0b": "Cancelar pesquisa",
|
||||
"\u653e\u68c4\u9084\u6c92\u641c\u5c0b\u5b8c\u6210\u7684\u7db2\u7ad9": "Abandonr o(s) site(s) que ainda n\u00e3o concluiu(iram) a pesquisa",
|
||||
"\u672c\u7db2\u7ad9\u5f37\u5236\u7b49\u5f85\u6642\u9593\u904e\u9577\uff0c\u70ba\u9632\u5c01\u9396\u4e0d\u4f5c\u641c\u5c0b\u3002": "Este site foi for\u00e7ado a esperar muito tempo e n\u00e3o \u00e9 pesquisado por anti-bloqueio.",
|
||||
"\u5df2\u5b8c\u6210 %1": "%1 completado",
|
||||
"%1\u500b{{PLURAL:%1|\u7db2\u7ad9}}\u4ecd\u5728\u641c\u5c0b\u4e2d\uff1a%2": "Ainda est\u00e1 sendo pesquisado em %1 sites: %2",
|
||||
"\u8acb\u5148\u6307\u5b9a\u8981\u4e0b\u8f09\u7684\u7db2\u7ad9\u3002": "Por favor, especifique primeiro o site para poder baixar.",
|
||||
"\u7576\u524d\u8def\u5f91\uff1a%1": "Caminho atual: %1",
|
||||
"\u9078\u64c7\u4e0b\u8f09\u5de5\u5177\uff1a%1": "Selecione a ferramenta de download: %1",
|
||||
"\u4e0b\u8f09\u4efb\u52d9\u521d\u59cb\u5316\u3001\u8b80\u53d6\u4f5c\u54c1\u8cc7\u8a0a\u4e2d\u2026\u2026": "Iniciado o processo de download, lendo as informa\u00e7\u00f5es da obra...",
|
||||
"\u66ab\u505c": "Parar",
|
||||
"\u66ab\u505c/\u6062\u5fa9\u4e0b\u8f09": "Parar/retomar",
|
||||
"\u53d6\u6d88": "Cancelar",
|
||||
"\u53d6\u6d88\u4e0b\u8f09": "Cancelar o download",
|
||||
"\u7e7c\u7e8c": "Continuar",
|
||||
"\u8acb\u5148\u8f38\u5165\u4f5c\u54c1\u540d\u7a31\u6216\ud83c\udd94\u3002": "Coloque o nome da s\u00e9rie ou \ud83c\udd94 primeiro.",
|
||||
"\u8b66\u544a\uff1a\u7121\u6cd5\u5b58\u53d6\u4f5c\u54c1\u5b58\u653e\u76ee\u9304 [%1]\uff01": "Aviso: N\u00e3o foi poss\u00edvel acessar o diret\u00f3rio de armazenamento [%1]!",
|
||||
"\u4e0b\u8f09\u7684\u6a94\u6848\u5c07\u653e\u5728\u9810\u8a2d\u76ee\u9304\u4e0b\u3002": "O arquivo baixado ser\u00e1 colocado no diret\u00f3rio padr\u00e3o.",
|
||||
"\u6b32\u63a1\u7528\u5716\u5f62\u4ecb\u9762\u8acb\u57f7\u884c `%1`\u3002": "Para usar interface gr\u00e1fica, por favor, execute \"%1\".",
|
||||
"option=true": "op\u00e7\u00e3o=true",
|
||||
"option=value": "op\u00e7\u00e3o=valor",
|
||||
"Usage:": "Uso:",
|
||||
"\u4f5c\u54c1\u6a19\u984c\u6216 id": "t\u00edtulo da obra / id da obra",
|
||||
"Options:": "Op\u00e7\u00f5es:"
|
||||
},
|
||||
"pt-BR");
|
||||
@@ -0,0 +1,263 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "\u0418\u0441\u043f\u0430\u043d\u0438\u044f",
|
||||
"Calendrier r\u00e9publicain": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0439 \u0440\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"untranslated message count": "1000+",
|
||||
"\u6e05\u9664\u8a0a\u606f": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b",
|
||||
"\u986f\u793a/\u96b1\u85cf\u8a0a\u606f": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c / \u0441\u043a\u0440\u044b\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b",
|
||||
"Load failed": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c",
|
||||
"\u8a0a\u606f\u63d0\u793a\u8207\u7d00\u9304\u6b04": "\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0430",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b: ",
|
||||
"\u7def\u5ea6\uff1a": "\u0428\u0438\u0440\u043e\u0442\u0430: ",
|
||||
"\u7d93\u5ea6\uff1a": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430: ",
|
||||
"\u8f38\u51fa\u683c\u5f0f": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430",
|
||||
"\u524d\u7db4": "\u043f\u0440\u0435\u0444\u0438\u043a\u0441",
|
||||
"\u6642\u5340\uff1a": "\u0427\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441: ",
|
||||
"\u8acb\u6ce8\u610f\uff1a\u672c\u6b04\u50c5\u4f9b\u958b\u767c\u4eba\u54e1\u4f7f\u7528\u3002": "\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415! \u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.",
|
||||
"\u6279\u6b21\u8f49\u63db": "\u0412\u0415\u0422\u0412\u042c",
|
||||
"Loading...": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f\u2026",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "\u041c\u044c\u044f\u043d\u043c\u0430",
|
||||
"Vi\u1ec7t Nam": "\u0412\u044c\u0435\u0442\u043d\u0430\u043c",
|
||||
"Unpin": "\u041e\u0442\u043a\u0440\u0435\u043f\u0438\u0442\u044c",
|
||||
"Pin": "\u0417\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c",
|
||||
"\u9664\u53bb\u6b64\u6b04": "\u0423\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0443",
|
||||
"\u5206\u985e": "\u0413\u0440\u0443\u043f\u043f\u0430",
|
||||
"%1/%2/%3": "%3.%2.%1",
|
||||
"\u66c6\u8b5c": "\u041a\u0410\u041b\u0415\u041d\u0414\u0410\u0420\u041d\u0410\u042f \u0422\u0410\u0411\u041b\u0418\u0426\u0410",
|
||||
"\u5171\u6709 %1 \u500b\u6642\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u043f\u0435\u0440\u0438\u043e\u0434 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 {{PLURAL:%1|\u0437\u0430\u043f\u0438\u0441\u044c|\u0437\u0430\u043f\u0438\u0441\u0438|\u0437\u0430\u043f\u0438\u0441\u0435\u0439}}",
|
||||
"\u5171\u6709 %1 \u500b\u5e74\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u0433\u043e\u0434 {{PLURAL:%1|\u0437\u0430\u043f\u0438\u0441\u044c|\u0437\u0430\u043f\u0438\u0441\u0438|\u0437\u0430\u043f\u0438\u0441\u0435\u0439}}",
|
||||
"\u5168\u4e0d\u9078": "\u0423\u0431\u0440\u0430\u0442\u044c \u0412\u0421\u0401",
|
||||
"\u589e\u52a0\u6b64\u6b04": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0443",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: ",
|
||||
"\u6240\u6709\u570b\u5bb6": "\u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u044b",
|
||||
"\u5171\u5b58\u7d00\u5e74": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "\u041f\u0420\u0418\u041c\u0415\u0420",
|
||||
"\u8f38\u5165\u7d00\u9304": "\u0417\u0410\u041f\u0418\u0421\u042c",
|
||||
"\u4f7f\u7528\u8aaa\u660e": "\u041a\u041e\u041d\u0426\u0415\u041f\u0426\u0418\u042f",
|
||||
"\u7d00\u5e74\u7dda\u5716": "\u0425\u0420\u041e\u041d\u041e\u041b\u041e\u0413\u0418\u042f",
|
||||
"\u8a2d\u5b9a": "\u041a\u041e\u041d\u0424\u0418\u0413\u0423\u0420\u0410\u0426\u0418\u042f",
|
||||
"\u66c6\u6578\u8655\u7406": "\u0420\u0410\u0417\u0420\u0410\u0411\u041e\u0422\u041a\u0410",
|
||||
"\u554f\u984c\u56de\u5831": "\u041e\u0411\u0420\u0410\u0422\u041d\u0410\u042f \u0421\u0412\u042f\u0417\u042c",
|
||||
"France": "\u0424\u0440\u0430\u043d\u0446\u0438\u044f",
|
||||
"Great Britain": "\u0412\u0435\u043b\u0438\u043a\u043e\u0431\u0440\u0438\u0442\u0430\u043d\u0438\u044f",
|
||||
"Spain": "\u0418\u0441\u043f\u0430\u043d\u0438\u044f",
|
||||
"\u63a1\u7528\u66c6\u6cd5": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"\u51fa\u5178": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445",
|
||||
"\u541b\u4e3b\u540d": "\u041b\u0438\u0447\u043d\u043e\u0435 \u0438\u043c\u044f",
|
||||
"\u8af1": "\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438\u043c\u044f",
|
||||
"\u8ae1": "\u041f\u043e\u0441\u043c\u0435\u0440\u0442\u043d\u043e\u0435 \u0438\u043c\u044f",
|
||||
"\u5edf\u865f": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0445\u0440\u0430\u043c\u0430",
|
||||
"\u51fa\u751f": "\u0420\u043e\u0434.",
|
||||
"\u901d\u4e16": "\u0423\u043c.",
|
||||
"\u52a0\u5195": "\u041a\u043e\u0440\u043e\u043d\u0430\u0446\u0438\u044f",
|
||||
"\u524d\u4efb": "\u041f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a(-\u0446\u0430)",
|
||||
"\u7e7c\u4efb": "\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c(-\u043d\u0438\u0446\u0430)",
|
||||
"\u7236\u89aa": "\u041e\u0442\u0435\u0446",
|
||||
"\u6bcd\u89aa": "\u041c\u0430\u0442\u044c",
|
||||
"\u914d\u5076": "\u0421\u0443\u043f\u0440\u0443\u0433/\u0421\u0443\u043f\u0440\u0443\u0433\u0430",
|
||||
"Initializing...": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u2026",
|
||||
"\u5df2\u8f09\u5165 %1 \u7b46\u8cc7\u6599\u3002": function (domain_name, arg) { var c, d; return '%1 ' + ((d = (c = arg[1] % 100) % 10) < 5 && (c < 10 || c > 20) ? d == 1 ? 'запись загружена' : 'записи загружены' : 'записей загружено') + '.'; },
|
||||
"Aries": "\u041e\u0432\u0435\u043d",
|
||||
"Taurus": "\u0422\u0435\u043b\u0435\u0446",
|
||||
"Gemini": "\u0411\u043b\u0438\u0437\u043d\u0435\u0446\u044b",
|
||||
"Cancer": "\u0420\u0430\u043a",
|
||||
"Leo": "\u041b\u0435\u0432",
|
||||
"Virgo": "\u0414\u0435\u0432\u0430",
|
||||
"Libra": "\u0412\u0435\u0441\u044b",
|
||||
"Scorpio": "\u0421\u043a\u043e\u0440\u043f\u0438\u043e\u043d",
|
||||
"Sagittarius": "\u0421\u0442\u0440\u0435\u043b\u0435\u0446",
|
||||
"Capricorn": "\u041a\u043e\u0437\u0435\u0440\u043e\u0433",
|
||||
"Aquarius": "\u0412\u043e\u0434\u043e\u043b\u0435\u0439",
|
||||
"Pisces": "\u0420\u044b\u0431\u044b",
|
||||
"\u6708\u76f8": "\u043b\u0443\u043d\u043d\u0430\u044f \u0444\u0430\u0437\u0430",
|
||||
"\u540c\u570b\u5171\u5b58\u7d00\u5e74": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 (\u0442\u0430 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0430)",
|
||||
"Moon longitude": "\u041b\u0443\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u0433\u043e\u0442\u0430",
|
||||
"Moon latitude": "\u041b\u0443\u043d\u043d\u0430\u044f \u0448\u0438\u0440\u043e\u0442\u0430",
|
||||
"calendar": "\u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"Gregorian calendar": "\u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"Julian calendar": "\u042e\u043b\u0438\u0430\u043d\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"\u8863\u7d22\u6bd4\u4e9e\u66c6": "\u042d\u0444\u0438\u043e\u043f\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"\u6559\u6703\u4e9e\u7f8e\u5c3c\u4e9e\u66c6": "\u0410\u0440\u043c\u044f\u043d\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"Byzantine calendar": "\u0412\u0438\u0437\u0430\u043d\u0442\u0438\u0439\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"\u53e4\u57c3\u53ca\u66c6": "\u0415\u0433\u0438\u043f\u0435\u0442\u0441\u043a\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c",
|
||||
"\u4e2d\u570b": "\u041a\u0438\u0442\u0430\u0439",
|
||||
"zodiac sign": "\u0437\u043d\u0430\u043a \u0437\u043e\u0434\u0438\u0430\u043a\u0430",
|
||||
"\u8457\u540d\u5730\u9ede\uff1a": "\u0417\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0435 \u043c\u0435\u0441\u0442\u0430: ",
|
||||
"Loading %1%...": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f %1%\u2026",
|
||||
"finished": "\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e",
|
||||
"No changes.": "\u0411\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.",
|
||||
"No page modified": "\u043d\u0438 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430",
|
||||
"astronomy": "\u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u044f",
|
||||
"\u671b": "\u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435",
|
||||
"moonrise": "\u0432\u043e\u0441\u0445\u043e\u0434 \u043b\u0443\u043d\u044b",
|
||||
"sunrise": "\u0432\u043e\u0441\u0445\u043e\u0434 \u0441\u043e\u043b\u043d\u0446\u0430",
|
||||
"log-type-debug": "\u043e\u0442\u043b\u0430\u0434\u043a\u0430",
|
||||
"log-type-error": "\u043e\u0448\u0438\u0431\u043a\u0430",
|
||||
"log-type-fatal": "\u0441\u043c\u0435\u0440\u0442\u0435\u043b\u044c\u043d\u044b\u0439",
|
||||
"log-type-info": "\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f",
|
||||
"log-type-log": "\u0436\u0443\u0440\u043d\u0430\u043b",
|
||||
"log-type-trace": "\u0441\u043b\u0435\u0434",
|
||||
"log-type-warn": "\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435",
|
||||
"Language": "\u042f\u0437\u044b\u043a",
|
||||
"\u81ea\u7db2\u8def\u53d6\u5f97 URL\uff1a%1\uff0c%2{{PLURAL:%2|\u4f4d\u5143\u7d44}}\u3002": "\u041f\u043e\u043b\u0443\u0447\u0435\u043d URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u0441\u0435\u0442\u0438: %1, %2 \u0431\u0430\u0439\u0442{{PLURAL:%2|||\u0430}}.",
|
||||
"Waiting %1/%2 {{PLURAL:%1|connection|connections}}: %3": "\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 %1\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438{{PLURAL:%1|\u044f|\u0439}}\u202f/\u202f%2: %3",
|
||||
"Write %2 {{PLURAL:%2|byte|bytes}} to file [%1]: %3": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c %2 \u0431\u0430\u0439\u0442{{PLURAL:%2|||\u0430}} \u0432 \u0444\u0430\u0439\u043b [%1]: %3",
|
||||
"Failed to write %2 {{PLURAL:%2|byte|bytes}} to [%1]: %3": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c %2 \u0431\u0430\u0439\u0442{{PLURAL:%2|||\u0430}} \u0432 [%1]: %3",
|
||||
"\u4e0b\u8f09 %1": "\u0421\u043a\u0430\u0447\u0430\u0442\u044c %1",
|
||||
"Comma-separator": ", ",
|
||||
"Content is empty": "\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442",
|
||||
"No reason provided": "\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430",
|
||||
"%1 {{PLURAL:%1|result|results}}": "%1 {{PLURAL:%1|\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442|\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430|\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432}}",
|
||||
"Found %2 query {{PLURAL:%2|module|modules}}: %1": "\u041d\u0430\u0439\u0434\u0435\u043d\u043e 1 \u043c\u043e\u0434\u0443\u043b{{PLURAL:%2|\u044c|\u0435\u0439|\u044f}} \u0437\u0430\u043f\u0440\u043e\u0441{{PLURAL:%2|\u0430|\u043e\u0432|\u0430}}: %1",
|
||||
"Does not exist": "\u041d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",
|
||||
"\u5171\u6709%1\u500b{{PLURAL:%1|\u9801\u9762}}\u91cd\u5b9a\u5411\u81f3\u672c\u9801": "\u0412\u0441\u0435\u0433\u043e %1 \u0441\u0442\u0440\u0430\u043d\u0438\u0446{{PLURAL:%1|\u0430||\u044b}} \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d{{PLURAL:%1|\u0430|\u043e|\u044b}} \u043d\u0430 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443",
|
||||
"no change": "\u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439",
|
||||
"finished: %1": "\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e: %1",
|
||||
"First, it takes %1 to get %2 {{PLURAL:%2|page|pages}}.": "\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f %2 \u0441\u0442\u0440\u0430\u043d\u0438\u0446{{PLURAL:%2|\u044b|}} \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f %1.",
|
||||
"Processed %1 {{PLURAL:%1|page|pages}}.": "\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 %1 \u0441\u0442\u0440\u0430\u043d\u0438\u0446{{PLURAL:%1|\u0430||\u044b}}.",
|
||||
"Edit %1": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c %1",
|
||||
"%1 {{PLURAL:%2|page|pages}} processed": "%1 {{PLURAL:%2|\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430|\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b|\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b}}",
|
||||
"%1 {{PLURAL:%1|page|pages}} have not changed,": "%1 {{PLURAL:%1|\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430|\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b|\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e}},",
|
||||
"No user name or password provided. The login attempt was abandoned.": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430.",
|
||||
"%1 \u5fc5\u9808\u66f4\u540d\u70ba %2 \u624d\u80fd\u8d77\u4f5c\u7528\uff01": "\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 %1 \u0432 %2 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b!",
|
||||
"directories": "\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438",
|
||||
"directory": "\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f",
|
||||
"file": "\u0444\u0430\u0439\u043b",
|
||||
"function": "\u0444\u0443\u043d\u043a\u0446\u0438\u044f",
|
||||
"number": "\u0447\u0438\u0441\u043b\u043e",
|
||||
"string": "\u0441\u0442\u0440\u043e\u043a\u0430",
|
||||
"\u50c5\u6aa2\u67e5 %1\u500b{{PLURAL:%1|\u7ae0\u7bc0}}\uff1a%2": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e %1 \u0433\u043b\u0430\u0432{{PLURAL:%1|\u0443||\u044b}}: %2",
|
||||
"\u53d6\u6d88\u4e0b\u8f09\u300a%1\u300b\u3002": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u00ab%1\u00bb.",
|
||||
"\u8df3\u904e\u672c\u7ae0\u7bc0\u4e0d\u4e0b\u8f09\u3002": "\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0431\u0435\u0437 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f.",
|
||||
"\u300a%1\u300b\uff1a": "\u00ab%1\u00bb: ",
|
||||
"%1 [%2] %3 {{PLURAL:%3|image|images}}.": "%1 [%2] %3 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438{{PLURAL:%3|\u0435|\u0439|\u044f}}.",
|
||||
"\u4e0b\u8f7d\u7b2c %2 \u5f35{{PLURAL:%2|\u5716\u7247}}\u524d\u5148\u7b49\u5f85 %1\u3002": "\u0416\u0434\u0451\u043c %1 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 %2 {{PLURAL:%2|\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443|\u0444\u0430\u0439\u043b\u043e\u0432}}",
|
||||
"\u5269 %1 \u5f35{{PLURAL:%1|\u5716}}...": "\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c %1 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438{{PLURAL:%1|\u0435|\u0439|\u044f}}...",
|
||||
"%1\uff1a%2\u7b46{{PLURAL:%2|\u5716\u7247}}\u4e0b\u8f09\u932f\u8aa4\u7d00\u9304": "%1: \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 (\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 %2 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438{{PLURAL:%2|\u044f|\u0439}})",
|
||||
"\uff08\u672c\u6b21\u4e0b\u8f09\u5171\u8655\u7406 %1\u500b{{PLURAL:%1|\u5b57}}\uff09": "(\u042d\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0432\u0441\u0435\u0433\u043e %1 {{PLURAL:1|\u0441\u043b\u043e\u0432\u043e|\u0441\u043b\u043e\u0432}}",
|
||||
"\uff08\u672c\u6b21\u4e0b\u8f09\u5171\u8655\u7406 %1\u5f35{{PLURAL:%1|\u5716}}\uff09": "(\u042d\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0432\u0441\u0435\u0433\u043e %1 {{PLURAL:1|\u0441\u043b\u043e\u0432\u043e|\u0441\u043b\u043e\u0432}}",
|
||||
"%1\uff1a\u672c\u6b21\u4e0b\u8f09\u4f5c\u696d\uff0c\u672c\u4f5c\u54c1\u5171 %2\u5f35{{PLURAL:%2|\u5716\u7247}}\u4e0b\u8f09\u932f\u8aa4\u3002": "%1: %2 \u043e\u0448\u0438\u0431{{PLURAL:%2|\u043a\u0430|\u043e\u043a|\u043a\u0438}} \u043f\u0440\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.",
|
||||
"\u7ae0\u7bc0\u7de8\u865f%1\uff1a": "%1-\u044f \u0433\u043b\u0430\u0432\u0430: ",
|
||||
"\u5b57\u6578\u592a\u5c11\uff08%1 \u500b{{PLURAL:%1|\u5b57\u5143}}\uff09": "\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u0441\u043b\u043e\u0432 (%1 \u0441\u0438\u043c\u0432\u043e\u043b{{PLURAL:%1||\u043e\u0432|\u0430}})",
|
||||
"{{PLURAL:%1|%1}} \u6b21\u932f\u8aa4": "\u0415\u0441\u0442\u044c %1 \u043e\u0448\u0438\u0431{{PLURAL:%1|\u043a\u0430|\u043e\u043a|\u043a\u0438}}",
|
||||
"\u5716\u6a94\u640d\u58de\uff1a": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u043e: ",
|
||||
"\u7121\u6cd5\u53d6\u5f97\u5716\u7247\u3002": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. ",
|
||||
"\u6a94\u6848\u904e\u5c0f\uff0c\u50c5 %1 {{PLURAL:%1|\u4f4d\u5143\u7d44}}\uff1a": "%1 \u0431\u0430\u0439\u0442{{PLURAL:%1|||\u0430}}, \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e:",
|
||||
"\u6a94\u6848\u50c5 %1 {{PLURAL:%1|\u4f4d\u5143\u7d44}}\uff1a": "%1 {{PLURAL:%1|\u0431\u0430\u0439\u0442|\u0431\u0430\u0439\u0442\u0430|\u0431\u0430\u0439\u0442\u043e\u0432}}:",
|
||||
"\u7b49\u5f85 %2 \u4e4b\u5f8c\u518d\u91cd\u65b0\u53d6\u5f97\u5716\u7247\uff1a%1": "\u041e\u0436\u0438\u0434\u0430\u0439\u0442\u0435 %2 \u0438 \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 %1.",
|
||||
"\u9084\u6709%1\u5f35{{PLURAL:%1|\u95b1\u8b80\u5377}}\uff0c\u4e14\u7b2c %2/%3 \u7ae0\u9084\u6709\u6c92\u4e0b\u8f09\u904e\uff0c\u5f9e\u6b64\u7ae0\u958b\u59cb\u6aa2\u67e5\u3002": "\u041e\u0441\u0442\u0430\u043b\u0441\u044f %1 \u0431\u0438\u043b\u0435\u0442{{PLURAL:%1||\u043e\u0432}} \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u043d\u043e \u0433\u043b\u0430\u0432\u0430 %2/%3 \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430. \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b.",
|
||||
"\u7e7c\u7e8c\u4e0b\u8f09\u300a%1\u300b\u3002": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u00ab%1\u00bb.",
|
||||
"\u9810\u4f30\u9084\u9700 %1 \u4e0b\u8f09\u5b8c\u672c\u4f5c\u54c1\u3002": "\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e %1 \u043d\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435.",
|
||||
"work_data.author": "\u0410\u0432\u0442\u043e\u0440",
|
||||
"work_data.chapter_count": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0433\u043b\u0430\u0432",
|
||||
"work_data.description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
|
||||
"work_data.status": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435",
|
||||
"work_data.url": "URL-\u0430\u0434\u0440\u0435\u0441",
|
||||
"work_status-finished": "\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e",
|
||||
"work_status-not found": "\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e",
|
||||
"\u4e0b\u8f09%1 - \u76ee\u6b21 @ %2": "%1 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u2014 \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 @ %2",
|
||||
"\u5c07\u5f9e\u982d\u6aa2\u67e5\u3001\u81ea\u7b2c %1 %2\u91cd\u65b0\u751f\u6210\u96fb\u5b50\u66f8\u3002": "\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0437\u0430\u043d\u043e\u0432\u043e \u0441 %1 %2.",
|
||||
"\u81ea \u00a7%1 \u63a5\u7e8c\u4e0b\u8f09\u3002": "\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0437 \u00a7%1.",
|
||||
"\u6a94\u6848\u8def\u5f91\uff1a%1": " \u0444\u0430\u0439\u043b\u0430 %1",
|
||||
"TOC.description": "\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
|
||||
"TOC.language": "\u044f\u0437\u044b\u043a",
|
||||
"TOC.publisher": "\u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044c",
|
||||
"TOC.source": "\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
|
||||
"Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",
|
||||
"Italy": "\u0418\u0442\u0430\u043b\u0438\u044f",
|
||||
"Poland": "\u041f\u043e\u043b\u044c\u0448\u0430",
|
||||
"Portugal": "\u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u044f",
|
||||
"Luxembourg": "\u041b\u044e\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433",
|
||||
"Netherlands": "\u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u044b",
|
||||
"Bavaria": "\u0411\u0430\u0432\u0430\u0440\u0438\u044f",
|
||||
"Austria": "\u0410\u0432\u0441\u0442\u0440\u0438\u044f",
|
||||
"Switzerland": "\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0438\u044f",
|
||||
"Hungary": "\u0412\u0435\u043d\u0433\u0440\u0438\u044f",
|
||||
"Germany": "\u0413\u0435\u0440\u043c\u0430\u043d\u0438\u044f",
|
||||
"Norway": "\u041d\u043e\u0440\u0432\u0435\u0433\u0438\u044f",
|
||||
"Denmark": "\u0414\u0430\u043d\u0438\u044f",
|
||||
"Finland": "\u0424\u0438\u043d\u043b\u044f\u043d\u0434\u0438\u044f",
|
||||
"Bulgaria": "\u0411\u043e\u043b\u0433\u0430\u0440\u0438\u044f",
|
||||
"Soviet Union": "\u0421\u043e\u0432\u0435\u0442\u0441\u043a\u0438\u0439 \u0421\u043e\u044e\u0437",
|
||||
"Serbia": "\u0421\u0435\u0440\u0431\u0438\u044f",
|
||||
"Romania": "\u0420\u0443\u043c\u044b\u043d\u0438\u044f",
|
||||
"Greece": "\u0413\u0440\u0435\u0446\u0438\u044f",
|
||||
"T\u00fcrkiye": "\u0422\u0443\u0440\u0446\u0438\u044f",
|
||||
"Egypt": "\u0415\u0433\u0438\u043f\u0435\u0442",
|
||||
"%1 {{PLURAL:%1|year|years}} and %2 {{PLURAL:%2|month|months}}": "%1 {{PLURAL:%1|\u0433\u043e\u0434|\u0433\u043e\u0434\u0430|\u043b\u0435\u0442}} \u0438 %2 {{PLURAL:%1|\u043c\u0435\u0441\u044f\u0446|\u043c\u0435\u0441\u044f\u0446\u0430|\u043c\u0435\u0441\u044f\u0446\u0435\u0432}}",
|
||||
"%1 Y %2 M": "%1 \u0433. %2 \u043c\u0435\u0441.",
|
||||
"%1 {{PLURAL:%1|year|years}}": "%1 {{PLURAL:%1|\u0433\u043e\u0434|\u0433\u043e\u0434\u0430|\u043b\u0435\u0442}}",
|
||||
"%1 Y": "%1 \u0433.",
|
||||
"%1 {{PLURAL:%1|month|months}}": "%1 {{PLURAL:%1|\u043c\u0435\u0441\u044f\u0446|\u043c\u0435\u0441\u044f\u0446\u0430|\u043c\u0435\u0441\u044f\u0446\u0435\u0432}}",
|
||||
"%1 M": "%1 \u043c\u0435\u0441.",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1 {{PLURAL:%1|\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430|\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b|\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434}}",
|
||||
"%1 ms": "%1 \u043c\u0441",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1 {{PLURAL:%1|\u0441\u0435\u043a\u0443\u043d\u0434\u0430|\u0441\u0435\u043a\u0443\u043d\u0434\u044b|\u0441\u0435\u043a\u0443\u043d\u0434}}",
|
||||
"%1 s": "%1 \u0441",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 {{PLURAL:%1|\u043c\u0438\u043d\u0443\u0442\u0430|\u043c\u0438\u043d\u0443\u0442\u044b|\u043c\u0438\u043d\u0443\u0442}}",
|
||||
"%1 min": "%1 \u043c\u0438\u043d.",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1 {{PLURAL:%1|\u0447\u0430\u0441|\u0447\u0430\u0441\u0430|\u0447\u0430\u0441\u043e\u0432}}",
|
||||
"%1 hr": "%1 \u0447.",
|
||||
"%1 {{PLURAL:%1|day|days}}": "%1 {{PLURAL:%1|\u0434\u0435\u043d\u044c|\u0434\u043d\u044f|\u0434\u043d\u0435\u0439}}",
|
||||
"%1 d": "%1 \u0434\u043d.",
|
||||
"2 days before yesterday, %H:%M": "\u0434\u0435\u043d\u044c \u0434\u043e \u043f\u043e\u0437\u0430\u043f\u043e\u0437\u0430\u0432\u0447\u0435\u0440\u0430, %H:%M",
|
||||
"the day before yesterday, %H:%M": "\u043f\u043e\u0437\u0430\u043f\u043e\u0437\u0430\u0432\u0447\u0435\u0440\u0430, %H:%M",
|
||||
"yesterday, %H:%M": "\u0432\u0447\u0435\u0440\u0430, %H:%M",
|
||||
"today, %H:%M": "\u0441\u0435\u0433\u043e\u0434\u043d\u044f, %H:%M",
|
||||
"tomorrow, %H:%M": "\u0437\u0430\u0432\u0442\u0440\u0430, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "\u043f\u043e\u0441\u043b\u0435\u0437\u0430\u0432\u0442\u0440\u0430, %H:%M",
|
||||
"2 days after tomorrow, %H:%M": "\u043f\u043e\u0441\u043b\u0435\u043f\u043e\u0441\u043b\u0435\u0437\u0430\u0432\u0442\u0440\u0430, %H:%M",
|
||||
"3 days after tomorrow, %H:%M": "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u043b\u0435\u043f\u043e\u0441\u043b\u0435\u0437\u0430\u0432\u0442\u0440\u0430, %H:%M",
|
||||
"now": "\u0441\u0435\u0439\u0447\u0430\u0441",
|
||||
"several seconds ago": "\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430\u0437\u0430\u0434",
|
||||
"soon": "\u0441\u043a\u043e\u0440\u043e",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "{{PLURAL:%1|%1 \u0441\u0435\u043a\u0443\u043d\u0434\u0443|%1 \u0441\u0435\u043a\u0443\u043d\u0434\u044b|%1 \u0441\u0435\u043a\u0443\u043d\u0434}} \u043d\u0430\u0437\u0430\u0434",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "\u0447\u0435\u0440\u0435\u0437 {{PLURAL:%1|%1 \u0441\u0435\u043a\u0443\u043d\u0434\u0443| %1 \u0441\u0435\u043a\u0443\u043d\u0434\u044b|%1 \u0441\u0435\u043a\u0443\u043d\u0434}}",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "{{PLURAL:%1|%1 \u043c\u0438\u043d\u0443\u0442\u0443|%1 \u043c\u0438\u043d\u0443\u0442\u044b|%1 \u043c\u0438\u043d\u0443\u0442}} \u043d\u0430\u0437\u0430\u0434",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "\u0447\u0435\u0440\u0435\u0437 {{PLURAL:%1|%1 \u043c\u0438\u043d\u0443\u0442\u0443|%1 \u043c\u0438\u043d\u0443\u0442\u044b|%1 \u043c\u0438\u043d\u0443\u0442}}",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "{{PLURAL:%1|%1 \u0447\u0430\u0441|%1 \u0447\u0430\u0441\u0430|%1 \u0447\u0430\u0441\u043e\u0432}} \u043d\u0430\u0437\u0430\u0434",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "\u0447\u0435\u0440\u0435\u0437 {{PLURAL:%1|%1 \u0447\u0430\u0441|%1 \u0447\u0430\u0441\u0430|%1 \u0447\u0430\u0441\u043e\u0432}}",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 {{PLURAL:%1|\u0434\u0435\u043d\u044c|\u0434\u043d\u044f|\u0434\u043d\u0435\u0439}} \u043d\u0430\u0437\u0430\u0434",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "\u0447\u0435\u0440\u0435\u0437 {{PLURAL:%1|%1 \u0434\u0435\u043d\u044c|%1 \u0434\u043d\u044f|%1 \u0434\u043d\u0435\u0439}}",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "{{PLURAL:%1|%1 \u043d\u0435\u0434\u0435\u043b\u044e|%1 \u043d\u0435\u0434\u0435\u043b\u0438|%1 \u043d\u0435\u0434\u0435\u043b\u044c}} \u043d\u0430\u0437\u0430\u0434",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "\u0447\u0435\u0440\u0435\u0437 {{PLURAL:%1|%1 \u043d\u0435\u0434\u0435\u043b\u044e|%1 \u043d\u0435\u0434\u0435\u043b\u0438|%1 \u043d\u0435\u0434\u0435\u043b\u044c}}",
|
||||
"\u8a3b": "\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435",
|
||||
"\u8df3\u904e [%1]\uff1a\u672c[%2]\u50c5\u4f9b\u53c3\u7167\u7528\u3002": "\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c [%1]: %2 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439.",
|
||||
"\u65e5\u672c": "\u042f\u043f\u043e\u043d\u0438\u044f",
|
||||
"\ud55c\uad6d": "\u041a\u043e\u0440\u0435\u044f",
|
||||
"\u0e44\u0e17\u0e22": "\u0422\u0430\u0438\u043b\u0430\u043d\u0434",
|
||||
"India": "\u0418\u043d\u0434\u0438\u044f",
|
||||
"Babylon": "\u0412\u0430\u0432\u0438\u043b\u043e\u043d",
|
||||
"Persia": "\u041f\u0435\u0440\u0441\u0438\u044f",
|
||||
"\u2191Back to TOC": "\u2191\u041d\u0430\u0437\u0430\u0434 \u043a \u0422\u0430\u0431\u043b\u0438\u0446\u0435 \u0441 c\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c",
|
||||
"Contents of [%1]": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 [%1]",
|
||||
"expand": "\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c",
|
||||
"collapse": "\u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c",
|
||||
"Illegal %1: [%2]": "\u043d\u0435\u043b\u0435\u0433\u0430\u043b\u044c\u043d\u043e %1: [%2]",
|
||||
"\u8df3\u904e\u5df2\u8f09\u5165\u7684\u6a94\u6848\uff1a%1": "\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0444\u0430\u0439\u043b: %1",
|
||||
"Duplicate task name %1! Will overwrite old task with new task: %2\u2192%3": "\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u0438\u043c\u044f \u0437\u0430\u0434\u0430\u0447\u0438 %1! \u0411\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u0442\u0430\u0440\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439: %2\u2192%3",
|
||||
"number-of-templates": "#",
|
||||
"Archiving operation": "\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f",
|
||||
"edit-mark": "\u0418",
|
||||
"\u8de8\u8a9e\u8a00\u6a21\u677f\u7684\u672c\u5730\u6a19\u984c\u8207\u5916\u8a9e\u6a19\u984c\u76f8\u540c": "\u041c\u0435\u0441\u0442\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432 \u043c\u0435\u0436\u044a\u044f\u0437\u044b\u043a\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.",
|
||||
"Local page title contains the local title in the interlanguage template": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432 \u043c\u0435\u0436\u044a\u044f\u0437\u044b\u043a\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435",
|
||||
"(new page)": "(\u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430)",
|
||||
"Append %1 {{PLURAL:%1|topic|topics}}": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c %1{{PLURAL:%1|\u0442\u0435\u043c\u0443|\u0442\u0435\u043c}}",
|
||||
"Remove %1 {{PLURAL:%1|topic|topics}}": "\u0423\u0431\u0440\u0430\u0442\u044c %1 {{PLURAL:%1|\u0442\u0435\u043c\u0443|\u0442\u0435\u043c}}",
|
||||
"\u9023\u7d50\u91cd\u5b9a\u5411\u5230\u672a\u5d4c\u5165\u8a72\u6a21\u677f\u7684\u9801\u9762\uff1a%1": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0432 \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d: %1",
|
||||
"Very Sorry. Undo the robot's wrong edits. (%1)": "\u041e\u0447\u0435\u043d\u044c \u0436\u0430\u043b\u044c. \u041e\u0442\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u0431\u043e\u0442\u0430. (%1)",
|
||||
"debug level": "\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438",
|
||||
"\u542b\u6709 %1/%2 \u5f35{{PLURAL:%1|\u5716\u7247}}": "\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 %1/%2 {{PLURAL:%2|\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f|\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439}}",
|
||||
"\u641c\u5c0b": "\u041f\u043e\u0438\u0441\u043a",
|
||||
"\u641c\u5c0b\u5404\u7db2\u7ad9\u4e26\u4e0b\u8f09\u4f5c\u54c1\u3002": "\u041f\u043e\u0438\u0441\u043a \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b.",
|
||||
"local-language-name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439",
|
||||
"\u73fe\u6709%1\u689d%2\u8a0a\u606f\u5c1a\u672a\u7ffb\u8b6f\uff0c\u6b61\u8fce\u60a8\u4e00\u540c\u53c3\u8207\u7ffb\u8b6f\u8a0a\u606f\uff01": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0435\u0441\u0442\u044c {{PLURAL:%1|%1 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435|%1 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f|%1 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439}}, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 %2. \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043a \u043d\u0430\u043c \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434!",
|
||||
"\u9023\u7d50": "\u0441\u0441\u044b\u043b\u043a\u0430",
|
||||
"work_crawler-search_result_columns-author": "\u0410\u0432\u0442\u043e\u0440",
|
||||
"\u53d6\u6d88": "\u041e\u0442\u043c\u0435\u043d\u0430",
|
||||
"\u66f4\u65b0\u5b8c\u7562\u3002": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e. ",
|
||||
"Usage:": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:",
|
||||
"Options:": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:"
|
||||
},
|
||||
"ru-RU");
|
||||
@@ -0,0 +1,189 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Espa\u00f1a": "Spanien",
|
||||
"Calendrier r\u00e9publicain": "Franska revolutionskalendern",
|
||||
"untranslated message count": "1000+",
|
||||
"\u6e05\u9664\u8a0a\u606f": "Rensa logg",
|
||||
"\u986f\u793a/\u96b1\u85cf\u8a0a\u606f": "Visa / d\u00f6lj logg",
|
||||
"Load failed": "Kunde inte ladda",
|
||||
"\u8a0a\u606f\u63d0\u793a\u8207\u7d00\u9304\u6b04": "Journalpanel",
|
||||
"\u5730\u7406\u5ea7\u6a19\uff1a": "Koordinater: ",
|
||||
"\u81ea\u8a02\u8f38\u51fa\u683c\u5f0f": "Anpassa utmatningsformat",
|
||||
"\u7def\u5ea6\uff1a": "Latitud: ",
|
||||
"\u7d93\u5ea6\uff1a": "Longitud: ",
|
||||
"\u8f38\u51fa\u683c\u5f0f": "Utmatningsformat",
|
||||
"\u524d\u7db4": "prefix",
|
||||
"\u6642\u5340\uff1a": "Tidszon: ",
|
||||
"\u8acb\u6ce8\u610f\uff1a\u672c\u6b04\u50c5\u4f9b\u958b\u767c\u4eba\u54e1\u4f7f\u7528\u3002": "VARNING: Endast f\u00f6r utvecklare.",
|
||||
"\u6279\u6b21\u8f49\u63db": "BUNT",
|
||||
"Loading...": "Laddar...",
|
||||
"\u7d04%1\u5e74": "ungef. %1",
|
||||
"\u1019\u103c\u1014\u103a\u1019\u102c": "Myanmar",
|
||||
"Vi\u1ec7t Nam": "Vietnam",
|
||||
"Unpin": "L\u00f6sg\u00f6r",
|
||||
"Pin": "F\u00e4st",
|
||||
"\u9664\u53bb\u6b64\u6b04": "Ta bort kolumnen",
|
||||
"\u5206\u985e": "Gruppera",
|
||||
"%1/%2/%3": "%1/%2/%3",
|
||||
"%1 BCE": "%1 f.v.t.",
|
||||
"%1 CE": "%1 f.v.t.",
|
||||
"\u5e74\u8b5c": "kalenderdatum",
|
||||
"\u66c6\u8b5c": "KALENDERTABELL",
|
||||
"\u5171\u6709 %1 \u500b\u6642\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 registreringar",
|
||||
"\u5171\u6709 %1 \u500b\u5e74\u6bb5{{PLURAL:%1|\u7d00\u9304}}": "%1 \u00e5r",
|
||||
"\u7121\u53ef\u4f9b\u5217\u51fa\u4e4b\u66c6\u8b5c\uff01": "Ingen kalender att lista!",
|
||||
"\u5617\u8a66\u52a0\u6ce8\u65e5\u671f": "Testa att tillfoga datum",
|
||||
"\u5168\u4e0d\u9078": "Ta bort ALLT",
|
||||
"\u589e\u52a0\u6b64\u6b04": "L\u00e4gg till kolumnen",
|
||||
"\u8cc7\u6599\u5716\u5c64": "Datalager",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "Navigering: ",
|
||||
"\u6240\u6709\u570b\u5bb6": "Alla l\u00e4nder",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "EXEMPEL",
|
||||
"\u8f38\u5165\u7d00\u9304": "REGISTRERING",
|
||||
"\u4f7f\u7528\u8aaa\u660e": "KONCEPT",
|
||||
"\u7d00\u5e74\u7dda\u5716": "TIDSLINJE",
|
||||
"\u8a2d\u5b9a": "KONFIGURERING",
|
||||
"\u6a19\u6ce8\u6587\u672c": "TAGGNING",
|
||||
"\u66c6\u6578\u8655\u7406": "UTVECKLING",
|
||||
"\u554f\u984c\u56de\u5831": "\u00c5TERKOPPLING",
|
||||
"Julian Day Number": "Julianskt datumnummer",
|
||||
"France": "Frankrike",
|
||||
"Great Britain": "Storbritannien",
|
||||
"Spain": "Spanien",
|
||||
"\u63a1\u7528\u66c6\u6cd5": "Kalender som anv\u00e4nds",
|
||||
"\u51fa\u5178": "Datak\u00e4lla",
|
||||
"\u541b\u4e3b\u540d": "Personnamn",
|
||||
"\u8868\u5b57": "Artighetsnamn",
|
||||
"\u541b\u4e3b\u865f": "Artistnamn",
|
||||
"\u8af1": "Riktigt namn",
|
||||
"\u8ae1": "Postumt namn",
|
||||
"\u5edf\u865f": "Tempelnamn",
|
||||
"\u51fa\u751f": "F\u00f6dd",
|
||||
"\u901d\u4e16": "D\u00f6d",
|
||||
"\u5728\u4f4d": "Styre",
|
||||
"\u52a0\u5195": "Kr\u00f6ning",
|
||||
"\u524d\u4efb": "F\u00f6reg\u00e5ngare",
|
||||
"\u7e7c\u4efb": "Eftertr\u00e4dare",
|
||||
"\u7236\u89aa": "Far",
|
||||
"\u6bcd\u89aa": "Mor",
|
||||
"\u914d\u5076": "Make/maka",
|
||||
"\u5c55\u793a\u7dda\u5716": "Visar tidslinje",
|
||||
"\u7d00\u5e74 %1": "Era %1",
|
||||
"Initializing...": "Initierar...",
|
||||
"\u5df2\u8f09\u5165 %1 \u7b46\u8cc7\u6599\u3002": function (domain_name, arg) { return '%1 ' + (1 < arg[1] ? 'inlägg' : 'inlägg') + ' laddad.'; },
|
||||
"Aries": "V\u00e4duren",
|
||||
"Taurus": "Oxen",
|
||||
"Gemini": "Tvillingarna",
|
||||
"Cancer": "Kr\u00e4ftan",
|
||||
"Leo": "Lejonet",
|
||||
"Virgo": "Jungfrun",
|
||||
"Libra": "V\u00e5gen",
|
||||
"Scorpio": "Skorpionen",
|
||||
"Sagittarius": "Skytten",
|
||||
"Capricorn": "Stenbocken",
|
||||
"Aquarius": "Vattumannen",
|
||||
"Pisces": "Fiskarna",
|
||||
"\u6708\u76f8": "m\u00e5nfas",
|
||||
"\u661f\u671f": "Veckodag",
|
||||
"Julian Date": "Julianskt datum",
|
||||
"\u9031\u65e5\u671f": "Veckodatum",
|
||||
"Unix time": "Unixtid",
|
||||
"calendar": "kalender",
|
||||
"Gregorian calendar": "Gregorianska kalendern",
|
||||
"Julian calendar": "Julianska kalendern",
|
||||
"\u66c6\u6ce8": "Kalenderanteckning",
|
||||
"\u4e2d\u570b": "Kina",
|
||||
"Loading %1%...": "Laddar %1%...",
|
||||
"finished": "klar",
|
||||
"No changes.": "Inga \u00e4ndringar.",
|
||||
"No page modified": "ingen sida modifierad",
|
||||
"\u4e2d\u6587\u6578\u5b57": "Till kinesiska siffror",
|
||||
"astronomy": "astronomi",
|
||||
"log-type-debug": "fels\u00f6kning",
|
||||
"log-type-em": "emfas",
|
||||
"log-type-error": "fel",
|
||||
"log-type-fatal": "kritisk",
|
||||
"log-type-info": "info",
|
||||
"log-type-log": "logg",
|
||||
"log-type-trace": "sp\u00e5r",
|
||||
"log-type-warn": "varna",
|
||||
"Not Yet Implemented!": "Inte \u00e4nnu implementerad!",
|
||||
"\u6240\u6307\u5b9a\u4e4b domain [%1] \u5c1a\u672a\u8f09\u5165\uff0c\u82e5\u6709\u5fc5\u8981\u8acb\u4f7f\u7528\u5f37\u5236\u8f09\u5165 flag\u3002": "Angiven dom\u00e4n [%1] har \u00e4nnu inte laddats. Du kan beh\u00f6va ange FORCE-flagga.",
|
||||
"Language": "Spr\u00e5k",
|
||||
"Content is empty": "Inneh\u00e5llet \u00e4r tomt",
|
||||
"Content is not settled": "Inneh\u00e5llet har inte etablerats",
|
||||
"Abandon change": "\u00d6verge \u00e4ndring",
|
||||
"No reason provided": "Ingen anledning gavs",
|
||||
"Continue key": "Forts\u00e4ttningsnyckel",
|
||||
"no change": "ingen \u00e4ndring",
|
||||
"finished: %1": "klar: %1",
|
||||
"%1 elapsed, %3 at %2": "%1 passerad, %3 vid %2",
|
||||
"First, it takes %1 to get %2 {{PLURAL:%2|page|pages}}.": "F\u00f6rst tar den %1 och f\u00e5r %2 sidor.",
|
||||
"%1 {{PLURAL:%2|page|pages}} processed": "%1 sidor bearbetade",
|
||||
"%1 {{PLURAL:%1|page|pages}} have not changed,": "%1 sidor har inte \u00e4ndrats,",
|
||||
"%1 elapsed.": "%1 passerad.",
|
||||
"'''Stopped''', give up editing.": "'''Stannade''', \u00f6verge redigering.",
|
||||
"function": "funktion",
|
||||
"number": "nummer",
|
||||
"Contents": "Inneh\u00e5ll",
|
||||
"%1 {{PLURAL:%1|year|years}} and %2 {{PLURAL:%2|month|months}}": "%1 \u00e5r %2 m",
|
||||
"%1 Y %2 M": "%1 \u00e5r %2 m",
|
||||
"%1 {{PLURAL:%1|year|years}}": "%1 \u00e5r",
|
||||
"%1 Y": "%1 \u00e5r",
|
||||
"%1 {{PLURAL:%1|month|months}}": "%1 m",
|
||||
"%1 M": "%1 m",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1 ms",
|
||||
"%1 ms": "%1 ms",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1 s",
|
||||
"%1 s": "%1 s",
|
||||
"%1 {{PLURAL:%1|minute|minutes}}": "%1 min",
|
||||
"%1 min": "%1 min",
|
||||
"%1 {{PLURAL:%1|hour|hours}}": "%1 tm",
|
||||
"%1 hr": "%1 tm",
|
||||
"%1 {{PLURAL:%1|day|days}}": "%1 d",
|
||||
"%1 d": "%1 d",
|
||||
"2 days before yesterday, %H:%M": "I f\u00f6rrf\u00f6rrg\u00e5r, %H:%M",
|
||||
"the day before yesterday, %H:%M": "i f\u00f6rrg\u00e5r, %H:%M",
|
||||
"yesterday, %H:%M": "ig\u00e5r, %H:%M",
|
||||
"today, %H:%M": "idag, %H:%M",
|
||||
"tomorrow, %H:%M": "imorgon, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "i \u00f6vermorgon, %H:%M",
|
||||
"2 days after tomorrow, %H:%M": "i \u00f6ver\u00f6vermorgon, %H:%M",
|
||||
"3 days after tomorrow, %H:%M": "om fyra dagar, %H:%M",
|
||||
"now": "nu",
|
||||
"several seconds ago": "flera sekunder sedan",
|
||||
"soon": "snart",
|
||||
"%1 {{PLURAL:%1|second|seconds}} ago": "%1 sekunder sen",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "%1 sekunder senare",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} ago": "%1 minuter sedan",
|
||||
"%1 {{PLURAL:%1|minute|minutes}} later": "%1 minuter senare",
|
||||
"%1 {{PLURAL:%1|hour|hours}} ago": "%1 timme sedan",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 timme senare",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 dag sedan",
|
||||
"%1 {{PLURAL:%1|day|days}} later": "%1 dagar senare",
|
||||
"%1 {{PLURAL:%1|week|weeks}} ago": "%1 veckor sedan",
|
||||
"%1 {PLURAL:%1|week|weeks}} later": "%1 veckor senare",
|
||||
"\u5e74\u865f": "Datum i era",
|
||||
"\u8a3b": "Anteckning",
|
||||
"\u7d00\u5e74": "Erans namn",
|
||||
"\u8df3\u904e [%1]\uff1a\u672c[%2]\u50c5\u4f9b\u53c3\u7167\u7528\u3002": "Hoppa \u00f6ver [%1]: %2 ska bara anv\u00e4ndas f\u00f6r referenser.",
|
||||
"\u7409\u7403": "Ryukyu",
|
||||
"\u65e5\u672c": "Japan",
|
||||
"\ud55c\uad6d": "Korea",
|
||||
"B\u1eafc thu\u1ed9c": "Kinesisk dominans \u00f6ver Vietnam",
|
||||
"Th\u1eddi k\u1ef3 \u0111\u1ed9c l\u1eadp": "Sen dynastisk epok",
|
||||
"\u0e44\u0e17\u0e22": "Thailand",
|
||||
"India": "Indien",
|
||||
"Persia": "Persien",
|
||||
"\u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1": "Makedonien",
|
||||
"\u1f08\u03b8\u1fc6\u03bd\u03b1\u03b9": "Klassiska Aten",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "Sparta",
|
||||
"\u2191Back to TOC": "\u2191Tillbaka till inneh\u00e5llsf\u00f6rteckning",
|
||||
"Contents of [%1]": "Inneh\u00e5ll av [%1]",
|
||||
"expand": "visa",
|
||||
"collapse": "d\u00f6lj",
|
||||
"Illegal %1: [%2]": "Otill\u00e5ten %1: [%2]",
|
||||
"debug level": "fels\u00f6kningsniv\u00e5"
|
||||
},
|
||||
"sv-SE");
|
||||
@@ -0,0 +1,90 @@
|
||||
/* Localized messages of CeL.
|
||||
This file is auto created by auto-generate tool: build.nodejs(.js) @ 2023.
|
||||
*/'use strict';typeof CeL==='function'&&CeL.application.locale.gettext.set_text({
|
||||
"Calendrier r\u00e9publicain": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u043d \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"untranslated message count": "1000+",
|
||||
"\u7d00\u5e74\u8f49\u63db\u5de5\u5177": "\u042d\u0440\u0430 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0438",
|
||||
"Loading...": "\u0427\u04af\u0434\u04af\u0440\u04af\u0433...",
|
||||
"\u5206\u985e": "\u0411\u04e9\u043b\u04af\u043a",
|
||||
"\u8cc7\u6599\u5716\u5c64": "\u041c\u0435\u0434\u044d\u044d\u043b\u0435\u043b \u043a\u0430\u044a\u0434\u044b",
|
||||
"\u5c0e\u89bd\u5217\uff1a": "\u041d\u0430\u0432\u0438\u0433\u0430\u0441:",
|
||||
"\u6e2c\u8a66\u7bc4\u4f8b": "\u0427\u0418\u0416\u0415\u041a",
|
||||
"\u8a2d\u5b9a": "\u041a\u041e\u041d\u0424\u0418\u0413\u0423\u0420\u0410\u0421",
|
||||
"Julian Day Number": "\u042e\u043b\u0438\u0430\u043d \u0445\u04af\u043d \u0434\u0443\u0433\u0430\u0430\u0440\u044b",
|
||||
"Great Britain": "\u0423\u043b\u0443\u0433 \u0411\u0440\u0438\u0442\u0430\u043d\u0438\u044f",
|
||||
"\u63a1\u7528\u66c6\u6cd5": "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440 \u0430\u0436\u044b\u0433\u043b\u0430\u0442\u0442\u044b\u043d\u0433\u0430\u043d",
|
||||
"\u541b\u4e3b\u865f": "\u0423\u0440\u0430\u043d \u0447\u04af\u04af\u043b \u0430\u0434\u044b",
|
||||
"\u8af1": "\u0428\u044b\u043d \u0430\u0434\u044b",
|
||||
"\u8ae1": "\u041c\u04e9\u0447\u044d\u044d\u043d \u0441\u043e\u043e\u043d\u0434\u0430 \u0430\u0434\u044b",
|
||||
"\u901d\u4e16": "\u041c\u04e9\u0447\u044d\u044d\u043d\u0438",
|
||||
"\u52a0\u5195": "\u041a\u043e\u0440\u043e\u043d\u0430\u0441",
|
||||
"\u524d\u4efb": "\u041c\u0443\u0440\u043d\u0443\u043d\u0434\u0430\u0433\u044b\u0437\u044b",
|
||||
"\u7e7c\u4efb": "\u0421\u0430\u043b\u0433\u0430\u043a\u0447\u044b\u0437\u044b",
|
||||
"\u7236\u89aa": "\u0410\u0434\u0430",
|
||||
"\u6bcd\u89aa": "\u0418\u0435",
|
||||
"\u7d00\u5e74 %1": "\u042d\u0440\u0430 %1",
|
||||
"Taurus": "\u0411\u0443\u0433\u0430",
|
||||
"Gemini": "\u0418\u0439\u0438\u0441",
|
||||
"Leo": "\u041b\u0435\u043e",
|
||||
"Virgo": "\u041a\u044b\u0441",
|
||||
"Pisces": "\u0411\u0430\u043b\u044b\u043a",
|
||||
"\u540c\u570b\u5171\u5b58\u7d00\u5e74": "\u0410\u043c\u0433\u044b \u0448\u0430\u0433 (\u043e\u043b-\u043b\u0430 \u0447\u0443\u0440\u0442)",
|
||||
"\u6714": "\u0447\u0430\u0430 \u0430\u0439",
|
||||
"\u65e5\u51fa\u65e5\u843d": "\u0445\u04af\u043d \u04af\u043d\u0435\u0440\u0438 / \u0445\u04af\u043d \u0430\u0436\u0430\u0440\u044b",
|
||||
"Gregorian calendar": "\u0413\u0440\u0435\u0433\u043e\u0440\u0438\u0430\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"Revised Julian calendar": "\u042d\u0434\u0435 \u043a\u04e9\u0440\u0434\u04af\u043d\u0433\u0435\u043d \u042e\u043b\u0438\u0430\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u4f0a\u65af\u862d\u66c6": "\u0418\u0441\u043b\u0430\u043c \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0647\u062c\u0631\u06cc \u062e\u0648\u0631\u0634\u06cc\u062f\u06cc": "\u0410\u043c\u0433\u044b \u0448\u0430\u0433\u043d\u044b\u04a3 \u0418\u0440\u0430\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044b",
|
||||
"\u9577\u7d00\u66c6": "\u0423\u0437\u0443\u043d \u0441\u0430\u043d\u0430\u0430\u0448\u043a\u044b\u043d",
|
||||
"\u0939\u093f\u0928\u094d\u0926\u0942 \u092a\u0902\u091a\u093e\u0902\u0917": "\u0418\u043d\u0434\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u06af\u0627\u0647\u200c\u0634\u0645\u0627\u0631\u06cc \u0628\u0647\u0627\u0626\u06cc": "\u0411\u0430\u0445\u0430\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u79d1\u666e\u7279\u66c6": "\u041a\u043e\u043f\u0442 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u8863\u7d22\u6bd4\u4e9e\u66c6": "\u042d\u0444\u0438\u043e\u043f \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"Byzantine calendar": "\u0412\u0438\u0437\u0430\u043d\u0442\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"\u4e2d\u570b": "\u041a\u044b\u0434\u0430\u0442",
|
||||
"Year naming": "\u0427\u044b\u043b \u0430\u0434\u0430\u0430\u0440\u044b",
|
||||
"\u751f\u8096": "\u041a\u044b\u0434\u0430\u0442 \u0437\u043e\u0434\u0438\u0430\u043a",
|
||||
"\u7687\u7d00": "\u042f\u043f\u043e\u043d \u0438\u043c\u043f\u0435\u0440\u0438\u0430\u043b \u0447\u044b\u043b",
|
||||
"\u7f85\u99ac\u5efa\u57ce": "\u0425\u043e\u043e\u0440\u0430\u0439",
|
||||
"Holocene calendar": "\u0413\u043e\u043b\u043e\u0441\u0435\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440",
|
||||
"Gregorian reform": "\u0413\u0440\u0435\u0433\u043e\u0440\u0438\u0430\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440 \u0445\u04af\u043b\u044d\u044d\u0448\u043a\u0438\u043d\u0438",
|
||||
"Loading %1%...": "\u0427\u04af\u0434\u04af\u0440\u0435\u0440\u0438 %1%...",
|
||||
"astronomy": "\u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u044f",
|
||||
"\u671b": "\u0434\u043e\u043b\u0443 \u0430\u0439",
|
||||
"hybrid solar eclipse": "\u0433\u0438\u0431\u0440\u0438\u0434 \u0445\u04af\u043d \u0442\u0443\u0442\u0442\u0443\u0440\u0443\u0443\u0448\u043a\u0443\u043d\u0443",
|
||||
"partial solar eclipse": "\u0434\u043e\u043b\u0443 \u044d\u0432\u0435\u0441 \u0445\u04af\u043d \u0442\u0443\u0442\u0442\u0443\u0440\u0443\u0443\u0448\u043a\u0443\u043d\u0443",
|
||||
"lunar eclipse": "\u0430\u0439 \u0442\u0443\u0442\u0442\u0443\u0440\u0443\u0443\u0448\u043a\u0443\u043d\u0443",
|
||||
"nautical twilight end": "\u0434\u0430\u043b\u0430\u0439 \u0438\u043c\u0438\u0440 \u0442\u04e9\u043d\u0447\u04af\u0437\u04af",
|
||||
"log-type-info": "\u0438\u043d\u0444\u043e",
|
||||
"Language": "\u0414\u044b\u043b",
|
||||
"Content is not settled": "\u041a\u043e\u043d\u0442\u0435\u043d\u0442\u0438\u043d\u0438 \u0434\u0443\u0433\u0443\u0440\u0443\u0448\u043f\u0430\u0430\u043d",
|
||||
"no change": "\u04e9\u0441\u043a\u0435\u0440\u043b\u0438\u0438\u0448\u043a\u0438\u043d \u0447\u043e\u043a",
|
||||
"finished: %1": "\u0434\u043e\u043e\u0437\u0443\u043b\u0433\u0430\u043d: %1",
|
||||
"Luxembourg": "\u041b\u044e\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433",
|
||||
"Netherlands": "\u041d\u0435\u0434\u0435\u0440\u043b\u0430\u043d\u0434",
|
||||
"Bavaria": "\u0411\u0430\u0432\u0430\u0440\u0438\u0430",
|
||||
"Austria": "\u0410\u0432\u0441\u0442\u0440\u0438\u044f",
|
||||
"Hungary": "\u0412\u0435\u043d\u0433\u0440\u0438\u044f",
|
||||
"Norway": "\u041d\u043e\u0440\u0432\u0435\u0433\u0438\u044f",
|
||||
"Denmark": "\u0414\u0430\u043d\u0438",
|
||||
"%1 {{PLURAL:%1|millisecond|milliseconds}}": "%1 \u043c\u0441",
|
||||
"%1 ms": "%1 \u043c\u0441",
|
||||
"%1 {{PLURAL:%1|second|seconds}}": "%1 \u0441",
|
||||
"%1 s": "%1 \u0441",
|
||||
"today, %H:%M": "\u0431\u043e \u0445\u04af\u043d, %H:%M",
|
||||
"the day after tomorrow, %H:%M": "\u044d\u0440\u0442\u0435\u043d\u0433\u0438 \u0445\u04af\u043d \u0441\u043e\u043e\u043d\u0434\u0430 \u0445\u04af\u043d, %H:%M",
|
||||
"2 days after tomorrow, %H:%M": "\u042d\u0440\u0442\u0435\u043d\u0433\u0438 \u0445\u04af\u043d \u0441\u043e\u043e\u043d\u0434\u0430 2 \u0445\u04af\u043d, %H:%M",
|
||||
"soon": "\u0443\u0434\u0430\u0432\u0430\u0441",
|
||||
"%1 {{PLURAL:%1|second|seconds}} later": "%1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u0431\u043e\u043b\u0433\u0430\u0448",
|
||||
"%1 {{PLURAL:%1|hour|hours}} later": "%1 \u0448\u0430\u043a \u0431\u043e\u043b\u0433\u0430\u0448",
|
||||
"%1 {{PLURAL:%1|day|days}} ago": "%1 \u0445\u04af\u043d \u0431\u0443\u0440\u0443\u043d\u0433\u0430\u0430\u0440",
|
||||
"\u7d00\u5e74": "\u042d\u0440\u0430 \u0430\u0434\u044b",
|
||||
"\u65e5\u672c": "\u042f\u043f\u043e\u043d\u0438\u044f",
|
||||
"Mesopotamian": "\u041c\u0435\u0441\u043e\u043f\u043e\u0442\u0430\u043c",
|
||||
"Neo-Assyrian": "\u0427\u0430\u0430 \u0410\u0441\u0441\u0438\u0440\u0438\u0439",
|
||||
"Babylon": "\u0412\u0430\u0432\u0438\u043b\u043e\u043d",
|
||||
"\u03a3\u03c0\u03ac\u03c1\u03c4\u03b7": "\u0421\u043f\u0430\u0440\u0442\u0430",
|
||||
"Maya": "\u041c\u0430\u0439\u0430",
|
||||
"debug level": "\u044d\u043f\u0442\u044d\u044d\u0448\u043a\u0438\u043d \u0434\u0435\u04a3\u043d\u0435\u043b\u0438"
|
||||
},
|
||||
"tyv-RU");
|
||||
@@ -0,0 +1,315 @@
|
||||
/**
|
||||
* @name CeL function for <a
|
||||
* href="http://en.wikipedia.org/wiki/Random_number_generation"
|
||||
* accessdate="2012/3/9 9:36" title="random number generator (RNG)">number
|
||||
* generator</a>
|
||||
* @fileoverview 本檔案包含了生成數字用的 functions。
|
||||
* @since 2010/1/21 17:58:15
|
||||
* @example <code>
|
||||
* CeL.run('application.math.number_generator', function() {
|
||||
* // ..
|
||||
* });
|
||||
* </code>
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
name : 'application.math.number_generator',
|
||||
require : 'data.native.to_fixed|data.math.to_rational_number',
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
// requiring
|
||||
var to_rational_number = this.r('to_rational_number');
|
||||
|
||||
if (!Number.prototype.to_fixed) {
|
||||
Number.prototype.to_fixed = library_namespace.to_fixed;
|
||||
}
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
*
|
||||
* @class 出數學題目用的 functions
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {};
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 轉換數學式成容易閱讀的形式。
|
||||
*
|
||||
* @param formula
|
||||
* 數學式.
|
||||
* @param {Boolean}[mode]
|
||||
* 轉換模式.
|
||||
* @returns
|
||||
*/
|
||||
express_formula = function(formula, mode) {
|
||||
if (Array.isArray(formula))
|
||||
formula = formula.join('');
|
||||
|
||||
return _.express_formula.extra[formula]
|
||||
//
|
||||
|| (typeof formula === 'string' && formula ? mode
|
||||
//
|
||||
? formula.replace(/\+/g, '加').replace(/\-/g, '減')
|
||||
//
|
||||
.replace(/\*/g, '乘').replace(/\//g, '除')
|
||||
//
|
||||
: formula.replace(/\s*([+\-*\/])\s*/g, function($0, $1) {
|
||||
return ' ' + {
|
||||
'+' : '+',
|
||||
'-' : '-',
|
||||
'*' : '×',
|
||||
// obelus (symbol: ÷, plural: obeli)
|
||||
'/' : '÷'
|
||||
}[$1] + ' ';
|
||||
}) : '');
|
||||
};
|
||||
|
||||
_// JSDT:_module_
|
||||
.express_formula.extra = {
|
||||
'+-*/' : '四則',
|
||||
// [Mathematics] to find a common denominator / the lowest common
|
||||
// denominator
|
||||
f_cd : '通分',
|
||||
reduction : '約分',
|
||||
converting_mixed : '代換(假分數←→帶分數)',
|
||||
compare_size : '比大小',
|
||||
with_decimal : '與小數運算'
|
||||
};
|
||||
|
||||
/**
|
||||
* http://163.32.181.11/ymt91050/m/%E6%95%B8%E5%AD%B8%E7%B7%B4%E7%BF%92%E9%A1%8C.htm
|
||||
* http://webmail.ysps.tp.edu.tw/~wenji/material.htm
|
||||
*
|
||||
* 一位小數加法(直式)
|
||||
*
|
||||
* 一位小數減法(橫式)
|
||||
*/
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 將問題 pattern 中的 '??' 等轉成實際數字,生成實際問題。
|
||||
*
|
||||
* @param {String}problem_pattern
|
||||
* problem pattern. e.g., '???.??', '[??/?]', 可用 + - * /.
|
||||
* @param {Integer}method
|
||||
* method. 1: 只是要取得亂數. 2: 取得整個數值的亂數. others: 產出整個題目。
|
||||
* @returns
|
||||
*/
|
||||
parse_problem = function(problem_pattern, method) {
|
||||
if (typeof problem_pattern !== 'string' || !problem_pattern)
|
||||
return problem_pattern;
|
||||
|
||||
var _s = _.parse_problem,
|
||||
/**
|
||||
* gn: generate number
|
||||
*/
|
||||
gn = function(n, z) {
|
||||
/**
|
||||
* z: can start with zero
|
||||
*/
|
||||
if (!z)
|
||||
n = n.replace(/\?/, function($0) {
|
||||
return 1 + Math.floor(Math.random() * 9);
|
||||
});
|
||||
return n.replace(/\?/g, function($0) {
|
||||
return Math.floor(Math.random() * 10);
|
||||
});
|
||||
}, gn2 = function(n) {
|
||||
return n.replace(
|
||||
/(\?*|0)\.(\?+)/g,
|
||||
function($0, $1, $2) {
|
||||
return ($1.indexOf('?') === -1 ? '0' : gn($1)) + '.'
|
||||
+ gn($2, 1);
|
||||
}).replace(/\?+/g, function($0) {
|
||||
return gn($0);
|
||||
});
|
||||
};
|
||||
|
||||
if (false && !problem_pattern
|
||||
//
|
||||
.match(/^(((\?*|0)\.)?\?+|[+\-*\/]|\s){3,}$/))
|
||||
library_namespace.debug('No match: ' + problem_pattern);
|
||||
|
||||
problem_pattern = problem_pattern.replace(/\[((\d\-\d|\d+)+)\]/g,
|
||||
//
|
||||
function($0, $1) {
|
||||
var n = $1.replace(/(\d)\-(\d)/g, function($0, $1, $2) {
|
||||
var i = Math.min($1, $2), n = '', M = Math.max($1, $2);
|
||||
for (; i < M; i++)
|
||||
n += i;
|
||||
return n;
|
||||
});
|
||||
return n.charAt(Math.floor(Math.random() * n.length));
|
||||
}).replace(/(\d)(\?+)/g, function($0, $1, $2) {
|
||||
return $1 + gn($2, 1);
|
||||
});
|
||||
|
||||
problem_pattern = gn2(problem_pattern);
|
||||
|
||||
// method === 1: 只是要取得亂數
|
||||
return method === 1 ? problem_pattern
|
||||
// method === 2: 取得整個數值的亂數
|
||||
: method === 2 ? problem_pattern.replace(/0+$|^0+/g, '') : _s
|
||||
.express(problem_pattern);
|
||||
};
|
||||
|
||||
_// JSDT:_module_
|
||||
.parse_problem.express = function(q) {
|
||||
return typeof q !== 'string' ? [ q, q ]
|
||||
//
|
||||
: [ q.replace(/\/\//g, '/')
|
||||
//
|
||||
.replace(/\s*÷\s*/g, '/').replace(/\s*×\s*/g, '*')
|
||||
// .replace(/\s*=+\s*/g, '===')
|
||||
, q.replace(/\/\//g, '\\').replace(/[+\-*\/]/g, function($0) {
|
||||
return _.express_formula($0);
|
||||
}).replace(/\\/g, '/') ];
|
||||
};
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 隨機生成 count 個不同之數字。
|
||||
*
|
||||
* @param {String}pattern
|
||||
* 生成數字之 pattern
|
||||
* @param {Number}count
|
||||
* 生成個數,預設 2。僅要一個時直接 call .parse_problem() 即可。
|
||||
* @param {Function}comparator
|
||||
* 回傳以 comparator 排序後的數列。
|
||||
* @return {Array} [numbers] 排序過之數字
|
||||
*/
|
||||
get_different_numbers = function(pattern, count, comparator) {
|
||||
if (!count || isNaN(count))
|
||||
count = 2;
|
||||
|
||||
var i = 0, s, seeds = [], seed_hash = {}, limit;
|
||||
for (; i < count; i++) {
|
||||
limit = 50;
|
||||
while (limit--
|
||||
//
|
||||
&& (!(s = parseFloat(_.parse_problem(pattern, 1)).to_fixed())
|
||||
//
|
||||
|| (s in seed_hash)))
|
||||
;
|
||||
if (!limit) {
|
||||
library_namespace
|
||||
.warn('Fault to generate number using pattern ['
|
||||
+ pattern + ']!');
|
||||
}
|
||||
|
||||
seeds.push(s);
|
||||
seed_hash[s] = i;
|
||||
}
|
||||
|
||||
if (comparator) {
|
||||
library_namespace.is_Function(comparator) ? seeds.sort(comparator)
|
||||
: seeds.sort();
|
||||
}
|
||||
|
||||
return seeds;
|
||||
};
|
||||
|
||||
_// JSDT:_module_
|
||||
.
|
||||
/**
|
||||
* 演算解答.
|
||||
*
|
||||
* @param {String}problem
|
||||
* problem
|
||||
* @returns {String}answer in float, (帶)分數, ..
|
||||
* @see data.math.quotient
|
||||
*/
|
||||
evaluate_value = function(problem) {
|
||||
// if(!isNaN(problem))return problem;
|
||||
if (!problem)
|
||||
return;
|
||||
|
||||
problem = _.parse_problem.express(String(problem))[0];
|
||||
|
||||
var answer, m = problem.match(/^(\d+(\.\d+)?)\/(\d+)$/);
|
||||
|
||||
function adding(v) {
|
||||
if (v !== Math.floor(v)) {
|
||||
m = to_rational_number(v);
|
||||
// 處理真分數、假分數。
|
||||
answer += ' '
|
||||
// 約等於的符號是≈或≒,不等於的符號是≠。
|
||||
+ (m[2] < 1e-13 ? ' = ' : ' <span title="大約">≈</span> ')
|
||||
// http://zh.wikipedia.org/wiki/%E7%AD%89%E4%BA%8E
|
||||
+ '<span class="fraction">' + m[0] + ' / ' + m[1] + '</span>';
|
||||
|
||||
// 處理帶分數。 mixed numeral (often called a mixed number, also
|
||||
// called a mixed fraction)
|
||||
if (m[0] >= m[1]) {
|
||||
problem = m[0] % m[1];
|
||||
answer += ' = <span class="mixed_numeral">'
|
||||
//
|
||||
+ (m[0] - problem) / m[1]
|
||||
//
|
||||
+ ' + ' + problem + ' / ' + m[1] + '</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m) {
|
||||
answer = Math.floor(m[1] / m[3]).to_fixed(12) + ' ... '
|
||||
//
|
||||
+ (m[1] % m[3]).to_fixed()
|
||||
//
|
||||
+ (m[1] % m[3] ? ' <span title="大約">≈</span> '
|
||||
//
|
||||
+ (m[1] / m[3]).to_fixed() : ''), adding(m[1] / m[3]);
|
||||
} else {
|
||||
try {
|
||||
// 直接執行
|
||||
// 須預防 6/2/3 的情況
|
||||
m = 'return('
|
||||
+ problem.replace(/(\d+)\s+(\d+\/\d+)/g, '($1+$2)')
|
||||
+ '\n)';
|
||||
m = (new Function(m))();
|
||||
if (false) {
|
||||
library_namespace.debug('{return('
|
||||
+ problem.replace(/(\d+)\s+(\d+\/\d+)/g, '($1+$2)')
|
||||
+ ');}' + ' = ' + m);
|
||||
}
|
||||
if (isNaN(m)) {
|
||||
library_namespace
|
||||
.warn('evaluate_value: No problem generated for ['
|
||||
+ problem + '].');
|
||||
} else {
|
||||
answer = m.to_fixed();
|
||||
adding(m);
|
||||
}
|
||||
} catch (e) {
|
||||
library_namespace.warn('evaluate_value: 無法演算 [' + problem
|
||||
+ '] (' + m + '). ' + e);
|
||||
answer = '`' + problem + '`';
|
||||
}
|
||||
}
|
||||
|
||||
return answer;
|
||||
};
|
||||
|
||||
return (_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
/**
|
||||
* @name CeL function for checking MIME type
|
||||
*
|
||||
* @fileoverview 本檔案包含了 checking MIME type 用的程式庫。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2017/1/27 7:55:6
|
||||
* @see https://en.wikipedia.org/wiki/Media_type
|
||||
* https://www.iana.org/assignments/media-types/media-types.xhtml
|
||||
* https://github.com/jshttp/mime-types
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name.
|
||||
name : 'application.net.MIME',
|
||||
|
||||
// 可以參考 CeL.application.storage.file
|
||||
require : '',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
// no_extend : '*',
|
||||
|
||||
// requiring
|
||||
// require : '',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
/**
|
||||
* null module constructor
|
||||
*
|
||||
* @class XML 操作相關之 function。
|
||||
*/
|
||||
var _// JSDT:_module_
|
||||
= function() {
|
||||
// null module constructor
|
||||
};
|
||||
|
||||
/**
|
||||
* for JSDT: 有 prototype 才會將之當作 Class
|
||||
*/
|
||||
_// JSDT:_module_
|
||||
.prototype = {};
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @see 用 CeL.application.storage.file verify_file_type() 可以驗證檔案格式。
|
||||
*/
|
||||
function extension_of(url) {
|
||||
if (!url) {
|
||||
return;
|
||||
}
|
||||
|
||||
url = String(url);
|
||||
if (url.includes('://')) {
|
||||
url = url.replace(/[#?].*$/, '');
|
||||
}
|
||||
var matched = url.match(/\.([^.]+)$/i);
|
||||
if (matched) {
|
||||
if (/[a-z\d\-]+/i.test(matched[1])) {
|
||||
return matched[1];
|
||||
}
|
||||
} else if (/^[a-z\d\-]+$/i.test(url)) {
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
_.file_name_extension_of = extension_of;
|
||||
|
||||
// 由 file name extension or url 簡易判別,可能出錯。
|
||||
function MIME_type_of_extension(url, options) {
|
||||
var extension = extension_of(url);
|
||||
if (!extension) {
|
||||
return;
|
||||
}
|
||||
|
||||
// no .trim()
|
||||
extension = extension.toLowerCase();
|
||||
|
||||
// common MIME types
|
||||
// 常用 MIME types
|
||||
switch (extension) {
|
||||
|
||||
// https://en.wikipedia.org/wiki/Image_file_formats
|
||||
case 'jpg':
|
||||
extension = 'jpeg';
|
||||
case 'jpeg':
|
||||
case 'png':
|
||||
case 'gif':
|
||||
case 'webp': // https://en.wikipedia.org/wiki/WebP
|
||||
case 'bmp':
|
||||
// png → image/png
|
||||
return 'image/' + extension;
|
||||
|
||||
case 'ico':
|
||||
case 'icon':
|
||||
// favicon: image/vnd.microsoft.icon
|
||||
return 'image/x-icon';
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
case 'mp3':
|
||||
return 'audio/mpeg';
|
||||
|
||||
case '3gpp':
|
||||
case 'ac3':
|
||||
case 'ogg':
|
||||
return 'audio/' + extension;
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
case 'avi':
|
||||
case 'mp4':
|
||||
case 'mpeg':
|
||||
return 'video/' + extension;
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
case 'txt':
|
||||
return 'text/plain';
|
||||
|
||||
case 'htm':
|
||||
extension = 'html';
|
||||
case 'html':
|
||||
//
|
||||
case 'css':
|
||||
case 'csv':
|
||||
return 'text/' + extension;
|
||||
|
||||
case 'svg':
|
||||
return 'image/svg+xml';
|
||||
|
||||
case 'xhtml':
|
||||
return 'application/xhtml+xml';
|
||||
|
||||
case 'rtf':
|
||||
case 'pdf':
|
||||
case 'xml':
|
||||
return 'application/' + extension;
|
||||
|
||||
// ---------------------------------------------
|
||||
|
||||
case 'otf':
|
||||
case 'ttf':
|
||||
case 'woff':
|
||||
case 'woff2':
|
||||
return 'font/' + extension;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
_.MIME_of = MIME_type_of_extension;
|
||||
|
||||
// top-level type name
|
||||
function main_MIME_type_of_extension(url) {
|
||||
var type = MIME_type_of_extension(url);
|
||||
if (!type) {
|
||||
return;
|
||||
}
|
||||
var matched = type.match(/^([a-z]+)\//);
|
||||
if (matched) {
|
||||
return matched[1];
|
||||
}
|
||||
}
|
||||
|
||||
_.main_MIME_type_of = main_MIME_type_of_extension;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
return (_// JSDT:_module_
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,388 @@
|
||||
/**
|
||||
* @name CeL function for checking archive sites
|
||||
*
|
||||
* @fileoverview 本檔案包含了 checking archive sites 用的程式庫。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
Memento API
|
||||
https://en.wikipedia.org/wiki/Memento_Project
|
||||
|
||||
http://www.webcitation.org/archive
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2016/8/6 10:4:5
|
||||
* @see https://en.wikipedia.org/wiki/Archive_site
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name.
|
||||
name : 'application.net.archive',
|
||||
// .includes() @ data.code.compatibility
|
||||
// .between() @ data.native
|
||||
require : 'data.code.compatibility.|data.native.'
|
||||
// optional 選用:
|
||||
+ '|application.net.Ajax.get_URL',
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code,
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : '*'
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var get_URL = this.r('get_URL');
|
||||
|
||||
function archive_sites() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the status is OK.
|
||||
*
|
||||
* @param status
|
||||
* status to check
|
||||
*
|
||||
* @returns {Boolean}the status is OK.
|
||||
*/
|
||||
function status_is_OK(status) {
|
||||
return status >= 200 && status < 300;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// archive_org_queue = [ [ URL, {Array}callback_list ] ]
|
||||
var archive_org_queue = [], archive_org_last_call,
|
||||
// running now. token. 表示是否正執行中。
|
||||
archive_org_running;
|
||||
|
||||
function archive_org_operator() {
|
||||
// 已有其他 thread 執行中。
|
||||
if (archive_org_running
|
||||
// 已無任務。
|
||||
|| archive_org_queue.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// -------------------
|
||||
// 確認已經等夠時間了。
|
||||
|
||||
var need_wait = archive_org.lag_interval
|
||||
- (Date.now() - archive_org_last_call);
|
||||
|
||||
function to_wait() {
|
||||
library_namespace.debug('Wait ' + need_wait + ' ms: [' + URL + ']',
|
||||
3, 'archive_org_operator');
|
||||
setTimeout(function() {
|
||||
archive_org_operator();
|
||||
}, need_wait);
|
||||
}
|
||||
|
||||
if (need_wait > 0) {
|
||||
to_wait();
|
||||
return;
|
||||
}
|
||||
archive_org_last_call = Date.now();
|
||||
|
||||
// -------------------
|
||||
|
||||
archive_org_running = true;
|
||||
|
||||
// [ URL, {Array}callback_list ]
|
||||
var checking_now = archive_org_queue.shift(),
|
||||
//
|
||||
URL = checking_now[0];
|
||||
|
||||
library_namespace.debug('Process [' + URL + '], '
|
||||
+ archive_org_queue.length + ' left.', 3,
|
||||
'archive_org_operator');
|
||||
|
||||
get_URL(archive_org.API_URL + URL, function(data, error) {
|
||||
// 若正執行者,必須負責執行完註銷掉 archive_org_running。
|
||||
archive_org_running = false;
|
||||
|
||||
if (library_namespace.is_debug(2)) {
|
||||
library_namespace.debug(URL + ': '
|
||||
+ (error ? 'Error: ' + error : 'OK'), 0,
|
||||
'archive_org_operator');
|
||||
console.log(data);
|
||||
}
|
||||
|
||||
// 短時間內call過多次(應間隔 .5 s?)將503?
|
||||
if (!error && data.status === 503) {
|
||||
// rollback
|
||||
archive_org_queue.unshift(checking_now);
|
||||
need_wait = archive_org.lag_interval;
|
||||
library_namespace.debug('Get status ' + data.status
|
||||
+ '. Try again.', 3, 'archive_org_operator');
|
||||
to_wait();
|
||||
return;
|
||||
}
|
||||
|
||||
function do_callback(data, error) {
|
||||
library_namespace.debug(URL + ': 登記 result: ' + [ data, error ]
|
||||
+ '。', 2, 'archive_org_operator');
|
||||
archive_org.cached[URL] = [ data, error ];
|
||||
|
||||
// 執行callback
|
||||
checking_now[1].forEach(function(callback) {
|
||||
callback.apply(null, arguments);
|
||||
});
|
||||
|
||||
// 執行其他剩下的。
|
||||
if (archive_org_queue.length > 0) {
|
||||
archive_org_operator();
|
||||
}
|
||||
}
|
||||
|
||||
if (error || !status_is_OK(data.status)) {
|
||||
do_callback(undefined, error || data.status || true);
|
||||
return;
|
||||
}
|
||||
|
||||
data = JSON.parse(data.responseText);
|
||||
if (!data || !(data = data.archived_snapshots.closest)
|
||||
|| !data.available || !data.url) {
|
||||
// 經嘗試未能取得 snapshots。
|
||||
do_callback(undefined, data);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data.url.startsWith(archive_org.URL_prefix)) {
|
||||
library_namespace.warn('archive_org_operator: ' + URL
|
||||
+ ': archived URL does not starts with "'
|
||||
+ archive_org.URL_prefix + '": ' + data.url + '.');
|
||||
}
|
||||
|
||||
var archived_url = data.archived_url = data.url.slice(
|
||||
archive_org.URL_prefix.length).between('/')
|
||||
// e.g., "/index.html#", "/index.html?"
|
||||
.replace(/#(.*)$/, '').replace(/\?$/, '');
|
||||
if (URL !== archived_url
|
||||
// 可能自動加 port。
|
||||
&& URL !== (archived_url = archived_url.replace(/:\d+\//, '/'))
|
||||
// 可能自動轉 https。
|
||||
&& URL !== archived_url.replace('http://', 'https://')) {
|
||||
library_namespace.warn('archive_org_operator: URL [' + URL
|
||||
+ '] != archived [' + data.archived_url + '].');
|
||||
}
|
||||
|
||||
do_callback(data);
|
||||
|
||||
}, null, null, {
|
||||
// use new agent
|
||||
agent : true,
|
||||
no_warning : true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* use Wayback Availability JSON API to check if there is any archived
|
||||
* snapshot.
|
||||
*
|
||||
* archive.org 此 API 只能檢查是否有 snapshot,不能製造 snapshot。
|
||||
*
|
||||
* @param {String}URL
|
||||
* 欲請求之目的 URL
|
||||
* @param {Function}[callback]
|
||||
* 回調函數。 callback({Object|Undefined}closest_snapshot_data,
|
||||
* error);
|
||||
* @param {Object}[options]
|
||||
* 附加參數/設定選擇性/特殊功能與選項
|
||||
*
|
||||
* @see https://archive.org/help/wayback_api.php
|
||||
*/
|
||||
function archive_org(URL, callback, options) {
|
||||
var cached_data = archive_org.cached[URL];
|
||||
// 看能不能直接處理掉。
|
||||
if (cached_data && !cached_data.checking) {
|
||||
library_namespace.debug('已登記 [' + URL + ']。直接處理掉。', 3,
|
||||
'archive_org');
|
||||
callback.apply(null, cached_data);
|
||||
return;
|
||||
}
|
||||
|
||||
// 登記 callback。
|
||||
if (cached_data) {
|
||||
cached_data[1].push(callback);
|
||||
} else {
|
||||
library_namespace.debug('登記 URL [' + URL + '],表示正處理中。', 3,
|
||||
'archive_org');
|
||||
var checking_now = [ URL, [ callback ] ];
|
||||
checking_now.checking = true;
|
||||
archive_org.cached[URL] = checking_now;
|
||||
archive_org_queue.push(checking_now);
|
||||
}
|
||||
|
||||
archive_org_operator();
|
||||
}
|
||||
|
||||
/** {Natural} 延遲 time in ms。 */
|
||||
archive_org.lag_interval = 500;
|
||||
|
||||
archive_org.API_URL = 'http://archive.org/wayback/available?url=';
|
||||
|
||||
/** {String}URL prefix of cached snapshot. */
|
||||
archive_org.URL_prefix = 'http://web.archive.org/web/';
|
||||
|
||||
/** {Object} cached[URL] = [ return of archived data, error ] */
|
||||
archive_org.cached = Object.create(null);
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
if (false) {
|
||||
var dns = require('dns');
|
||||
// 短時間內 request 過多 host names 會造成 Tool Labs 常常 DNS error,
|
||||
// getaddrinfo ENOTFOUND。
|
||||
dns.setServers(dns.getServers().append([ '8.8.8.8', '8.8.4.4' ]));
|
||||
}
|
||||
|
||||
/**
|
||||
* 檢查 URL 之 access 狀態。若不可得,則預先測試 archive sites 是否有 cached data。
|
||||
*
|
||||
* @param {String}URL
|
||||
* 欲請求之目的 URL
|
||||
* @param {Function}[callback]
|
||||
* 回調函數。 callback(link_status, cached_data);
|
||||
* @param {Object}[options]
|
||||
* 附加參數/設定選擇性/特殊功能與選項
|
||||
*/
|
||||
function check_URL(URL, callback, options) {
|
||||
// normalized_URL
|
||||
URL = check_URL.normalize_URL(URL);
|
||||
if (!URL || !/^([a-z]+:)?\/\//i.test(URL)
|
||||
|| URL.startsWith(archive_org.URL_prefix)) {
|
||||
library_namespace.warn('check_URL: Cannot check [' + URL + ']');
|
||||
return;
|
||||
}
|
||||
|
||||
library_namespace.debug('check [' + URL + ']', 3, 'check_URL');
|
||||
|
||||
function do_callback(status, OK) {
|
||||
if (!checked_URL) {
|
||||
// register URL status
|
||||
check_URL.link_status[URL] = status;
|
||||
}
|
||||
|
||||
if (OK) {
|
||||
callback(status);
|
||||
|
||||
} else {
|
||||
archive_org(URL, function(closest_snapshot_data, error) {
|
||||
// 會先 check archive site 再註銷此 URL,
|
||||
// 確保之後處理時已經有 archived data。
|
||||
callback(status, closest_snapshot_data);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var checked_URL;
|
||||
if (URL in check_URL.link_status) {
|
||||
checked_URL = URL;
|
||||
} else if ((checked_URL = URL.replace(':80/', '/')) in check_URL.link_status) {
|
||||
// 去掉 port 80。
|
||||
URL = checked_URL;
|
||||
} else {
|
||||
checked_URL = null;
|
||||
}
|
||||
|
||||
if (checked_URL) {
|
||||
checked_URL = check_URL.link_status[URL];
|
||||
do_callback(checked_URL, status_is_OK(checked_URL));
|
||||
return;
|
||||
}
|
||||
|
||||
options = library_namespace.setup_options(options);
|
||||
get_URL(URL, function(data, error) {
|
||||
if (error || typeof data.responseText !== 'string') {
|
||||
do_callback(error || 'check_URL: Unknown error');
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (false && typeof options.content_processor === 'function') {
|
||||
options.content_processor(
|
||||
// (contains, URL, status)
|
||||
data.responseText, URL, data.status);
|
||||
}
|
||||
|
||||
if (!status_is_OK(data.status)) {
|
||||
do_callback(data.status);
|
||||
|
||||
} else if (options.ignore_empty || data.responseText.trim()) {
|
||||
do_callback(data.status, true);
|
||||
|
||||
} else {
|
||||
do_callback('check_URL: Contents is empty');
|
||||
}
|
||||
|
||||
}, null, null, {
|
||||
content_processor : options.content_processor,
|
||||
write_to_directory : options.write_to_directory,
|
||||
// use new agent
|
||||
agent : true,
|
||||
no_warning : true,
|
||||
headers : {
|
||||
'User-Agent' : archive_sites.default_user_agent
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** {Object}check_URL.link_status[normalized_URL] = status/error */
|
||||
check_URL.link_status = Object.create(null);
|
||||
|
||||
/**
|
||||
* normalize URL to check
|
||||
*
|
||||
* @param {String}URL
|
||||
* 欲請求之目的 URL. requested URL
|
||||
*
|
||||
* @returns {String}normalized_URL
|
||||
*/
|
||||
check_URL.normalize_URL = function(URL) {
|
||||
if (!URL) {
|
||||
return URL;
|
||||
}
|
||||
|
||||
URL = String(URL);
|
||||
// URL = URL.toString();
|
||||
|
||||
URL = URL.replace(/#.*/g, '');
|
||||
|
||||
try {
|
||||
URL = decodeURI(URL);
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
// 去掉 default port。
|
||||
URL = URL.replace(/^([^\/]*\/\/[^\/:]+):80/, '$1');
|
||||
|
||||
if (URL.startsWith('//')) {
|
||||
// 自動加協定。
|
||||
URL = 'http:' + URL;
|
||||
}
|
||||
|
||||
return URL;
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
Object.assign(archive_sites, {
|
||||
// 為了模擬一般情況下的 access,因此設定 user agent,避免特殊待遇。
|
||||
default_user_agent : 'Mozilla/5.0 (Windows NT 6.3)',
|
||||
status_is_OK : status_is_OK,
|
||||
|
||||
archive_org : archive_org,
|
||||
|
||||
check_URL : check_URL
|
||||
});
|
||||
|
||||
return archive_sites;
|
||||
}
|
||||
@@ -0,0 +1,444 @@
|
||||
/**
|
||||
* @name CeL function for MediaWiki (Wikipedia / 維基百科)
|
||||
*
|
||||
* @fileoverview 本檔案包含了 MediaWiki 自動化作業用的程式庫,主要用於編寫[[維基百科:機器人]]
|
||||
* ([[WP:{{{name|{{int:Group-bot}}}}}|{{{name|{{int:Group-bot}}}}}]])。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
wiki_API.work() 遇到 Invalid token 之類問題,中途跳出 abort 時,無法紀錄。應將紀錄顯示於 console 或 local file。
|
||||
wiki_API.page() 整合各 action=query 至單一公用 function。
|
||||
[[mw:Manual:Pywikibot/zh]]
|
||||
|
||||
[[mw:Help:OAuth]]
|
||||
https://www.mediawiki.org/wiki/OAuth/Owner-only_consumers
|
||||
https://meta.wikimedia.org/wiki/Steward_requests/Miscellaneous#OAuth_permissions
|
||||
[[m:Special:OAuthConsumerRegistration/propose]] (using an owner-only consumers) get (consumer_key, consumer_secret, access_token, access_secret)
|
||||
|
||||
Wikimedia REST API
|
||||
https://www.mediawiki.org/wiki/RESTBase
|
||||
|
||||
https://zh.wikipedia.org/w/index.php?title=title&action=history&hilight=123,456
|
||||
|
||||
|
||||
-{zh-hans:访问;zh-hant:訪問;zh-tw:瀏覽}-量
|
||||
https://wikitech.wikimedia.org/wiki/Analytics/PageviewAPI
|
||||
https://en.wikipedia.org/wiki/Wikipedia:Pageview_statistics
|
||||
https://dumps.wikimedia.org/other/pagecounts-raw/
|
||||
https://tools.wmflabs.org/pageviews
|
||||
https://wikitech.wikimedia.org/wiki/Analytics/Data/Pagecounts-raw
|
||||
https://meta.wikimedia.org/wiki/Research:Page_view
|
||||
|
||||
WikiData Remote editor
|
||||
http://tools.wmflabs.org/widar/
|
||||
|
||||
|
||||
get user infomation:
|
||||
https://www.mediawiki.org/w/api.php?action=help&modules=query%2Busers
|
||||
https://zh.wikipedia.org/w/api.php?action=query&format=json&list=users&usprop=blockinfo|groups|implicitgroups|rights|editcount|registration|emailable|gender|centralids|cancreate&usattachedwiki=zhwiki&ususers=username|username
|
||||
https://www.mediawiki.org/w/api.php?action=help&modules=query%2Busercontribs
|
||||
https://zh.wikipedia.org/w/api.php?action=query&format=json&list=usercontribs&uclimit=1&ucdir=newer&ucprop=ids|title|timestamp|comment|parsedcomment|size|sizediff|flags|tags&ucuser=username
|
||||
|
||||
對Action API的更改,請訂閱
|
||||
https://lists.wikimedia.org/pipermail/mediawiki-api-announce/
|
||||
|
||||
雙重重定向/重新導向/転送
|
||||
特別:二重リダイレクト
|
||||
Special:DoubleRedirects
|
||||
Special:BrokenRedirects
|
||||
https://www.mediawiki.org/w/api.php?action=help&modules=query%2Bquerypage
|
||||
[[mw:User:Duplicatebug/API Overview/action]]
|
||||
https://test.wikipedia.org/w/api.php?action=query&list=querypage&qppage=DoubleRedirects&qplimit=max
|
||||
|
||||
|
||||
gadgets 小工具 [[Wikipedia:Tools]], [[Category:Wikipedia scripts]], [[mw:ResourceLoader/Core modules]]
|
||||
[[Special:MyPage/common.js]] [[使用說明:維基用戶腳本開發指南]]
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
// https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.loader
|
||||
mediaWiki.loader.load('https://kanasimi.github.io/CeJS/ce.js')
|
||||
CeL.run('application.net.wiki');
|
||||
CeL.wiki.page('Wikipedia:機器人',function(page_data){console.log(page_data);},{redirects:true,section:0})
|
||||
|
||||
// wikibits從2013年就棄用
|
||||
// https://www.mediawiki.org/wiki/ResourceLoader/Legacy_JavaScript#wikibits.js
|
||||
// NG: importScript('User:cewbot/*.js');
|
||||
|
||||
你可以在維基媒體的wiki網站URL最後增加?safemode=1來關閉你個人的CSS和JavaScript。範例:https://zh.wikipedia.org/wiki/文學?safemode=1。上面一行意思是你可以測試是否是你的使用者腳本或套件造成問題,而不必解除安裝。
|
||||
|
||||
</code>
|
||||
*
|
||||
* @see https://github.com/siddharthvp/mwn
|
||||
*/
|
||||
|
||||
// More examples: see /_test suite/test.js
|
||||
// Wikipedia bots demo: https://github.com/kanasimi/wikibot
|
||||
// JavaScript MediaWiki API for ECMAScript 2017+ :
|
||||
// https://github.com/kanasimi/wikiapi
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.net.wiki',
|
||||
|
||||
// .includes() @ CeL.data.code.compatibility
|
||||
// .between() @ CeL.data.native
|
||||
// .append() @ CeL.data.native
|
||||
require : 'data.code.compatibility.|data.native.'
|
||||
// (new Date).format('%4Y%2m%2d'), (new Date).format() @ CeL.data.date
|
||||
// optional 選用: .show_value() @ CeL.interact.DOM, CeL.application.debug
|
||||
// optional 選用: CeL.wiki.cache(): CeL.application.platform.nodejs.fs_mkdir()
|
||||
// optional 選用: CeL.wiki.traversal(): CeL.application.platform.nodejs
|
||||
// optional 選用: wiki_API.work(): gettext():
|
||||
// optional 選用: CeL.application.storage
|
||||
// CeL.application.locale.gettext()
|
||||
// CeL.date.String_to_Date(), Julian_day(), .to_millisecond(): CeL.data.date
|
||||
+ '|data.date.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : '*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// https://github.com/Microsoft/TypeScript/wiki/JSDoc-support-in-JavaScript
|
||||
/**
|
||||
* web Wikipedia / 維基百科 用的 functions。<br />
|
||||
* 可執行環境: node.js, JScript。
|
||||
*
|
||||
* TODO: new wiki_API(API_URL || login_options);<br />
|
||||
* wiki_session.login(user_name, password, API_URL);
|
||||
*
|
||||
* @param {String}user_name
|
||||
* user name
|
||||
* @param {String}password
|
||||
* user password
|
||||
* @param {String}[API_URL]
|
||||
* language code or API Endpoint URL
|
||||
*
|
||||
* @returns {wiki_API} wiki site API
|
||||
* @template wiki_API
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function wiki_API(user_name, password, API_URL) {
|
||||
if (!this || this.constructor !== wiki_API) {
|
||||
return wiki_API.query.apply(null, arguments);
|
||||
}
|
||||
|
||||
// TODO: this.login(user_name, password, API_URL);
|
||||
|
||||
var login_options;
|
||||
if (API_URL && typeof API_URL === 'object') {
|
||||
// session = new wiki_API(user_name, password, login_options);
|
||||
login_options = API_URL;
|
||||
API_URL = null;
|
||||
} else if (!API_URL && !password && user_name
|
||||
&& typeof user_name === 'object') {
|
||||
// session = new wiki_API(login_options);
|
||||
login_options = user_name;
|
||||
user_name = null;
|
||||
// console.log(login_options);
|
||||
} else {
|
||||
login_options = Object.create(null);
|
||||
}
|
||||
|
||||
user_name = user_name || login_options.user_name;
|
||||
password = password || login_options.password;
|
||||
API_URL = API_URL || login_options.API_URL/* || login_options.project */;
|
||||
|
||||
// console.trace([ user_name, password, API_URL ]);
|
||||
library_namespace.debug('URL of service endpoint: ' + API_URL
|
||||
+ ', default language: ' + wiki_API.language, 3, 'wiki_API');
|
||||
|
||||
// action queue 佇列。應以 append,而非整個換掉的方式更改。
|
||||
this.actions = [];
|
||||
// @see wiki_API.prototype.next
|
||||
if (login_options.is_running) {
|
||||
// Is calling from wiki_API.login()
|
||||
// login 前便執行其他作業,可能導致 Session=deleted。 e.g., running
|
||||
// login_options.configuration_adapter() @ 20201008.fix_anchor.js
|
||||
if (typeof login_options.is_running === 'string')
|
||||
this.actions.unshift([ login_options.is_running ]);
|
||||
// 執行權交給 wiki_API.login()。
|
||||
this.running = true;
|
||||
}
|
||||
|
||||
// 權杖
|
||||
this.token = {
|
||||
// lgusername
|
||||
lgname : user_name,
|
||||
// user_password
|
||||
lgpassword : password
|
||||
};
|
||||
|
||||
// console.trace(API_URL);
|
||||
if (!API_URL && !('language' in this)
|
||||
// wikidata 不設定 language。
|
||||
&& !this[wiki_API.KEY_HOST_SESSION]) {
|
||||
API_URL = wiki_API.language;
|
||||
// 假若未設定 API_URL 或 user_name,那就不初始化。等 .login 才初始化。
|
||||
// 若想基本的初始化,最起碼必須設定 API_URL。
|
||||
login_options.need_initialize = password && user_name;
|
||||
} else if (!('need_initialize' in login_options)) {
|
||||
login_options.need_initialize = true;
|
||||
}
|
||||
|
||||
if ('use_SQL' in login_options) {
|
||||
this.use_SQL = login_options.use_SQL;
|
||||
} else if (API_URL
|
||||
// assert: typeof API_URL === 'string'
|
||||
&& API_URL.includes('://')) {
|
||||
// assert: Not MediaWiki server. Is outer server.
|
||||
this.use_SQL = false;
|
||||
}
|
||||
|
||||
// console.trace(API_URL);
|
||||
// setup session.
|
||||
if (API_URL) {
|
||||
// e.g., 'cmn'
|
||||
if (API_URL in wiki_API.language_code_to_site_alias)
|
||||
API_URL = wiki_API.language_code_to_site_alias[API_URL];
|
||||
wiki_API.setup_API_language(this /* session */, API_URL);
|
||||
wiki_API.setup_API_URL(this /* session */, API_URL);
|
||||
}
|
||||
|
||||
[ 'site_name', 'data_API_URL', 'SPARQL_API_URL',
|
||||
// Must after wiki_API.setup_API_language()!
|
||||
'language' ]
|
||||
//
|
||||
.forEach(function(property) {
|
||||
if (property in login_options)
|
||||
this[property] = login_options[property];
|
||||
}, this);
|
||||
// console.trace(this);
|
||||
|
||||
this.general_parameters = Object.clone(wiki_API.general_parameters);
|
||||
library_namespace.import_options(login_options,
|
||||
// @see CeL.application.net.wiki.namespace
|
||||
wiki_API.general_parameters_normalizer, this.general_parameters);
|
||||
if (library_namespace.is_WWW(true) && window.location
|
||||
// For non-authenticated requests, specify the value *. This
|
||||
// will cause the Access-Control-Allow-Origin header to be set,
|
||||
// but Access-Control-Allow-Credentials will be false and all
|
||||
// user-specific data will be restricted.
|
||||
&& this.general_parameters.origin !== '*') {
|
||||
var host;
|
||||
if (!window.location.host
|
||||
// e.g., locale file: window.location.host===""
|
||||
|| (host = new URL(this.API_URL).host)
|
||||
&& host !== window.location.host
|
||||
&& host !== this.general_parameters.origin) {
|
||||
library_namespace.warn([ 'wiki_API: ', {
|
||||
// gettext_config:{"id":"you-may-need-to-set-$1-=-$2"}
|
||||
T : [ 'You may need to set %1 = %2!',
|
||||
//
|
||||
'.origin', JSON.stringify(host) ]
|
||||
} ]);
|
||||
}
|
||||
}
|
||||
|
||||
if (login_options.localStorage_prefix_key && wiki_API.has_storage) {
|
||||
// assert: typeof login_options.localStorage_prefix_key === 'string'
|
||||
// ||
|
||||
// typeof login_options.localStorage_prefix_key === 'number'
|
||||
this.localStorage_prefix = [ library_namespace.Class,
|
||||
wiki_API.site_name(this),
|
||||
login_options.localStorage_prefix_key, '' ]
|
||||
// '.'
|
||||
.join(library_namespace.env.module_name_separator);
|
||||
}
|
||||
|
||||
// ------------------------------------------------
|
||||
// pre-loading functions
|
||||
|
||||
// https://stackoverflow.com/questions/39007637/javascript-set-vs-array-performance
|
||||
// https://jsbench.me/3pkjlwzhbr/1
|
||||
|
||||
// .API_parameters[modules.path].parameter_Map = parameter Map
|
||||
// @see get_API_parameters()
|
||||
this.API_parameters = Object.create(null);
|
||||
// wiki_session.redirects_data[redirect_from] = {String}redirect_to
|
||||
// = main page title without "Template:" prefix
|
||||
// @see CeL.application.net.wiki.task ,
|
||||
// CeL.application.net.wiki.namespace
|
||||
this.redirects_data = Object.create(null);
|
||||
|
||||
if (login_options.need_initialize) {
|
||||
this.run_after_initializing = [];
|
||||
// 注意: new wiki_API() 後之操作,應該採 wiki_session.run()
|
||||
// 的方式,確保此時已經執行過 pre-loading functions @ function wiki_API():
|
||||
// wiki_session.siteinfo(), wiki_session.adapt_task_configurations()
|
||||
this.run(initialize_wiki_API, login_options);
|
||||
} else {
|
||||
// e.g.,
|
||||
// wiki = new CeL.wiki; ...; wiki.login(login_options);
|
||||
}
|
||||
}
|
||||
|
||||
function initialize_wiki_API(options) {
|
||||
var session = this;
|
||||
// console.trace(session.actions);
|
||||
// console.trace(session.running);
|
||||
|
||||
// if (session.API_URL)
|
||||
session.siteinfo(load_template_functions);
|
||||
// console.trace(session.actions);
|
||||
// console.trace(session.running);
|
||||
|
||||
function load_template_functions() {
|
||||
// console.trace(session);
|
||||
// @see CeL.application.net.wiki.template_functions
|
||||
if (session.load_template_functions)
|
||||
session.load_template_functions(null,
|
||||
//
|
||||
adapt_task_configurations);
|
||||
else
|
||||
adapt_task_configurations();
|
||||
}
|
||||
|
||||
function adapt_task_configurations() {
|
||||
// console.trace(options);
|
||||
if (options.task_configuration_page) {
|
||||
session.adapt_task_configurations(
|
||||
options.task_configuration_page,
|
||||
function(configuration) {
|
||||
// console.trace(configuration);
|
||||
if (options.configuration_adapter)
|
||||
options.configuration_adapter(configuration);
|
||||
initialization_complete();
|
||||
});
|
||||
} else {
|
||||
initialization_complete();
|
||||
}
|
||||
}
|
||||
|
||||
function initialization_complete() {
|
||||
library_namespace.debug(wiki_API.site_name(session) + ': '
|
||||
+ '初始化程序登錄完畢。' + '添加之前登錄的 ' + session.actions.length
|
||||
+ ' 個程序到佇列中。', 1, 'initialization_complete');
|
||||
session.actions.append(session.run_after_initializing);
|
||||
delete session.run_after_initializing;
|
||||
// console.trace(session.actions);
|
||||
}
|
||||
}
|
||||
initialize_wiki_API.is_initializing_process = true;
|
||||
|
||||
/**
|
||||
* 檢查若 value 為 session。
|
||||
*
|
||||
* @param value
|
||||
* value to test. 要測試的值。
|
||||
*
|
||||
* @returns {Boolean} value 為 session。
|
||||
*/
|
||||
function is_wiki_API(value) {
|
||||
return value
|
||||
&& ((value instanceof wiki_API) || value.API_URL && value.token);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
// @static
|
||||
Object.assign(wiki_API, {
|
||||
is_wiki_API : is_wiki_API
|
||||
});
|
||||
|
||||
if (library_namespace.is_WWW(true) && typeof mw === 'object' && mw
|
||||
&& typeof mw.config === 'object'
|
||||
&& typeof mw.config.get === 'function'
|
||||
&& typeof mediaWiki === "object" && mediaWiki === mw) {
|
||||
wiki_API.mw_web_session = true;
|
||||
}
|
||||
|
||||
// 等執行再包含入必須的模組。
|
||||
this.finish = function(name_space, waiting, sub_modules_to_full_module_path) {
|
||||
var sub_modules = [ 'namespace', 'parser', 'query', 'page',
|
||||
'page.Page', 'Flow', 'list', 'edit', 'task', 'parser.wikitext',
|
||||
'parser.section', 'parser.misc', 'parser.evaluate' ];
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// auto import SQL 相關函數 @ Toolforge。
|
||||
|
||||
// function setup_wmflabs()
|
||||
|
||||
// only for node.js.
|
||||
// https://wikitech.wikimedia.org/wiki/Help:Toolforge/FAQ#How_can_I_detect_if_I.27m_running_in_Cloud_VPS.3F_And_which_project_.28tools_or_toolsbeta.29.3F
|
||||
if (library_namespace.platform.nodejs) {
|
||||
/** {String}Wikimedia Toolforge name. CeL.wiki.wmflabs */
|
||||
wiki_API.wmflabs = require('fs').existsSync('/etc/wmflabs-project')
|
||||
// e.g., 'tools-bastion-05'.
|
||||
// if use `process.env.INSTANCEPROJECT`,
|
||||
// you may get 'tools' or 'tools-login'.
|
||||
&& (library_namespace.env.INSTANCENAME
|
||||
// 以 /usr/bin/jsub 執行時可得。
|
||||
// e.g., 'tools-exec-1210.eqiad.wmflabs'
|
||||
|| library_namespace.env.HOSTNAME || true);
|
||||
}
|
||||
|
||||
if (wiki_API.wmflabs) {
|
||||
// import CeL.application.net.wiki.Toolforge
|
||||
sub_modules.push('Toolforge');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Essential dependency chain
|
||||
library_namespace.debug({
|
||||
T :
|
||||
// gettext_config:{"id":"load-the-main-functions-and-necessary-dependencies-to-operate-mediawiki"}
|
||||
'Load the main functions and necessary dependencies to operate MediaWiki.'
|
||||
}, 1, 'wiki_API');
|
||||
// library_namespace.set_debug(2);
|
||||
library_namespace.run(sub_modules_to_full_module_path(sub_modules),
|
||||
// The `wiki_API.mw_web_session` is a session that operates in a web
|
||||
// environment. For example, the Wikipedia widget.
|
||||
function() {
|
||||
if (wiki_API.mw_web_session) {
|
||||
wiki_API.mw_web_session = new wiki_API({
|
||||
API_URL :
|
||||
// mediaWiki.config.get('wgServer')
|
||||
location.origin
|
||||
// https://www.mediawiki.org/wiki/Manual:$wgScriptPath
|
||||
+ mediaWiki.config.get('wgScriptPath')
|
||||
// https://www.mediawiki.org/wiki/Manual:Api.php
|
||||
+ '/api.php',
|
||||
localStorage_prefix_key : 'mw_web_session'
|
||||
});
|
||||
// fill tokens
|
||||
for ( var token_name in mediaWiki.user.tokens.values) {
|
||||
wiki_API.mw_web_session.token[
|
||||
// 'csrfToken' → 'csrftoken'
|
||||
token_name.toLowerCase()]
|
||||
//
|
||||
= mediaWiki.user.tokens.values[token_name];
|
||||
}
|
||||
// 預設對所有網站會使用相同的 cookie
|
||||
|
||||
// @see
|
||||
// https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.Api
|
||||
}
|
||||
library_namespace.debug({
|
||||
// gettext_config:{"id":"all-wiki-submodules-are-loaded"}
|
||||
T : 'All wiki submodules are loaded.'
|
||||
}, 1, 'wiki_API');
|
||||
}, waiting);
|
||||
return waiting;
|
||||
};
|
||||
|
||||
return wiki_API;
|
||||
}
|
||||
@@ -0,0 +1,412 @@
|
||||
/**
|
||||
* @name CeL function for MediaWiki (Wikipedia / 維基百科): Flow, Structured
|
||||
* Discussions
|
||||
*
|
||||
* @fileoverview 本檔案包含了 MediaWiki 自動化作業用程式庫的子程式庫。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2019/10/11 拆分自 CeL.application.net.wiki
|
||||
*/
|
||||
|
||||
// More examples: see /_test suite/test.js
|
||||
// Wikipedia bots demo: https://github.com/kanasimi/wikibot
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.net.wiki.Flow',
|
||||
|
||||
require : 'data.native.' + '|application.net.wiki.'
|
||||
// load MediaWiki module basic functions
|
||||
+ '|application.net.wiki.namespace.'
|
||||
//
|
||||
+ '|application.net.wiki.query.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : 'this,*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var wiki_API = library_namespace.application.net.wiki, KEY_SESSION = wiki_API.KEY_SESSION;
|
||||
// @inner
|
||||
var is_api_and_title = wiki_API.is_api_and_title, normalize_title_parameter = wiki_API.normalize_title_parameter;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Flow page support. Flow 功能支援。
|
||||
// [[mediawikiwiki:Extension:Flow/API]]
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=flow
|
||||
|
||||
// https://zh.wikipedia.org/w/api.php?action=query&prop=flowinfo&titles=Wikipedia_talk:Flow_tests
|
||||
// https://zh.wikipedia.org/w/api.php?action=query&prop=info&titles=Wikipedia_talk:Flow_tests
|
||||
// https://zh.wikipedia.org/w/api.php?action=flow&submodule=view-topiclist&page=Wikipedia_talk:Flow_tests&vtlformat=wikitext&utf8=1
|
||||
// .roots[0]
|
||||
// https://zh.wikipedia.org/w/api.php?action=flow&submodule=view-topic&page=Topic:sqs6skdav48d3xzn&vtformat=wikitext&utf8=1
|
||||
|
||||
// https://www.mediawiki.org/w/api.php?action=flow&submodule=view-header&page=Talk:Sandbox&vhformat=wikitext&utf8=1
|
||||
// https://www.mediawiki.org/w/api.php?action=flow&submodule=view-topiclist&utf8=1&page=Talk:Sandbox
|
||||
|
||||
/**
|
||||
* get the infomation of Flow.
|
||||
*
|
||||
* @param {String|Array}title
|
||||
* page title 頁面標題。可為話題id/頁面標題+話題標題。<br />
|
||||
* {String}title or [ {String}API_URL, {String}title or
|
||||
* {Object}page_data ]
|
||||
* @param {Function}callback
|
||||
* 回調函數。 callback({Object}page_data)
|
||||
* @param {Object}[options]
|
||||
* 附加參數/設定選擇性/特殊功能與選項
|
||||
*/
|
||||
function Flow_info(title, callback, options) {
|
||||
var action = normalize_title_parameter(title, options);
|
||||
if (!action) {
|
||||
throw 'Flow_info: Invalid title: ' + wiki_API.title_link_of(title);
|
||||
}
|
||||
|
||||
// [[mw:Extension:StructuredDiscussions/API#Detection]]
|
||||
// 'prop=flowinfo' is deprecated. use 'action=query&prop=info'.
|
||||
// The content model will be 'flow-board' if it's enabled.
|
||||
action[1] = 'action=query&prop=info&' + action[1];
|
||||
|
||||
wiki_API.query(action, typeof callback === 'function'
|
||||
//
|
||||
&& function(data) {
|
||||
if (library_namespace.is_debug(2)
|
||||
// .show_value() @ interact.DOM, application.debug
|
||||
&& library_namespace.show_value)
|
||||
library_namespace.show_value(data, 'Flow_info: data');
|
||||
|
||||
var error = data && data.error;
|
||||
// 檢查伺服器回應是否有錯誤資訊。
|
||||
if (error) {
|
||||
library_namespace.error('Flow_info: ['
|
||||
//
|
||||
+ error.code + '] ' + error.info);
|
||||
/**
|
||||
* e.g., Too many values supplied for parameter 'pageids': the
|
||||
* limit is 50
|
||||
*/
|
||||
if (data.warnings
|
||||
//
|
||||
&& data.warnings.query && data.warnings.query['*'])
|
||||
library_namespace.warn(data.warnings.query['*']);
|
||||
callback(data, error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data || !data.query || !data.query.pages) {
|
||||
library_namespace.warn('Flow_info: Unknown response: ['
|
||||
//
|
||||
+ (typeof data === 'object'
|
||||
//
|
||||
&& typeof JSON !== 'undefined'
|
||||
//
|
||||
? JSON.stringify(data) : data) + ']');
|
||||
if (library_namespace.is_debug()
|
||||
// .show_value() @ interact.DOM, application.debug
|
||||
&& library_namespace.show_value)
|
||||
library_namespace.show_value(data);
|
||||
callback(null, data);
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: data.query.normalized=[{from:'',to:''},...]
|
||||
|
||||
data = data.query.pages;
|
||||
var pages = [];
|
||||
for ( var pageid in data) {
|
||||
var page = data[pageid];
|
||||
pages.push(page);
|
||||
}
|
||||
|
||||
// options.multi: 即使只取得單頁面,依舊回傳 Array。
|
||||
if (!options || !options.multi)
|
||||
if (pages.length <= 1) {
|
||||
if (pages = pages[0])
|
||||
pages.is_Flow = is_Flow(pages);
|
||||
library_namespace.debug('只取得單頁面 [[' + pages.title
|
||||
//
|
||||
+ ']],將回傳此頁面資料,而非 Array。', 2, 'Flow_info');
|
||||
} else {
|
||||
library_namespace.debug('Get ' + pages.length
|
||||
//
|
||||
+ ' page(s)! The pages'
|
||||
//
|
||||
+ ' will all passed to callback as Array!'
|
||||
//
|
||||
, 2, 'Flow_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* page 之 structure 將按照 wiki API 本身之 return!<br />
|
||||
* <code>
|
||||
page_data = {ns,title,missing:'']}
|
||||
page_data = {pageid,ns,title,flowinfo:{flow:[]}}
|
||||
page_data = {pageid,ns,title,flowinfo:{flow:{enabled:''}}}
|
||||
* </code>
|
||||
*/
|
||||
callback(pages);
|
||||
}, null, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 檢測 page_data 是否為 Flow 討論頁面系統。
|
||||
*
|
||||
* other contentmodel: "MassMessageListContent"
|
||||
*
|
||||
* @param {Object}page_data
|
||||
* page data got from wiki API.
|
||||
*
|
||||
* @returns {Boolean}是否為 Flow 討論頁面。
|
||||
*/
|
||||
function is_Flow(page_data) {
|
||||
if ('contentmodel' in page_data) {
|
||||
// used in prop=info
|
||||
return page_data.contentmodel === 'flow-board';
|
||||
}
|
||||
|
||||
var flowinfo = page_data &&
|
||||
// wiki_API.is_page_data(page_data) &&
|
||||
page_data.flowinfo;
|
||||
if (flowinfo) {
|
||||
// used in prop=flowinfo (deprecated)
|
||||
// flowinfo:{flow:{enabled:''}}
|
||||
return flowinfo.flow && ('enabled' in flowinfo.flow);
|
||||
}
|
||||
|
||||
// e.g., 從 wiki_API.page 得到的 page_data
|
||||
if (page_data = wiki_API.content_of.revision(page_data))
|
||||
return (page_data.contentmodel || page_data.slots
|
||||
&& page_data.slots.main
|
||||
&& page_data.slots.main.contentmodel) === 'flow-board';
|
||||
}
|
||||
|
||||
/** {Object}abbreviation 縮寫 */
|
||||
var Flow_abbreviation = {
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=flow%2Bview-header
|
||||
// 關於討論板的描述。使用 .revision
|
||||
header : 'h',
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=flow%2Bview-topiclist
|
||||
// 討論板話題列表。使用 .revisions
|
||||
topiclist : 'tl'
|
||||
};
|
||||
|
||||
/**
|
||||
* get topics of the page.
|
||||
*
|
||||
* @param {String|Array}title
|
||||
* page title 頁面標題。可為話題id/頁面標題+話題標題。 {String}title or [
|
||||
* {String}API_URL, {String}title or {Object}page_data ]
|
||||
* @param {Function}callback
|
||||
* 回調函數。 callback({Object}topiclist)
|
||||
* @param {Object}[options]
|
||||
* 附加參數/設定選擇性/特殊功能與選項
|
||||
*/
|
||||
function Flow_page(title, callback, options) {
|
||||
// 處理 [ {String}API_URL, {String}title or {Object}page_data ]
|
||||
if (!is_api_and_title(title)) {
|
||||
title = [ options[KEY_SESSION] && options[KEY_SESSION].API_URL,
|
||||
title ];
|
||||
}
|
||||
|
||||
var page_data;
|
||||
if (wiki_API.is_page_data(title[1]))
|
||||
page_data = title[1];
|
||||
|
||||
title[1] = 'page=' + encodeURIComponent(wiki_API.title_of(title[1]));
|
||||
|
||||
if (options && options.redirects) {
|
||||
// 舊版毋須 '&redirects=1','&redirects' 即可。
|
||||
title[1] += '&redirects=1';
|
||||
}
|
||||
|
||||
// e.g., { flow_view : 'header' }
|
||||
var view = options && options.flow_view
|
||||
//
|
||||
|| Flow_page.default_flow_view;
|
||||
title[1] = 'action=flow&submodule=view-' + view + '&v'
|
||||
+ (Flow_abbreviation[view] || view.charAt(0).toLowerCase())
|
||||
+ 'format=' + (options && options.format || 'wikitext') + '&'
|
||||
+ title[1];
|
||||
|
||||
if (!title[0])
|
||||
title = title[1];
|
||||
|
||||
wiki_API.query(title, typeof callback === 'function'
|
||||
//
|
||||
&& function(data) {
|
||||
if (library_namespace.is_debug(2)
|
||||
// .show_value() @ interact.DOM, application.debug
|
||||
&& library_namespace.show_value)
|
||||
library_namespace.show_value(data, 'Flow_page: data');
|
||||
|
||||
var error = data && data.error;
|
||||
// 檢查伺服器回應是否有錯誤資訊。
|
||||
if (error) {
|
||||
library_namespace.error(
|
||||
//
|
||||
'Flow_page: [' + error.code + '] ' + error.info);
|
||||
callback(page_data);
|
||||
return;
|
||||
}
|
||||
|
||||
// data =
|
||||
// { flow: { 'view-topiclist': { result: {}, status: 'ok' } } }
|
||||
if (!(data = data.flow)
|
||||
//
|
||||
|| !(data = data['view-' + view]) || data.status !== 'ok') {
|
||||
library_namespace.error(
|
||||
//
|
||||
'Flow_page: Error status [' + (data && data.status) + ']');
|
||||
callback(page_data);
|
||||
return;
|
||||
}
|
||||
|
||||
if (page_data)
|
||||
// assert: data.result = { ((view)) : {} }
|
||||
Object.assign(page_data, data.result);
|
||||
else
|
||||
page_data = data.result[view];
|
||||
callback(page_data);
|
||||
}, null, options);
|
||||
}
|
||||
|
||||
/** {String}default view to flow page */
|
||||
Flow_page.default_flow_view = 'topiclist';
|
||||
|
||||
/**
|
||||
* Create a new topic. 發新話題。 Reply to an existing topic.
|
||||
*
|
||||
* @param {String|Array}title
|
||||
* page title 頁面標題。 {String}title or [ {String}API_URL,
|
||||
* {String}title or {Object}page_data ]
|
||||
* @param {String}topic
|
||||
* 新話題的標題文字。 {String}topic
|
||||
* @param {String|Function}text
|
||||
* page contents 頁面內容。 {String}text or {Function}text(page_data)
|
||||
* @param {Object}token
|
||||
* login 資訊,包含“csrf”令牌/密鑰。
|
||||
* @param {Object}[options]
|
||||
* 附加參數/設定選擇性/特殊功能與選項
|
||||
* @param {Function}[callback]
|
||||
* 回調函數。 callback(title, error, result)
|
||||
*
|
||||
* @see https://www.mediawiki.org/w/api.php?action=help&modules=flow%2Bnew-topic
|
||||
* https://www.mediawiki.org/w/api.php?action=help&modules=flow%2Breply
|
||||
*/
|
||||
function edit_topic(title, topic, text, token, options, callback) {
|
||||
// console.log(text);
|
||||
if (library_namespace.is_thenable(text)) {
|
||||
text.then(function(text) {
|
||||
edit_topic(title, topic, text, token, options, callback);
|
||||
}, function(error) {
|
||||
callback(title, error);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
var action = 'action=flow';
|
||||
// 處理 [ {String}API_URL, {String}title or {Object}page_data ]
|
||||
if (Array.isArray(title)) {
|
||||
action = [ title[0], action ];
|
||||
title = title[1];
|
||||
} else if (options[KEY_SESSION]) {
|
||||
action = [ options[KEY_SESSION].API_URL, action ];
|
||||
}
|
||||
|
||||
if (wiki_API.is_page_data(title))
|
||||
title = title.title;
|
||||
// assert: typeof title === 'string' or title is invalid.
|
||||
if (title.length > 260) {
|
||||
// [nttopic] 話題標題已限制在 260 位元組內。
|
||||
// 自動評論與摘要的長度限制是260個字符。需要小心任何超出上述限定的東西將被裁剪掉。
|
||||
// 260 characters
|
||||
// https://github.com/wikimedia/mediawiki-extensions-Flow/blob/master/includes/Model/PostRevision.php
|
||||
// const MAX_TOPIC_LENGTH = 260;
|
||||
// https://github.com/wikimedia/mediawiki-extensions-Flow/blob/master/i18n/zh-hant.json
|
||||
library_namespace
|
||||
.warn('edit_topic: Title is too long and will be truncated: ['
|
||||
+ error.code + ']');
|
||||
title = title.slice(0, 260);
|
||||
}
|
||||
|
||||
// default parameters
|
||||
var _options = {
|
||||
// notification_name : 'flow',
|
||||
submodule : 'new-topic',
|
||||
page : title,
|
||||
nttopic : topic,
|
||||
ntcontent : text,
|
||||
ntformat : 'wikitext'
|
||||
};
|
||||
|
||||
edit_topic.copy_keys.forEach(function(key) {
|
||||
if (options[key])
|
||||
_options[key] = options[key];
|
||||
});
|
||||
|
||||
// the token should be sent as the last parameter.
|
||||
_options.token = library_namespace.is_Object(token) ? token.csrftoken
|
||||
: token;
|
||||
|
||||
wiki_API.query(action, typeof callback === 'function'
|
||||
//
|
||||
&& function(data) {
|
||||
if (library_namespace.is_debug(2)
|
||||
// .show_value() @ interact.DOM, application.debug
|
||||
&& library_namespace.show_value)
|
||||
library_namespace.show_value(data, 'edit_topic: data');
|
||||
|
||||
var error = data && data.error;
|
||||
// 檢查伺服器回應是否有錯誤資訊。
|
||||
if (error) {
|
||||
library_namespace.error('edit_topic: ['
|
||||
//
|
||||
+ error.code + '] ' + error.info);
|
||||
} else if (!(data = data.flow)
|
||||
//
|
||||
|| !(data = data['new-topic']) || data.status !== 'ok') {
|
||||
// data = { flow: { 'new-topic': { status: 'ok',
|
||||
// workflow: '', committed: {} } } }
|
||||
error = 'edit_topic: Bad status ['
|
||||
//
|
||||
+ (data && data.status) + ']';
|
||||
library_namespace.error(error);
|
||||
}
|
||||
|
||||
if (typeof callback === 'function') {
|
||||
// title.title === wiki_API.title_of(title)
|
||||
callback(title.title, error, data);
|
||||
}
|
||||
}, _options, options);
|
||||
}
|
||||
|
||||
/** {Array}欲 copy 至 Flow edit parameters 之 keys。 */
|
||||
edit_topic.copy_keys = 'summary|bot|redirect|nocreate'.split(',');
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
// CeL.wiki.Flow.*
|
||||
Object.assign(Flow_info, {
|
||||
is_Flow : is_Flow,
|
||||
page : Flow_page,
|
||||
edit : edit_topic
|
||||
});
|
||||
|
||||
return Flow_info;
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
<!-- The first line is blank due to BOM -->
|
||||
= CeJS MediaWiki module =
|
||||
MediaWiki 自動化作業程式庫,主要用於編寫[[維基百科:機器人]]。
|
||||
|
||||
|
||||
== Usage in [https://www.mediawiki.org/wiki/Manual:Interface/JavaScript mediawiki user script] (User:Example/common.js) ==
|
||||
<pre><code>
|
||||
if (!window.CeL) {
|
||||
window.CeL = { initializer: function() { CeL.run('application.net.wiki', CeL_initialization); } };
|
||||
mw.loader.load('https://kanasimi.github.io/CeJS/ce.js');
|
||||
}
|
||||
function CeL_initialization() {
|
||||
/** {Array} parsed page content */
|
||||
const parsed = CeL.wiki.parser('{{tl|t}}');
|
||||
parsed.each('template', function(token) { console.log(token.name); });
|
||||
|
||||
const wiki = CeL.wiki.mw_web_session;
|
||||
// wiki.page('Wikipedia:Sandbox').edit(function(page_data) { return CeL.wiki.content_of(page_data) + '\ntest'; });
|
||||
}
|
||||
</code></pre>
|
||||
(At 2021, The JavaScript parser of MediaWiki loader cannot read ECMAScript 2016 syntax.)
|
||||
|
||||
Also refer to [https://kanasimi.github.io/CeJS/_test%20suite/wikitext_parser.html the wikitext parser examples].
|
||||
|
||||
; Append parameter to template:
|
||||
<pre><code>
|
||||
const wiki = CeL.wiki.mw_web_session;
|
||||
wiki.page(mw.config.get('wgPageName')).edit(function(page_data) {
|
||||
/** {Array} parsed page content */
|
||||
const parsed = CeL.wiki.parser(page_data).parse();
|
||||
parsed.each('Template:Artwork', function(token) {
|
||||
token.push('wikidata=Q27964733');
|
||||
});
|
||||
return parsed.toString();
|
||||
}, {
|
||||
summary: 'test edit'
|
||||
}).run(function() {
|
||||
location.reload();
|
||||
});
|
||||
</code></pre>
|
||||
|
||||
== Operation mechanism 運作機制 ==
|
||||
Main initial point: [[../wiki.js]]
|
||||
|
||||
; Essential 必要: [[../wiki.js]] → [[namespace.js]] → [[parser.js]], [[query.js]], [[page.js]], [[Flow.js]], [[list.js]], [[edit.js]], [[task.js]]
|
||||
; Optional 可選功能: [[data.js]], [[admin.js]], [[cache.js]], [[Toolforge.js]]
|
||||
; Change with wikiproject page contents 隨各 wikiproject 頁面內容變化之功能: [[template_functions.js]], [[featured_content.js]]
|
||||
|
||||
More examples: 使用範例可參照:
|
||||
<!--
|
||||
const util = require('util'); new util.promisify(CeL.wiki)(...)
|
||||
-->
|
||||
* [https://github.com/kanasimi/wikiapi JavaScript MediaWiki API for ECMAScript 2017+] / [https://github.com/kanasimi/wikiapi/blob/master/wikiapi.js wikiapi.js]
|
||||
* [https://github.com/kanasimi/wikibot Wikipedia bots demo] / [https://github.com/kanasimi/wikibot/blob/master/wiki%20loader.js wiki loader.js]
|
||||
* [[/_test suite/test.js|test.js]]
|
||||
* [https://kanasimi.github.io/CeJS/_test%20suite/wikitext_parser.html Wikitext parser examples. Wikitext 解析器使用例子]
|
||||
|
||||
|
||||
== History ==
|
||||
{| class="wikitable"
|
||||
|+ History 沿革
|
||||
! Date !! Modify
|
||||
|-
|
||||
| 2015/1/1 || Starting to write codes.
|
||||
|
||||
開始撰寫模組程式碼。
|
||||
|-
|
||||
| 2019/10/11 || 分拆至 wiki/*.js
|
||||
|-
|
||||
| 2020/5/24 || 分拆 wiki.js。基本功能僅需要 `CeL.run('application.net.wiki')`。
|
||||
|}
|
||||
|
||||
|
||||
== See also ==
|
||||
* [https://www.mediawiki.org/w/api.php MediaWiki API help]
|
||||
@@ -0,0 +1,902 @@
|
||||
/**
|
||||
* @name CeL function for MediaWiki (Wikipedia / 維基百科): Toolforge only functions
|
||||
*
|
||||
* @fileoverview 本檔案包含了 MediaWiki 自動化作業用程式庫的子程式庫。
|
||||
*
|
||||
* 條件合適時,應該會由 CeL.application.net.wiki 載入。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2019/10/11 拆分自 CeL.application.net.wiki
|
||||
*/
|
||||
|
||||
// More examples: see /_test suite/test.js
|
||||
// Wikipedia bots demo: https://github.com/kanasimi/wikibot
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.net.wiki.Toolforge',
|
||||
|
||||
require : 'data.native.|application.storage.' + '|application.net.wiki.'
|
||||
// load MediaWiki module basic functions
|
||||
+ '|application.net.wiki.namespace.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : 'this,*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var wiki_API = library_namespace.application.net.wiki, KEY_SESSION = wiki_API.KEY_SESSION;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// SQL 相關函數 @ Toolforge。
|
||||
|
||||
var
|
||||
/** {String}user home directory */
|
||||
home_directory = library_namespace.env.home,
|
||||
/** {String}Wikimedia Toolforge database host */
|
||||
TOOLSDB = 'tools-db',
|
||||
/** {String}user/bot name */
|
||||
user_name,
|
||||
/** {String}Wikimedia Toolforge name. CeL.wiki.wmflabs */
|
||||
wmflabs = wiki_API.wmflabs,
|
||||
/** {Object}Wikimedia Toolforge job data. CeL.wiki.job_data */
|
||||
job_data,
|
||||
/** node mysql handler */
|
||||
node_mysql,
|
||||
/** {Object}default SQL configurations */
|
||||
SQL_config;
|
||||
|
||||
if (home_directory
|
||||
&& (home_directory = home_directory.replace(/[\\\/]$/, '').trim())) {
|
||||
user_name = home_directory.match(/[^\\\/]+$/);
|
||||
user_name = user_name ? user_name[0] : undefined;
|
||||
if (user_name) {
|
||||
wiki_API.user_name = user_name;
|
||||
}
|
||||
// There is no CeL.storage.append_path_separator() here!
|
||||
home_directory += library_namespace.env.path_separator;
|
||||
}
|
||||
|
||||
// setup SQL config language (and database/host).
|
||||
function set_SQL_config_language(language) {
|
||||
if (!language) {
|
||||
return;
|
||||
}
|
||||
if (typeof language !== 'string') {
|
||||
library_namespace.error(
|
||||
//
|
||||
'set_SQL_config_language: Invalid language: [' + language + ']');
|
||||
return;
|
||||
}
|
||||
|
||||
if (language === TOOLSDB) {
|
||||
this.host = language;
|
||||
// delete this.database;
|
||||
return;
|
||||
}
|
||||
|
||||
// 正規化。
|
||||
var site = wiki_API.site_name(language);
|
||||
// TODO: 'zh.news'
|
||||
// 警告: this.language 可能包含 'zhwikinews' 之類。
|
||||
|
||||
this.host = site + set_SQL_config_language.hostname_postfix;
|
||||
/**
|
||||
* The database names themselves consist of the mediawiki project name,
|
||||
* suffixed with _p
|
||||
*
|
||||
* @see https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database
|
||||
*/
|
||||
this.database = site + '_p';
|
||||
|
||||
// console.log(this);
|
||||
}
|
||||
|
||||
// https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database#Connecting_to_the_database_replicas
|
||||
// .analytics.db.svc.wikimedia.cloud
|
||||
// @seealso https://phabricator.wikimedia.org/T142807
|
||||
set_SQL_config_language.hostname_postfix = '.web.db.svc.wikimedia.cloud';
|
||||
|
||||
/**
|
||||
* return new SQL config
|
||||
*
|
||||
* @param {String}[language]
|
||||
* database language.<br />
|
||||
* e.g., 'en', 'commons', 'wikidata', 'meta'.
|
||||
* @param {String}[user]
|
||||
* SQL database user name
|
||||
* @param {String}[password]
|
||||
* SQL database user password
|
||||
*
|
||||
* @returns {Object}SQL config
|
||||
*/
|
||||
function new_SQL_config(language, user, password) {
|
||||
var config, is_clone;
|
||||
if (user) {
|
||||
config = {
|
||||
user : user,
|
||||
password : password,
|
||||
db_prefix : user + '__',
|
||||
set_language : set_SQL_config_language
|
||||
};
|
||||
} else if (SQL_config) {
|
||||
is_clone = true;
|
||||
config = Object.clone(SQL_config);
|
||||
} else {
|
||||
config = {};
|
||||
}
|
||||
|
||||
if (typeof language === 'object') {
|
||||
if (is_clone) {
|
||||
delete config.database;
|
||||
}
|
||||
if (language.API_URL) {
|
||||
// treat language as session.
|
||||
// use set_SQL_config_language()
|
||||
config.set_language(wiki_API.site_name(language), !user);
|
||||
} else {
|
||||
Object.assign(config, language);
|
||||
}
|
||||
} else if (typeof language === 'string' && language) {
|
||||
if (is_clone) {
|
||||
delete config.database;
|
||||
}
|
||||
// change language (and database/host).
|
||||
config.set_language(language, !user);
|
||||
}
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
* 讀取並解析出 SQL 設定。
|
||||
*
|
||||
* @param {String}file_name
|
||||
* file name
|
||||
*
|
||||
* @returns {Object}SQL config
|
||||
*/
|
||||
function parse_SQL_config(file_name) {
|
||||
var config;
|
||||
try {
|
||||
config = library_namespace.get_file(file_name);
|
||||
} catch (e) {
|
||||
library_namespace.error(
|
||||
//
|
||||
'parse_SQL_config: Cannot read config file [ ' + file_name + ']!');
|
||||
return;
|
||||
}
|
||||
|
||||
// 應該用 parser。
|
||||
var user = config.match(/\n\s*user\s*=\s*(\S+)/), password;
|
||||
if (!user || !(password = config.match(/\n\s*password\s*=\s*(\S+)/)))
|
||||
return;
|
||||
|
||||
return new_SQL_config(wiki_API.language, user[1], password[1]);
|
||||
}
|
||||
|
||||
if (wmflabs) {
|
||||
try {
|
||||
node_mysql = require('mysql');
|
||||
if (node_mysql) {
|
||||
SQL_config = parse_SQL_config(home_directory
|
||||
// The production replicas.
|
||||
// https://wikitech.wikimedia.org/wiki/Help:Toolforge#The_databases
|
||||
// https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database
|
||||
// Wikimedia Toolforge
|
||||
// 上之資料庫僅為正式上線版之刪節副本。資料並非最新版本(但誤差多於數分內),也不完全,
|
||||
// <del>甚至可能為其他 users 竄改過</del>。
|
||||
+ 'replica.my.cnf');
|
||||
}
|
||||
} catch (e) {
|
||||
library_namespace.error(e);
|
||||
}
|
||||
|
||||
if (process.env.JOB_ID && process.env.JOB_NAME) {
|
||||
// assert: process.env.ENVIRONMENT === 'BATCH'
|
||||
wiki_API.job_data = job_data = {
|
||||
id : process.env.JOB_ID,
|
||||
name : process.env.JOB_NAME,
|
||||
request : process.env.REQUEST,
|
||||
script : process.env.JOB_SCRIPT,
|
||||
stdout_file : process.env.SGE_STDOUT_PATH,
|
||||
stderr_file : process.env.SGE_STDERR_PATH,
|
||||
// 'continuous' or 'task'
|
||||
is_task : process.env.QUEUE === 'task'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* execute SQL command.
|
||||
*
|
||||
* @param {String}SQL
|
||||
* SQL command.
|
||||
* @param {Function}callback
|
||||
* 回調函數。 callback({Object}error, {Array}rows, {Array}fields)
|
||||
* @param {Object}[config]
|
||||
* configuration.
|
||||
*
|
||||
* @see https://wikitech.wikimedia.org/wiki/Help:Toolforge/Database
|
||||
*
|
||||
* @require https://github.com/mysqljs/mysql <br />
|
||||
* https://quarry.wmflabs.org/ <br />
|
||||
* TODO: https://github.com/sidorares/node-mysql2
|
||||
*/
|
||||
function run_SQL(SQL, callback, config) {
|
||||
var _callback = function(error, results, fields) {
|
||||
// the connection will return to the pool, ready to be used again by
|
||||
// someone else.
|
||||
// connection.release();
|
||||
|
||||
// close the connection and remove it from the pool
|
||||
// connection.destroy();
|
||||
|
||||
callback(error, results, fields);
|
||||
};
|
||||
_callback = callback;
|
||||
|
||||
// TypeError: Converting circular structure to JSON
|
||||
// library_namespace.debug(JSON.stringify(config), 3, 'run_SQL');
|
||||
if (!config && !(config = SQL_config)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// treat config as language.
|
||||
if (typeof config === 'string' || wiki_API.is_wiki_API(config)) {
|
||||
config = new_SQL_config(config);
|
||||
}
|
||||
|
||||
library_namespace.debug(String(SQL), 3, 'run_SQL');
|
||||
// console.log(JSON.stringify(config));
|
||||
var connection = node_mysql.createConnection(config);
|
||||
connection.connect();
|
||||
if (Array.isArray(SQL)) {
|
||||
// ("SQL", [values], callback)
|
||||
connection.query(SQL[0], SQL[1], _callback);
|
||||
} else {
|
||||
// ("SQL", callback)
|
||||
connection.query(SQL, _callback);
|
||||
}
|
||||
connection.end();
|
||||
}
|
||||
|
||||
if (false) {
|
||||
CeL.wiki.SQL('SELECT * FROM `revision` LIMIT 3000,1;',
|
||||
//
|
||||
function(error, rows, fields) {
|
||||
if (error)
|
||||
throw error;
|
||||
// console.log('The result is:');
|
||||
console.log(rows);
|
||||
});
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a new user database.
|
||||
*
|
||||
* @param {String}dbname
|
||||
* database name.
|
||||
* @param {Function}callback
|
||||
* 回調函數。
|
||||
* @param {String}[language]
|
||||
* database language.<br />
|
||||
* e.g., 'en', 'commons', 'wikidata', 'meta'.
|
||||
*
|
||||
* @see https://wikitech.wikimedia.org/wiki/Help:Tool_Labs/Database#Creating_new_databases
|
||||
*/
|
||||
function create_database(dbname, callback, language) {
|
||||
if (!SQL_config)
|
||||
return;
|
||||
|
||||
var config;
|
||||
if (typeof dbname === 'object') {
|
||||
config = Object.clone(dbname);
|
||||
dbname = config.database;
|
||||
delete config.database;
|
||||
} else {
|
||||
config = new_SQL_config(language || TOOLSDB);
|
||||
if (!language) {
|
||||
delete config.database;
|
||||
}
|
||||
}
|
||||
|
||||
library_namespace.log('create_database: Try to create database ['
|
||||
+ dbname + ']');
|
||||
if (false) {
|
||||
/**
|
||||
* 用此方法會:<br />
|
||||
* [Error: ER_PARSE_ERROR: You have an error in your SQL syntax;
|
||||
* check the manual that corresponds to your MariaDB server version
|
||||
* for the right syntax to use near ''user__db'' at line 1]
|
||||
*/
|
||||
var SQL = {
|
||||
// placeholder 佔位符
|
||||
// 避免 error.code === 'ER_DB_CREATE_EXISTS'
|
||||
sql : 'CREATE DATABASE IF NOT EXISTS ?',
|
||||
values : [ dbname ]
|
||||
};
|
||||
}
|
||||
|
||||
if (dbname.includes('`'))
|
||||
throw new Error('Invalid database name: [' + dbname + ']');
|
||||
|
||||
run_SQL('CREATE DATABASE IF NOT EXISTS `' + dbname + '`', function(
|
||||
error, rows, fields) {
|
||||
if (typeof callback !== 'function')
|
||||
return;
|
||||
if (error)
|
||||
callback(error);
|
||||
else
|
||||
callback(null, rows, fields);
|
||||
}, config);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* SQL 查詢功能之前端。
|
||||
*
|
||||
* @example <code>
|
||||
|
||||
// change language (and database/host).
|
||||
//CeL.wiki.SQL.config.set_language('en');
|
||||
CeL.wiki.SQL(SQL, function callback(error, rows, fields) { if(error) console.error(error); else console.log(rows); }, 'en');
|
||||
|
||||
// get sitelink count of wikidata items
|
||||
// https://www.mediawiki.org/wiki/Wikibase/Schema/wb_items_per_site
|
||||
// https://www.wikidata.org/w/api.php?action=help&modules=wbsetsitelink
|
||||
var SQL_get_sitelink_count = 'SELECT ips_item_id, COUNT(*) AS `link_count` FROM wb_items_per_site GROUP BY ips_item_id LIMIT 10';
|
||||
var SQL_session = new CeL.wiki.SQL(function(error){}, 'wikidata');
|
||||
function callback(error, rows, fields) { if(error) console.error(error); else console.log(rows); SQL_session.connection.destroy(); }
|
||||
SQL_session.SQL(SQL_get_sitelink_count, callback);
|
||||
|
||||
// one-time method
|
||||
CeL.wiki.SQL(SQL_get_sitelink_count, callback, 'wikidata');
|
||||
|
||||
* </code>
|
||||
*
|
||||
* @example <code>
|
||||
|
||||
// 進入 default host (TOOLSDB)。
|
||||
var SQL_session = new CeL.wiki.SQL(()=>{});
|
||||
// 進入 default host (TOOLSDB),並預先創建 user's database 'dbname' (e.g., 's00000__dbname')
|
||||
var SQL_session = new CeL.wiki.SQL('dbname', ()=>{});
|
||||
// 進入 zhwiki.zhwiki_p。
|
||||
var SQL_session = new CeL.wiki.SQL(()=>{}, 'zh');
|
||||
// 進入 zhwiki.zhwiki_p,並預先創建 user's database 'dbname' (e.g., 's00000__dbname')
|
||||
var SQL_session = new CeL.wiki.SQL('dbname', ()=>{}, 'zh');
|
||||
|
||||
// create {SQL_session}instance
|
||||
new CeL.wiki.SQL('mydb', function callback(error, rows, fields) { if(error) console.error(error); } )
|
||||
// run SQL query
|
||||
.SQL(SQL, function callback(error, rows, fields) { if(error) console.error(error); } );
|
||||
|
||||
SQL_session.connection.destroy();
|
||||
|
||||
* </code>
|
||||
*
|
||||
* @param {String}[dbname]
|
||||
* database name.
|
||||
* @param {Function}callback
|
||||
* 回調函數。 callback(error)
|
||||
* @param {String}[language]
|
||||
* database language (and database/host). default host: TOOLSDB.<br />
|
||||
* e.g., 'en', 'commons', 'wikidata', 'meta'.
|
||||
*
|
||||
* @returns {SQL_session}instance
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function SQL_session(dbname, callback, language) {
|
||||
if (!(this instanceof SQL_session)) {
|
||||
if (typeof language === 'object') {
|
||||
language = new_SQL_config(language);
|
||||
} else if (typeof language === 'string' && language) {
|
||||
// change language (and database/host).
|
||||
SQL_config.set_language(language);
|
||||
if (language === TOOLSDB)
|
||||
delete SQL_config.database;
|
||||
language = null;
|
||||
}
|
||||
// dbname as SQL query string.
|
||||
return run_SQL(dbname, callback, language);
|
||||
}
|
||||
|
||||
if (typeof dbname === 'function' && !language) {
|
||||
// shift arguments
|
||||
language = callback;
|
||||
callback = dbname;
|
||||
dbname = null;
|
||||
}
|
||||
|
||||
this.config = new_SQL_config(language || TOOLSDB);
|
||||
if (dbname) {
|
||||
if (typeof dbname === 'object') {
|
||||
Object.assign(this.config, dbname);
|
||||
} else {
|
||||
// 自動添加 prefix。
|
||||
this.config.database = this.config.db_prefix + dbname;
|
||||
}
|
||||
} else if (this.config.host === TOOLSDB) {
|
||||
delete this.config.database;
|
||||
} else {
|
||||
// this.config.database 已經在 set_SQL_config_language() 設定。
|
||||
}
|
||||
|
||||
var _this = this;
|
||||
this.connect(function(error) {
|
||||
// console.error(error);
|
||||
if (error && error.code === 'ER_BAD_DB_ERROR'
|
||||
&& !_this.config.no_create && _this.config.database) {
|
||||
// Error: ER_BAD_DB_ERROR: Unknown database '...'
|
||||
create_database(_this.config, callback);
|
||||
} else if (typeof callback === 'function') {
|
||||
callback(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// need reset connection,
|
||||
function need_reconnect(error) {
|
||||
return error
|
||||
// Error: Cannot enqueue Handshake after fatal error.
|
||||
&& (error.code === 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR'
|
||||
// ECONNRESET: socket hang up
|
||||
|| error.code === 'ECONNRESET');
|
||||
}
|
||||
|
||||
// run SQL query
|
||||
SQL_session.prototype.SQL = function(SQL, callback) {
|
||||
var _this = this;
|
||||
this.connection.query(SQL, function(error) {
|
||||
if (need_reconnect(error)) {
|
||||
// re-connect. 可能已經斷線。
|
||||
_this.connection.connect(function(error) {
|
||||
if (error) {
|
||||
// console.error(error);
|
||||
}
|
||||
_this.connection.query(SQL, callback);
|
||||
});
|
||||
} else {
|
||||
callback.apply(null, arguments);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
SQL_session.prototype.connect = function(callback, force) {
|
||||
if (!force)
|
||||
try {
|
||||
var _this = this;
|
||||
this.connection.connect(function(error) {
|
||||
if (need_reconnect(error)) {
|
||||
// re-connect.
|
||||
_this.connect(callback, true);
|
||||
} else if (typeof callback === 'function')
|
||||
callback(error);
|
||||
});
|
||||
return this;
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
try {
|
||||
this.connection.end();
|
||||
} catch (e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
// 需要重新設定 this.connection,否則會出現:
|
||||
// Error: Cannot enqueue Handshake after invoking quit.
|
||||
this.connection = node_mysql.createConnection(this.config);
|
||||
this.connection.connect(callback);
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* get database list.
|
||||
*
|
||||
* <code>
|
||||
|
||||
var SQL_session = new CeL.wiki.SQL('testdb',
|
||||
//
|
||||
function callback(error, rows, fields) {
|
||||
if (error)
|
||||
console.error(error);
|
||||
else
|
||||
s.databases(function(list) {
|
||||
console.log(list);
|
||||
});
|
||||
});
|
||||
|
||||
</code>
|
||||
*
|
||||
* @param {Function}callback
|
||||
* 回調函數。
|
||||
* @param {Boolean}all
|
||||
* get all databases. else: get my databases.
|
||||
*
|
||||
* @returns {SQL_session}
|
||||
*/
|
||||
SQL_session.prototype.databases = function(callback, all) {
|
||||
var _this = this;
|
||||
function filter(dbname) {
|
||||
return dbname.startsWith(_this.config.db_prefix);
|
||||
}
|
||||
|
||||
if (this.database_cache) {
|
||||
var list = this.database_cache;
|
||||
if (!all)
|
||||
// .filter() 會失去 array 之其他屬性。
|
||||
list = list.filter(filter);
|
||||
if (typeof callback === 'function')
|
||||
callback(list);
|
||||
return this;
|
||||
}
|
||||
|
||||
var SQL = 'SHOW DATABASES';
|
||||
if (false && !all)
|
||||
// SHOW DATABASES LIKE 'pattern';
|
||||
SQL += " LIKE '" + this.config.db_prefix + "%'";
|
||||
|
||||
this.connect(function(error) {
|
||||
// reset connection,
|
||||
// 預防 PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR
|
||||
_this.connection.query(SQL, function(error, rows, fields) {
|
||||
if (error || !Array.isArray(rows)) {
|
||||
library_namespace.error(error);
|
||||
rows = null;
|
||||
} else {
|
||||
rows = rows.map(function(row) {
|
||||
for ( var field in row)
|
||||
return row[field];
|
||||
});
|
||||
_this.database_cache = rows;
|
||||
if (!all)
|
||||
// .filter() 會失去 array 之其他屬性。
|
||||
rows = rows.filter(filter);
|
||||
// console.log(rows);
|
||||
}
|
||||
if (typeof callback === 'function')
|
||||
callback(rows);
|
||||
});
|
||||
});
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
if (SQL_config) {
|
||||
library_namespace
|
||||
.debug('wiki_API.SQL_session: You may use SQL to get data.');
|
||||
wiki_API.SQL = SQL_session;
|
||||
// export 導出: CeL.wiki.SQL() 僅可在 Wikimedia Toolforge 上使用。
|
||||
wiki_API.SQL.config = SQL_config;
|
||||
// wiki_API.SQL.create = create_database;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
/**
|
||||
* Convert MediaWiki database timestamp to ISO 8601 format.<br />
|
||||
* UTC: 'yyyymmddhhmmss' → 'yyyy-mm-ddThh:mm:ss'
|
||||
*
|
||||
* @param {String|Buffer}timestamp
|
||||
* MediaWiki database timestamp
|
||||
*
|
||||
* @returns {String}ISO 8601 Data elements and interchange formats
|
||||
*
|
||||
* @see https://www.mediawiki.org/wiki/Manual:Timestamp
|
||||
*/
|
||||
function SQL_timestamp_to_ISO(timestamp) {
|
||||
if (!timestamp) {
|
||||
// ''?
|
||||
return;
|
||||
}
|
||||
// timestamp可能為{Buffer}
|
||||
timestamp = timestamp.toString('utf8').chunk(2);
|
||||
if (timestamp.length !== 7) {
|
||||
// 'NULL'?
|
||||
return;
|
||||
}
|
||||
|
||||
return timestamp[0] + timestamp[1]
|
||||
//
|
||||
+ '-' + timestamp[2] + '-' + timestamp[3]
|
||||
//
|
||||
+ 'T' + timestamp[4] + ':' + timestamp[5] + ':' + timestamp[6] + 'Z';
|
||||
}
|
||||
|
||||
function generate_SQL_WHERE(condition, field_prefix) {
|
||||
var condition_array = [], value_array = [];
|
||||
|
||||
if (typeof condition === 'string') {
|
||||
;
|
||||
|
||||
} else if (Array.isArray(condition)) {
|
||||
// TODO: for ' OR '
|
||||
condition = condition.join(' AND ');
|
||||
|
||||
} else if (library_namespace.is_Object(condition)) {
|
||||
for ( var name in condition) {
|
||||
var value = condition[name];
|
||||
if (value === undefined) {
|
||||
// 跳過這一筆設定。
|
||||
continue;
|
||||
}
|
||||
if (!name) {
|
||||
// condition[''] = [ condition 1, condition 2, ...];
|
||||
if (Array.isArray(value)) {
|
||||
value_array.append(value);
|
||||
} else {
|
||||
value_array.push(value);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (!/^[a-z_]+$/.test(name)) {
|
||||
throw 'Invalid field name: ' + name;
|
||||
}
|
||||
if (!name.startsWith(field_prefix)) {
|
||||
name = field_prefix + name;
|
||||
}
|
||||
var matched = typeof value === 'string'
|
||||
// TODO: for other operators
|
||||
// @see https://mariadb.com/kb/en/mariadb/select/
|
||||
// https://mariadb.com/kb/en/mariadb/functions-and-operators/
|
||||
&& value.match(/^([<>!]?=|[<>]|<=>|IN |IS )([\s\S]+)$/);
|
||||
if (matched) {
|
||||
name += matched[1] + '?';
|
||||
// DO NOT quote the value yourself!!
|
||||
value = matched[2];
|
||||
// Number.MAX_SAFE_INTEGER starts from 9.
|
||||
if (/^[+\-]?[1-9]\d{0,15}$/.test(value)
|
||||
// ↑ 15 = String(Number.MAX_SAFE_INTEGER).length-1
|
||||
&& +value <= Number.MAX_SAFE_INTEGER) {
|
||||
value = +value;
|
||||
}
|
||||
} else {
|
||||
name += '=?';
|
||||
}
|
||||
condition_array.push(name);
|
||||
value_array.push(value);
|
||||
}
|
||||
|
||||
// TODO: for ' OR '
|
||||
condition = condition_array.join(' AND ');
|
||||
|
||||
} else {
|
||||
library_namespace.error('Invalid condition: '
|
||||
+ JSON.stringify(condition));
|
||||
return;
|
||||
}
|
||||
|
||||
return [ condition ? ' WHERE ' + condition : '', value_array ];
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
// https://www.mediawiki.org/wiki/API:RecentChanges
|
||||
// const
|
||||
var ENUM_rc_type = 'edit,new,move,log,move over redirect,external,categorize';
|
||||
|
||||
/**
|
||||
* Get page title 頁面標題 list of [[Special:RecentChanges]] 最近更改.
|
||||
*
|
||||
* @examples<code>
|
||||
|
||||
// get title list
|
||||
CeL.wiki.recent(function(rows){console.log(rows.map(function(row){return row.title;}));}, {language:'ja', namespace:0, limit:20});
|
||||
|
||||
// 應並用 timestamp + this_oldid
|
||||
CeL.wiki.recent(function(rows){console.log(rows.map(function(row){return [row.title,row.rev_id,row.row.rc_timestamp.toString()];}));}, {where:{timestamp:'>=20170327143435',this_oldid:'>'+43772537}});
|
||||
|
||||
</code>
|
||||
*
|
||||
* TODO: filter
|
||||
*
|
||||
* @param {Function}callback
|
||||
* 回調函數。 callback({Array}page title 頁面標題 list)
|
||||
* @param {Object}[options]
|
||||
* 附加參數/設定選擇性/特殊功能與選項。
|
||||
*
|
||||
* @see https://www.mediawiki.org/wiki/Manual:Recentchanges_table
|
||||
* https://www.mediawiki.org/wiki/Actor_migration
|
||||
*/
|
||||
function get_recent_via_databases(callback, options) {
|
||||
if (options && (typeof options === 'string')) {
|
||||
options = {
|
||||
// treat options as language
|
||||
language : options
|
||||
};
|
||||
} else {
|
||||
options = library_namespace.setup_options(options);
|
||||
}
|
||||
// console.trace(options);
|
||||
|
||||
var SQL = options.SQL;
|
||||
if (!SQL) {
|
||||
SQL = Object.create(null);
|
||||
if (options.bot === 0 || options.bot === 1) {
|
||||
// assert: 0 || 1
|
||||
SQL.bot = options.bot;
|
||||
}
|
||||
// 不指定namespace,或者指定namespace為((undefined)): 取得所有的namespace。
|
||||
/** {Integer|String}namespace NO. */
|
||||
var namespace = wiki_API.namespace(options.namespace);
|
||||
if (namespace !== undefined) {
|
||||
SQL.namespace = namespace;
|
||||
}
|
||||
Object.assign(SQL,
|
||||
// {String|Array|Object}options.where: 自訂篩選條件。
|
||||
options.where);
|
||||
SQL = generate_SQL_WHERE(SQL, 'rc_');
|
||||
// console.log(SQL);
|
||||
|
||||
// https://phabricator.wikimedia.org/T223406
|
||||
// TODO: 舊版上 `actor`, `comment` 這兩個資料表不存在會出錯,需要先偵測。
|
||||
// TODO: use JSON: https://phabricator.wikimedia.org/T299417
|
||||
var fields = [
|
||||
'*',
|
||||
// https://www.mediawiki.org/wiki/Manual:Actor_table#actor_id
|
||||
'(SELECT `actor_user` FROM `actor` WHERE `actor`.`actor_id` = `recentchanges`.`rc_actor`) AS `userid`',
|
||||
'(SELECT `actor_name` FROM `actor` WHERE `actor`.`actor_id` = `recentchanges`.`rc_actor`) AS `user_name`',
|
||||
// https://www.mediawiki.org/wiki/Manual:Comment_table#comment_id
|
||||
'(SELECT `comment_text` FROM `comment` WHERE `comment`.`comment_id` = `recentchanges`.`rc_comment_id`) AS `comment`',
|
||||
'(SELECT `comment_data` FROM `comment` WHERE `comment`.`comment_id` = `recentchanges`.`rc_comment_id`) AS `comment_data`' ];
|
||||
|
||||
SQL[0] = 'SELECT ' + fields.join(',')
|
||||
// https://www.mediawiki.org/wiki/Manual:Recentchanges_table
|
||||
+ ' FROM `recentchanges`' + SQL[0]
|
||||
// new → old, may contain duplicate title.
|
||||
// or `rc_timestamp`
|
||||
// or rc_this_oldid, but too slow (no index).
|
||||
// ASC: 小 → 大,DESC: 大 → 小
|
||||
+ ' ORDER BY `rc_this_oldid` ASC LIMIT ' + (
|
||||
/** {ℕ⁰:Natural+0}limit count. */
|
||||
options.limit > 0 ? Math.min(options.limit
|
||||
// 筆數限制。就算隨意輸入,強制最多只能這麼多筆資料。
|
||||
, 1e4)
|
||||
// default records to get
|
||||
: options.where ? 1e4 : 5000);
|
||||
}
|
||||
|
||||
if (false) {
|
||||
console.log([ options.config, options.language,
|
||||
options[KEY_SESSION] && options[KEY_SESSION].language ]);
|
||||
console.log(options[KEY_SESSION]);
|
||||
throw 1;
|
||||
}
|
||||
|
||||
run_SQL(SQL, function(error, rows, fields) {
|
||||
if (error) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
var result = [];
|
||||
rows.forEach(function(row) {
|
||||
if (!(row.rc_user > 0) && !(row.rc_type < 5)
|
||||
//
|
||||
&& (!('rc_type' in options)
|
||||
//
|
||||
|| options.rc_type !== ENUM_rc_type[row.rc_type])) {
|
||||
// On wikis using Wikibase the results will otherwise be
|
||||
// meaningless.
|
||||
return;
|
||||
}
|
||||
|
||||
var namespace_text = row.rc_namespace
|
||||
// pass session = options[KEY_SESSION]
|
||||
? wiki_API.namespace.name_of(row.rc_namespace, options) + ':'
|
||||
: '';
|
||||
// 基本上 API 盡可能模擬 recentchanges,與之一致。
|
||||
result.push({
|
||||
type : ENUM_rc_type[row.rc_type],
|
||||
// namespace
|
||||
ns : row.rc_namespace,
|
||||
// .rc_title 未加上 namespace prefix!
|
||||
title : (namespace_text
|
||||
// @see normalize_page_name()
|
||||
+ row.rc_title.toString()).replace(/_/g, ' '),
|
||||
// links to the page_id key in the page table
|
||||
// 0: 可能為flow. 此時title為主頁面名,非topic。由.rc_params可獲得相關資訊。
|
||||
pageid : row.rc_cur_id,
|
||||
// rev_id
|
||||
// Links to the rev_id key of the new page revision
|
||||
// (after the edit occurs) in the revision table.
|
||||
revid : row.rc_this_oldid,
|
||||
old_revid : row.rc_last_oldid,
|
||||
rcid : row.rc_id,
|
||||
user : row.user_name && row.user_name.toString()
|
||||
// text of the username for the user that made the
|
||||
// change, or the IP address if the change was made by
|
||||
// an unregistered user. Corresponds to rev_user_text
|
||||
//
|
||||
// `rc_user_text` deprecated: MediaWiki version: ≤ 1.33
|
||||
|| row.rc_user_text && row.rc_user_text.toString(),
|
||||
// NULL for anonymous edits
|
||||
userid : row.userid
|
||||
// 0 for anonymous edits
|
||||
// `rc_user` deprecated: MediaWiki version: ≤ 1.33
|
||||
|| row.rc_user,
|
||||
// old_length
|
||||
oldlen : row.rc_old_len,
|
||||
// new length
|
||||
newlen : row.rc_new_len,
|
||||
// Corresponds to rev_timestamp
|
||||
// use new Date(.timestamp)
|
||||
timestamp : SQL_timestamp_to_ISO(row.rc_timestamp),
|
||||
comment : row.comment && row.comment.toString()
|
||||
// `rc_comment` deprecated: MediaWiki version: ≤ 1.32
|
||||
|| row.rc_comment && row.rc_comment.toString(),
|
||||
// usually NULL
|
||||
comment_data : row.comment_data
|
||||
&& row.comment_data.toString(),
|
||||
// parsedcomment : TODO,
|
||||
logid : row.rc_logid,
|
||||
// TODO
|
||||
logtype : row.rc_log_type,
|
||||
logaction : row.rc_log_action.toString(),
|
||||
// logparams: TODO: should be {Object}, e.g., {userid:0}
|
||||
logparams : row.rc_params.toString(),
|
||||
// tags: ["TODO"],
|
||||
|
||||
// 以下為recentchanges之外,本函數額外加入。
|
||||
is_new : !!row.rc_new,
|
||||
// e.g., 1 or 0
|
||||
// is_bot : !!row.rc_bot,
|
||||
// is_minor : !!row.rc_minor,
|
||||
// e.g., mw.edit
|
||||
is_Flow : row.rc_source.toString() === 'flow',
|
||||
// patrolled : !!row.rc_patrolled,
|
||||
// deleted : !!row.rc_deleted,
|
||||
|
||||
row : row
|
||||
});
|
||||
});
|
||||
callback(result);
|
||||
},
|
||||
// SQL config
|
||||
options.config || options.language || options[KEY_SESSION]);
|
||||
}
|
||||
|
||||
// 可能會因環境而不同的功能。讓 wiki_API.recent 採用較有效率的實現方式。
|
||||
if (SQL_config) {
|
||||
wiki_API.recent =
|
||||
// SQL_config ? get_recent_via_databases : get_recent_via_API;
|
||||
get_recent_via_databases;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
// @inner
|
||||
library_namespace.set_method(wiki_API, {
|
||||
SQL_config : SQL_config,
|
||||
new_SQL_config : new_SQL_config,
|
||||
run_SQL : run_SQL
|
||||
});
|
||||
|
||||
// 不設定(hook)本 module 之 namespace,僅執行 module code。
|
||||
return library_namespace.env.not_to_extend_keyword;
|
||||
}
|
||||
@@ -0,0 +1,372 @@
|
||||
/**
|
||||
* @name CeL function for MediaWiki (Wikipedia / 維基百科): 管理員相關的 adminship
|
||||
* functions
|
||||
*
|
||||
* @fileoverview 本檔案包含了 MediaWiki 自動化作業用程式庫的子程式庫。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2019/10/12 拆分自 CeL.application.net.wiki
|
||||
*/
|
||||
|
||||
// More examples: see /_test suite/test.js
|
||||
// Wikipedia bots demo: https://github.com/kanasimi/wikibot
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.net.wiki.admin',
|
||||
|
||||
require : 'application.net.wiki.'
|
||||
// load MediaWiki module basic functions
|
||||
+ '|application.net.wiki.namespace.'
|
||||
//
|
||||
+ '|application.net.wiki.query.|application.net.wiki.page.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : 'this,*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var wiki_API = library_namespace.application.net.wiki, KEY_SESSION = wiki_API.KEY_SESSION;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// administrator functions. 管理員相關函數。
|
||||
|
||||
// 自 options 汲取出 parameters。
|
||||
// TODO: 整合進 normalize_parameters。
|
||||
// default_parameters[parameter name] = required
|
||||
function draw_parameters(options, default_parameters, token_type) {
|
||||
if (!options) {
|
||||
// Invalid options/parameters
|
||||
return 'No options specified';
|
||||
}
|
||||
|
||||
// 汲取出 parameters。
|
||||
var parameters = Object.create(null);
|
||||
if (default_parameters) {
|
||||
for ( var parameter_name in default_parameters) {
|
||||
if (parameter_name in options) {
|
||||
// in case options[parameter_name] === false
|
||||
if (options[parameter_name])
|
||||
parameters[parameter_name] = options[parameter_name];
|
||||
} else if (default_parameters[parameter_name]) {
|
||||
// 表示此屬性為必須存在/指定的屬性。
|
||||
// This parameter is required.
|
||||
return 'No property ' + parameter_name + ' specified';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
var session = options[KEY_SESSION];
|
||||
|
||||
// assert: 有parameters, e.g., {Object}parameters
|
||||
// 可能沒有 session
|
||||
|
||||
// ----------------------------
|
||||
// 處理 target page。
|
||||
var default_KEY_ID = 'pageid', default_KEY_TITLE = 'title', KEY_ID = default_KEY_ID, KEY_TITLE = default_KEY_TITLE;
|
||||
if (parameters.to) {
|
||||
// move_to
|
||||
KEY_ID = 'fromid';
|
||||
KEY_TITLE = 'from';
|
||||
}
|
||||
|
||||
// 都先從 options 取值,再從 session 取值。
|
||||
if (options[KEY_ID] >= 0 || options[default_KEY_ID] >= 0) {
|
||||
parameters[KEY_ID] = options[KEY_ID] >= 0 ? options[KEY_ID]
|
||||
: options[default_KEY_ID];
|
||||
} else if (options[KEY_TITLE] || options[default_KEY_TITLE]) {
|
||||
parameters[KEY_TITLE] = wiki_API.title_of(options[KEY_TITLE]
|
||||
// options.from_title
|
||||
|| options[default_KEY_TITLE]);
|
||||
} else if (wiki_API.is_page_data(session && session.last_page)) {
|
||||
// options.page_data
|
||||
if (session.last_page.pageid >= 0)
|
||||
parameters[KEY_ID] = session.last_page.pageid;
|
||||
else
|
||||
parameters[KEY_TITLE] = session.last_page.title;
|
||||
} else {
|
||||
// 可能沒有 page_data
|
||||
if (library_namespace.is_debug()) {
|
||||
library_namespace.error('draw_parameters: No page specified: '
|
||||
+ JSON.stringify(options));
|
||||
}
|
||||
return 'No page id/title specified';
|
||||
}
|
||||
|
||||
// ----------------------------
|
||||
// 處理 token。
|
||||
if (!token_type) {
|
||||
token_type = 'csrf';
|
||||
}
|
||||
var token = options.token || session && session.token;
|
||||
if (token && typeof token === 'object') {
|
||||
// session.token.csrftoken
|
||||
token = token[token_type + 'token'];
|
||||
}
|
||||
if (!token) {
|
||||
// TODO: use session
|
||||
if (false) {
|
||||
library_namespace.error('draw_parameters: No token specified: '
|
||||
+ options);
|
||||
}
|
||||
return 'No ' + token_type + 'token specified';
|
||||
}
|
||||
parameters.token = token;
|
||||
|
||||
return parameters;
|
||||
}
|
||||
|
||||
// use "csrf" token retrieved from action=query&meta=tokens
|
||||
// callback(response, error);
|
||||
function wiki_operator(action, default_parameters, options, callback) {
|
||||
// default_parameters
|
||||
// Warning: 除 pageid/title/token 之外,這邊只要是能指定給 API 的,皆必須列入!
|
||||
var parameters = draw_parameters(options, default_parameters);
|
||||
// console.log(parameters);
|
||||
if (!library_namespace.is_Object(parameters)) {
|
||||
// error occurred.
|
||||
if (typeof callback === 'function')
|
||||
callback(undefined, parameters);
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: 若是頁面不存在/已刪除,那就直接跳出。
|
||||
|
||||
if (action === 'move') {
|
||||
library_namespace.is_debug((parameters.fromid || parameters.from)
|
||||
// .move_to_title
|
||||
+ ' → ' + parameters.to, 1, 'wiki_operator.move');
|
||||
}
|
||||
|
||||
wiki_API.query({
|
||||
action : action
|
||||
}, function(response, error) {
|
||||
// console.log(JSON.stringify(response));
|
||||
if (wiki_API.query.handle_error(response, error, callback)) {
|
||||
return;
|
||||
}
|
||||
callback(response[action]);
|
||||
}, parameters, options);
|
||||
}
|
||||
|
||||
// ================================================================================================================
|
||||
|
||||
// wiki_API.delete(): remove / delete a page.
|
||||
wiki_API['delete'] = function(options, callback) {
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=delete
|
||||
|
||||
/**
|
||||
* response: <code>
|
||||
{"delete":{"title":"Title","reason":"content was: \"...\", and the only contributor was \"[[Special:Contributions/Cewbot|Cewbot]]\" ([[User talk:Cewbot|talk]])","logid":0000}}
|
||||
{"error":{"code":"nosuchpageid","info":"There is no page with ID 0.","*":"See https://test.wikipedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."},"servedby":"mw1232"}
|
||||
* </code>
|
||||
*/
|
||||
|
||||
wiki_operator('delete', {
|
||||
reason : false,
|
||||
tags : false,
|
||||
watchlist : false,
|
||||
watchlistexpiry : false,
|
||||
oldimage : false
|
||||
}, options, callback);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
// wiki_API.move_to(): move a page from `from` to target `to`.
|
||||
wiki_API.move_to = function(options, callback) {
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=move
|
||||
var default_parameters = {
|
||||
to : true,
|
||||
reason : false,
|
||||
movetalk : false,
|
||||
movesubpages : false,
|
||||
noredirect : false,
|
||||
watchlist : false,
|
||||
ignorewarnings : false,
|
||||
tags : false
|
||||
};
|
||||
|
||||
if (!options || !options.reason) {
|
||||
library_namespace
|
||||
.warn('wiki_API.move_to: Should set reason when moving page!');
|
||||
}
|
||||
|
||||
/**
|
||||
* response: <code>
|
||||
{"error":{"code":"nosuchpageid","info":"There is no page with ID 0.","*":"See https://zh.wikipedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."},"servedby":"mw1277"}
|
||||
error:
|
||||
{"code":"articleexists","info":"A page of that name already exists, or the name you have chosen is not valid. Please choose another name.","*":"See https://zh.wikipedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."}
|
||||
{"code":"selfmove","info":"The title is the same; cannot move a page over itself.","*":"See https://zh.wikipedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."}
|
||||
|
||||
{ from: 'from', to: 'to', reason: '', redirectcreated: '', moveoverredirect: '' }
|
||||
{ error: { code: 'articleexists', info: 'A page already exists at [[:To]], or the page name you have chosen is not valid. Please choose another name.', '*': 'See https://test.wikipedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes.' } }
|
||||
|
||||
</code>
|
||||
*/
|
||||
|
||||
// console.log(options);
|
||||
wiki_operator('move', default_parameters, options, callback);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
// @see wiki_API.is_protected
|
||||
// Change the protection level of a page.
|
||||
wiki_API.protect = function(options, callback) {
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=protect
|
||||
|
||||
/**
|
||||
* response: <code>
|
||||
{"protect":{"title":"title","reason":"存檔保護作業","protections":[{"edit":"sysop","expiry":"infinite"},{"move":"sysop","expiry":"infinite"}]}}
|
||||
{"servedby":"mw1203","error":{"code":"nosuchpageid","info":"There is no page with ID 2006","*":"See https://zh.wikinews.org/w/api.php for API usage"}}
|
||||
* </code>
|
||||
*/
|
||||
|
||||
wiki_operator('protect', {
|
||||
// protections: e.g., 'edit=sysop|move=sysop', 一般說來edit應與move同步。
|
||||
protections : true,
|
||||
// 在正式場合,最好給個好的理由。
|
||||
// reason: @see [[MediaWiki:Protect-dropdown]]
|
||||
reason : false,
|
||||
// expiry : 'infinite',
|
||||
expiry : false,
|
||||
tags : false,
|
||||
cascade : false,
|
||||
watchlist : false
|
||||
}, Object.assign({
|
||||
protections : 'edit=sysop|move=sysop'
|
||||
}, options), callback);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
// rollback 僅能快速撤銷/回退/還原某一頁面最新版本之作者(最後一位使用者)一系列所有編輯至另一作者的編輯
|
||||
// The rollback revision will be marked as minor.
|
||||
wiki_API.rollback = function(options, callback) {
|
||||
var session = wiki_API.session_of_options(options);
|
||||
|
||||
if (session && !session.token.rollbacktoken) {
|
||||
session.get_token(function() {
|
||||
wiki_API.rollback(options, callback);
|
||||
}, 'rollback');
|
||||
}
|
||||
|
||||
var parameters = draw_parameters(options, {
|
||||
// default_parameters
|
||||
// Warning: 除外pageid/title/token這邊只要是能指定給 API 的,皆必須列入!
|
||||
user : false,
|
||||
summary : false,
|
||||
markbot : false,
|
||||
tags : false
|
||||
}, 'rollback');
|
||||
if (!library_namespace.is_Object(parameters)) {
|
||||
// error occurred.
|
||||
if (typeof callback === 'function')
|
||||
callback(undefined, parameters);
|
||||
return;
|
||||
}
|
||||
|
||||
// 都先從 options 取值,再從 session 取值。
|
||||
var page_data =
|
||||
// options.page_data ||
|
||||
options.pageid && options || session && session.last_page;
|
||||
|
||||
// assert: 有parameters, e.g., {Object}parameters
|
||||
// 可能沒有 session, page_data
|
||||
|
||||
if (!parameters.user && wiki_API.content_of.revision(page_data)) {
|
||||
// 將最後一個版本的編輯者當作回退對象。
|
||||
parameters.user = wiki_API.content_of.revision(page_data).user;
|
||||
}
|
||||
|
||||
// https://www.mediawiki.org/w/api.php?action=help&modules=rollback
|
||||
// If the last user who edited the page made multiple edits in a row,
|
||||
// they will all be rolled back.
|
||||
if (!parameters.user) {
|
||||
// 抓最後的編輯者試試。
|
||||
// 要用pageid的話,得採page_data,就必須保證兩者相同。
|
||||
if (!parameters.title && page_data
|
||||
&& parameters.pageid !== page_data.pageid) {
|
||||
callback(undefined, 'parameters.pageid !== page_data.pageid');
|
||||
return;
|
||||
}
|
||||
wiki_API.page(page_data || parameters.title, function(page_data,
|
||||
error) {
|
||||
if (error || !wiki_API.content_of.revision(page_data)
|
||||
// 保證不會再持續執行。
|
||||
|| !wiki_API.content_of.revision(page_data).user) {
|
||||
if (false) {
|
||||
library_namespace.error(
|
||||
//
|
||||
'wiki_API.rollback: No user name specified!');
|
||||
}
|
||||
|
||||
callback(undefined,
|
||||
//
|
||||
'No user name specified and I cannot guess it!');
|
||||
return;
|
||||
}
|
||||
wiki_API.rollback(options, callback);
|
||||
}, Object.assign({
|
||||
rvprop : 'ids|timestamp|user'
|
||||
}, options));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!('markbot' in parameters) && options.bot) {
|
||||
parameters.markbot = options.bot;
|
||||
}
|
||||
|
||||
/**
|
||||
* response: <code>
|
||||
{"rollback":{"title":"title","pageid":1,"summary":"","revid":9,"old_revid":7,"last_revid":1,"messageHtml":"<p></p>"}}
|
||||
{"servedby":"mw1190","error":{"code":"badtoken","info":"Invalid token","*":"See https://zh.wikinews.org/w/api.php for API usage"}}
|
||||
* </code>
|
||||
*/
|
||||
wiki_API.query({
|
||||
action : 'rollback'
|
||||
}, function(response) {
|
||||
var error = response && response.error;
|
||||
if (error) {
|
||||
callback(response, error);
|
||||
} else {
|
||||
// revid 回滾的版本ID。
|
||||
// old_revid 被回滾的第一個(最新)修訂的修訂ID。
|
||||
// last_revid 被回滾最後一個(最舊)版本的修訂ID。
|
||||
// 如果回滾不會改變的頁面,沒有新修訂而成。在這種情況下,revid將等於old_revid。
|
||||
callback(response.rollback);
|
||||
}
|
||||
}, parameters, options);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
// 目前的修訂,不可隱藏。
|
||||
// This is the current revision. It cannot be hidden.
|
||||
wiki_API.hide = function(options, callback) {
|
||||
TODO;
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
// 不設定(hook)本 module 之 namespace,僅執行 module code。
|
||||
return library_namespace.env.not_to_extend_keyword;
|
||||
}
|
||||
@@ -0,0 +1,812 @@
|
||||
/**
|
||||
* @name CeL function for MediaWiki (Wikipedia / 維基百科): cache
|
||||
*
|
||||
* @fileoverview 本檔案包含了 MediaWiki 自動化作業用程式庫的子程式庫。
|
||||
*
|
||||
* TODO:<code>
|
||||
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2020/5/24 6:21:13 拆分自 CeL.application.net.wiki
|
||||
*/
|
||||
|
||||
// More examples: see /_test suite/test.js
|
||||
// Wikipedia bots demo: https://github.com/kanasimi/wikibot
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.net.wiki.cache',
|
||||
|
||||
require : 'data.native.'
|
||||
// for library_namespace.get_URL
|
||||
+ '|application.net.Ajax.' + '|application.net.wiki.'
|
||||
// load MediaWiki module basic functions
|
||||
+ '|application.net.wiki.namespace.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : '*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
|
||||
// requiring
|
||||
var wiki_API = library_namespace.application.net.wiki, KEY_SESSION = wiki_API.KEY_SESSION;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/** {Object|Function}fs in node.js */
|
||||
var node_fs;
|
||||
try {
|
||||
if (library_namespace.platform.nodejs)
|
||||
// @see https://nodejs.org/api/fs.html
|
||||
node_fs = require('fs');
|
||||
if (typeof node_fs.readFile !== 'function')
|
||||
throw true;
|
||||
} catch (e) {
|
||||
// enumerate for wiki_API.cache
|
||||
// 模擬 node.js 之 fs,以達成最起碼的效果(即無 cache 功能的情況)。
|
||||
library_namespace.warn(this.id
|
||||
+ ': 無 node.js 之 fs,因此不具備 cache 或 SQL 功能。');
|
||||
node_fs = {
|
||||
// library_namespace.storage.read_file()
|
||||
readFile : function(file_path, options, callback) {
|
||||
library_namespace.error('Cannot read file ' + file_path);
|
||||
if (typeof callback === 'function')
|
||||
callback(true);
|
||||
},
|
||||
// library_namespace.storage.write_file()
|
||||
writeFile : function(file_path, data, options, callback) {
|
||||
library_namespace.error('Cannot write to file ' + file_path);
|
||||
if (typeof options === 'function' && !callback)
|
||||
callback = options;
|
||||
if (typeof callback === 'function')
|
||||
callback(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* cache 相關函數:
|
||||
*
|
||||
* @see application.storage.file.get_cache_file
|
||||
* application.OS.Windows.file.cacher
|
||||
* application.net.Ajax.get_URL_cache<br />
|
||||
* application.net.wiki<br />
|
||||
* wiki_API.cache() CeL.wiki.cache()
|
||||
*/
|
||||
|
||||
if (false) {
|
||||
// examples
|
||||
|
||||
CeL.wiki.cache({
|
||||
type : 'page',
|
||||
file_name : 'file_name',
|
||||
list : 'WP:SB',
|
||||
operator : function(data) {
|
||||
console.log(data);
|
||||
}
|
||||
}, function callback(data) {
|
||||
console.log(data);
|
||||
}, {
|
||||
// default options === this
|
||||
// namespace : '0|1',
|
||||
// [KEY_SESSION]
|
||||
// session : wiki,
|
||||
// title_prefix : 'Template:',
|
||||
// cache path prefix
|
||||
prefix : 'base_directory/'
|
||||
});
|
||||
|
||||
CeL.set_debug(6);
|
||||
CeL.wiki.cache({
|
||||
type : 'callback',
|
||||
file_name : 'file_name',
|
||||
list : function(callback) {
|
||||
callback([ 1, 2, 3 ]);
|
||||
},
|
||||
operator : function(data) {
|
||||
console.log(data);
|
||||
}
|
||||
}, function callback(data) {
|
||||
console.log(data);
|
||||
}, {
|
||||
// default options === this
|
||||
// namespace : '0|1',
|
||||
// [KEY_SESSION]
|
||||
// session : wiki,
|
||||
// title_prefix : 'Template:',
|
||||
// cache path prefix
|
||||
prefix : './'
|
||||
});
|
||||
|
||||
CeL.set_debug(6);
|
||||
var wiki = Wiki(true);
|
||||
CeL.wiki.cache({
|
||||
type : 'wdq',
|
||||
file_name : 'countries',
|
||||
list : 'claim[31:6256]',
|
||||
operator : function(list) {
|
||||
// console.log(list);
|
||||
result = list;
|
||||
}
|
||||
}, function callback(list) {
|
||||
// console.log(list);
|
||||
}, {
|
||||
// default options === this
|
||||
// namespace : '0|1',
|
||||
// [KEY_SESSION]
|
||||
session : wiki,
|
||||
// title_prefix : 'Template:',
|
||||
// cache path prefix
|
||||
prefix : './'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* cache 作業操作之輔助套裝函數。
|
||||
*
|
||||
* 注意: only for node.js. 必須自行 include 'application.platform.nodejs'。 <code>
|
||||
CeL.run('application.platform.nodejs');
|
||||
* </code><br />
|
||||
* 注意: 需要自行先創建各 type 之次目錄,如 page, redirects, embeddedin, ...<br />
|
||||
* 注意: 會改變 operation, _this! Warning: will modify operation, _this!
|
||||
*
|
||||
* 連續作業: 依照 _this 設定 {Object}default options,即傳遞於各 operator 間的 ((this))。<br />
|
||||
* 依照 operation 順序個別執行單一項作業。
|
||||
*
|
||||
* 單一項作業流程:<br />
|
||||
* 設定檔名。<br />
|
||||
* 若不存在此檔,則:<br />
|
||||
* >>> 依照 operation.type 與 operation.list 取得資料。<br />
|
||||
* >>> 若 Array.isArray(operation.list) 則處理多項列表作業:<br />
|
||||
* >>>>>> 個別處理單一項作業,每次執行 operation.each() || operation.each_retrieve()。<br />
|
||||
* >>> 執行 data = operation.retrieve(data),以其回傳作為將要 cache 之 data。<br />
|
||||
* >>> 寫入cache。<br />
|
||||
* 執行 operation.operator(data)
|
||||
*
|
||||
* TODO: file_stream<br />
|
||||
* TODO: do not write file
|
||||
*
|
||||
* @param {Object|Array}operation
|
||||
* 作業設定。
|
||||
* @param {Function}[callback]
|
||||
* 所有作業(operation)執行完後之回調函數。 callback(response data)
|
||||
* @param {Object}[_this]
|
||||
* 傳遞於各 operator 間的 ((this))。注意: 會被本函數更動!
|
||||
*/
|
||||
function wiki_API_cache(operation, callback, _this) {
|
||||
if (library_namespace.is_Object(callback) && !_this) {
|
||||
// 未設定/不設定 callback
|
||||
// shift arguments.
|
||||
_this = callback;
|
||||
callback = undefined;
|
||||
}
|
||||
|
||||
var index = 0;
|
||||
/**
|
||||
* 連續作業時,轉到下一作業。
|
||||
*
|
||||
* node.js v0.11.16: In strict mode code, functions can only be declared
|
||||
* at top level or immediately within another function.
|
||||
*/
|
||||
function next_operator(data) {
|
||||
library_namespace.debug('處理連續作業序列,轉到下一作業: ' + (index + 1) + '/'
|
||||
+ operation.length, 2, 'wiki_API_cache.next_operator');
|
||||
// [ {Object}operation, {Object}operation, ... ]
|
||||
// operation = { type:'embeddedin', operator:function(data) }
|
||||
if (index < operation.length) {
|
||||
var this_operation = operation[index++];
|
||||
// console.log(this_operation);
|
||||
if (!this_operation) {
|
||||
// Allow null operation.
|
||||
library_namespace.debug('未設定 operation[' + (index - 1)
|
||||
+ ']。Skip this operation.', 1,
|
||||
'wiki_API_cache.next_operator');
|
||||
next_operator(data);
|
||||
|
||||
} else {
|
||||
if (!('list' in this_operation)) {
|
||||
// use previous data as list.
|
||||
library_namespace.debug(
|
||||
'未特別指定 list,以前一次之回傳 data 作為 list。', 3,
|
||||
'wiki_API_cache.next_operator');
|
||||
library_namespace.debug('前一次之回傳 data: '
|
||||
+ (data && JSON.stringify(data).slice(0, 180))
|
||||
+ '...', 3, 'wiki_API_cache.next_operator');
|
||||
this_operation.list = data;
|
||||
}
|
||||
if (data) {
|
||||
library_namespace.debug('設定 .last_data_got: '
|
||||
+ (data && JSON.stringify(data).slice(0, 180))
|
||||
+ '...', 3, 'wiki_API_cache.next_operator');
|
||||
this_operation.last_data_got = data;
|
||||
}
|
||||
// default options === _this: 傳遞於各 operator 間的 ((this))。
|
||||
wiki_API_cache(this_operation, next_operator, _this);
|
||||
}
|
||||
|
||||
} else if (typeof callback === 'function') {
|
||||
if (false && Array.isArray(data)) {
|
||||
// TODO: adapt to {Object}operation
|
||||
library_namespace.log('wiki_API_cache: Get ' + data.length
|
||||
+ ' page(s).');
|
||||
// 自訂list
|
||||
// data = [ '' ];
|
||||
if (_this.limit >= 0) {
|
||||
// 設定此初始值,可跳過之前已經處理過的。
|
||||
data = data.slice(0 * _this.limit, 1 * _this.limit);
|
||||
}
|
||||
library_namespace.debug(data.slice(0, 8).map(
|
||||
wiki_API.title_of).join('\n')
|
||||
+ '\n...');
|
||||
}
|
||||
|
||||
// last 收尾
|
||||
callback.call(_this, data);
|
||||
}
|
||||
}
|
||||
|
||||
if (Array.isArray(operation)) {
|
||||
next_operator();
|
||||
return;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------
|
||||
/**
|
||||
* 以下為處理單一次作業。
|
||||
*/
|
||||
library_namespace.debug('處理單一次作業。', 2, 'wiki_API_cache');
|
||||
library_namespace.debug(
|
||||
'using operation: ' + JSON.stringify(operation), 6,
|
||||
'wiki_API_cache');
|
||||
|
||||
if (typeof _this !== 'object') {
|
||||
// _this: 傳遞於各 operator 間的 ((this))。
|
||||
_this = Object.create(null);
|
||||
}
|
||||
|
||||
var file_name = operation.file_name,
|
||||
/** 前一次之回傳 data。每次產出的 data。 */
|
||||
last_data_got = operation.last_data_got;
|
||||
|
||||
if (typeof file_name === 'function') {
|
||||
// @see wiki_API_cache.title_only
|
||||
file_name = file_name.call(_this, last_data_got, operation);
|
||||
}
|
||||
|
||||
var
|
||||
/** {String}method to get data */
|
||||
type = operation.type,
|
||||
/** {Boolean}是否自動嘗試建立目錄。 */
|
||||
try_mkdir = typeof library_namespace.fs_mkdir === 'function'
|
||||
&& operation.mkdir,
|
||||
//
|
||||
operator = typeof operation.operator === 'function'
|
||||
&& operation.operator,
|
||||
//
|
||||
list = operation.list;
|
||||
|
||||
if (!file_name) {
|
||||
// 若自行設定了檔名,則慢點執行 list(),先讀讀 cache。因為 list() 可能會頗耗時間。
|
||||
// 基本上,設定 this.* 應該在 operation.operator() 中,而不是在 operation.list() 中。
|
||||
if (typeof list === 'function') {
|
||||
// TODO: 允許非同步方法。
|
||||
list = list.call(_this, last_data_got, operation);
|
||||
}
|
||||
|
||||
if (!operation.postfix) {
|
||||
if (type === 'file')
|
||||
operation.postfix = '.txt';
|
||||
else if (type === 'URL')
|
||||
operation.postfix = '.htm';
|
||||
}
|
||||
|
||||
// 自行設定之檔名 operation.file_name 優先度較 type/title 高。
|
||||
// 需要自行創建目錄!
|
||||
file_name = _this[type + '_prefix'] || type;
|
||||
file_name = [ file_name
|
||||
// treat file_name as directory
|
||||
? /[\\\/]/.test(file_name) ? file_name : file_name + '/' : '',
|
||||
//
|
||||
wiki_API.is_page_data(list) ? list.title
|
||||
// 若 Array.isArray(list),則 ((file_name = ''))。
|
||||
: typeof list === 'string' && wiki_API.normalize_title(list, true) ];
|
||||
if (file_name[1]) {
|
||||
file_name = file_name[0]
|
||||
// 正規化檔名。
|
||||
+ file_name[1].replace(/\//g, '_');
|
||||
} else {
|
||||
// assert: node_fs.readFile('') 將執行 callback(error)
|
||||
file_name = '';
|
||||
}
|
||||
}
|
||||
|
||||
if (file_name) {
|
||||
if (!('postfix' in operation) && !('postfix' in _this)
|
||||
&& /\.[a-z\d\-]+$/i.test(file_name)) {
|
||||
// 若已設定 filename extension,則不自動添加。
|
||||
operation.postfix = '';
|
||||
}
|
||||
|
||||
file_name = [ 'prefix' in operation ? operation.prefix
|
||||
// _this.prefix: cache path prefix
|
||||
: 'prefix' in _this
|
||||
//
|
||||
? _this.prefix : wiki_API_cache.prefix, file_name,
|
||||
// auto detect filename extension
|
||||
'postfix' in operation ? operation.postfix
|
||||
//
|
||||
: 'postfix' in _this ? _this.postfix : wiki_API_cache.postfix ];
|
||||
library_namespace.debug('Pre-normalized cache file name: ['
|
||||
+ file_name + ']', 5, 'wiki_API_cache');
|
||||
if (false)
|
||||
library_namespace.debug('file name param:'
|
||||
+ [ operation.file_name, _this[type + '_prefix'], type,
|
||||
JSON.stringify(list) ].join(';'), 6,
|
||||
'wiki_API_cache');
|
||||
// 正規化檔名。
|
||||
file_name = file_name.join('').replace(/[:*?<>]/g, '_');
|
||||
}
|
||||
library_namespace.debug('Try to read cache file: [' + file_name + ']',
|
||||
3, 'wiki_API_cache');
|
||||
|
||||
var
|
||||
/**
|
||||
* 採用 JSON<br />
|
||||
* TODO: parse & stringify 機制
|
||||
*
|
||||
* @type {Boolean}
|
||||
*/
|
||||
using_JSON = 'json' in operation ? operation.json : /\.json$/i
|
||||
.test(file_name),
|
||||
/** {String}file encoding for fs of node.js. */
|
||||
encoding = _this.encoding || wiki_API.encoding;
|
||||
// list file path
|
||||
_this.file_name = file_name;
|
||||
|
||||
// console.log('Read file: ' + file_name);
|
||||
node_fs.readFile(file_name, encoding, function(error, data) {
|
||||
/**
|
||||
* 結束作業。
|
||||
*/
|
||||
function finish_work(data) {
|
||||
library_namespace.debug('finish work', 3,
|
||||
'wiki_API_cache.finish_work');
|
||||
last_data_got = data;
|
||||
if (operator)
|
||||
operator.call(_this, data, operation);
|
||||
library_namespace.debug('loading callback', 3,
|
||||
'wiki_API_cache.finish_work');
|
||||
if (typeof callback === 'function')
|
||||
callback.call(_this, data);
|
||||
}
|
||||
|
||||
if (!operation.reget && !error && (data ||
|
||||
// 當資料 Invalid,例如採用 JSON 卻獲得空資料時;則視為 error,不接受此資料。
|
||||
('accept_empty_data' in _this
|
||||
//
|
||||
? _this.accept_empty_data : !using_JSON))) {
|
||||
// gettext_config:{"id":"using-cached-data"}
|
||||
library_namespace.debug('Using cached data.', 3,
|
||||
'wiki_API_cache');
|
||||
library_namespace.debug('Cached data: ['
|
||||
+ (data && data.slice(0, 200)) + ']...', 5,
|
||||
'wiki_API_cache');
|
||||
if (using_JSON && data) {
|
||||
try {
|
||||
data = JSON.parse(data);
|
||||
} catch (e) {
|
||||
library_namespace.error(
|
||||
// error. e.g., "undefined"
|
||||
'wiki_API_cache: Cannot parse as JSON: ' + data);
|
||||
// 注意: 若中途 abort,此時可能需要手動刪除大小為 0 的 cache file!
|
||||
data = undefined;
|
||||
}
|
||||
}
|
||||
finish_work(data);
|
||||
return;
|
||||
}
|
||||
|
||||
library_namespace.debug(
|
||||
operation.reget ? 'Dispose cache. Reget again.'
|
||||
// ↑ operation.reget: 放棄 cache,重新取得資料。
|
||||
: 'No valid cached data. Try to get data...', 3,
|
||||
'wiki_API_cache');
|
||||
|
||||
/**
|
||||
* 寫入 cache 至檔案系統。
|
||||
*/
|
||||
function write_cache(data) {
|
||||
if (operation.cache === false) {
|
||||
// 當設定 operation.cache: false 時,不寫入 cache。
|
||||
library_namespace.debug(
|
||||
'設定 operation.cache === false,不寫入 cache。', 3,
|
||||
'wiki_API_cache.write_cache');
|
||||
|
||||
} else if (/[^\\\/]$/.test(file_name)) {
|
||||
library_namespace.info('wiki_API_cache: '
|
||||
+ 'Write cache data to [' + file_name + '].'
|
||||
+ (using_JSON ? ' (using JSON)' : ''));
|
||||
library_namespace.debug('Cache data: '
|
||||
+ (data && JSON.stringify(data).slice(0, 190))
|
||||
+ '...', 3, 'wiki_API_cache.write_cache');
|
||||
var write = function() {
|
||||
// 為了預防需要建立目錄,影響到後面的作業,
|
||||
// 因此採用 fs.writeFileSync() 而非 fs.writeFile()。
|
||||
node_fs.writeFileSync(file_name, using_JSON ? JSON
|
||||
.stringify(data) : data, encoding);
|
||||
};
|
||||
try {
|
||||
write();
|
||||
} catch (error) {
|
||||
// assert: 此 error.code 表示上層目錄不存在。
|
||||
var matched = error.code === 'ENOENT'
|
||||
// 未設定 operation.mkdir 的話,預設會自動嘗試建立目錄。
|
||||
&& try_mkdir !== false
|
||||
//
|
||||
&& file_name.match(/[\\\/][^\\\/]+$/);
|
||||
if (matched) {
|
||||
// 僅測試一次。設定 "已嘗試過" flag。
|
||||
try_mkdir = false;
|
||||
// create parent directory
|
||||
library_namespace.fs_mkdir(file_name.slice(0,
|
||||
matched.index));
|
||||
// re-write file again.
|
||||
try {
|
||||
write();
|
||||
} catch (e) {
|
||||
library_namespace.error(
|
||||
//
|
||||
'wiki_API_cache: Error to write cache data!');
|
||||
library_namespace.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
finish_work(data);
|
||||
}
|
||||
|
||||
// node.js v0.11.16: In strict mode code, functions can only be
|
||||
// declared
|
||||
// at top level or immediately within another function.
|
||||
/**
|
||||
* 取得並處理下一項 data。
|
||||
*/
|
||||
function get_next_item(data) {
|
||||
if (index < list.length) {
|
||||
// 利用基本相同的參數以取得 cache。
|
||||
_operation.list = list[index++];
|
||||
var message = '處理多項列表作業: ' + type + ' ' + index + '/'
|
||||
+ list.length;
|
||||
if (list.length > 8) {
|
||||
library_namespace.info('wiki_API_cache.get_next_item: '
|
||||
+ message);
|
||||
} else {
|
||||
library_namespace.debug(message, 1,
|
||||
'wiki_API_cache.get_next_item');
|
||||
}
|
||||
wiki_API_cache(_operation, get_next_item, _this);
|
||||
} else {
|
||||
// last 收尾
|
||||
// All got. retrieve data.
|
||||
if (_operation.data_list)
|
||||
data = _operation.data_list;
|
||||
if (typeof operation.retrieve === 'function')
|
||||
data = operation.retrieve.call(_this, data);
|
||||
write_cache(data);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof list === 'function' && type !== 'callback') {
|
||||
library_namespace.debug('Call .list()', 3, 'wiki_API_cache');
|
||||
list = list.call(_this, last_data_got, operation);
|
||||
// 對於 .list() 為 asynchronous 函數的處理。
|
||||
if (list === wiki_API_cache.abort) {
|
||||
library_namespace.debug('It seems the .list()'
|
||||
+ ' is an asynchronous function.' + ' I will exit'
|
||||
+ ' and wait for the .list() finished.', 3,
|
||||
'wiki_API_cache');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (list === wiki_API_cache.abort) {
|
||||
library_namespace
|
||||
.debug('Abort operation.', 1, 'wiki_API_cache');
|
||||
finish_work();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Array.isArray(list)) {
|
||||
if (!type) {
|
||||
library_namespace.debug('採用 list (length ' + list.length
|
||||
+ ') 作為 data。', 1, 'wiki_API_cache');
|
||||
write_cache(list);
|
||||
return;
|
||||
}
|
||||
if (list.length > 1e6) {
|
||||
library_namespace.warn(
|
||||
//
|
||||
'wiki_API_cache: 警告: list 過長/超過限度 (length ' + list.length
|
||||
+ '),將過於耗時而不實際!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 處理多項列表作業。
|
||||
*/
|
||||
var index = 0, _operation = Object.clone(operation);
|
||||
// 個別頁面不設定 .file_name, .end。
|
||||
delete _operation.end;
|
||||
if (_operation.each_file_name) {
|
||||
_operation.file_name = _operation.each_file_name;
|
||||
delete _operation.each_file_name;
|
||||
} else {
|
||||
delete _operation.file_name;
|
||||
}
|
||||
if (typeof _operation.each === 'function') {
|
||||
// 每一項 list 之項目執行一次 .each()。
|
||||
_operation.operator = _operation.each;
|
||||
delete _operation.each;
|
||||
} else {
|
||||
if (typeof _operation.each_retrieve === 'function')
|
||||
_operation.each_retrieve = _operation.each_retrieve
|
||||
.bind(_this);
|
||||
else
|
||||
delete _operation.each_retrieve;
|
||||
/**
|
||||
* 預設處理列表的函數。
|
||||
*/
|
||||
_operation.operator = function(data) {
|
||||
if ('each_retrieve' in operation)
|
||||
// 資料事後處理程序 (post-processor):
|
||||
// 將以 .each_retrieve() 的回傳作為要處理的資料。
|
||||
data = operation.each_retrieve.call(_this, data);
|
||||
if (_operation.data_list) {
|
||||
if (Array.isArray(data))
|
||||
Array.prototype.push.apply(
|
||||
_operation.data_list, data);
|
||||
else if (data)
|
||||
_operation.data_list.push(data);
|
||||
} else {
|
||||
if (Array.isArray(data))
|
||||
_operation.data_list = data;
|
||||
else if (data)
|
||||
_operation.data_list = [ data ];
|
||||
}
|
||||
};
|
||||
}
|
||||
library_namespace.debug('處理多項列表作業, using operation: '
|
||||
+ JSON.stringify(_operation), 5, 'wiki_API_cache');
|
||||
|
||||
get_next_item();
|
||||
return;
|
||||
}
|
||||
|
||||
// ------------------------------------------------
|
||||
/**
|
||||
* 以下為處理單一項作業。
|
||||
*/
|
||||
|
||||
var to_get_data, list_type;
|
||||
if (// type in get_list.type
|
||||
wiki_API.list.type_list.includes(type)) {
|
||||
list_type = type;
|
||||
type = 'list';
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'callback':
|
||||
if (typeof list !== 'function') {
|
||||
library_namespace
|
||||
.warn('wiki_API_cache: list is not function!');
|
||||
callback.call(_this, last_data_got);
|
||||
break;
|
||||
}
|
||||
// 手動取得資料。使用 list=function(callback){callback(list);}
|
||||
to_get_data = function(list, callback) {
|
||||
library_namespace.log('wiki_API_cache: '
|
||||
+ 'manually get data and then callback(list).');
|
||||
if (typeof list === 'function') {
|
||||
// assert: (typeof list === 'function') 必須自己回 call!
|
||||
list.call(_this, callback, last_data_got, operation);
|
||||
}
|
||||
};
|
||||
break;
|
||||
|
||||
case 'file':
|
||||
// 一般不應用到。
|
||||
// get file 內容。
|
||||
to_get_data = function(file_path, callback) {
|
||||
library_namespace.log('wiki_API_cache: Get file ['
|
||||
+ file_path + '].');
|
||||
node_fs.readFile(file_path, operation.encoding, function(
|
||||
error, data) {
|
||||
if (error)
|
||||
library_namespace.error(
|
||||
//
|
||||
'wiki_API_cache: Error get file [' + file_path
|
||||
+ ']: ' + error);
|
||||
callback.call(_this, data);
|
||||
});
|
||||
};
|
||||
break;
|
||||
|
||||
case 'URL':
|
||||
// get URL 頁面內容。
|
||||
to_get_data = function(URL, callback) {
|
||||
library_namespace.log('wiki_API_cache: Get URL of [' + URL
|
||||
+ '].');
|
||||
library_namespace.get_URL(URL, callback);
|
||||
};
|
||||
break;
|
||||
|
||||
case 'wdq':
|
||||
to_get_data = function(query, callback) {
|
||||
if (_this[KEY_SESSION]) {
|
||||
if (!_this[KEY_SESSION].data_session) {
|
||||
_this[KEY_SESSION].set_data();
|
||||
_this[KEY_SESSION].run(function() {
|
||||
// retry again
|
||||
to_get_data(query, callback);
|
||||
});
|
||||
return;
|
||||
}
|
||||
operation[KEY_SESSION]
|
||||
//
|
||||
= _this[KEY_SESSION].data_session;
|
||||
}
|
||||
|
||||
library_namespace.log('wiki_API_cache: Wikidata Query ['
|
||||
+ query + '].');
|
||||
// wikidata_query(query, callback, options)
|
||||
wiki_API.wdq(query, callback, operation);
|
||||
};
|
||||
break;
|
||||
|
||||
case 'page':
|
||||
// get page contents 頁面內容。
|
||||
// title=(operation.title_prefix||_this.title_prefix)+operation.list
|
||||
to_get_data = function(title, callback) {
|
||||
library_namespace.log('wiki_API_cache: Get content of '
|
||||
+ wiki_API.title_link_of(title));
|
||||
// 防止汙染。
|
||||
var _options = library_namespace.new_options(_this,
|
||||
operation);
|
||||
// 包含 .list 時,wiki_API.page() 不會自動添加 .prop。
|
||||
delete _options.list;
|
||||
wiki_API.page(title, function(page_data) {
|
||||
callback(page_data);
|
||||
}, _options);
|
||||
};
|
||||
break;
|
||||
|
||||
case 'redirects_here':
|
||||
// 取得所有重定向到(title重定向標的)之頁面列表,(title重定向標的)將會排在[0]。
|
||||
// 注意: 無法避免雙重重定向問題!
|
||||
to_get_data = function(title, callback) {
|
||||
// wiki_API.redirects_here(title, callback, options)
|
||||
wiki_API.redirects_here(title, function(root_page_data,
|
||||
redirect_list) {
|
||||
if (!operation.keep_redirects && redirect_list
|
||||
&& redirect_list[0]) {
|
||||
if (false) {
|
||||
console.assert(redirect_list[0].redirects
|
||||
//
|
||||
.join() === redirect_list.slice(1).join());
|
||||
}
|
||||
// cache 中不需要此累贅之資料。
|
||||
delete redirect_list[0].redirects;
|
||||
delete redirect_list[0].redirect_list;
|
||||
}
|
||||
callback(redirect_list);
|
||||
}, Object.assign({
|
||||
// Making .redirect_list[0] the redirect target.
|
||||
include_root : true
|
||||
}, _this, operation));
|
||||
};
|
||||
break;
|
||||
|
||||
case 'list':
|
||||
to_get_data = function(title, callback) {
|
||||
var options = Object.assign({
|
||||
type : list_type
|
||||
}, _this, operation);
|
||||
wiki_API.list(title, function(pages) {
|
||||
if (!options.for_each_page || options.get_list) {
|
||||
library_namespace.log(list_type
|
||||
// allpages 不具有 title。
|
||||
+ (title ? ' '
|
||||
//
|
||||
+ wiki_API.title_link_of(title) : '') + ': '
|
||||
+ pages.length + ' page(s).');
|
||||
}
|
||||
pages.query_title = title;
|
||||
// page list, title page_data
|
||||
callback(pages);
|
||||
}, options);
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
if (typeof type === 'function')
|
||||
to_get_data = type.bind(Object.assign(Object.create(null),
|
||||
_this, operation));
|
||||
else if (type)
|
||||
throw new Error('wiki_API_cache: Bad type: ' + type);
|
||||
else {
|
||||
library_namespace.debug('直接採用 list 作為 data。', 1,
|
||||
'wiki_API_cache');
|
||||
write_cache(list);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 回復 recover type
|
||||
// if (list_type) type = list_type;
|
||||
|
||||
var title = list;
|
||||
|
||||
if (typeof title === 'string') {
|
||||
// 可以用 operation.title_prefix 覆蓋 _this.title_prefix
|
||||
if ('title_prefix' in operation) {
|
||||
if (operation.title_prefix)
|
||||
title = operation.title_prefix + title;
|
||||
} else if (_this.title_prefix)
|
||||
title = _this.title_prefix + title;
|
||||
}
|
||||
library_namespace.debug('處理單一項作業: ' + wiki_API.title_link_of(title)
|
||||
+ '。', 3, 'wiki_API_cache');
|
||||
to_get_data(title, write_cache);
|
||||
});
|
||||
}
|
||||
|
||||
/** {String}預設 file encoding for fs of node.js。 */
|
||||
wiki_API.encoding = 'utf8';
|
||||
/** {String}檔名預設前綴。 */
|
||||
wiki_API_cache.prefix = '';
|
||||
/** {String}檔名預設後綴。 */
|
||||
wiki_API_cache.postfix = '.json';
|
||||
/**
|
||||
* 若 operation.list() return wiki_API_cache.abort,<br />
|
||||
* 則將直接中斷離開 operation,不執行 callback。<br />
|
||||
* 此時須由 operation.list() 自行處理 callback。
|
||||
*/
|
||||
wiki_API_cache.abort = typeof Symbol === 'function' ? Symbol('ABORT_CACHE')
|
||||
//
|
||||
: {
|
||||
cache : 'abort'
|
||||
};
|
||||
/**
|
||||
* 只取檔名,僅用在 operation.each_file_name。<br />
|
||||
* <code>{
|
||||
* each_file_name : CeL.wiki.cache.title_only,
|
||||
* }</code>
|
||||
*
|
||||
* @type {Function}
|
||||
*/
|
||||
wiki_API_cache.title_only = function(last_data_got, operation) {
|
||||
var list = operation.list;
|
||||
if (typeof list === 'function') {
|
||||
operation.list = list = list.call(this, last_data_got, operation);
|
||||
}
|
||||
return operation.type + '/' + remove_page_title_namespace(list);
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
|
||||
// wiki_API.cache = wiki_API_cache;
|
||||
return wiki_API_cache;
|
||||
}
|
||||
@@ -0,0 +1,483 @@
|
||||
/**
|
||||
* @name CeL function for MediaWiki (Wikipedia / 維基百科): 特色內容特設功能。
|
||||
*
|
||||
* 注意: 本程式庫必須應各wiki特色內容改動而改寫。
|
||||
*
|
||||
* @fileoverview 本檔案包含了 MediaWiki 自動化作業用程式庫的子程式庫。
|
||||
*
|
||||
* @example <code>
|
||||
|
||||
CeL.run('application.net.wiki.featured_content');
|
||||
wiki.get_featured_content('FFA', function(FC_data_hash) {});
|
||||
wiki.get_featured_content('GA', function(FC_data_hash) {});
|
||||
wiki.get_featured_content('FA', function(FC_data_hash) {});
|
||||
wiki.get_featured_content('FL', function(FC_data_hash) {});
|
||||
|
||||
</code>
|
||||
*
|
||||
* @since 2020/1/22 9:18:43
|
||||
*/
|
||||
|
||||
// Wikipedia bots demo: https://github.com/kanasimi/wikibot
|
||||
'use strict';
|
||||
// 'use asm';
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// 不採用 if 陳述式,可以避免 Eclipse JSDoc 與 format 多縮排一層。
|
||||
typeof CeL === 'function' && CeL.run({
|
||||
// module name
|
||||
name : 'application.net.wiki.featured_content',
|
||||
|
||||
require : 'data.native.' + '|application.net.wiki.'
|
||||
// load MediaWiki module basic functions
|
||||
+ '|application.net.wiki.namespace.'
|
||||
// for to_exit
|
||||
+ '|application.net.wiki.parser.'
|
||||
//
|
||||
+ '|application.net.wiki.page.|application.net.wiki.list.',
|
||||
|
||||
// 設定不匯出的子函式。
|
||||
no_extend : 'this,*',
|
||||
|
||||
// 為了方便格式化程式碼,因此將 module 函式主體另外抽出。
|
||||
code : module_code
|
||||
});
|
||||
|
||||
function module_code(library_namespace) {
|
||||
// requiring
|
||||
var wiki_API = library_namespace.application.net.wiki, KEY_SESSION = wiki_API.KEY_SESSION;
|
||||
// @inner
|
||||
// var is_api_and_title = wiki_API.is_api_and_title,
|
||||
// normalize_title_parameter = wiki_API.normalize_title_parameter;
|
||||
|
||||
var to_exit = wiki_API.parser.parser_prototype.each.exit;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
function featured_content() {
|
||||
}
|
||||
|
||||
function get_parsed(page_data) {
|
||||
if (!page_data)
|
||||
return;
|
||||
|
||||
var parsed = typeof page_data.each === 'function'
|
||||
// `page_data` is parsed data
|
||||
? page_data : wiki_API.parser(page_data);
|
||||
|
||||
return parsed;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/** 特色內容為列表 */
|
||||
var KEY_IS_LIST = 'is_list';
|
||||
/** 為已撤銷的特色內容 */
|
||||
var KEY_ISFFC = 'is_former';
|
||||
/** 特色內容類別 */
|
||||
var KEY_CATEGORY = 'category';
|
||||
/** 指示用。會在 parse_each_zhwiki_FC_item_list_page() 之後就刪除。 */
|
||||
var KEY_LIST_PAGE = 'list page';
|
||||
|
||||
function remove_KEY_LIST_PAGE(FC_data_hash) {
|
||||
for ( var title in FC_data_hash) {
|
||||
delete FC_data_hash[title][KEY_LIST_PAGE];
|
||||
}
|
||||
}
|
||||
|
||||
var featured_content_configurations = {
|
||||
zhwiki : {
|
||||
// @see [[Category:特色内容]]
|
||||
list_source : {
|
||||
FA : '典范条目',
|
||||
FL : '特色列表',
|
||||
FP : '特色图片',
|
||||
GA : '優良條目',
|
||||
},
|
||||
get_FC : /* get_zhwiki_FC_via_list_page */get_FC_via_category
|
||||
},
|
||||
jawiki : {
|
||||
// @see [[ja:Category:記事の選考]]
|
||||
list_source : {
|
||||
FA : 'ウィキペディア 秀逸な記事',
|
||||
FL : 'ウィキペディア 秀逸な一覧',
|
||||
FP : 'ウィキペディア 秀逸な画像',
|
||||
GA : 'ウィキペディア 良質な記事'
|
||||
},
|
||||
get_FC : get_FC_via_category
|
||||
},
|
||||
enwiki : {
|
||||
// @see [[en:Category:Featured content]]
|
||||
list_source : {
|
||||
FFA : {
|
||||
page : 'Wikipedia:Former featured articles',
|
||||
handler : parse_enwiki_FFA
|
||||
},
|
||||
DGA : 'Delisted good articles',
|
||||
FA : 'Featured articles',
|
||||
FL : 'Featured lists',
|
||||
FP : 'Featured pictures',
|
||||
FT : 'Featured topics',
|
||||
GA : 'Good articles'
|
||||
},
|
||||
get_FC : get_FC_via_category
|
||||
}
|
||||
};
|
||||
|
||||
function get_site_configurations(session) {
|
||||
// e.g., 'zhwiki'
|
||||
var site_name = wiki_API.site_name(session);
|
||||
var FC_configurations = featured_content_configurations[site_name];
|
||||
return FC_configurations;
|
||||
}
|
||||
|
||||
// @see 20190101.featured_content_maintainer.js
|
||||
// 注意: 這邊尚未處理 redirects 的問題!!
|
||||
function parse_each_zhwiki_FC_item_list_page(page_data, redirects_to_hash,
|
||||
sub_FC_list_pages) {
|
||||
var using_GA = options.type === 'GA';
|
||||
/** {String}將顯示的類型名稱。 */
|
||||
var TYPE_NAME = using_GA ? '優良條目' : '特色內容';
|
||||
/** {Array}錯誤記錄 */
|
||||
var error_logs = [];
|
||||
var FC_data_hash = this.FC_data_hash
|
||||
// FC_data_hash[redirected FC_title] = { FC_data }
|
||||
|| (this.FC_data_hash = Object.create(null));
|
||||
|
||||
/**
|
||||
* {String}page title = page_data.title
|
||||
*/
|
||||
var title = wiki_API.title_of(page_data);
|
||||
/**
|
||||
* {String}page content, maybe undefined. 條目/頁面內容 =
|
||||
* wiki_API.revision_content(revision)
|
||||
*/
|
||||
var content = wiki_API.content_of(page_data);
|
||||
//
|
||||
var matched;
|
||||
/** 特色內容為列表 */
|
||||
var is_list = /list|列表/.test(title)
|
||||
// e.g., 'Wikipedia:FL'
|
||||
|| /:[DF]?[FG]L/.test(page_data.original_title || title),
|
||||
// 本頁面為已撤消的條目列表。注意: 這包含了被撤銷後再次被評為典範的條目。
|
||||
is_FFC = [ page_data.original_title, title ].join('|');
|
||||
|
||||
// 對於進階的條目,採用不同的 is_FFC 表示法。
|
||||
is_FFC = using_GA && /:FF?A/.test(is_FFC) && 'UP'
|
||||
|| /:[DF][FG][AL]|已撤消的|已撤销的/.test(is_FFC);
|
||||
|
||||
if (is_FFC) {
|
||||
// 去掉被撤銷後再次被評為典範的條目/被撤銷後再次被評為特色的列表/被撤銷後再次被評選的條目
|
||||
content = content.replace(/\n== *(?:被撤銷後|被撤销后)[\s\S]+$/, '');
|
||||
}
|
||||
|
||||
// 自動偵測要使用的模式。
|
||||
function test_pattern(pattern, min) {
|
||||
var count = 0, matched;
|
||||
while (matched = pattern.exec(content)) {
|
||||
if (matched[1] && count++ > (min || 20)) {
|
||||
return pattern;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var catalog,
|
||||
// matched: [ all, link title, display, catalog ]
|
||||
PATTERN_Featured_content = test_pattern(
|
||||
// @see [[Template:FA number]] 被標記為粗體的條目已經在作為典範條目時在首頁展示過
|
||||
// 典範條目, 已撤銷的典範條目, 已撤销的特色列表: '''[[title]]'''
|
||||
// @see PATTERN_category
|
||||
/'''\[\[([^{}\[\]\|<>\t\n#�]+)(?:\|([^\[\]\|�]*))?\]\]'''|\n==([^=].*?)==\n/g)
|
||||
// 特色列表: [[:title]]
|
||||
|| test_pattern(/\[\[:([^{}\[\]\|<>\t\n#�]+)(?:\|([^\[\]\|�]*))?\]\]|\n==([^=].*?)==\n/g)
|
||||
// 優良條目轉換到子頁面模式: 警告:本頁中的所有嵌入頁面都會被機器人當作優良條目的分類列表。請勿嵌入非優良條目的分類列表。
|
||||
|| test_pattern(/{{(Wikipedia:[^{}\|]+)}}/g, 10)
|
||||
// 優良條目子分類列表, 已撤消的優良條目: all links NOT starting with ':'
|
||||
|| /\[\[([^{}\[\]\|<>\t\n#�:][^{}\[\]\|<>\t\n#�]*)(?:\|([^\[\]\|�]*))?\]\]|\n===([^=].*?)===\n/g;
|
||||
library_namespace.log(wiki_API.title_link_of(title)
|
||||
+ ': '
|
||||
+ (is_FFC ? 'is former'
|
||||
+ (is_FFC === true ? '' : ' (' + is_FFC + ')')
|
||||
: 'NOT former') + ', '
|
||||
+ (is_list ? 'is list' : 'is article') + ', using pattern '
|
||||
+ PATTERN_Featured_content);
|
||||
|
||||
// reset pattern
|
||||
PATTERN_Featured_content.lastIndex = 0;
|
||||
// 分類/類別。
|
||||
if (matched = title.match(/\/(?:分類|分类)\/([^\/]+)/)) {
|
||||
catalog = matched[1];
|
||||
}
|
||||
|
||||
if (false) {
|
||||
library_namespace.log(content);
|
||||
console.log([ page_data.original_title || title, is_FFC, is_list,
|
||||
PATTERN_Featured_content ]);
|
||||
}
|
||||
while (matched = PATTERN_Featured_content.exec(content)) {
|
||||
// 還沒繁簡轉換過的標題。
|
||||
var original_FC_title = wiki_API.normalize_title(matched[1]);
|
||||
|
||||
if (matched.length === 2) {
|
||||
sub_FC_list_pages.push(original_FC_title);
|
||||
continue;
|
||||
}
|
||||
|
||||
// assert: matched.length === 4
|
||||
|
||||
if (matched[3]) {
|
||||
// 分類/類別。
|
||||
catalog = matched[3].replace(/<!--[\s\S]*?-->/g, '').trim()
|
||||
.replace(/\s*(\d+)$/, '');
|
||||
continue;
|
||||
}
|
||||
|
||||
// 去除並非文章,而是工作連結的情況。 e.g., [[File:文件名]], [[Category:维基百科特色内容|*]]
|
||||
if (this.namespace(original_FC_title, 'is_page_title') !== 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 轉換成經過繁簡轉換過的最終標題。
|
||||
var FC_title = redirects_to_hash
|
||||
&& redirects_to_hash[original_FC_title]
|
||||
|| original_FC_title;
|
||||
|
||||
if (FC_title in FC_data_hash) {
|
||||
// 基本檢測與提醒。
|
||||
if (FC_data_hash[FC_title][KEY_ISFFC] === is_FFC) {
|
||||
library_namespace.warn(
|
||||
//
|
||||
'parse_each_zhwiki_FC_item_list_page: Duplicate '
|
||||
+ TYPE_NAME + ' title: ' + FC_title + '; '
|
||||
+ JSON.stringify(FC_data_hash[FC_title]) + '; '
|
||||
+ matched[0]);
|
||||
error_logs.push(wiki_API.title_link_of(title)
|
||||
+ '有重複條目: '
|
||||
+ wiki_API.title_link_of(original_FC_title)
|
||||
+ (original_FC_title === FC_title ? '' : ', '
|
||||
+ wiki_API.title_link_of(FC_title)));
|
||||
} else if (!!FC_data_hash[FC_title][KEY_ISFFC] !== !!is_FFC
|
||||
&& (FC_data_hash[FC_title][KEY_ISFFC] !== 'UP' || is_FFC !== false)) {
|
||||
error_logs
|
||||
.push(wiki_API.title_link_of(FC_title)
|
||||
+ ' 被同時列在了現存及已撤銷的'
|
||||
+ TYPE_NAME
|
||||
+ '清單中: '
|
||||
+ wiki_API.title_link_of(original_FC_title)
|
||||
+ '@'
|
||||
+ wiki_API.title_link_of(title)
|
||||
+ ', '
|
||||
+ wiki_API
|
||||
.title_link_of(FC_data_hash[FC_title][KEY_LIST_PAGE][1])
|
||||
+ '@'
|
||||
+ wiki_API
|
||||
.title_link_of(FC_data_hash[FC_title][KEY_LIST_PAGE][0]));
|
||||
library_namespace.error(wiki_API.title_link_of(FC_title)
|
||||
+ ' 被同時列在了現存及已撤銷的' + TYPE_NAME + '清單中: ' + is_FFC
|
||||
+ '; ' + JSON.stringify(FC_data_hash[FC_title]));
|
||||
}
|
||||
}
|
||||
var FC_data = FC_data_hash[FC_title] = Object.create(null);
|
||||
FC_data[KEY_IS_LIST] = is_list;
|
||||
FC_data[KEY_ISFFC] = is_FFC;
|
||||
if (catalog)
|
||||
FC_data[KEY_CATEGORY] = catalog;
|
||||
FC_data[KEY_LIST_PAGE] = [ title, original_FC_title ];
|
||||
}
|
||||
|
||||
return error_logs;
|
||||
}
|
||||
|
||||
function get_zhwiki_FC_via_list_page(options, callback) {
|
||||
var session = this;
|
||||
var using_GA = options.type === 'GA';
|
||||
var FC_list_pages = (using_GA ? 'WP:GA' : 'WP:FA|WP:FL').split('|');
|
||||
var Former_FC_list_pages = (using_GA ? 'WP:DGA|WP:FA|WP:FFA'
|
||||
: 'WP:FFA|WP:FFL').split('|');
|
||||
var page_options = {
|
||||
redirects : 1,
|
||||
multi : true
|
||||
};
|
||||
|
||||
this.page(FC_list_pages.concat(Former_FC_list_pages), function(
|
||||
page_data_list) {
|
||||
var sub_FC_list_pages = [];
|
||||
page_data_list.forEach(function(page_data) {
|
||||
parse_each_zhwiki_FC_item_list_page.call(session, page_data,
|
||||
options.redirects_to_hash, sub_FC_list_pages);
|
||||
});
|
||||
|
||||
if (sub_FC_list_pages.length === 0) {
|
||||
remove_KEY_LIST_PAGE(session.FC_data_hash);
|
||||
callback && callback(session.FC_data_hash);
|
||||
return;
|
||||
}
|
||||
|
||||
session.page(sub_FC_list_pages, function(page_data_list) {
|
||||
page_data_list.forEach(function(page_data) {
|
||||
parse_each_zhwiki_FC_item_list_page.call(session,
|
||||
page_data, options.redirects_to_hash);
|
||||
});
|
||||
remove_KEY_LIST_PAGE(session.FC_data_hash);
|
||||
callback && callback(session.FC_data_hash);
|
||||
}, page_options);
|
||||
}, page_options);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
function parse_enwiki_FFA(page_data, type_name) {
|
||||
/**
|
||||
* {String}page content, maybe undefined. 條目/頁面內容 =
|
||||
* wiki_API.revision_content(revision)
|
||||
*/
|
||||
var content = wiki_API.content_of(page_data);
|
||||
content = content.replace(/^[\s\S]+?\n(==.+?==)/, '$1')
|
||||
// remove == Former featured articles that have been re-promoted ==
|
||||
.replace(/==\s*Former featured articles.+?==[\s\S]*$/, '');
|
||||
var FC_data_hash = this.FC_data_hash;
|
||||
var PATTERN_Featured_content = /\[\[(.+?)\]\]/g, matched;
|
||||
while (matched = PATTERN_Featured_content.exec(content)) {
|
||||
var FC_title = matched[1];
|
||||
var FC_data = FC_data_hash[FC_title];
|
||||
if (FC_data) {
|
||||
if (!FC_data.types.includes(type_name)) {
|
||||
// 把重要的放在前面。
|
||||
FC_data.types.unshift(type_name);
|
||||
}
|
||||
// Do not overwrite
|
||||
continue;
|
||||
}
|
||||
|
||||
FC_data = FC_data_hash[FC_title] = {
|
||||
type : type_name,
|
||||
types : [ type_name ]
|
||||
};
|
||||
FC_data[KEY_ISFFC] = true;
|
||||
// FC_data[KEY_IS_LIST] = is_list;
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
function normalize_type_name(type) {
|
||||
return type;
|
||||
}
|
||||
|
||||
function get_FC_via_category(options, callback) {
|
||||
var FC_configurations = get_site_configurations(this);
|
||||
|
||||
var type_name = normalize_type_name(options.type);
|
||||
var list_source = FC_configurations.list_source[type_name];
|
||||
// console.trace([ FC_configurations, type_name, list_source ]);
|
||||
if (!list_source) {
|
||||
throw new Error('Unknown type: ' + options.type);
|
||||
}
|
||||
|
||||
// ----------------------------
|
||||
|
||||
var FC_data_hash = this.FC_data_hash
|
||||
// FC_data_hash[redirected FC_title] = { FC_data }
|
||||
|| (this.FC_data_hash = Object.create(null));
|
||||
|
||||
// ----------------------------
|
||||
|
||||
var session = this;
|
||||
if (list_source.page) {
|
||||
this.page(list_source.page, function(page_data) {
|
||||
list_source.handler.call(session, page_data, type_name);
|
||||
callback && callback(FC_data_hash);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// ----------------------------
|
||||
|
||||
var category_title = list_source;
|
||||
|
||||
/** 特色內容為列表 */
|
||||
var is_list = /list|列表/.test(category_title);
|
||||
wiki_API.list(category_title, function(list/* , target, options */) {
|
||||
list.forEach(function(page_data) {
|
||||
var FC_title = page_data.title;
|
||||
var FC_data = FC_data_hash[FC_title];
|
||||
if (!FC_data) {
|
||||
FC_data = FC_data_hash[FC_title] = {
|
||||
type : type_name,
|
||||
types : [ type_name ]
|
||||
};
|
||||
} else if (FC_data.type !== type_name) {
|
||||
if (FC_data.type !== 'FFA' || type_name === 'FA') {
|
||||
if (options.on_conflict) {
|
||||
options.on_conflict(FC_title, {
|
||||
from : FC_data.type,
|
||||
to : type_name,
|
||||
category : category_title
|
||||
});
|
||||
} else {
|
||||
library_namespace.warn('get_FC_via_category: '
|
||||
+ FC_title + ': ' + FC_data.type + '→'
|
||||
+ type_name);
|
||||
}
|
||||
}
|
||||
if (!FC_data.types.includes(type_name)) {
|
||||
// 把重要的放在前面。
|
||||
FC_data.types.unshift(type_name);
|
||||
}
|
||||
FC_data.type = type_name;
|
||||
}
|
||||
FC_data[KEY_IS_LIST] = is_list;
|
||||
// FC_data[KEY_ISFFC] = false;
|
||||
// if (catalog) FC_data[KEY_CATEGORY] = catalog;
|
||||
});
|
||||
callback && callback(FC_data_hash);
|
||||
|
||||
}, {
|
||||
// [KEY_SESSION]
|
||||
session : this,
|
||||
// namespace: '0|1',
|
||||
type : 'categorymembers'
|
||||
});
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
// export 導出.
|
||||
// Object.assign(featured_content, {});
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// wrapper for local function
|
||||
wiki_API.prototype.get_featured_content_configurations = function get_featured_content_configurations() {
|
||||
return get_site_configurations(this);
|
||||
};
|
||||
|
||||
// callback(wiki.FC_data_hash);
|
||||
// e.g.,
|
||||
// wiki.FC_data_hash[title]={type:'GA',types:['GA','FFA'],is_former:true,is_list:false}
|
||||
wiki_API.prototype.get_featured_content = function get_featured_content(
|
||||
options, callback) {
|
||||
var FC_configurations = this.get_featured_content_configurations();
|
||||
var get_FC_function = FC_configurations && FC_configurations.get_FC;
|
||||
if (!get_FC_function) {
|
||||
library_namespace.error('get_featured_content: '
|
||||
+ 'Did not configured how to get featured content! '
|
||||
+ wiki_API.site_name(this));
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof options === 'string') {
|
||||
options = {
|
||||
type : options
|
||||
};
|
||||
} else {
|
||||
options = library_namespace.setup_options(options);
|
||||
}
|
||||
get_FC_function.call(this, options, callback);
|
||||
};
|
||||
|
||||
// 不設定(hook)本 module 之 namespace,僅執行 module code。
|
||||
return library_namespace.env.not_to_extend_keyword;
|
||||
// return featured_content;
|
||||
}
|
||||