/*
 Copyright © 2007-2008, John Engelhart
 
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
 
 * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
 
 * Redistributions in binary form must reproduce the above copyright
 notice, this list of conditions and the following disclaimer in the
 documentation and/or other materials provided with the distribution.
 
 * Neither the name of the Zang Industries nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*********************************************/
/* RegexKitPrivate.h                         */
/*********************************************/

/*********************************************/
/* High priority localization strings.       */
/*                                           */
/* Displayed directly to end users.          */
/*********************************************/

/* Returned from the preprocessor macro RKYesOrNo(), which is: #define RKYesOrNo(yesOrNo) (((yesOrNo) == YES) ? RKLocalizedString(@"Yes"):RKLocalizedString(@"No")) */
"Yes" = "Yes";
"No"  = "No";

/****************************************************************************/



/*********************************************/
/* RKCache.m                                 */
/*********************************************/

/*********************************************/
/* Medium priority localization strings.     */
/*                                           */
/* Displayed frequently to programmers.      */
/*********************************************/

/* RKCache [... description] string.  Examples:
   <RKCache: 0xdeadbeef> Enabled = Yes (Add: Yes, Lookup: Yes), Cleared count = 1, Cache count = 23, Hit rate = 98.3%, Hits = 983, Misses = 17, Total = 1000, GC Active = No
   <RKCache: 0xdeadbeef> "RKRegex Regular Expression Cache" Enabled = Yes (Add: Yes, Lookup: Yes), Cleared count = 1, Cache count = 23, Hit rate = 98.3%, Hits = 983, Misses = 17, Total = 1000, GC Active = No

  Info: <%1$@: %2$p>%3$s%4$@%5$s %6$@
  '%3$s%4$@%5$s' are used to display the caches descriptive name, if any.
  If a name does not exist, %3$s becomes '' and %5$s becomes ''. (nothing)
  If a name exists, %3$s becomes ' "' and %5$s becomes '"'.
  %4$@ is the caches descriptive name string.
  %6$@ is the [... status] string.
  
  Info: Enabled = ....
  method: - (NSString *)status
  The only remarkable argument is the final argument, '%10$@'.
  Since GC is a build time option that may or may not have been compiled in
  to the framework, this is used to display the Garbage Collection (GC)
  system status, if any.  When compiled without GC, %10$@ becomes '', or
  nothing / empty.  Otherwise, one of the two ', GC Active' strings is used.
*/

"<%@: %p>%s%@%s %@" = "<%1$@: %2$p>%3$s%4$@%5$s %6$@";
", GC Active = No" = ", GC Active = No";
", GC Active = Yes" = ", GC Active = Yes";
"Enabled = %@ (Add: %@, Lookup: %@), Cleared count = %lu, Cache count = %lu, Hit rate = %6.2lf%%, Hits = %lu, Misses = %lu, Total = %.0lf%@" = "Enabled = %1$@ (Add: %2$@, Lookup: %3$@), Cleared count = %4$lu, Cache count = %5$lu, Hit rate = %6$6.2lf%%, Hits = %7$lu, Misses = %8$lu, Total = %9$.0lf%10$@";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"This cache is already initialized." = "This cache is already initialized.";

/****************************************************************************/



/*********************************************/
/* RKUtility.m                               */
/*********************************************/

/*********************************************/
/* Medium-low priority localization strings. */
/*                                           */
/* Displayed occasionally to programmers.    */
/*********************************************/

"/* Unknown build config options remain: 0x%8.8x */" = "/* Unknown build config options remain: 0x%8.8x */";
"/* Unknown compile options remain: 0x%8.8x */" = "/* Unknown compile options remain: 0x%8.8x */";
"/* Unknown match options remain: 0x%8.8x */" = "/* Unknown match options remain: 0x%8.8x */";
"/* Unknown Newline Option: 0x%8.8x */" = "/* Unknown Newline Option: 0x%8.8x */";
"Unknown error code (#%d)" = "Unknown error code (#%d)";

/****************************************************************************/


