Skip to content

Commit

Permalink
Merge pull request #18 from nstack-io/feature/Add_Multiline_Text_Support
Browse files Browse the repository at this point in the history
Add support for multiline text
  • Loading branch information
vovahost authored Jul 3, 2020
2 parents 94f61c1 + cdd548a commit 745f979
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 10 deletions.
2 changes: 1 addition & 1 deletion example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class MyApp extends StatelessWidget {
title: Text(context.localization.defaultSection.title),
),
body: Center(
child: Text(context.localization.test.testDoubleQuotationMark),
child: Text(context.localization.test.testMultipleLines),
),
),
),
Expand Down
3 changes: 2 additions & 1 deletion example/lib/nstack.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class _Test extends SectionKeyDelegate {
String get testDollarSign => get('testDollarSign', '\$testing');
String get testSingleQuotationMark => get('testSingleQuotationMark', '\'testing\'');
String get testDoubleQuotationMark => get('testDoubleQuotationMark', '\"testing\"');
String get testMultipleLines => get('testMultipleLines', 'testing\nmultiple\nlines');
}

const _config = NStackConfig(projectId: 'h6wJremI2TGFM88gbLkdyljWQuwf2hxhxvCH', apiKey: 'zp2S18H32b67eYAbRQh94tVw76ZzaKKXlHjd');
Expand All @@ -38,7 +39,7 @@ const _languages = [
];

const _bundledTranslations = {
'en-EN': '{\"data\":{\"default\":{\"title\":\"NStack SDK Demo\"},\"test\":{\"testDollarSign\":\"\$testing\",\"testSingleQuotationMark\":\"\'testing\'\",\"testDoubleQuotationMark\":\"\\"testing\\"\"}},\"meta\":{\"language\":{\"id\":56,\"name\":\"English\",\"locale\":\"en-EN\",\"direction\":\"LRM\",\"is_default\":false,\"is_best_fit\":false},\"platform\":{\"id\":515,\"slug\":\"mobile\"}}}',
'en-EN': '{\"data\":{\"default\":{\"title\":\"NStack SDK Demo\"},\"test\":{\"testDollarSign\":\"\$testing\",\"testSingleQuotationMark\":\"\'testing\'\",\"testDoubleQuotationMark\":\"\\"testing\\"\",\"testMultipleLines\":\"testing\nmultiple\nlines\"}},\"meta\":{\"language\":{\"id\":56,\"name\":\"English\",\"locale\":\"en-EN\",\"direction\":\"LRM\",\"is_default\":false,\"is_best_fit\":false},\"platform\":{\"id\":515,\"slug\":\"mobile\"}}}',
};

final _nstack = NStack<Localization>(
Expand Down
3 changes: 2 additions & 1 deletion lib/src/nstack_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,8 @@ import 'package:nstack/partial/section_key_delegate.dart';
return stringValue
.replaceAll("'", "\\'")
.replaceAll('"', '\\"')
.replaceAll('\$', '\\\$');
.replaceAll('\$', '\\\$')
.replaceAll('\n', '\\n');
}

/// Returns a CamelCase class name from the Localization section key
Expand Down
27 changes: 20 additions & 7 deletions lib/src/repository.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:nstack/models/language.dart';

import 'dart:convert';

import 'package:nstack/models/language.dart';

class LocalizationRepository {
// Factory
static final LocalizationRepository _instance =
Expand Down Expand Up @@ -35,7 +35,9 @@ class LocalizationRepository {
}

void updateLocalization(
Map<String, dynamic> localizationJson, String bestFitLocale) {
Map<String, dynamic> localizationJson,
String bestFitLocale,
) {
this._pickedLanguage = _availableLanguages.firstWhere(
(element) => element.locale == bestFitLocale,
orElse: () => this._pickedLanguage,
Expand All @@ -47,12 +49,23 @@ class LocalizationRepository {
try {
_sectionsMap =
json.decode(_bundledTranslations[_pickedLanguage.locale])['data'];
} catch (err) {
print('_setupInternalMap() failed --> ${err.toString()}');
} catch (e, s) {
print(e);
print(s);
}
}

String getSectionKeyValue(String sectionKey, String textKey, String fallbackText) {
return _sectionsMap[sectionKey][textKey] ?? fallbackText;
String getSectionKeyValue(
String sectionKey,
String textKey,
String fallbackText,
) {
try {
return _sectionsMap[sectionKey][textKey] ?? fallbackText;
} catch (e, s) {
print(e);
print(s);
return fallbackText;
}
}
}

0 comments on commit 745f979

Please sign in to comment.