Alexandre Emsenhuber [Tue, 29 Jul 2008 18:18:32 +0000 (18:18 +0000)]
Oops, forgot RELEASE-NOTES for r38196
Alexandre Emsenhuber [Tue, 29 Jul 2008 17:28:26 +0000 (17:28 +0000)]
* (bugs 6089, 13079) Show edit section links for transcluded template if, and only if the user can edit it, made Title::getUserPermissionsErrorsInternal() public so that it can be used in Parser and it can pass the User object from ParserOptions.
* Get the stubthreshold option from ParserOptions and not from $wgUser
Niklas Laxström [Tue, 29 Jul 2008 16:13:49 +0000 (16:13 +0000)]
* Number and date formats for my requested by Hintha@Betawiki
Purodha B Blissenbach [Tue, 29 Jul 2008 15:47:31 +0000 (15:47 +0000)]
Reduces the potential to be misinterpreted for few German Exif messages.
Aryeh Gregor [Tue, 29 Jul 2008 14:53:10 +0000 (14:53 +0000)]
Revert r38165 for now, breaks CentralAuth and I don't have that installed anywhere to debug.
Greg Sabino Mullane [Tue, 29 Jul 2008 14:14:10 +0000 (14:14 +0000)]
Double-check that all old revision are set null.
Domas Mituzas [Tue, 29 Jul 2008 10:05:59 +0000 (10:05 +0000)]
jobqueue changes
Domas Mituzas [Tue, 29 Jul 2008 10:01:58 +0000 (10:01 +0000)]
don't count if you don't use it! :)
Domas Mituzas [Tue, 29 Jul 2008 09:51:02 +0000 (09:51 +0000)]
don't limit random range, no need, and not efficient
Siebrand Mazeland [Tue, 29 Jul 2008 08:55:53 +0000 (08:55 +0000)]
Localisation updates for extension messages from Betawiki
* Great to have German 'core' on board!
Siebrand Mazeland [Tue, 29 Jul 2008 08:41:48 +0000 (08:41 +0000)]
Localisation updates for core messages from Betawiki (2008-07-29 10:30 CEST)
Shinjiman [Tue, 29 Jul 2008 02:37:24 +0000 (02:37 +0000)]
Update the Chinese conversion tables
Last minute changes for the release branch 1.13
Aryeh Gregor [Tue, 29 Jul 2008 00:51:08 +0000 (00:51 +0000)]
Merge TitleArray and UserArray into one unified class, ObjectArray. Adding support for a new type of object will now just take a few lines.
Aryeh Gregor [Tue, 29 Jul 2008 00:36:31 +0000 (00:36 +0000)]
Uh, also I shouldn't introduce syntax errors while fixing regressions.
Aryeh Gregor [Tue, 29 Jul 2008 00:35:43 +0000 (00:35 +0000)]
Partially revert r38162. Caused bugs due to incredibly incomprehensible parameter list for makeKnownLinkObj. (Hint: $aprops and $style do virtually the same thing, except that the latter has a completely misleading name and documentation.)
There is no salvation possible for this method. It must die.
Aryeh Gregor [Tue, 29 Jul 2008 00:08:25 +0000 (00:08 +0000)]
Linker.php cleanup:
* Allow makeLinkObj to accept an associative array of arguments for $aprops, so Brion's eyes can be saved from melting.
* Fail fast when various methods are passed non-Titles, don't just return some garbage and hope no one notices.
* Whitespace, wfDeprecated().
Aryeh Gregor [Mon, 28 Jul 2008 23:52:55 +0000 (23:52 +0000)]
Recommit r38149, with the fatal error fixed. The EditSectionLinkForOther hook is now removed entirely -- EditSectionLink is run unconditionally instead. This is extremely unlikely to break any extensions.
Brion Vibber [Mon, 28 Jul 2008 23:42:30 +0000 (23:42 +0000)]
* (bug 14966) Fix SearchEngineDummy class for silently non-functional search
on Sqlite instead of horribly fatal error breaky one.
Brion Vibber [Mon, 28 Jul 2008 23:00:14 +0000 (23:00 +0000)]
Revert r38149 for now, causes regressions in API parsing.
Bug 14965 - https://bugzilla.wikimedia.org/show_bug.cgi?id=14965
PHP Catchable fatal error: Argument 1 passed to Title::equals() must be an instance of Title, null given, called in /usr/local/apache/common-local/php-1.5/includes/Linker.php on line 1323 and defined in /usr/local/apache/common-local/php-1.5/includes/Title.php on line 3003
$wgTitle isn't available in this sort of background rendering.
Brion Vibber [Mon, 28 Jul 2008 22:52:14 +0000 (22:52 +0000)]
Add type hint to Title::equals(); this lets the error log give us something useful like this:
Catchable fatal error: Argument 1 passed to Title::equals() must be an instance of Title, null given, called in /Library/WebServer/Documents/trunk/includes/Linker.php on line 1323 and defined in /Library/WebServer/Documents/trunk/includes/Title.php on line 3003
instead of something useless like this:
Fatal error: Call to a member function getInterwiki() on a non-object in /Library/WebServer/Documents/trunk/includes/Title.php on line 3005
This particular error was caused by a regression in r38149, which uses $wgTitle in Linker::doEditSectionLink(); this fails when doing parses via the API at perhaps at other times.
See bug 14965 (https://bugzilla.wikimedia.org/show_bug.cgi?id=14965)
Brion Vibber [Mon, 28 Jul 2008 20:59:17 +0000 (20:59 +0000)]
* Recursion loop check added to Categoryfinder class
Infinite loops were causing segfaults in combination with Collection extension
Aryeh Gregor [Mon, 28 Jul 2008 20:33:43 +0000 (20:33 +0000)]
Linker::doEditSectionLink() and Linker::doEditSectionLinkForOther() and their respective hooks are redundant and confusing. They do exactly the same thing with a slightly different interface. Their hooks are not only redundant but relatively ineffective, because they wrap in brackets and a span *after* the hook returns. This makes them useless for, e.g., changing the section edit link to an image (can't remove brackets), or using any block-level element (wrapped in a span).
Make Linker::doEditSectionLink() public, and change its interface to be like that of editSectionLink(). Use that in Parser (which is the only place that uses the old functions that I can find), and mark the old two functions deprecated. Add a hook 'DoEditSectionLink' with a new, clean interface, which is run immediately before the return so it can override the whole function. Advise people in hooks.txt to use the new hook, not the old ones.
Niklas Laxström [Mon, 28 Jul 2008 20:25:22 +0000 (20:25 +0000)]
* Fix magic words related regression for bg
Brion Vibber [Mon, 28 Jul 2008 19:22:23 +0000 (19:22 +0000)]
Fix r38146 -- this is why redundant style declarations are bad. When one is removed, you discover they didn't match! :)
Brion Vibber [Mon, 28 Jul 2008 19:14:42 +0000 (19:14 +0000)]
and another modern tweak -- don't @import the common styles now that we've got <link>s
Alexandre Emsenhuber [Mon, 28 Jul 2008 19:10:13 +0000 (19:10 +0000)]
* Per talk with brion, use wfArrayToCGI()\n* Avoid blank lines between CSS <link>
Brion Vibber [Mon, 28 Jul 2008 19:09:38 +0000 (19:09 +0000)]
* (bug 14954) Fix regression in Modern and Simple skins
Earlier r38139 patched up Modern, but didn't address Simple.
Robert Leverington [Mon, 28 Jul 2008 19:02:40 +0000 (19:02 +0000)]
* (bug 14923) Add method for getting a TitleArray for a particular category.
Alexandre Emsenhuber [Mon, 28 Jul 2008 16:54:06 +0000 (16:54 +0000)]
Some tweaks for r38116:
* Ported Modern too, MediaWiki:Common.css and MediaWiki:Modern.css are missing in that skin
* Don't throw E_NOTICE if $wgUseSiteCss is false
Also prettify two things:
* Align <head> items at two tabs for SkinTemplate skins
* Use an array for query string for MediaWiki:Common.css, MediaWiki:<skin>.css and gen=css
Chad Horohoe [Mon, 28 Jul 2008 16:02:45 +0000 (16:02 +0000)]
Fail a little more gracefully if memcached returns nothing (get a bunch of fun divide by zero errors otherwise :)
Raimond Spekking [Mon, 28 Jul 2008 15:58:30 +0000 (15:58 +0000)]
Localisation updates German
Chad Horohoe [Mon, 28 Jul 2008 15:49:44 +0000 (15:49 +0000)]
Deprecate SiteStats::admins() in favor of SiteStats::numberingroup('sysop'). Should make bug 13471 easy.
Raimond Spekking [Mon, 28 Jul 2008 15:41:17 +0000 (15:41 +0000)]
* Add a few CSS ids to allow customization of warning messages
* Apply formatNum to $wgMaxArticleSize too
Raimond Spekking [Mon, 28 Jul 2008 14:22:15 +0000 (14:22 +0000)]
Localisation updates German
Tim Starling [Mon, 28 Jul 2008 10:16:12 +0000 (10:16 +0000)]
No negative caching in the revision cache -- doesn't work anyway since memcached converts false to '', and so suppresses the error message on the second hit.
Rotem Liss [Mon, 28 Jul 2008 09:48:13 +0000 (09:48 +0000)]
Localization update for he.
Siebrand Mazeland [Mon, 28 Jul 2008 09:10:36 +0000 (09:10 +0000)]
Localisation updates for core from Betawiki
Siebrand Mazeland [Mon, 28 Jul 2008 09:00:25 +0000 (09:00 +0000)]
Localisation updates for core messages from Betawiki (2008-07-28 10:44 CEST)
Brion Vibber [Mon, 28 Jul 2008 05:44:18 +0000 (05:44 +0000)]
Revert r38068 "SpecialMovepageBeforeMove hook from Wikia codebase - allows extensions, such as spamRegex, to interfere with page moving"
This passes a MovePageForm, which seems unwise. It won't apply to the edit API, and generally seems like a weak interface -- an internal UI object is passed instead of specific information, leaving it unstable to future changes.
Brion Vibber [Mon, 28 Jul 2008 05:31:12 +0000 (05:31 +0000)]
Revert r38040 "new hook, ConfirmEmailComplete"
This hook is incomplete and won't work as advertised. Will fail to run when the email address is confirmed through other means, such as a password reset; also there's no corresponding hook for when the mail gets *un*confirmed, so would lead to inconsistent state.
Brion Vibber [Mon, 28 Jul 2008 05:25:25 +0000 (05:25 +0000)]
Revert r38016, r38018 (change of $wgTranslateNumerals defaults).
There was no explanation given of why it should be forced to off by default for every language...
Brion Vibber [Mon, 28 Jul 2008 05:09:08 +0000 (05:09 +0000)]
Start on some cleanup of how CSS stylesheets are loaded. Initially addressing only the SkinTemplate-based skins; would like to rip out some near-dupe code in the other skin types, with a little more refactoring...
* A skin can make calls to $this->addScript to much more cleanly list which style sheets it wants to load, for which media variants and which IE conditional versions. This replaces the 'cssfiles' array hack and giant pile of ugly conditionals in MonoBook's template.
* 'printable=yes' and 'handheld=yes' URL options are handled transparently -- 'screen' stylesheets are hidden, while those with no media specifier are left.
MediaWiki:Common.css is now listed without media -- so infoboxes are still formatted -- while the skin-specific eg MediaWiki:Monobook.css are listed for screen, as they're specific to the on-screen skin.
Note it should be a matter of one line of code to add a MediaWiki:Print.css and have it correctly handled now.
* All sheets are now loaded via <link rel="stylesheet"> instead of a mix of those and @import decls.
IIRC we had used @import originally to hide styles from Netscape 4, which tends to utterly break on MonoBook, but these days that's pretty much a non-issue.
@import also breaks some browsers' ability to save stylesheets with a file to disk, which sucks.
Confirmed that Firefox 3 can now save pages with their styles.
* 'screen, projection' media specifier has been changed to just 'screen' -- projection is something totally different.
* Added experimental options for specifying handheld stylesheets:
/**
* Optionally, we can specify a stylesheet to use for media="handheld".
* This is recognized by some, but not all, handheld/mobile/PDA browsers.
* If left empty, compliant handheld browsers won't pick up the skin
* stylesheet, which is specified for 'screen' media.
*
* Can be a complete URL, base-relative path, or $wgStylePath-relative path.
* Try 'chick/main.css' to apply the Chick styles to the MonoBook HTML.
*
* Will also be switched in when 'handheld=yes' is added to the URL, like
* the 'printable=yes' mode for print media.
*/
$wgHandheldStyle = false;
/**
* If set, 'screen' and 'handheld' media specifiers for stylesheets are
* transformed such that they apply to the iPhone/iPod Touch Mobile Safari,
* which doesn't recognize 'handheld' but does support media queries on its
* screen size.
*
* Consider only using this if you have a *really good* handheld stylesheet,
* as iPhone users won't have any way to disable it and use the "grown-up"
* styles instead.
*/
$wgHandheldForIPhone = false;
Shinjiman [Mon, 28 Jul 2008 01:27:21 +0000 (01:27 +0000)]
Update the Chinese conversion tables
Last minute changes for the release branch 1.13
Brion Vibber [Mon, 28 Jul 2008 01:26:44 +0000 (01:26 +0000)]
Set a damn default for apiThumbCacheExpiry so we don't spew notices all the time when it's not set.
Aaron Schulz [Sun, 27 Jul 2008 21:50:35 +0000 (21:50 +0000)]
Set baserevid (bug 14918)
Tim Starling [Sun, 27 Jul 2008 21:49:58 +0000 (21:49 +0000)]
Magic word __STATICREDIRECT__ to suppress the redirect fixer. For periodically-archived pages like [[WP:GO]].
Brion Vibber [Sun, 27 Jul 2008 21:31:11 +0000 (21:31 +0000)]
* API search now falls back to fulltext search by default when using Lucene
or other engine which doesn't support a separate title search function.
This means you can use API search on Wikipedia without explicitly adding
&srwhat=text to the query.
Aaron Schulz [Sun, 27 Jul 2008 19:24:35 +0000 (19:24 +0000)]
set baseRevId (bug 14947)
Aryeh Gregor [Sun, 27 Jul 2008 18:59:46 +0000 (18:59 +0000)]
* Add count() method to TitleArray and UserArray.
* Change PageHistory::fetchRevisions() to return a result object instead of an array of rows.
* Stylistic issues: use foreach( $res as $row ) instead of while( $row = $dbr->fetchObject( $res ) ), change a couple of variable names, use __METHOD__.
There should be no functional changes.
Alexandre Emsenhuber [Sun, 27 Jul 2008 18:43:55 +0000 (18:43 +0000)]
Avoid using $this, it is a reserved word
Aryeh Gregor [Sun, 27 Jul 2008 18:14:59 +0000 (18:14 +0000)]
Indeed, this is a ResultWrapper object, so we can iterate over it: no ugly while loops. In fact, we don't even have to bother creating the array. A few quick tests show >100 KB peak memory usage drop even on a quite small RC, a couple dozen items.
Alexandre Emsenhuber [Sun, 27 Jul 2008 18:09:22 +0000 (18:09 +0000)]
Fix comment (Title::newFromTitle -> Title::newFromName) and mark Title::nameOf() as public static instead of doing this with in comments
Jon Harald Søby [Sun, 27 Jul 2008 17:31:18 +0000 (17:31 +0000)]
Added {{PLURAL:}} to lag-warn-normal and lag-warn-high
Siebrand Mazeland [Sun, 27 Jul 2008 11:08:39 +0000 (11:08 +0000)]
Localisation updates for core messages from Betawiki (2008-07-27 12:58 CEST)
Shinjiman [Sun, 27 Jul 2008 10:25:41 +0000 (10:25 +0000)]
Localisation updates Cantonese, Chinese and Old/Late Time Chinese
Siebrand Mazeland [Sun, 27 Jul 2008 10:08:28 +0000 (10:08 +0000)]
Fix typo in message text.
Shinjiman [Sun, 27 Jul 2008 10:05:33 +0000 (10:05 +0000)]
Update the Chinese conversion tables
Last minute changes for the release branch 1.13
Shinjiman [Sun, 27 Jul 2008 04:04:26 +0000 (04:04 +0000)]
Update the Chinese conversion tables
Chad Horohoe [Sat, 26 Jul 2008 23:42:29 +0000 (23:42 +0000)]
Ignore sysops+bcrats and accounts touched in the last week. Patch by Louperivois.
Jack Phoenix [Sat, 26 Jul 2008 21:38:51 +0000 (21:38 +0000)]
SpecialMovepageBeforeMove hook from Wikia codebase - allows extensions, such as spamRegex, to interfere with page moving
Alexandre Emsenhuber [Sat, 26 Jul 2008 20:41:52 +0000 (20:41 +0000)]
* factorize common code
* allow to pass directly a Language object
Alexandre Emsenhuber [Sat, 26 Jul 2008 15:51:49 +0000 (15:51 +0000)]
Tweak for my last commit: this variable is not used anymore
Alexandre Emsenhuber [Sat, 26 Jul 2008 08:42:29 +0000 (08:42 +0000)]
$res is a ResultWrapper object
Chad Horohoe [Sat, 26 Jul 2008 02:33:54 +0000 (02:33 +0000)]
One less step and potentially one less query if the number is already set.
Chad Horohoe [Fri, 25 Jul 2008 23:12:27 +0000 (23:12 +0000)]
Remove a bit of useless $wgCapitalLinks logic, all these code paths lead through Title::secureAndSpit() which handles initial-character-capitalization.
*In SearchEngine's case, it gets caught every time further up the page (it never even reaches the upper/lower casing of only first character part)
*PrefixSearch eventually sends it through ApiQueryBase::titleToKey()
*AjaxFunctions immediately sends it to Title::newFromText()
Alexandre Emsenhuber [Fri, 25 Jul 2008 20:43:15 +0000 (20:43 +0000)]
rm dupe
Aryeh Gregor [Fri, 25 Jul 2008 20:16:24 +0000 (20:16 +0000)]
Move more initialization to member variable defaults. (The Title constructor now actually does nothing, but I left it for the comment.)
Aryeh Gregor [Fri, 25 Jul 2008 19:36:13 +0000 (19:36 +0000)]
Change a few hardcoded select() parameters (one of which was actually incorrect) to __METHOD__.
Aryeh Gregor [Fri, 25 Jul 2008 19:19:11 +0000 (19:19 +0000)]
Convert subpage move to use TitleArray, just for demonstration. It's only a few lines' difference in this case, with no actual effect on anything. Finding places where *arrays* of Titles are used would be more fruitful.
Aryeh Gregor [Fri, 25 Jul 2008 19:14:30 +0000 (19:14 +0000)]
Copy-paste documentation for copy-pasted hook, too.
Aryeh Gregor [Fri, 25 Jul 2008 19:03:53 +0000 (19:03 +0000)]
Add TitleArray, a straight rip-off of UserArray. I couldn't figure out how to make them both inherit from ObjectArray or anything, so code duplication works for now.
Jack Phoenix [Fri, 25 Jul 2008 18:11:43 +0000 (18:11 +0000)]
new hook, ConfirmEmailComplete
Alexandre Emsenhuber [Fri, 25 Jul 2008 18:06:29 +0000 (18:06 +0000)]
Per r38036: also fix FormOptions
Rotem Liss [Fri, 25 Jul 2008 17:00:06 +0000 (17:00 +0000)]
Credits:
* I'm already in the list, 4 lines above.
* Alphabetic order.
* Removing trailing whitespace.
Bryan Tong Minh [Fri, 25 Jul 2008 16:52:13 +0000 (16:52 +0000)]
* alnokta = Mohamed Magdy
* Add Rotem Liss per r38033
Alexandre Emsenhuber [Fri, 25 Jul 2008 16:46:43 +0000 (16:46 +0000)]
(bug 14659) Passing the default limit param to Special:Recentchanges no more falls back to the user option
Krzysztof Krzyzaniak [Fri, 25 Jul 2008 15:39:12 +0000 (15:39 +0000)]
avoid php FATAL error when Parser_OldPP is used
Aryeh Gregor [Fri, 25 Jul 2008 14:30:54 +0000 (14:30 +0000)]
Fix spelling of my name.
Rotem Liss [Fri, 25 Jul 2008 13:59:24 +0000 (13:59 +0000)]
API change: Registration time of users registered before the DB field was created is now shown as empty instead of the current time.
Shinjiman [Fri, 25 Jul 2008 13:39:43 +0000 (13:39 +0000)]
Update the Chinese conversion tables
Chad Horohoe [Fri, 25 Jul 2008 13:39:00 +0000 (13:39 +0000)]
Add some docs on how far back wfLoadExtensionMessages() goes
Siebrand Mazeland [Fri, 25 Jul 2008 08:50:35 +0000 (08:50 +0000)]
Localisation updates for core messages from Betawiki (2008-07-25 10:43 CEST)
Robert Leverington [Fri, 25 Jul 2008 07:52:34 +0000 (07:52 +0000)]
* The line regarding otehr contributors should read "CREDITS" rather than "AUTHORS".
Chad Horohoe [Fri, 25 Jul 2008 05:57:07 +0000 (05:57 +0000)]
Add CREDITS file, listed all those who've committed something to trunk since the 1.13 branch. Need patch submitters (any thus far?) and translators.
Aryeh Gregor [Fri, 25 Jul 2008 01:27:51 +0000 (01:27 +0000)]
Move some member variable initialization to the declarations and out of constructors. This is better style and less error-prone: OutputPage::$mIsPrintable was first being set to true and then to false in the constructor, and $mAllowUserJs and $mLinkColours are missing defaults entirely. Also, Tim said there's some lazy-loading or shared memory or something if it's done this way, so it might be a performance boost.
Mohamed Magdy [Thu, 24 Jul 2008 23:31:06 +0000 (23:31 +0000)]
Add note about $wgTranslateNumerals
Greg Sabino Mullane [Thu, 24 Jul 2008 22:28:29 +0000 (22:28 +0000)]
Add partial index for common recentchanges query.
Mohamed Magdy [Thu, 24 Jul 2008 21:54:06 +0000 (21:54 +0000)]
Set $wgTranslateNumerals to false by default.
Aryeh Gregor [Thu, 24 Jul 2008 18:10:35 +0000 (18:10 +0000)]
Break at 80 columns in some comments. Also improve documentation for $wgArticleRobotPolicies.
Aryeh Gregor [Thu, 24 Jul 2008 18:02:20 +0000 (18:02 +0000)]
Instead of last commit, use $wgExemptFromUserRobotsControl to control __INDEX__/__NOINDEX__. This defaults to null, which means $wgContentNamespaces. Pages whose namespaces are in the array will be unaffected by __INDEX__/__NOINDEX__. This will prevent serious vandalism, so the feature is again enabled by default (with content namespaces exempted).
As was pointed out, it's probably better anyway that the vandal noindex a page and have nothing turn up in searches if the search engine arrives at that exact time, than to have the vandal replace the page with "ARTICLE SUBJECT IS A POOPY-HEAD" and have that turn up in searches if the search engine arrives at that exact time. :) At any rate, this should solve the issue.
Aryeh Gregor [Thu, 24 Jul 2008 17:40:16 +0000 (17:40 +0000)]
Implement $wgAllowUserRobotsControl to control whether the new __INDEX__ and __NOINDEX__ magic words work. False by default until this is thought out a little better: there are major possibilities for vandalism here.
Chad Horohoe [Thu, 24 Jul 2008 17:14:43 +0000 (17:14 +0000)]
Allow local caching of thumbs from remote APIs. Still highly hackish and should only be used if you're on crack.
Tim Starling [Thu, 24 Jul 2008 16:25:19 +0000 (16:25 +0000)]
* Fix bug 14904: fragments lost when redirects are fixed.
* Add $fragment parameter to Title::makeTitle() and friends
Tim Starling [Thu, 24 Jul 2008 12:51:26 +0000 (12:51 +0000)]
Syntax error
Tim Starling [Thu, 24 Jul 2008 12:45:23 +0000 (12:45 +0000)]
Workaround for APC bug. Not fully isolated, but AutoLoader::$localClasses is implicated by the C stack frame at the time of the crash.
Chad Horohoe [Thu, 24 Jul 2008 12:37:07 +0000 (12:37 +0000)]
bug 14907 - DatabasePostgres::fieldType() wasn't defined, fatal errors abound.
Rotem Liss [Thu, 24 Jul 2008 09:22:08 +0000 (09:22 +0000)]
Localization update for he.
Siebrand Mazeland [Thu, 24 Jul 2008 08:55:11 +0000 (08:55 +0000)]
Localisation updates for core messages from Betawiki (2008-07-24 10:48 CEST)
Shinjiman [Thu, 24 Jul 2008 00:26:04 +0000 (00:26 +0000)]
Localisation updates Cantonese, Chinese and Old/Late Time Chinese
Huji [Wed, 23 Jul 2008 20:03:40 +0000 (20:03 +0000)]
Localisation updates: Adding/updating Persian translations