/*********************************************/
/* RKThreadPool.m                            */
/*********************************************/

/*********************************************/
/* Medium priority localization strings.     */
/*                                           */
/* Displayed frequently to programmers.      */
/*********************************************/

"<%@: %p> CPU Count = %lu, Active CPUs = %lu, Multithreaded = %@, Threads in pool = %lu of %lu" = "<%1$@: %2$p> CPU Count = %3$lu, Active CPUs = %4$lu, Multithreaded = %5$@, Threads in pool = %6$lu of %7$lu";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"The threadNumber argument is greater than the total threads in the pool." = "The threadNumber argument is greater than the total threads in the pool.";
"Unable to acquire thread run job lock." = "Unable to acquire thread run job lock.";

/****************************************************************************/



/*********************************************/
/* RKLock.m                                  */
/*********************************************/

/*********************************************/
/* Medium priority localization strings.     */
/*                                           */
/* Displayed frequently to programmers.      */
/*********************************************/

/* RKConditionLock [... description] string.  Examples:
   <RKConditionLock: 0xdeadbeef> Locked = No, Condition: 23
   <RKConditionLock: 0xdeadbeef> Locked = Yes, Lock Owned By Thread = {NSThread...} (this thread: No), Condition: 23
   <RKConditionLock: 0xdeadbeef> Locked = Yes, Lock Owned By Thread = {NSThread...} (this thread: Yes), Condition: 23
   
   The argument %3$@ is a string that is dynamically created.  It begins with
   the string "Locked = %@", and if the lock is currently locked, then the
   string ", Lock Owned by Thread = %@ (this thread: %@)" appended.
*/

"<%@: %p> %@, Condition = %lu" = "<%1$@: %2$p> %3$@, Condition = %4$lu";
"Locked = %@" = "Locked = %@";
", Lock Owned by Thread = %@ (this thread: %@)" = ", Lock Owned by Thread = %$1@ (this thread: %$2@)";

/*********************************************/
/* Medium-low priority localization strings. */
/*                                           */
/* Displayed occasionally to programmers.    */
/*********************************************/

"This RKConditionLock is already locked by this thread." = "This RKConditionLock is already locked by this thread.";
"Illegal unlock attempt. conditionIsLocked: %@, thread is lock owner: %@." = "Illegal unlock attempt. conditionIsLocked: %1$@, thread is lock owner: %2$@.";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"Lock attempt returned EDEADLK error." = "Lock attempt returned EDEADLK error.";
"Lock attempt returned EINVAL error." = "Lock attempt returned EINVAL error.";
"Lock attempt returned EPERM error." = "Lock attempt returned EPERM error.";
"Mutex did not lock as expected." = "Mutex did not lock as expected.";
"pthread_cond != 0, is %d '%s'." = "pthread_cond != 0, is %1$d '%2$s'.";

/****************************************************************************/



/*********************************************/
/* RKRegex.m                                 */
/*********************************************/

/*********************************************/
/* High priority localization strings.       */
/*                                           */
/* Displayed directly to end users.          */
/*********************************************/

/* The NSError NSLocalizedFailureReasonErrorKey for regex creation errors. */
"The character '%@' in '%@' is where the error occured." = "The character '%1$@' in '%2$@' is where the error occured.";

/* RKRegex RKCaptureIndex* functions. */
"The named subpattern '%*.*s' does not exist in the regular expression." = "The named subpattern '%*.*s' does not exist in the regular expression.";

/* also enum */
"The capture number %@ is greater than the %@ capture%s in the regular expression." = "The capture number %1$@ is greater than the %1$@ capture%3$s in the regular expression.";

/*********************************************/
/* Medium priority localization strings.     */
/*                                           */
/* Displayed frequently to programmers.      */
/*********************************************/

/* RKRegex [... description] string. */
"<%@: %p> Regular expression = '%@', Compiled options = 0x%8.8x (%@)" = "<%1$@: %2$p> Regular expression = '%3$@', Compiled options = 0x%4$8.8x (%5$@)";

