Mhurd has submitted this change and it was merged.

Change subject: Update storyboard strings, qqq files when master files change
......................................................................


Update storyboard strings, qqq files when master files change

en.lproj/Main_iPhone.strings now updates automatically when
new things appear in Main_iPhone.storyboard.

qqq.lproj/*.strings files now have stub entries added for any new
entries in en.lproj/*.strings files. These should be very visible
in code review if they don't get caught before committing. :)

Extra entries from the qqq.lproj no longer in en.lproj are also removed.

Change-Id: Ibd01ba5eb754ec9aaafddf0391496c8c527273cc
---
M Wikipedia.xcodeproj/project.pbxproj
A scripts/update-qqq.php
M wikipedia/qqq.lproj/Localizable.strings
M wikipedia/qqq.lproj/Main_iPhone.strings
4 files changed, 296 insertions(+), 70 deletions(-)

Approvals:
  Mhurd: Verified; Looks good to me, approved



diff --git a/Wikipedia.xcodeproj/project.pbxproj 
b/Wikipedia.xcodeproj/project.pbxproj
index be38747..decc9aa 100644
--- a/Wikipedia.xcodeproj/project.pbxproj
+++ b/Wikipedia.xcodeproj/project.pbxproj
@@ -174,6 +174,7 @@
                D4B0AE0B19366A2C00F0AC90 /* ReadingActionFunnel.m in Sources */ 
= {isa = PBXBuildFile; fileRef = D4B0AE0A19366A2C00F0AC90 /* 
ReadingActionFunnel.m */; };
                D4B0AE0E19366A5400F0AC90 /* LoginFunnel.m in Sources */ = {isa 
= PBXBuildFile; fileRef = D4B0AE0D19366A5400F0AC90 /* LoginFunnel.m */; };
                D4BC22B4181E9E6300CAC673 /* empty.png in Resources */ = {isa = 
PBXBuildFile; fileRef = D4BC22B3181E9E6300CAC673 /* empty.png */; };
+               D4C16A6819709CDF00CD91AD /* (null) in Resources */ = {isa = 
PBXBuildFile; };
                D4E8A8A4190835C100DA4765 /* DataMigrator.m in Sources */ = {isa 
= PBXBuildFile; fileRef = D4E8A8A3190835C100DA4765 /* DataMigrator.m */; };
                D4E8A8A719084F1300DA4765 /* SQLiteHelper.m in Sources */ = {isa 
= PBXBuildFile; fileRef = D4E8A8A619084F1300DA4765 /* SQLiteHelper.m */; };
                D4E8A8A919085CEA00DA4765 /* libsqlite3.dylib in Frameworks */ = 
{isa = PBXBuildFile; fileRef = D4E8A8A819085CEA00DA4765 /* libsqlite3.dylib */; 
};
@@ -470,6 +471,7 @@
                C9928B8518AD5C6A00FCCA9A /* DownloadWikipediaZeroMessageOp.m */ 
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = DownloadWikipediaZeroMessageOp.m; sourceTree = 
"<group>"; };
                D42E75E918D11237002EA7E5 /* MWLanguageInfo.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = 
MWLanguageInfo.h; path = "mw-support/MWLanguageInfo.h"; sourceTree = "<group>"; 
};
                D42E75EA18D11237002EA7E5 /* MWLanguageInfo.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name 
= MWLanguageInfo.m; path = "mw-support/MWLanguageInfo.m"; sourceTree = 
"<group>"; };
+               D442F58619709E540013A2CA /* qqq */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = qqq; path = 
qqq.lproj/Main_iPhone.strings; sourceTree = "<group>"; };
                D44F630618DA77FF00EAD1DD /* ar */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = ar; path = 
ar.lproj/InfoPlist.strings; sourceTree = "<group>"; };
                D44F630818DA781400EAD1DD /* ast */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = ast; path = 
ast.lproj/InfoPlist.strings; sourceTree = "<group>"; };
                D44F630918DA781400EAD1DD /* ast */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = ast; path = 
ast.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -592,7 +594,7 @@
                D4991440181D51DE00E6073C /* Wikipedia-Info.plist */ = {isa = 
PBXFileReference; lastKnownFileType = text.plist.xml; path = 
"Wikipedia-Info.plist"; sourceTree = "<group>"; };
                D4991444181D51DE00E6073C /* main.m */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; 
