Skip to content

Commit

Permalink
Merge ac5614f into e6bee8d
Browse files Browse the repository at this point in the history
  • Loading branch information
herre committed May 6, 2021
2 parents e6bee8d + ac5614f commit 550c386
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 5 deletions.
9 changes: 9 additions & 0 deletions example/assets/locale/fi-FI.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"test": "Näet lisää napauttamalla kuvakkeita",
"test_arg1": "Lisää napauttamalla %1$s",
"test_arg2": "Lisää napauttamalla %1$d",
"test_arg3": "Lisää napauttamalla %1$s %2$d",
"test_arg4": "Lisää napauttamalla %1$s %2$d %1$s",
"welcome_message": "Lisää napauttamalla",
"test_new_line": "Lisää\nLisää napauttamalla\n\n%1$s %2$d %1$s"
}
8 changes: 8 additions & 0 deletions example/assets/locale/zh-Hans-CN.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"test": "视频的灯光脚本",
"test_arg1": "频的 %1$s",
"test_arg2": "频的 %1$d",
"test_arg3": "频的 %1$s %2$d",
"test_arg4": "频的 %1$s %2$d %1$s",
"test_new_line": "\n\n\n%1$s %2$d %1$s"
}
25 changes: 25 additions & 0 deletions example/lib/util/locale/localization.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:convert';