/* Name given to the cache for regular expressions which will be displayed in the RKCache objects [... description] string. */
"RKRegex Regular Expression Cache" = "RKRegex Regular Expression Cache";

/*********************************************/
/* Medium-low priority localization strings. */
/*                                           */
/* Displayed occasionally to programmers.    */
/*********************************************/

/* Exception reason for regex initialization errors when not using the error: API */
"RKCompileErrorCode = %@ (#%d)\n%@\n%@\nRegular expression: '%@'." = "RKCompileErrorCode = %1$@ (#%2$d)\n%3$@\n%4$@\nRegular expression: '%5$@'.";

/* Used as the PCRE version string if there is a problem determining the version at run time. */
"UNKNOWN" = "UNKNOWN";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

/* Exception reason strings. */
"RKCaptureIndexForCaptureNameCharactersWithError: aRegex == NULL." = "RKCaptureIndexForCaptureNameCharactersWithError: aRegex == NULL.";
"Unable to convert the class '%@' to a regular expression." = "Unable to convert the class '%@' to a regular expression.";
"The captureIndexForCaptureName: parameter is NULL." = "The captureIndexForCaptureName: parameter is NULL.";
"The inMatchedRanges: parameter is NULL." = "The inMatchedRanges: parameter is NULL.";
"Unknown regular expression engine." = "Unknown regular expression engine.";
"Unable to get string buffer from object '%@', which is a copy of the passed object '%@'." = "Unable to get string buffer from object '%1$@', which is a copy of the passed object '%2$@'.";
"pcre_fullinfo for PCRE_INFO_JCHANGED failed." = "pcre_fullinfo for PCRE_INFO_JCHANGED failed.";

/* NSLog messages during framework +initialization. */
"Unable to create a pthread key for per thread resources.  Some functionality may not be available.  pthread_key_create returned %d, '%s'." = "Unable to create a pthread key for per thread resources.  Some functionality may not be available.  pthread_key_create returned %1$d, '%2$s'.";
"Unable to determine the major and minor version of the pcre library." = "Unable to determine the major and minor version of the pcre library.";

/****************************************************************************/


/*********************************************/
/* RKSortedRegex.m                           */
/*********************************************/

/*********************************************/
/* Medium priority localization strings.     */
/*                                           */
/* Displayed frequently to programmers.      */
/*********************************************/

"<%@: %p> Sorted Regex Collection type = %@, count = %lu, Regex library = %@, Compiled options = 0x%8.8x (%@)" = "<%1$@: %2$p> Sorted Regex Collection type = %3$@, count = %4$lu, Regex library = %5$@, Compiled options = 0x%6$8.8x (%7$@)";
"Sorted Regex Collection Matching Accelerator Cache" = "Sorted Regex Collection Matching Accelerator Cache";

/*********************************************/
/* Medium-low priority localization strings. */
/*                                           */
/* Displayed occasionally to programmers.    */
/*********************************************/

"Supported collection types are NSArray and NSSet.  initCollection class = '%@'." = "Supported collection types are NSArray and NSSet.  initCollection class = '%@'.";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"Unable to allocate memory for missedObjectHashCache." = "Unable to allocate memory for missedObjectHashCache.";
"Unable to allocate memory for sortedElements." = "Unable to allocate memory for sortedElements.";
"sortedRegexCollection == NULL." = "sortedRegexCollection == NULL.";
"Unable to instantiate multithreading lock." = "Unable to instantiate multithreading lock.";

/****************************************************************************/



/*********************************************/
/* RKEnumerator.m                            */
/*********************************************/

/*********************************************/
/* Medium priority localization strings.     */
/*                                           */
/* Displayed frequently to programmers.      */
/*********************************************/

