Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Side by Side Diff: pkg/intl/lib/message_lookup_local.dart

Issue 12733003: Adds facilities for extracting Intl.message calls and generating code from translations (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * Message/plural format library with locale support. This can have different 6 * Message/plural format library with locale support. This can have different
7 * implementations based on the mechanism for finding the localized versions 7 * implementations based on the mechanism for finding the localized versions
8 * of messages. This version expects them to be in a library named e.g. 8 * of messages. This version expects them to be in a library named e.g.
9 * 'messages_en_US'. The prefix is set in the [initializeMessages] call, which 9 * 'messages_en_US'. The prefix is set in the [initializeMessages] call, which
10 * must be made for a locale before any lookups can be done. 10 * must be made for a locale before any lookups can be done.
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 * The values of [desc] and [examples] are not used at run-time but are only 82 * The values of [desc] and [examples] are not used at run-time but are only
83 * made available to the translators, so they MUST be simple Strings available 83 * made available to the translators, so they MUST be simple Strings available
84 * at compile time: no String interpolation or concatenation. 84 * at compile time: no String interpolation or concatenation.
85 * The expected usage of this is inside a function that takes as parameters 85 * The expected usage of this is inside a function that takes as parameters
86 * the variables used in the interpolated string. 86 * the variables used in the interpolated string.
87 * 87 *
88 * Ultimately, the information about the enclosing function and its arguments 88 * Ultimately, the information about the enclosing function and its arguments
89 * will be extracted automatically but for the time being it must be passed 89 * will be extracted automatically but for the time being it must be passed
90 * explicitly in the [name] and [args] arguments. 90 * explicitly in the [name] and [args] arguments.
91 */ 91 */
92 Future<String> lookupMessage(String message_str, [final String desc='', 92 String lookupMessage(String message_str, [final String desc='',
93 final Map examples=const {}, String locale, 93 final Map examples=const {}, String locale,
94 String name, List<String> args]) { 94 String name, List<String> args]) {
95 if (name == null) return new Future.immediate(message_str); 95 if (name == null) return message_str;
96 // The translations also make use of Intl.message, so we need to not 96 // The translations also make use of Intl.message, so we need to not
97 // recurse and just stop when we find the first substitution. 97 // recurse and just stop when we find the first substitution.
98 if (_lookupInProgress) return new Future.immediate(message_str); 98 if (_lookupInProgress) return message_str;
99 _lookupInProgress = true; 99 _lookupInProgress = true;
100 var result; 100 var result;
101 try { 101 try {
102 var actualLocale = (locale == null) ? Intl.getCurrentLocale() : locale; 102 var actualLocale = (locale == null) ? Intl.getCurrentLocale() : locale;
103 // For this usage, if the locale doesn't exist for messages, just return 103 // For this usage, if the locale doesn't exist for messages, just return
104 // it and we'll fall back to the original version. 104 // it and we'll fall back to the original version.
105 var verifiedLocale = 105 var verifiedLocale =
106 Intl.verifiedLocale( 106 Intl.verifiedLocale(
107 actualLocale, 107 actualLocale,
108 localeExists, 108 localeExists,
109 onFailure: (locale)=>locale); 109 onFailure: (locale)=>locale);
110 LibraryMirror messagesForThisLocale = 110 LibraryMirror messagesForThisLocale =
111 _libraries['$_sourcePrefix$verifiedLocale']; 111 _libraries['$_sourcePrefix$verifiedLocale'];
112 if (messagesForThisLocale == null) { 112 if (messagesForThisLocale == null) {
113 return new Future.immediate(message_str); 113 return message_str;
114 } 114 }
115 MethodMirror localized = messagesForThisLocale.functions[name]; 115 MethodMirror localized = messagesForThisLocale.functions[name];
116 if (localized == null) return new Future.immediate(message_str); 116 if (localized == null) return message_str;
117 result = messagesForThisLocale.invoke(localized.simpleName, args); 117 result = messagesForThisLocale.invoke(localized.simpleName, args);
118 } finally { 118 } finally {
119 _lookupInProgress = false; 119 _lookupInProgress = false;
120 } 120 }
121 return result.then((value) => value.reflectee); 121 return deprecatedFutureValue(result).reflectee;
Emily Fortuna 2013/03/13 18:54:43 what's the plan for getting rid of this call? Need
Alan Knight 2013/03/14 17:49:05 Oops. This whole file should have been deleted. me
122 } 122 }
123 } 123 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698