sourceTree = "<group>"; };
                D4991446181D51DE00E6073C /* Wikipedia-Prefix.pch */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
"Wikipedia-Prefix.pch"; sourceTree = "<group>"; };
-               D4991447181D51DE00E6073C /* AppDelegate.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; 
sourceTree = "<group>"; };
+               D4991447181D51DE00E6073C /* AppDelegate.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
AppDelegate.h; sourceTree = "<group>"; };
                D4991448181D51DE00E6073C /* AppDelegate.m */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; 
sourceTree = "<group>"; };
                D499144B181D51DE00E6073C /* Base */ = {isa = PBXFileReference; 
lastKnownFileType = file.storyboard; name = Base; path = 
Base.lproj/Main_iPhone.storyboard; sourceTree = "<group>"; };
                D4991453181D51DE00E6073C /* Images.xcassets */ = {isa = 
PBXFileReference; lastKnownFileType = folder.assetcatalog; name = 
Images.xcassets; path = wikipedia/Images.xcassets; sourceTree = "<group>"; };
@@ -674,6 +676,8 @@
                D4C16A5F19708AF400CD91AD /* th */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = th; path = 
th.lproj/Main_iPhone.strings; sourceTree = "<group>"; };
                D4C16A6019708AFB00CD91AD /* pt-BR */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = "pt-BR"; path = 
"pt-BR.lproj/Main_iPhone.strings"; sourceTree = "<group>"; };
                D4C16A6119708B0E00CD91AD /* krc */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = krc; path = 
krc.lproj/Main_iPhone.strings; sourceTree = "<group>"; };
+               D4C16A6419709CDF00CD91AD /* qqq */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = qqq; path = 
qqq.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+               D4C16A6519709CDF00CD91AD /* qqq */ = {isa = PBXFileReference; 
lastKnownFileType = text.plist.strings; name = qqq; path = 
qqq.lproj/Localizable.strings; sourceTree = "<group>"; };
                D4CA33D71959FDEC0093588B /* ArticleData 2.xcdatamodel */ = {isa 
= PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = 
"ArticleData 2.xcdatamodel"; sourceTree = "<group>"; };
                D4DE203018283FF200148CA2 /* CommunicationBridgeTests.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = CommunicationBridgeTests.m; sourceTree = "<group>"; };
                D4E8A8A2190835C100DA4765 /* DataMigrator.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = 
DataMigrator.h; path = wikipedia/DataMigrator.h; sourceTree = SOURCE_ROOT; };
@@ -1573,9 +1577,11 @@
                        buildPhases = (
                                D4991431181D51DE00E6073C /* Sources */,
                                D4991432181D51DE00E6073C /* Frameworks */,
-                               D4991433181D51DE00E6073C /* Resources */,
                                04272E7619404CDF00CC682F /* ShellScript */,
                                04272E75193FF7F000CC682F /* ShellScript */,
+                               D4C16A621970946900CD91AD /* ShellScript */,
+                               D4C16A631970949A00CD91AD /* ShellScript */,
+                               D4991433181D51DE00E6073C /* Resources */,
                        );
                        buildRules = (
                        );
@@ -1677,6 +1683,7 @@
                                bik,
                                zza,
                                tg,
+                               qqq,
                        );
                        mainGroup = D499142C181D51DE00E6073C;
                        productRefGroup = D4991436181D51DE00E6073C /* Products 
*/;
@@ -1707,6 +1714,7 @@
                                04292FF4185FBA70002A13FC /* 
SearchResultPrototypeView.xib in Resources */,
                                04B0EA47190B2319007458AF /* 
PreviewLicenseView.xib in Resources */,
                                04CCCFEF1935093A00E3F60C /* 
SecondaryMenuRowView.xib in Resources */,
+                               D4C16A6819709CDF00CD91AD /* (null) in Resources 
*/,
                                047E74141860509000916964 /* 
SavedPagesResultPrototypeView.xib in Resources */,
                                04123630189C29EA00E0CF8E /* 
abuse-filter-disallo...@2x.png in Resources */,
                                D4BC22B4181E9E6300CAC673 /* empty.png in 
Resources */,
@@ -1752,6 +1760,37 @@
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
                        shellScript = "scripts/run-grunt.sh";