"The strings length of %lu is less than the start location of %lu for the inRange: parameter of {%lu, %lu}." = "The strings length of %1$lu is less than the start location of %2$lu for the inRange: parameter of {%3$lu, %4$lu}.";
"The strings length of %lu is less than the end location of %lu for the inRange: parameter of {%lu, %lu}." = "The strings length of %1$u is less than the end location of %2$lu for the inRange: parameter of {%3$lu, %4$lu}.";
"The named subpattern '%@' does not exist in the regular expression.";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"A 'next...' method must be invoked before information about the current match is available." = "A 'next...' method must be invoked before information about the current match is available.";
"The argument for string: is NULL." = "The argument for string: is NULL.";

/****************************************************************************/



/*********************************************/
/* RKPrivate.m                               */
/*********************************************/

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"Callouts are not supported." = "Callouts are not supported.";

/****************************************************************************/



/*********************************************/
/* RKCoder.m                                 */
/*********************************************/

/*********************************************/
/* Low-medium priority localization strings. */
/*                                           */
/* Displayed rarely to programmers.          */
/*********************************************/


/* The following strings should visually align along the ':' character. */

/* Used for spacing elements so that they visually line up with the ':' from
   other strings.  Example:
     "Current build config   : 0x%8.8x (%@)"
   "\n                        " <<--                                         */
"\n                        "                        = "\n                        ";

"Current build config   : 0x%8.8x (%@)"             = "Current build config   : 0x%1$8.8x (%2$@)";
"Decoded compile options: 0x%8.8x (%@)"             = "Decoded compile options: 0x%1$8.8x (%2$@)";
"Difference in builds   : 0x%8.8x (%@)"             = "Difference in builds   : 0x%1$8.8x (%2$@)";
"Encoded PCRE version   : %@, current version %@"   = "Encoded PCRE version   : %1$@, current version %2$@";
"Encoded build config   : 0x%8.8x (%@)"             = "Encoded build config   : 0x%1$8.8x (%2$@)";
"Unknown Newline type   : 0x%8.8x. Valid types: %@" = "Unknown Newline type   : 0x%1$8.8x. Valid types: %2$@";
"Unknown option bits    : 0x%8.8x"                  = "Unknown option bits    : 0x%8.8x";
"\nAdditional information: %@\n" = "\nAdditional information: %@\n";
/* end aligned strings */

"Exception during initialization:\n%@%@" = "Exception during initialization:\n%@%@";
"Failed to recreate regular expression." = "Failed to recreate regular expression.";

/****************************************************************************/



/*********************************************/
/* NSString.m                                */
/*********************************************/

/*********************************************/
/* High priority localization strings.       */
/*                                           */
/* Displayed directly to end users.          */
/*********************************************/

/* These are likely to be displayed directly to an end user.
   For example, a 'Find / Search and Replace' might allow the user to specify
   the replacement string, with references to matches in the regex.          */

"The capture reference '%*.*s' has unbalanced curly brackets." = "The capture reference '%*.*s' has unbalanced curly brackets.";
"The capture reference '%*.*s' is not valid." = "The capture reference '%*.*s' is not valid.";
"The capture reference '%*.*s' specifies a capture subpattern '%lu' that is greater than number of capture subpatterns defined by the regular expression, '%ld'." = "The capture reference '%3$1$*.2$*s' specifies a capture subpattern '%4$lu' that is greater than number of capture subpatterns defined by the regular expression, '%5$ld'.";
"The capture reference '\\%c' specifies a capture subpattern '%lu' that is greater than number of capture subpatterns defined by the regular expression, '%ld'." = "The capture reference '\\%1$c' specifies a capture subpattern '%2$lu' that is greater than number of capture subpatterns defined by the regular expression, '%3$ld'.";
"The named capture '%*.*s' from capture reference '%*.*s' is not defined by the regular expression." = "The named capture '%3$1$*.2$*s' from capture reference '%6$4$*.5$*s' is not defined by the regular expression.";
"Type conversion is not permitted for capture reference '%*.*s' in this context." = "Type conversion is not permitted for capture reference '%*.*s' in this context.";

/*********************************************/
/* Medium-low priority localization strings. */
/*                                           */
/* Displayed occasionally to programmers.    */
/*********************************************/

