Commit Graph

99 Commits

Author SHA1 Message Date
TabooSun
e8436970e6 Gen l10n add named argument option (#138663)
Add an option to use named argument for generated method.

Fix #116308
2024-01-05 21:28:08 +00:00
Andrew Kolos
1952a6c8a1 Add type validation to non-template .arb file parsing logic (#139035)
Resolves https://github.com/flutter/flutter/issues/138297. 

When reading from a .arb file (which contains localizations of strings in the form of a user-defined JSON string-string map), validate the type of values that we read.

See [this comment of mine on #138297](https://github.com/flutter/flutter/issues/138297#issuecomment-1827043260) to see how I arrived at this fix.
2023-11-27 20:50:24 +00:00
Alex Li
f2db93df01 🐛 Treat empty ARB content as empty map when decoding (#131242)
Fixes #128932.
2023-08-01 01:27:54 +00:00
Alex Li
eab2087a0f 🐛 Only format Dart files for gen-l10n (#131232)
Improves #119596. The tests remain valid, so no tests were updated in the request.

This does not resolve issue #128932, it's handled by another part of the code.
2023-07-27 20:04:07 +00:00
Tae Hyung Kim
c6b93b2db7 Relax syntax for gen-l10n (#130736)
To preserve backward compatibility with the old parser which would
ignore syntax errors, this PR introduces a way to treat the special
characters `{` and `}` in the following way:
1. If we encounter a `{` which searching for a string token and this `{`
is not followed by a valid placeholder, then we treat the `{` as a
string and continue lexing for strings.
2. If we encounter a `}` while not within some expression (i.e.
placeholders, arguments, plurals, or selects), then we treat the `}` as
a string and continue lexing for strings.

This makes it so that
```
"helloWorld": "{ } { placeholder }",
"@@helloWorld": {
  "placeholders": {
    "placeholder" {}
  }
}
```
treats the `{ }` as a string while `{ placeholder } ` is treated as a
placeholder.

Fixes https://github.com/flutter/flutter/issues/122404.
2023-07-18 13:59:48 -07:00
Tae Hyung Kim
d75735eea6 Use platform specific line separator in gen-l10n (#130090)
Currently files are not generated with `\r\n` in windows. This PR should
fix the issue.

Fixes https://github.com/flutter/flutter/issues/109761.
2023-07-12 12:50:53 -07:00
Tae Hyung Kim
ff838bca89 Add locale-specific DateTime formatting syntax (#129573)
Based on the [message format
syntax](https://unicode-org.github.io/icu/userguide/format_parse/messages/#examples)
for
[ICU4J](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/MessageFormat.html).
This adds new syntax to the current Flutter messageFormat parser which
should allow developers to add locale-specific date formatting.

## Usage example
```
  "datetimeTest": "Today is {today, date, ::yMd}",
  "@datetimeTest": {
    "placeholders": {
      "today": {
        "description": "The date placeholder",
        "type": "DateTime"
      }
    }
  }
```
compiles to
```
  String datetimeTest(DateTime today) {
    String _temp0 = intl.DateFormat.yMd(localeName).format(today);
    return 'Today is $_temp0';
  }
```

Fixes https://github.com/flutter/flutter/issues/127304.
2023-06-29 09:23:34 -07:00
Tae Hyung Kim
5596a0cdab Fix gen-l10n format: true so that it applies to when it gets called via build target (#127886) 2023-05-31 15:25:54 -07:00
Tomasz Gucio
99c7e9f088 Add spaces after flow control statements (#126320) 2023-05-15 11:07:30 +02:00
Tae Hyung Kim
5c44b1df0f Refactor "gen-l10n" command to use same code path when "l10n.yaml" is present or not present (#125429)
I think this is a long needed change to the `gen-l10n` command.
Essentially, the arguments to `flutter gen-l10n` can be provided by two
different methods: via command line arguments or via the `l10n.yaml`
file. The existence of a `l10n.yaml` file causes the latter approach to
take precedence.

However, currently, there's several differences in how the two
approaches are handled, and most of the default arguments are all over
the place, causing unexpected issues such as #120457 or #120023.

This PR refactors the command so that
* `LocalizationOptions` are more consistent with the actual argument
names/yaml options.
* All default values are determined in `LocalizationOptions`'s
constructor (or in `argParser.addOption(...)` in the case a boolean
value needs to be explicitly true).
* New `parseLocalizationsOptionsFromCommand` function to parse
arguments.
* Parse `LocalizationOptions` at the beginning of `runCommand()` and
pass it to `generateLocalizations`.

Fixes #120023.
2023-04-26 11:49:25 -07:00
Tae Hyung Kim
8be335f24c Handle dollar signs properly when generating localizations (#125514)
Currently, the code doesn't properly handle strings which contain dollar signs. The return expression for the generated localization function is computed by `generateReturnExpr` which concatenates several strings, which are either interpolated placeholders, interpolated function calls, or normal strings, but we didn't properly escape dollar signs before sending normal strings to `generateReturnExpr`.

Fixes #125461.
2023-04-25 22:52:24 +00:00
Albert Wolszon
509c2ddef3 Add decimalPatternDigits to gen-l10n valid NumberFormats (#122682)
`intl` [0.18.0 added](https://pub.dev/packages/intl/changelog#0180) a
[`NumberFormat.decimalPatternDigits`](https://pub.dev/documentation/intl/latest/intl/NumberFormat/NumberFormat.decimalPatternDigits.html)
pattern that allows `decimalDigits` param.

Fixes #122785

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [ ] ~I updated/added relevant documentation (doc comments with
`///`).~
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-04-06 11:13:47 -07:00
Michael Goderbauer
fda9ecfef7 Remove 1745 decorative breaks (#123259)
Remove 1745 decorative breaks
2023-03-22 21:12:22 +00:00
Christopher Fujino
28d707693b toolexit on malformed yaml (#123167)
[flutter_tools] toolexit on malformed yaml during gen-l10n
2023-03-22 02:05:24 +00:00
Ian Hickson
6205c110d6 Remove "note that" in our documentation (as per style guide) (#120842)
* lerp documentation

* Remove Note, Note That from repo

* Improve BorderSide documentation.

* apply review comments
2023-02-17 22:27:33 +00:00
Tae Hyung Kim
becb6bd00a Fix message type inconsistency between locales (#120129)
* init

* fix error handling

* fix issue

* lint?

* error handling tests

* lint
2023-02-13 23:05:57 +00:00
Alex Li
4ae2d3b6df 🔥 Do not format the messages file for gen-l10n (#119596)
* 🔥 Do not format the messages file

*  Add test

*  Add the link to the test

*  Respect the path separator from the file system

*  Add the untranslated messages file existence test
2023-02-01 23:45:38 +00:00
Tae Hyung Kim
3884381415 Make gen-l10n error handling independent of logger state (#119644)
* init

* lint

* lint again
2023-01-31 15:28:27 -08:00
Tae Hyung Kim
02a9c151f6 Fix lexer issue where select/plural/other/underscores cannot be in identifier names. (#119190) 2023-01-25 15:31:38 -08:00
Ahmed Ashour
1fd71de0c5 Remove superfluous words from comments (#119055)
* Remove superfluous words from comments.

* Revert `win32_window.h`

Which seems to come from `gallery`
2023-01-25 20:23:24 +00:00
Michael Goderbauer
38630b6bd1 Remove unnecessary null checks in flutter_tool (#118857)
* dart fix --apply

* manual fixes

* fix after merge conflicts

* review
2023-01-23 21:43:08 +00:00
Tae Hyung Kim
583a8122bc Allow select cases to be numbers (#116625) 2023-01-10 01:18:03 -08:00
Ian Hickson
9fdb64b7e7 Taboo the word "simply" from our API documentation. (#116061) 2022-12-11 22:43:22 +00:00
Tae Hyung Kim
117a83a4a7 Throw error when plural case had undefined behavior (#116622)
* init

* add comment

* make error more actionable
2022-12-08 22:29:14 +00:00
Tae Hyung Kim
21f3ce8b69 [gen_l10n] Multiline descriptions (#116380)
* init

* empty commit to start google testing
2022-12-06 19:16:23 +00:00
Ahmed Ashour
f6224f368a [gen_l10n] keys can contain dollar sign (#114808)
* [gen_l10n] keys can contain dollar sign

Fixes #112250

* Update packages/flutter_tools/lib/src/localizations/gen_l10n.dart

Co-authored-by: Christopher Fujino <fujino@google.com>
2022-12-01 21:42:02 +00:00
Tae Hyung Kim
7802c7acd8 [gen_l10n] Improvements to gen_l10n (#116202)
* init

* fix tests

* fix lint

* extra changes

* oops missed some merge conflicts

* fix lexer add tests

* consistent warnings and errors

* throw error at the end

* improve efficiency, improve code generation

* fix

* nit

* fix test

* remove helper method class

* two d's

* oops

* empty commit as google testing won't pass :(
2022-11-30 15:07:06 -08:00
Tae Hyung Kim
39a73cabed Add Escaping Option for ICU MessageFormat Syntax (#116137)
* init

* make more descriptive

* fix lint
2022-11-28 19:35:06 -08:00
Tae Hyung Kim
215f6372c6 Refactor Message class to hold all translations (#115506)
* init

* more fixing

* finish

* fix lint

* address pr comments

* redo checks
2022-11-28 20:27:33 +00:00
Tae Hyung Kim
cef4c2aac8 ICU Message Syntax Parser (#112390)
* init

* code generation

* improve syntax error, add tests

* add tests and fix bugs

* code generation fix

* fix all tests :)

* fix bug

* init

* fix all code gen issues

* FIXED ALL TESTS :D

* add license

* remove trailing spaces

* remove print

* tests fix

* specify type annotation

* fix test

* lint

* fix todos

* fix subclass issues

* final fix; flutter gallery runs

* escaping for later pr

* fix comment

* address PR comments

* more

* more descriptive errors

* last fixes
2022-11-05 10:26:46 -07:00
Liam Appelbe
9489458650 Reland "Null safety migration of packages/flutter_tools/bin" (#111756)
This reverts commit f8f69575dd.
2022-09-16 12:39:55 -07:00
Zachary Anderson
f8f69575dd Revert "Null safety migration of packages/flutter_tools/bin" (#111506) 2022-09-13 21:55:14 +00:00
Liam Appelbe
e3b9223a74 Null safety migration of packages/flutter_tools/bin (#110706)
* Migrate packages/flutter_tools/bin

* Fix NPE

* Fix test

* Fix test

* Fix l10n optionalParameters

* Fix ChromeTab nullability

* Fix another type cast error

* Fix another cast error

* Fix another cast error (copied from #110711)

* Fix NPE

* Fix another NPE

* Assert that testDirectory is not null
2022-09-12 15:52:31 -07:00
Tae Hyung Kim
646666f8e7 [gen_l10n] Add option to format generated localizations files (#109171)
* init

* fix

* fix 2

* fix 3

* tests

* fix tests

* clarify help text

* fix all tests

* fix formatting?

* add second test

* unused import

* remove print

* trailing spaces

* artifacts is never null

* fix
2022-08-19 14:03:42 -07:00
Tae Hyung Kim
001c499f24 [gen_l10n] Warn users when placeholder types are converted to 'num' when using pluralization (#108036)
* init

* asdf

* fix tests

* change warning slightly

* fix test again

* fix spacing and comment

* fix lint
2022-07-26 14:13:06 -07:00
Christopher Fujino
94da724868 [flutter_tools] fix RangeError in gen-l10n by checking for empty string (#107604) 2022-07-15 18:56:09 +00:00
Tae Hyung Kim
2da228593f [gen_l10n] Throw error when arb file does not exist (#107583) 2022-07-15 18:18:06 +00:00
Alex Li
aa39fa5a88 [gen_l10n] Better blank lines in the header of generated files (#103414) 2022-05-12 16:04:18 -07:00
Alexandre Ardhuin
d40ee2149c remove unnecessary .toString() (#103226) 2022-05-06 16:04:13 -07:00
Phil Quitslund
b5e7fb076c [flutter_tools] rename local functions with _s (#102688) 2022-04-27 16:19:07 -07:00
Alex Li
dca58a289b [gen_l10n] Throw a specified exception when the language code is invalid (#102431) 2022-04-24 11:04:06 -07:00
Lau Ching Jun
d7688ca093 Change all instance of throwing strings to throw specific error classes. (#97325) 2022-02-02 10:45:18 -08:00
Tarekk Mohamed Abdalla
fae84f6714 [gen_l10n] Add support for adding placeholders inside select (#92753) 2021-11-22 20:08:03 -08:00
Danny Tuppeny
c6d4625232 Ensure the flutter_gen project is correctly created as part of "flutter create" (#92975) 2021-11-17 12:03:04 -08:00
Hans Muller
09d08510d0 Revert "allow full locale in .arb files (#93401)" (#93806)
This reverts commit 16f441188c.
2021-11-17 11:26:16 -08:00
Taha Tesser
16f441188c allow full locale in .arb files (#93401) 2021-11-17 09:35:47 -08:00
Shueh Chou Lu
e8b3fe8aa6 Use num on plural (#93228) 2021-11-10 08:47:25 -08:00
J-P Nurmi
550281e581 [gen_l10n] retain full output file suffix (#88362) 2021-11-08 13:55:19 -08:00
Ian Hickson
61a0add286 Enable avoid_redundant_argument_values lint (#91409) (#91462) 2021-10-08 09:25:14 -07:00
Zachary Anderson
b9d2177da0 Revert "Enable avoid_redundant_argument_values lint (#91409)" (#91461)
This reverts commit 5fd259be24.
2021-10-07 21:11:07 -07:00