+               };
+               D4C16A621970946900CD91AD /* ShellScript */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                               
"$(SRCROOT)/wikipedia/Base.lproj/Main_iPhone.storyboard",
+                       );
+                       outputPaths = (
+                               
"$(SRCROOT)/wikipedia/en.lproj/Main_iPhone.strings",
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "scripts/update-storyboard-strings.php";
+               };
+               D4C16A631970949A00CD91AD /* ShellScript */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                               
"$(SRCROOT)/wikipedia/en.lproj/Main_iPhone.strings",
+                               
"$(SRCROOT)/wikipedia/en.lproj/InfoPlist.strings",
+                               
"$(SRCROOT)/wikipedia/en.lproj/Localizable.strings",
+                       );
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "scripts/update-qqq.php";
                };
 /* End PBXShellScriptBuildPhase section */
 
@@ -1976,6 +2015,7 @@
                                D467907D195AD43700C4E44D /* or */,
                                D4679084195AD48900C4E44D /* tg-cyrl */,
                                D4679087195AD49300C4E44D /* th */,
+                               D4C16A6419709CDF00CD91AD /* qqq */,
                        );
                        name = InfoPlist.strings;
                        sourceTree = "<group>";
@@ -2027,6 +2067,7 @@
                                D467908A195AD49B00C4E44D /* tr */,
                                D467908B195AD4A500C4E44D /* zh-hans */,
                                D467908C195AD4AB00C4E44D /* zh-hant */,
+                               D4C16A6519709CDF00CD91AD /* qqq */,
                        );
                        name = Localizable.strings;
                        sourceTree = "<group>";
@@ -2035,8 +2076,8 @@
                        isa = PBXVariantGroup;
                        children = (
                                D499144B181D51DE00E6073C /* Base */,
-                               D46CD8CC18A1ACA20042959E /* fr */,
                                D4C0464E196F48FF007E921C /* en */,
+                               D46CD8CC18A1ACA20042959E /* fr */,
                                D4C16A20197089CB00CD91AD /* ru */,
                                D4C16A21197089D000CD91AD /* fi */,
                                D4C16A22197089DB00CD91AD /* ar */,
@@ -2097,6 +2138,7 @@
                                D4C16A5F19708AF400CD91AD /* th */,
                                D4C16A6019708AFB00CD91AD /* pt-BR */,
                                D4C16A6119708B0E00CD91AD /* krc */,
+                               D442F58619709E540013A2CA /* qqq */,
                        );
                        name = Main_iPhone.storyboard;
                        sourceTree = "<group>";