import 'package:intl/locale.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'package:locale_gen_example/util/locale/localization_keys.dart';
Expand Down Expand Up @@ -57,13 +58,21 @@ class Localization {
/// en: **'Testing in English'**
///
/// nl: **'Test in het Nederlands'**
///
/// zh-Hans-CN: **'视频的灯光脚本'**
///
/// fi-FI: **'Näet lisää napauttamalla kuvakkeita'**
String get test => _t(LocalizationKeys.test);

/// Translations:
///
/// en: **'Testing argument %1$s'**
///
/// nl: **'Test argument %1$s'**
///
/// zh-Hans-CN: **'频的 %1$s'**
///
/// fi-FI: **'Lisää napauttamalla %1$s'**
String testArg1(String arg1) =>
_t(LocalizationKeys.testArg1, args: <dynamic>[arg1]);

Expand All @@ -72,6 +81,10 @@ class Localization {
/// en: **'Testing argument %1$d'**
///
/// nl: **'Test argument %1$d'**
///
/// zh-Hans-CN: **'频的 %1$d'**
///
/// fi-FI: **'Lisää napauttamalla %1$d'**
String testArg2(num arg1) =>
_t(LocalizationKeys.testArg2, args: <dynamic>[arg1]);

Expand All @@ -80,6 +93,10 @@ class Localization {
/// en: **'Testing argument %1$s %2$d'**
///
/// nl: **'Test argument %1$s %2$d'**
///
/// zh-Hans-CN: **'频的 %1$s %2$d'**
///
/// fi-FI: **'Lisää napauttamalla %1$s %2$d'**
String testArg3(String arg1, num arg2) =>
_t(LocalizationKeys.testArg3, args: <dynamic>[arg1, arg2]);

Expand All @@ -88,6 +105,10 @@ class Localization {
/// en: **'Testing argument %1$s %2$d %1$s'**
///
/// nl: **'Test argument %1$s %2$d %1$s'**
///
/// zh-Hans-CN: **'频的 %1$s %2$d %1$s'**
///
/// fi-FI: **'Lisää napauttamalla %1$s %2$d %1$s'**
String testArg4(String arg1, num arg2) =>
_t(LocalizationKeys.testArg4, args: <dynamic>[arg1, arg2]);

Expand All @@ -96,6 +117,10 @@ class Localization {
/// en: **'Testing\nargument\n\n%1$s %2$d %1$s'**
///
/// nl: **'Test\nargument\n\n%1$s %2$d %1$s'**
///
/// zh-Hans-CN: **'频\n的\n\n%1$s %2$d %1$s'**
///
/// fi-FI: **'Lisää\nLisää napauttamalla\n\n%1$s %2$d %1$s'**
String testNewLine(String arg1, num arg2) =>
_t(LocalizationKeys.testNewLine, args: <dynamic>[arg1, arg2]);

Expand Down
9 changes: 7 additions & 2 deletions example/lib/util/locale/localization_delegate.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,16 @@ class LocalizationDelegate extends LocalizationsDelegate<Localization> {
static const _supportedLanguages = [
'en',
'nl',
'zh',
'fi',
];

static const _supportedLocales = [
Locale('en'),
Locale('nl'),
Locale.fromSubtags(languageCode: 'en', scriptCode: null, countryCode: null),
Locale.fromSubtags(languageCode: 'nl', scriptCode: null, countryCode: null),
Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN'),
Locale.fromSubtags(languageCode: 'fi', scriptCode: null, countryCode: 'FI'),
];

static List<String> get supportedLanguages {
Expand Down
24 changes: 24 additions & 0 deletions example/lib/util/locale/localization_keys.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,64 @@ class LocalizationKeys {
/// en: **'Testing in English'**
///
/// nl: **'Test in het Nederlands'**
///
/// zh-Hans-CN: **'视频的灯光脚本'**
///
/// fi-FI: **'Näet lisää napauttamalla kuvakkeita'**
static const test = 'test';

/// Translations:
///
/// en: **'Testing argument %1$s'**
///
/// nl: **'Test argument %1$s'**
///
/// zh-Hans-CN: **'频的 %1$s'**
///
/// fi-FI: **'Lisää napauttamalla %1$s'**
static const testArg1 = 'test_arg1';

/// Translations:
///
/// en: **'Testing argument %1$d'**
///
/// nl: **'Test argument %1$d'**
///
/// zh-Hans-CN: **'频的 %1$d'**
///
/// fi-FI: **'Lisää napauttamalla %1$d'**
static const testArg2 = 'test_arg2';

/// Translations:
///
/// en: **'Testing argument %1$s %2$d'**
///
/// nl: **'Test argument %1$s %2$d'**
///
/// zh-Hans-CN: **'频的 %1$s %2$d'**
///
/// fi-FI: **'Lisää napauttamalla %1$s %2$d'**
static const testArg3 = 'test_arg3';

/// Translations:
///
/// en: **'Testing argument %1$s %2$d %1$s'**
///
/// nl: **'Test argument %1$s %2$d %1$s'**
///
/// zh-Hans-CN: **'频的 %1$s %2$d %1$s'**
///
/// fi-FI: **'Lisää napauttamalla %1$s %2$d %1$s'**
static const testArg4 = 'test_arg4';

/// Translations:
///
/// en: **'Testing\nargument\n\n%1$s %2$d %1$s'**
///
/// nl: **'Test\nargument\n\n%1$s %2$d %1$s'**
///
/// zh-Hans-CN: **'频\n的\n\n%1$s %2$d %1$s'**
///
/// fi-FI: **'Lisää\nLisää napauttamalla\n\n%1$s %2$d %1$s'**
static const testNewLine = 'test_new_line';
}
2 changes: 1 addition & 1 deletion example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ flutter:
- assets/locale/

locale_gen:
languages: ['en','nl']
languages: ['en','nl', 'zh-Hans-CN', 'fi-FI']
# locale_assets_path: 'assets/localization'
# assets_path: 'assets/localization'
# doc_languages: ['en']
29 changes: 27 additions & 2 deletions lib/src/locale_gen_writer.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:convert';
import 'dart:io';

import 'package:intl/locale.dart';
import 'package:locale_gen/src/case_util.dart';
import 'package:path/path.dart';

Expand Down Expand Up @@ -84,6 +85,7 @@ class LocaleGenWriter {
final sb = StringBuffer()
..writeln("import 'dart:convert';")
..writeln()
..writeln("import 'package:intl/locale.dart';")
..writeln("import 'package:flutter/services.dart';")
..writeln("import 'package:flutter/widgets.dart';")
..writeln(
Expand Down Expand Up @@ -186,13 +188,14 @@ class LocaleGenWriter {
..writeln(
" static const defaultLocale = Locale('${params.defaultLanguage}');")
..writeln(' static const _supportedLanguages = [');
params.languages.forEach((language) => sb.writeln(" '$language',"));
params.languages
.forEach((language) => sb.writeln(_parseSupportedLanguage(language)));
sb
..writeln(' ];')
..writeln()
..writeln(' static const _supportedLocales = [');
params.languages
.forEach((language) => sb.writeln(" Locale('$language'),"));
.forEach((language) => sb.writeln(_parseSupportedLocale(language)));
sb
..writeln(' ];')
..writeln()
Expand Down Expand Up @@ -247,4 +250,26 @@ class LocaleGenWriter {
}
localizationDelegateFile.writeAsStringSync(sb.toString());
}

static String _parseSupportedLanguage(String language) {
try {
final locale = Locale.tryParse(language);
final languageCode = locale?.languageCode;
return " '$languageCode',";
} catch (_) {
return " '$language',";
}
}

static String _parseSupportedLocale(String language) {
try {
final locale = Locale.tryParse(language);
final languageCode = locale?.languageCode;
final scriptCode = locale?.scriptCode;
final countryCode = locale?.countryCode;
return " Locale.fromSubtags(languageCode: ${languageCode != null ? "'$languageCode'" : null}, scriptCode: ${scriptCode != null ? "'$scriptCode'" : null}, countryCode: ${countryCode != null ? "'$countryCode'" : null}),";
} catch (_) {
return " Locale('$language'),";
}
}
}
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ environment:
sdk: ">=2.12.0 <3.0.0"

dependencies:
intl: ^0.17.0
meta: ^1.3.0
path: ^1.8.0
yaml: ^3.1.0
Expand Down

0 comments on commit 550c386

Please sign in to comment.