Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
nicksnyder committed Sep 28, 2020
1 parent 7950593 commit a1ee29a
Show file tree
Hide file tree
Showing 6 changed files with 136 additions and 6 deletions.
2 changes: 1 addition & 1 deletion v2/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/nicksnyder/go-i18n/v2
go 1.9

require (
github.com/BurntSushi/toml v0.3.0
github.com/BurntSushi/toml v0.3.1
golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284 // indirect
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c // indirect
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b // indirect
Expand Down
2 changes: 2 additions & 0 deletions v2/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
github.com/BurntSushi/toml v0.3.0 h1:e1/Ivsx3Z0FVTV0NSOv/aVgbUWyQuzj7DDnFblkRvsY=
github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
Expand Down
42 changes: 42 additions & 0 deletions v2/i18n/fallback.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
goos: darwin
goarch: amd64
pkg: github.com/nicksnyder/go-i18n/v2/i18n
BenchmarkLocalizer_Localize/message_id_mismatch-8 30000000 38.1 ns/op 32 B/op 1 allocs/op
BenchmarkLocalizer_Localize/message_id_not_mismatched-8 5000000 279 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_default_language-8 5000000 335 ns/op 96 B/op 2 allocs/op
BenchmarkLocalizer_Localize/empty_translation_without_fallback-8 5000000 381 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_default_language_with_other_translation-8 5000000 334 ns/op 96 B/op 2 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_not_default_language-8 5000000 263 ns/op 96 B/op 2 allocs/op
BenchmarkLocalizer_Localize/missing_translation_not_default_language_with_other_translation-8 5000000 266 ns/op 96 B/op 2 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_message_in_bundle-8 5000000 274 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_message_in_bundle,_default_message-8 5000000 282 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_message_in_bundle-8 5000000 283 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_other_message_in_bundle,_default_message-8 10000000 214 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_message_in_bundle,_default_message-8 5000000 291 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_default_message-8 3000000 524 ns/op 368 B/op 4 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_default_message-8 3000000 453 ns/op 368 B/op 4 allocs/op
BenchmarkLocalizer_Localize/fallback_to_non-default_less_specific_language-8 2000000 767 ns/op 56 B/op 4 allocs/op
BenchmarkLocalizer_Localize/fallback_to_non-default_more_specific_language-8 5000000 284 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/plural_count_one,_bundle_message-8 1000000 1187 ns/op 592 B/op 9 allocs/op
BenchmarkLocalizer_Localize/plural_count_other,_bundle_message-8 1000000 1178 ns/op 592 B/op 9 allocs/op
BenchmarkLocalizer_Localize/plural_count_float,_bundle_message-8 1000000 1359 ns/op 624 B/op 10 allocs/op
BenchmarkLocalizer_Localize/plural_count_one,_default_message-8 300000 6123 ns/op 2862 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_missing_one,_default_message-8 300000 5894 ns/op 2797 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_missing_other,_default_message-8 2000000 800 ns/op 784 B/op 8 allocs/op
BenchmarkLocalizer_Localize/plural_count_other,_default_message-8 300000 5874 ns/op 2861 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_float,_default_message-8 200000 6793 ns/op 2894 B/op 43 allocs/op
BenchmarkLocalizer_Localize/template_data,_bundle_message-8 2000000 918 ns/op 208 B/op 6 allocs/op
BenchmarkLocalizer_Localize/template_data,_default_message-8 200000 6006 ns/op 2257 B/op 35 allocs/op
BenchmarkLocalizer_Localize/template_data,_custom_delims,_bundle_message-8 2000000 881 ns/op 208 B/op 6 allocs/op
BenchmarkLocalizer_Localize/template_data,_custom_delims,_default_message-8 200000 5982 ns/op 2257 B/op 35 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_one,_bundle_message-8 1000000 1357 ns/op 288 B/op 9 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_other,_bundle_message-8 1000000 1365 ns/op 288 B/op 9 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_float,_bundle_message-8 1000000 1547 ns/op 336 B/op 10 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_one,_default_message-8 200000 9328 ns/op 2833 B/op 49 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_other,_default_message-8 200000 9385 ns/op 2833 B/op 49 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_float,_default_message-8 200000 9897 ns/op 2881 B/op 50 allocs/op
BenchmarkLocalizer_Localize/test_slow_path-8 3000000 412 ns/op 96 B/op 2 allocs/op
BenchmarkLocalizer_Localize/test_slow_path_default_message-8 2000000 645 ns/op 416 B/op 5 allocs/op
BenchmarkLocalizer_Localize/test_slow_path_no_message-8 3000000 408 ns/op 96 B/op 2 allocs/op
PASS
ok github.com/nicksnyder/go-i18n/v2/i18n 66.175s
42 changes: 42 additions & 0 deletions v2/i18n/fallback2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
goos: darwin
goarch: amd64
pkg: github.com/nicksnyder/go-i18n/v2/i18n
BenchmarkLocalizer_Localize/message_id_mismatch-8 50000000 37.0 ns/op 32 B/op 1 allocs/op
BenchmarkLocalizer_Localize/message_id_not_mismatched-8 5000000 280 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_default_language-8 5000000 292 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/empty_translation_without_fallback-8 5000000 381 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_default_language_with_other_translation-8 5000000 296 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_not_default_language-8 10000000 222 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/missing_translation_not_default_language_with_other_translation-8 10000000 226 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_message_in_bundle-8 5000000 274 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_message_in_bundle,_default_message-8 5000000 279 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_message_in_bundle-8 5000000 289 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_other_message_in_bundle,_default_message-8 10000000 223 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_message_in_bundle,_default_message-8 5000000 304 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_default_message-8 3000000 538 ns/op 368 B/op 4 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_default_message-8 3000000 444 ns/op 368 B/op 4 allocs/op
BenchmarkLocalizer_Localize/fallback_to_non-default_less_specific_language-8 2000000 764 ns/op 56 B/op 4 allocs/op
BenchmarkLocalizer_Localize/fallback_to_non-default_more_specific_language-8 5000000 294 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/plural_count_one,_bundle_message-8 1000000 1175 ns/op 592 B/op 9 allocs/op
BenchmarkLocalizer_Localize/plural_count_other,_bundle_message-8 1000000 1180 ns/op 592 B/op 9 allocs/op
BenchmarkLocalizer_Localize/plural_count_float,_bundle_message-8 1000000 1359 ns/op 624 B/op 10 allocs/op
BenchmarkLocalizer_Localize/plural_count_one,_default_message-8 300000 5972 ns/op 2862 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_missing_one,_default_message-8 200000 5917 ns/op 2797 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_missing_other,_default_message-8 2000000 787 ns/op 784 B/op 8 allocs/op
BenchmarkLocalizer_Localize/plural_count_other,_default_message-8 300000 5921 ns/op 2862 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_float,_default_message-8 200000 6109 ns/op 2894 B/op 43 allocs/op
BenchmarkLocalizer_Localize/template_data,_bundle_message-8 2000000 877 ns/op 208 B/op 6 allocs/op
BenchmarkLocalizer_Localize/template_data,_default_message-8 200000 6041 ns/op 2257 B/op 35 allocs/op
BenchmarkLocalizer_Localize/template_data,_custom_delims,_bundle_message-8 2000000 873 ns/op 208 B/op 6 allocs/op
BenchmarkLocalizer_Localize/template_data,_custom_delims,_default_message-8 200000 6007 ns/op 2257 B/op 35 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_one,_bundle_message-8 1000000 1386 ns/op 288 B/op 9 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_other,_bundle_message-8 1000000 1372 ns/op 288 B/op 9 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_float,_bundle_message-8 1000000 1537 ns/op 336 B/op 10 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_one,_default_message-8 200000 9499 ns/op 2833 B/op 49 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_other,_default_message-8 200000 9542 ns/op 2833 B/op 49 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_float,_default_message-8 200000 10114 ns/op 2881 B/op 50 allocs/op
BenchmarkLocalizer_Localize/test_slow_path-8 5000000 369 ns/op 48 B/op 1 allocs/op
BenchmarkLocalizer_Localize/test_slow_path_default_message-8 2000000 643 ns/op 416 B/op 5 allocs/op
BenchmarkLocalizer_Localize/test_slow_path_no_message-8 5000000 369 ns/op 48 B/op 1 allocs/op
PASS
ok github.com/nicksnyder/go-i18n/v2/i18n 68.989s
11 changes: 6 additions & 5 deletions v2/i18n/localizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@ func (l *Localizer) LocalizeWithTag(lc *LocalizeConfig) (string, language.Tag, e
messageID = lc.DefaultMessage.ID
}

tag, template, err1 := l.getMessageTemplate(messageID, lc.DefaultMessage)
if template == nil {
return "", language.Und, err1
}

var operands *plural.Operands
templateData := lc.TemplateData
if lc.PluralCount != nil {
Expand All @@ -147,11 +152,6 @@ func (l *Localizer) LocalizeWithTag(lc *LocalizeConfig) (string, language.Tag, e
}
}

tag, template, err1 := l.getMessageTemplate(messageID, lc.DefaultMessage)
if template == nil {
return "", language.Und, err1
}

pluralForm := l.pluralForm(tag, operands)
msg, err := template.Execute(pluralForm, templateData, lc.Funcs)
if err != nil {
Expand All @@ -162,6 +162,7 @@ func (l *Localizer) LocalizeWithTag(lc *LocalizeConfig) (string, language.Tag, e
return msg2, tag, errors.Append(err1, err)
}
}
// TODO this?
return "", language.Und, errors.Append(err1, err)
}
return msg, tag, err1
Expand Down
43 changes: 43 additions & 0 deletions v2/i18n/master.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
goos: darwin
goarch: amd64
pkg: github.com/nicksnyder/go-i18n/v2/i18n
BenchmarkLocalizer_Localize/message_id_mismatch-8 50000000 36.5 ns/op 32 B/op 1 allocs/op
BenchmarkLocalizer_Localize/message_id_not_mismatched-8 5000000 290 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_default_language-8 5000000 267 ns/op 16 B/op 1 allocs/op
BenchmarkLocalizer_Localize/empty_translation_without_fallback-8 50000 34128 ns/op 8829 B/op 188 allocs/op
BenchmarkLocalizer_Localize/empty_translation_with_fallback-8 50000 34616 ns/op 8956 B/op 190 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_default_language_with_other_translation-8 50000 35813 ns/op 9421 B/op 208 allocs/op
BenchmarkLocalizer_Localize/missing_translation_from_not_default_language-8 10000000 207 ns/op 16 B/op 1 allocs/op
BenchmarkLocalizer_Localize/missing_translation_not_default_language_with_other_translation-8 50000 37135 ns/op 10038 B/op 229 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_message_in_bundle-8 5000000 289 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_message_in_bundle,_default_message-8 5000000 296 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_message_in_bundle-8 5000000 295 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_other_message_in_bundle,_default_message-8 10000000 231 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_message_in_bundle,_default_message-8 5000000 308 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/accept_default_language,_default_message-8 3000000 529 ns/op 368 B/op 4 allocs/op
BenchmarkLocalizer_Localize/accept_not_default_language,_default_message-8 3000000 446 ns/op 368 B/op 4 allocs/op
BenchmarkLocalizer_Localize/fallback_to_non-default_less_specific_language-8 2000000 779 ns/op 56 B/op 4 allocs/op
BenchmarkLocalizer_Localize/fallback_to_non-default_more_specific_language-8 5000000 302 ns/op 0 B/op 0 allocs/op
BenchmarkLocalizer_Localize/plural_count_one,_bundle_message-8 1000000 1191 ns/op 592 B/op 9 allocs/op
BenchmarkLocalizer_Localize/plural_count_other,_bundle_message-8 1000000 1182 ns/op 592 B/op 9 allocs/op
BenchmarkLocalizer_Localize/plural_count_float,_bundle_message-8 1000000 1349 ns/op 624 B/op 10 allocs/op
BenchmarkLocalizer_Localize/plural_count_one,_default_message-8 300000 5844 ns/op 2862 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_missing_one,_default_message-8 300000 5857 ns/op 2797 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_missing_other,_default_message-8 2000000 795 ns/op 784 B/op 8 allocs/op
BenchmarkLocalizer_Localize/plural_count_other,_default_message-8 300000 5897 ns/op 2862 B/op 42 allocs/op
BenchmarkLocalizer_Localize/plural_count_float,_default_message-8 200000 6175 ns/op 2894 B/op 43 allocs/op
BenchmarkLocalizer_Localize/template_data,_bundle_message-8 2000000 903 ns/op 208 B/op 6 allocs/op
BenchmarkLocalizer_Localize/template_data,_default_message-8 200000 6074 ns/op 2257 B/op 35 allocs/op
BenchmarkLocalizer_Localize/template_data,_custom_delims,_bundle_message-8 2000000 899 ns/op 208 B/op 6 allocs/op
BenchmarkLocalizer_Localize/template_data,_custom_delims,_default_message-8 200000 6018 ns/op 2257 B/op 35 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_one,_bundle_message-8 1000000 1399 ns/op 288 B/op 9 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_other,_bundle_message-8 1000000 1367 ns/op 288 B/op 9 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_float,_bundle_message-8 1000000 1551 ns/op 336 B/op 10 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_one,_default_message-8 200000 9456 ns/op 2833 B/op 49 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_other,_default_message-8 200000 9436 ns/op 2833 B/op 49 allocs/op
BenchmarkLocalizer_Localize/template_data,_plural_count_float,_default_message-8 200000 9986 ns/op 2881 B/op 50 allocs/op
BenchmarkLocalizer_Localize/test_slow_path-8 50000 37866 ns/op 9493 B/op 211 allocs/op
BenchmarkLocalizer_Localize/test_slow_path_default_message-8 100000 12631 ns/op 1280 B/op 32 allocs/op
BenchmarkLocalizer_Localize/test_slow_path_no_message-8 100000 12297 ns/op 928 B/op 29 allocs/op
PASS
ok github.com/nicksnyder/go-i18n/v2/i18n 70.236s

0 comments on commit a1ee29a

Please sign in to comment.