diff --git a/scripts/update-qqq.php b/scripts/update-qqq.php
new file mode 100755
index 0000000..abad103
--- /dev/null
+++ b/scripts/update-qqq.php
@@ -0,0 +1,243 @@
+#!/usr/bin/php -q
+<?php
+
+/**
+ * AppleFFS class implements support for Apple .strings files.
+ * This class reads and writes only UTF-8 files.
+ *
+ * @author Brion Vibber <bvib...@wikimedia.org>
+ *
+ * derived from the AppleFFS in Translate extension, but hacked down
+ */
+class AppleStringsFile {
+       // READ
+
+       public function readFromFile( $path ) {
+               $data = file_get_contents( $path );
+               return $this->readFromVariable( $data );
+       }
+       
+       public function write( $data ) {
+               return $this->writeReal( $data );
+       }
+       
+       /**
+        * @param array $data
+        * @return array Parsed data.
+        * @throws Exception
+        */
+       public function readFromVariable( $data ) {
+               $lines = explode( "\n", $data );
+               $authors = $messages = array();
+               $linecontinuation = false;
+
+               $value = '';
+               foreach ( $lines as $line ) {
+                       if ( $linecontinuation ) {
+                               $linecontinuation = false;
+                               $valuecont = $line;
+                               $value .= $valuecont;
+                       } else {
+                               if ( $line === '' ) {
+                                       continue;
+                               }
+
+                               if ( substr( $line, 0, 2 ) === '//' ) {
+                                       // Single-line comment
+                                       $match = array();
+                                       $ok = preg_match( 
'~//\s*Author:\s*(.*)~', $line, $match );
+                                       if ( $ok ) {
+                                               $authors[] = $match[1];
+                                       }
+                                       continue;
+                               }
+
+                               if ( substr( $line, 0, 2 ) === '/*' ) {
+                                       if ( strpos( $line, '*/', 2 ) === false 
) {
+                                               $linecontinuation = true;
+                                       }
+                                       continue;
+                               }
+
+                               list( $key, $value ) = self::readRow( $line );
+                               $messages[$key] = $value;
+                       }
+               }
+
+               return array(
+                       'AUTHORS' => $authors,
+                       'MESSAGES' => $messages,
+               );
+       }
+
+       /**
+        * Parses non-empty strings file row to key and value.
+        * @param string $line
+        * @throws Exception
+        * @return array( string $key, string $val )
+        */
+       public static function readRow( $line ) {
+               $match = array();
+               if ( preg_match( 
'/^"((?:\\\"|[^"])*)"\s*=\s*"((?:\\\"|[^"])*)"\s*;\s*$/', $line, $match ) ) {
+                       $key = self::unescapeString( $match[1] );
+                       $value = self::unescapeString( $match[2] );
+                       if ( $key === '' ) {
+                               throw new Exception( "Empty key in line $line" 
);
+                       }
+                       return array( $key, $value );
+               } else {
+                       throw new Exception( "Unrecognized line format: $line" 
);
+               }
+       }
+
+       // Write
+
+       /**
+        * @param MessageCollection $collection
+        * @return string
+        */
+       protected function writeReal( array $collection ) {
+               $header = $this->doHeader( $collection );
+               $header .= $this->doAuthors( $collection );
+               $header .= "\n";
+
+               $output = '';
+
+               /**
+                * @var TMessage $m
+                */
+               foreach ( $collection['MESSAGES'] as $key => $m ) {
+                       $value = $m;
+
+                       if ( $value === '' ) {
+                               continue;
+                       }
+
+                       $output .= self::writeRow( $key, $value );
+               }
+
+               if ( $output ) {
+                       $data = $header . $output;
+               } else {
+                       $data = $header;
+               }
+
+               return $data;
+       }
+
+       /**
+        * Writes well-formed properties file row with key and value.
+        * @param string $key
+        * @param string $value
+        * @return string
+        */
+       public static function writeRow( $key, $value ) {
+               return self::quoteString( $key ) . ' = ' . self::quoteString( 
$value ) . ';' . "\n";
+       }
+
+       /**
+        * Quote and escape Obj-C-style strings for .strings format
+        */
+       protected static function quoteString( $str ) {
+               return '"' . self::escapeString( $str ) . '"';
+       }
+
+       /**
+        * Escape Obj-C-style strings; use backslash-escapes etc.
+        *
+        * @param string $str
+        * @return string
+        */
+       protected static function escapeString( $str ) {
+               $str = addcslashes( $str, '\\"' );
+               $str = str_replace( "\n", '\\n', $str );
+               return $str;
+       }
+
+       /**
+        * Unescape Obj-C-style strings; can include backslash-escapes
+        *
+        * @todo support \UXXXX
+        *
+        * @param string $str
+        * @return string
+        */
+       protected static function unescapeString( $str ) {
+               return stripcslashes( $str );
+       }
+
+       /**
+        * @param MessageCollection $collection
+        * @return string
+        */
+       protected function doHeader( array $collection ) {
+               if ( isset( $this->extra['header'] ) ) {
+                       $output = $this->extra['header'];
+               } else {
+                       $wgSitename = 'translatewiki.net';
+
+                       $name = 'Message documentation';
+                       $native = 'Message documentation';
+                       $output = "// Messages for $name ($native)\n";
+                       $output .= "// Exported from $wgSitename\n";
+               }
+
+               return $output;
+       }
+
+       /**
+        * @param MessageCollection $collection
+        * @return string
+        */
+       protected function doAuthors( array $collection ) {
+               $output = '';
+               $authors = $collection['AUTHORS'];
+
+               foreach ( $authors as $author ) {
+                       $output .= "// Author: $author\n";
+               }
+
+               return $output;
+       }
+}
+
+function fillStubs( &$en, &$qqq ) {
+       $enKeys = array_keys( $en['MESSAGES'] );
+       $qqqKeys = array_keys( $qqq['MESSAGES'] );
+       $missing = array_diff( $enKeys, $qqqKeys );
+       $extra = array_diff( $qqqKeys, $enKeys );
+       
+       if (count( $missing ) > 0 || count( $extra ) > 0 ) {
+               foreach( $missing as $key ) {
+                       $qqq['MESSAGES'][$key] = 'MISSING DESCRIPTION; DO NOT 
COMMIT FILE YET';
+               }
+               foreach( $extra as $key ) {
+                       unset($qqq['MESSAGES'][$key]);
+               }
+               return true;
+       } else {
+               return false;
+       }
+}
+
+function processStubs( $filename ) {
+       $base = realpath( dirname( __DIR__ ) ) . "/wikipedia";
+
+       $parser = new AppleStringsFile();
+
+       $file_en = "$base/en.lproj/$filename.strings";
+       $file_qqq = "$base/qqq.lproj/$filename.strings";
+       
+       $data_en = $parser->readFromFile( $file_en );
+       $data_qqq = $parser->readFromFile( $file_qqq );
+
+       if (fillStubs( $data_en, $data_qqq )) {
+               $out = $parser->write( $data_qqq );     
+               file_put_contents( $file_qqq, $out );
+               echo "Updated qqq.lproj/$filename.strings\n";
+       }
+}
+
+processStubs('InfoPlist');
+processStubs('Main_iPhone');
+processStubs('Localizable');
diff --git a/wikipedia/qqq.lproj/Localizable.strings 
b/wikipedia/qqq.lproj/Localizable.strings
index aee3ca4..1014768 100644
--- a/wikipedia/qqq.lproj/Localizable.strings
+++ b/wikipedia/qqq.lproj/Localizable.strings
@@ -8,7 +8,6 @@
 "article-languages-downloading" = "Alert text shown when obtaining list of 