"Capture reference '%*.*s' NSNumber conversion is invalid. Valid NSNumber conversion options are '.$%%ew'." = "Capture reference '%*.*s' NSNumber conversion is invalid. Valid NSNumber conversion options are '.$%%ew'.";
"The capture reference '%*.*s' storage pointer is NULL." = "The capture reference '%*.*s' storage pointer is NULL.";
"The conversion format of capture reference '%*.*s' is not valid." = "The conversion format of capture reference '%*.*s' is not valid.";
"The conversion format of capture reference '%*.*s' is not valid. Valid formats begin with '@' or '%%'." = "The conversion format of capture reference '%*.*s' is not valid. Valid formats begin with '@' or '%%'.";
"Unknown type conversion requested in capture reference '%*.*s'." = "Unknown type conversion requested in capture reference '%*.*s'.";
"Not an even pair of key and pointer to a pointer arguments." = "Not an even pair of key and pointer to a pointer arguments.";

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"Unknown edit op code encountered." = "Unknown edit op code encountered.";
"RKConvertUTF16ToUTF8RangeForStringBuffer: Range invalid. utf16Range: %@. MaxRange: %lu stringLength: %lu" = "RKConvertUTF16ToUTF8RangeForStringBuffer: Range invalid. utf16Range: %1$@. MaxRange: %2$lu stringLength: %3$lu";
"RKConvertUTF8ToUTF16RangeForStringBuffer: Range invalid. utf8Range: %@. MaxRange: %lu stringBuffer->length: %lu" = "RKConvertUTF8ToUTF16RangeForStringBuffer: Range invalid. utf8Range: %1$@. MaxRange: %2$lu stringBuffer->length: %3$lu";

/****************************************************************************/



/*********************************************/
/* The remaining strings are from various    */
/* files, but are low priority and only used */
/* as the NSException reason text.           */
/*********************************************/

/*********************************************/
/* Low priority localization strings.        */
/*********************************************/

"Range %@ exceeds array length of %lu." = "Range %1$@ exceeds array length of %2$lu.";
"String parameter is NULL." = "String parameter is NULL.";
"The captureNameString argument is NULL." = "The captureNameString argument is NULL.";
"The ranges argument is NULL." = "The ranges argument is NULL.";
"The regexString argument is NULL." = "The regexString argument is NULL.";
"The specified regular expression is NULL." = "The specified regular expression is NULL.";
"The stringBuffer parameter is NULL." = "The stringBuffer parameter is NULL.";
"Unable to acquire lock." = "Unable to acquire lock.";
"Unable to allocate additional memory." = "Unable to allocate additional memory.";
"Unable to allocate memory for elements." = "Unable to allocate memory for elements.";
"Unable to allocate memory for final copied string." = "Unable to allocate memory for final copied string.";
"Unable to allocate memory." = "Unable to allocate memory.";
"Unable to allocate object." = "Unable to allocate object.";
"Unable to allocate temporary stack space." = "Unable to allocate temporary stack space.";
"Unable to create object." = "Unable to create object.";
"Unknown performAction = %lu." = "Unknown performAction = %lu.";
"_cmd == NULL." = "_cmd == NULL.";
"captureNameString == NULL." = "captureNameString == NULL.";
"firstReference == NULL." = "firstReference == NULL.";
"initCollection == NULL." = "initCollection == NULL.";
"initRegexLibraryString == NULL." = "initRegexLibraryString == NULL.";
"matchAgainstArray == NULL." = "matchAgainstArray == NULL.";
"matchAgainstDictionary == NULL." = "matchAgainstDictionary == NULL.";
"matchAgainstSet == NULL." = "matchAgainstSet == NULL.";
"otherArray == NULL." = "otherArray == NULL.";
"otherDictionary == NULL." = "otherDictionary == NULL.";
"otherSet == NULL." = "otherSet == NULL.";
"referenceFormatString == NULL." = "referenceFormatString == NULL.";
"referenceString == NULL." = "referenceString == NULL.";
"self == NULL." = "self == NULL.";
