Fixed translation bug when the locale contained the region (#765)

* Fixed the issue, added tests and italian translation

* changelog

* improved translation handling code and added more tests

* Update UnitTests/Sources/LocalizationTests.swift

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>

---------

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
This commit is contained in:
Mauro
2023-04-05 10:36:02 +02:00
committed by GitHub
parent df92eed1a0
commit d24ee73d15
13 changed files with 499 additions and 345 deletions
+36 -46
View File
@@ -19,87 +19,77 @@ import XCTest
class LocalizationTests: XCTestCase {
/// Test ElementL10n considers app language changes
func disabled_testAppLanguage() {
func testAppLanguage() {
// set app language to English
Bundle.elementLanguage = "en"
XCTAssertEqual(L10n.actionOk, "OK")
XCTAssertEqual(L10n.actionContinue, "Continue")
XCTAssertEqual(L10n.screenSessionVerificationWaitingToAcceptTitle, "Waiting to accept request")
XCTAssertEqual(L10n.inviteFriendsText("Element", "element.io"), "Hey, talk to me on Element: element.io")
XCTAssertEqual(L10n.testLanguageIdentifier, "en")
// set app language to Turkish
Bundle.elementLanguage = "tr"
// set app language to Italian
Bundle.elementLanguage = "it"
XCTAssertEqual(L10n.actionOk, "Tamam")
XCTAssertEqual(L10n.actionContinue, "Devam et")
XCTAssertEqual(L10n.screenSessionVerificationWaitingToAcceptTitle, "Github ile kayıt ol")
XCTAssertEqual(L10n.inviteFriendsText("Element", "element.io"), "Yalnızca Söz ve Anahtar Kelimeler")
XCTAssertEqual(L10n.testLanguageIdentifier, "it")
}
/// Test fallback language for a language not supported at all
func disabled_testFallbackOnNotSupportedLanguage() {
// set app language to something Element don't support at all (chose 'Malay' language)
Bundle.elementLanguage = "ms"
func testStripRegionIfRegionalTranslationIsNotAvailable() {
// set app language to something that includes also a region (it-IT)
Bundle.elementLanguage = "it-IT"
XCTAssertEqual(L10n.testLanguageIdentifier, "it")
}
/// Test fallback language for a language not supported at all
func testFallbackOnNotSupportedLanguage() {
// set app language to something Element don't support at all (chose non existing identifier)
Bundle.elementLanguage = "xx"
Bundle.elementFallbackLanguage = "en"
XCTAssertEqual(L10n.actionOk, "OK")
XCTAssertEqual(L10n.actionContinue, "Continue")
XCTAssertEqual(L10n.roomTimelineStateChanges(5), "5 room changes")
XCTAssertEqual(L10n.testLanguageIdentifier, "en")
}
/// Test fallback language for a language supported but poorly translated
func disabled_testFallbackOnNotTranslatedKey() {
// set app language to something Element supports but poorly translated (chose 'Sinhala' language)
Bundle.elementLanguage = "si"
func testFallbackOnNotTranslatedKey() {
// set app language to something Element supports but use a key that is not translated (we have a key that should never be translated)
Bundle.elementLanguage = "it"
Bundle.elementFallbackLanguage = "en"
XCTAssertEqual(L10n.actionOk, "OK")
XCTAssertEqual(L10n.actionContinue, "Continue")
XCTAssertEqual(L10n.testLanguageIdentifier, "it")
XCTAssertEqual(L10n.testUntranslatedDefaultLanguageIdentifier, "en")
}
/// Test plurals that ElementL10n considers app language changes
func disabled_testPlurals() {
func testPlurals() {
// set app language to English
Bundle.elementLanguage = "en"
XCTAssertEqual(L10n.commonMemberCount(1), "1 member")
XCTAssertEqual(L10n.commonMemberCount(2), "2 members")
// set app language to Turkish
Bundle.elementLanguage = "tr"
// set app language to Italian
Bundle.elementLanguage = "it"
XCTAssertEqual(L10n.commonMemberCount(1), "1 üyelik değişikliği")
XCTAssertEqual(L10n.commonMemberCount(2), "2 adet üyelik değişikliği")
XCTAssertEqual(L10n.commonMemberCount(1), "1 membro")
XCTAssertEqual(L10n.commonMemberCount(2), "2 membri")
// set app language to Polish
Bundle.elementLanguage = "pl"
XCTAssertEqual(L10n.commonMemberCount(1), "1 sekunda") // one
XCTAssertEqual(L10n.commonMemberCount(2), "2 sekundy") // few
XCTAssertEqual(L10n.commonMemberCount(3), "5 sekund") // many, other
// // set app language to Polish
// Bundle.elementLanguage = "pl"
//
// XCTAssertEqual(L10n.commonMemberCount(1), "1 sekunda") // one
// XCTAssertEqual(L10n.commonMemberCount(2), "2 sekundy") // few
// XCTAssertEqual(L10n.commonMemberCount(3), "5 sekund") // many, other
}
/// Test plurals fallback language for a language not supported at all
func disabled_testPluralsFallbackOnNotSupportedLanguage() {
// set app language to something Element don't support at all (chose 'Malay' language)
Bundle.elementLanguage = "ms"
func testPluralsFallbackOnNotSupportedLanguage() {
// set app language to something Element don't support at all ("invalid identifier")
Bundle.elementLanguage = "xx"
Bundle.elementFallbackLanguage = "en"
XCTAssertEqual(L10n.commonMemberCount(1), "1 member")
XCTAssertEqual(L10n.commonMemberCount(2), "2 members")
}
/// Test plurals fallback language for a language supported but poorly translated
func disabled_testPluralsFallbackOnNotTranslatedKey() {
// set app language to something Element supports but poorly translated (chose 'Sinhala' language)
Bundle.elementLanguage = "si"
Bundle.elementFallbackLanguage = "en"
XCTAssertEqual(L10n.roomTimelineStateChanges(1), "1 room change")
XCTAssertEqual(L10n.roomTimelineStateChanges(5), "5 room changes")
}
/// Test untranslated strings
func testUntranslated() {
XCTAssertEqual(UntranslatedL10n.untranslated, "Untranslated")