languages in which an article is available";
 "article-languages-filter-placeholder" = "Filter languages text box 
placeholder text.";
 "language-button-text" = "Label for 'other languages' button in content area 
footer. %d is placeholder for the number of available languages; note that 
support for PLURAL string marking is not yet available, so make your message 
generic if possible for now.";
-"language-button-other-languages" = "Label for 'other languages' button in 
content area. Button also shows the number of available languages, but an 
indeterminate plural should be used here.";
 "history-label" = "Header label for screen showing the users' in-app browsing 
history.\n{{Identical|Recent}}";
 "history-section-today" = "Subsection label for list of articles browsed 
today.\n{{Identical|Today}}";
 "history-section-yesterday" = "Subsection label for list of articles browsed 
yesterday.\n{{Identical|Yesterday}}";
@@ -62,7 +61,6 @@
 "wikitext-upload-save-anonymously" = "Button text for saving without logging 
in";
 "wikitext-upload-save-anonymously-warning" = "Button sub-text informing user 
or draw-backs of not signing in before saving wikitext. Parameters:\n* $1 - 
sign in button text";
 "wikitext-upload-save-terms-and-license" = "Button text for information about 
the Terms of Use and edit license. Parameters:\n$1 - 'Terms of Use' link\n* $2 
- license name link";
-"wikitext-upload-save-terms" = "Formal name of site Terms of Use";
 "wikitext-upload-save-license-name" = "Name of license user edits are saved 
under - presently CC BY-SA 3.0";
 "open-link-title" = "Title for popup menu of terms/license link options.";
 "open-link-cancel" = "Text for cancel button in popup menu of terms/license 
link options";
@@ -149,3 +147,9 @@
 "license-footer-text" = "Brief footer text linking to CC-BY-SA license. '$1' 
is placeholder for the license-footer-name message";
 "license-footer-name" = "License short name; usually leave untranslated as 
CC-BY-SA 3.0";
 "table-of-contents-heading" = "Header text appearing above the first section 
in the table of contents";
+"wikitext-upload-save-terms-name" = "Formal name of Wikipedia 'Terms of Use' 
in local language, used as a link";
+"page_protected_autoconfirmed" = "Brief description of Wikipedia 
'autoconfirmed' protection level, shown when editing a page that is protected.";
+"page_protected_sysop" = "Brief description of Wikipedia 'sysop' protection 
level, shown when editing a page that is protected.";
+"page_protected_other" = "Brief description of Wikipedia unknown protection 
level, shown when editing a page that is protected.";
+"page_protected_can_not_edit" = "Text of alert dialog shown when trying to 
edit a page that is protected beyond what the user can edit.";
+"page_protected_can_not_edit_title" = "Title of alert dialog shown when trying 
to edit a page that is protected beyond what the user can edit.";
diff --git a/wikipedia/qqq.lproj/Main_iPhone.strings 
b/wikipedia/qqq.lproj/Main_iPhone.strings
index 342b360..1ef24b8 100644
--- a/wikipedia/qqq.lproj/Main_iPhone.strings
+++ b/wikipedia/qqq.lproj/Main_iPhone.strings
@@ -1,99 +1,36 @@
+// Messages for Message documentation (Message documentation)
+// Exported from translatewiki.net
 
-/* Class = "IBUIButton"; normalTitle = "Show another captcha"; ObjectID = 
"21c-U6-yfo"; */
 "21c-U6-yfo.normalTitle" = "Label for button on captcha screen to fetch and 
show another captcha image";
-
-/* Class = "IBUILabel"; text = "github repo"; ObjectID = "3gs-D6-glW"; */
 "3gs-D6-glW.text" = "label for link to project source on github";
-
-/* Class = "IBUILabel"; text = "wikimedia"; ObjectID = "5KU-bp-5Fs"; */
 "5KU-bp-5Fs.text" = "label for links to project source";
-
-/* Class = "IBUITextField"; placeholder = "User name"; ObjectID = 
"5cT-2Y-0Ie"; */
 "5cT-2Y-0Ie.placeholder" = "Label on login screen ";
-
-/* Class = "IBUILabel"; text = "NSDate-Extensions"; ObjectID = "6O2-5x-h41"; */
 "6O2-5x-h41.text" = "Name of an open-source library used in the project; 
usually do not translate.";
-
-/* Class = "IBUILabel"; text = "Saved pages are pretty awesome. Think of them 
as bookmarks that you can access when you are offline."; ObjectID = 
"GiD-Rj-wb7"; */
 "GiD-Rj-wb7.text" = "Explanatory text shown on saved pages list when no saved 
pages are present.";
-
-/* Class = "IBUILabel"; text = "Preview"; ObjectID = "LfM-01-aCF"; */
 "LfM-01-aCF.text" = "Button text for 'Preview' button on edit screen";
-
-/* Class = "IBUILabel"; text = "Skip"; ObjectID = "P6J-IE-CiO"; */
 "P6J-IE-CiO.text" = "Button text for 'Skip' button on onboarding screen that 
offers to log in or sign up";
-
-/* Class = "IBUITextField"; placeholder = "Password"; ObjectID = "PCr-0J-fBj"; 
*/
 "PCr-0J-fBj.placeholder" = "Placeholder label text for password field on 
create-account screen";
-
-/* Class = "IBUILabel"; text = "Canonical Language"; ObjectID = "SER-n4-DZC"; 
*/
 "SER-n4-DZC.text" = "Unused; do not translate";
-
-/* Class = "IBUITextField"; placeholder = "Re-type password"; ObjectID = 
"UgH-77-lyp"; */
 "UgH-77-lyp.placeholder" = "Placeholder label text for second password field 
on create-account screen";
-
-/* Class = "IBUILabel"; text = "No saved pages yet."; ObjectID = "W1c-wQ-1pa"; 
*/
 "W1c-wQ-1pa.text" = "Label text shown on saved pages list when there are no 
saved pages.";
-
-/* Class = "IBUILabel"; text = "Log in"; ObjectID = "Wff-o9-AdH"; */
 "Wff-o9-AdH.text" = "Button text for 'Log in' button";
-
-/* Class = "IBUILabel"; text = "Label"; ObjectID = "XkB-Xo-Xq0"; */
 "XkB-Xo-Xq0.text" = "Unused; do not translate";
-
-/* Class = "IBUILabel"; text = "Test Zero Label Text"; ObjectID = 
"aCV-ih-PXn"; */
 "aCV-ih-PXn.text" = "Unused; do not translate";
-
-/* Class = "IBUILabel"; text = "No recent pages yet."; ObjectID = 
"aUp-0e-F6i"; */
 "aUp-0e-F6i.text" = "Label text shown on 'recent pages' list when there are no 
recent pages.";
-
-/* Class = "IBUILabel"; text = "Create Account"; ObjectID = "c3c-PU-Exz"; */
 "c3c-PU-Exz.text" = "Button to Create Account on the onboarding screen";
-
-/* Class = "IBUILabel"; text = "Label"; ObjectID = "cbH-8H-z54"; */
 "cbH-8H-z54.text" = "Unused; do not translate";
-
-/* Class = "IBUILabel"; text = "Hpple"; ObjectID = "eSk-uQ-Ran"; */
 "eSk-uQ-Ran.text" = "Name of an open-source library used in the project; 
usually do not translate.";
-
-/* Class = "IBUITextField"; placeholder = "Enter CAPTCHA text from image 
above"; ObjectID = "gPg-cg-Yjy"; */
 "gPg-cg-Yjy.placeholder" = "Placeholder for input text on captcha input 
screen";
-
-/* Class = "IBUILabel"; text = "main repo"; ObjectID = "gzT-kN-7kp"; */
 "gzT-kN-7kp.text" = "label for link to project source on Wikimedia Gerrit";
-
-/* Class = "IBUILabel"; text = "Already have an account? Log in"; ObjectID = 
"heA-3K-nhS"; */
 "heA-3K-nhS.text" = "Button label on onboarding screen offering to log in 
instead of creating account";
-
-/* Class = "IBUILabel"; text = "Recent pages are not as awesome as Saved 
pages. They are not available for Offline Reading."; ObjectID = "huU-kO-aYI"; */
 "huU-kO-aYI.text" = "Explanatory text shown on recent pages list when there 
are no recent pages";
-
-/* Class = "IBUILabel"; text = "credits"; ObjectID = "ieH-d1-Ds7"; */
 "ieH-d1-Ds7.text" = "placeholder text; do not translate";
-
-/* Class = "IBUILabel"; text = "Create Account"; ObjectID = "jiW-Cg-oL3"; */
 "jiW-Cg-oL3.text" = "Button label to create account";
-
-/* Class = "IBUILabel"; text = "Language"; ObjectID = "jxY-ej-I9e"; */
 "jxY-ej-I9e.text" = "placeholder text; do not translate";
-
-/* Class = "IBUITextField"; placeholder = "Password"; ObjectID = "kVb-lx-d6C"; 
*/
 "kVb-lx-d6C.placeholder" = "Placeholder label for login password field";
-
-/* Class = "IBUITextField"; placeholder = "User name"; ObjectID = 
"mAk-1N-jPC"; */
 "mAk-1N-jPC.placeholder" = "Placeholder label for login username field";
-
-/* Class = "IBUILabel"; text = "Label"; ObjectID = "nI1-bn-0Ii"; */
 "nI1-bn-0Ii.text" = "placeholder text; do not translate";
-
-/* Class = "IBUILabel"; text = "WikiFont"; ObjectID = "qQl-8k-ux4"; */
 "qQl-8k-ux4.text" = "Name of open-source font project on about screen. Usually 
do not translate.";
-
-/* Class = "IBUITextField"; placeholder = "Email address (optional)"; ObjectID 
= "rKI-nq-3p7"; */
 "rKI-nq-3p7.placeholder" = "Placeholder text for email field on create account 
form";
-
-/* Class = "IBUILabel"; text = "external"; ObjectID = "ven-ec-xzg"; */
 "ven-ec-xzg.text" = "placeholder text; do not translate";
-
-/* Class = "IBUILabel"; text = "Create account"; ObjectID = "wkl-j8-wLX"; */
 "wkl-j8-wLX.text" = "Button label to go to Create Account form from Login 
form";

-- 
To view, visit https://gerrit.wikimedia.org/r/145708
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ibd01ba5eb754ec9aaafddf0391496c8c527273cc
Gerrit-PatchSet: 3
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Brion VIBBER <br...@wikimedia.org>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>
Gerrit-Reviewer: Mhurd <mh...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to