├── .github
├── FUNDING.yml
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── build_app.yml
│ ├── configure_app.yml
│ └── replicate_release.yml
├── .gitignore
├── App.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── App.yml
├── Assets.xcassets
├── AccentColor.colorset
│ └── Contents.json
├── AppIcon.appiconset
│ └── Contents.json
└── Contents.json
├── CONTRIBUTION.txt
├── Info.plist
├── LICENSE.AGPL
├── LICENSE_EXCEPTION.FAIR
├── Package.swift
├── README.md
├── Sources
└── App
│ ├── App.yml
│ ├── AppMain.swift
│ ├── Container.swift
│ ├── ContentView.swift
│ ├── Resources
│ ├── App.yml
│ ├── FUNDING.yml
│ ├── LICENSE.AGPL
│ ├── ar.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── ca.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── cs.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── da.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── de.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── el.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── en.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── en_AU.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── en_GB.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── es.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── es_419.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── fa.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── fi.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── fr.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── fr_CA.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── he.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── hi.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── hr.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── hu.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── id.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── it.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── ja.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── ko.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── ms.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── nl.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── no.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── pl.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── pt.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── pt_PT.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── ro.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── ru.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── sk.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── sv.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── th.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── tr.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── uk.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── vi.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── zh-Hans.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ └── zh-Hant.lproj
│ │ ├── InfoPlist.strings
│ │ ├── Localizable.strings
│ │ └── Localizable.stringsdict
│ ├── SettingsView.swift
│ ├── Store.swift
│ └── WelcomeView.swift
├── Tests
└── AppTests
│ └── AppTests.swift
├── appfair.xcconfig
├── docs
├── _config.yml
├── index.md
└── screenshots
│ └── README
├── project.xcodeproj
├── project.pbxproj
└── xcshareddata
│ └── xcschemes
│ └── AppFairApp.xcscheme
├── sandbox-ios.entitlements
├── sandbox-macos.entitlements
└── xcode.swift
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 |
15 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | This is an App Fair Integrate-Release Pull Request.
2 |
3 | Creating or updating this PR will validate and publish
4 | your forked App release when the following conditions are met:
5 |
6 | 1. The title of your Pull Request must be: `app.App-Name`.
7 | It must match `CFBundleIdentifier` in `Info.plist`.
8 |
9 | 2. Release artifacts must exist for the semantic release tag version.
10 | It must match `CFBundleShortVersionString` in `Info.plist`.
11 |
12 | This PR will be automatically closed upon completion.
13 | Subsequent releases of the app can be published with a new PR.
14 |
15 | For more information, see:
16 |
17 | https://www.appfair.net/#integration-release-pull-requests
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/workflows/build_app.yml:
--------------------------------------------------------------------------------
1 | name: "Build App"
2 | # Build App runs in the forked repo with
3 | # any push to main or semver tag.
4 | # Tagged pushes will automatically create a release
5 | # with the built artifacts.
6 | #
7 | # See: https://www.appfair.net
8 | on:
9 | push:
10 | branches: [ main ]
11 | tags: "[0-9]+.[0-9]+.[0-9]+"
12 |
13 | jobs:
14 | call-workflow:
15 | uses: appfair/fairground/.github/workflows/fair.yml@main
16 | secrets:
17 | # These optional secrets can be added for app notarization.
18 | NOTARY_TEAMID: ${{ secrets.NOTARY_TEAMID }}
19 | NOTARY_USERID: ${{ secrets.NOTARY_USERID }}
20 | NOTARY_PASSWORD: ${{ secrets.NOTARY_PASSWORD }}
21 | NOTARY_CERTKEY_P12_BASE64: ${{ secrets.NOTARY_CERTKEY_P12_BASE64 }}
22 | NOTARY_CERTKEY_PASSWORD: ${{ secrets.NOTARY_CERTKEY_PASSWORD }}
23 |
24 |
--------------------------------------------------------------------------------
/.github/workflows/configure_app.yml:
--------------------------------------------------------------------------------
1 | name: "Configure App"
2 | # Configure App sets up the app with the correct name and version.
3 | #
4 | # See: https://www.appfair.net
5 | on:
6 | workflow_dispatch:
7 | inputs:
8 | version:
9 | type: string
10 | description: 'App Version'
11 | required: true
12 | default: '0.0.1'
13 | build_ios:
14 | type: boolean
15 | description: 'Build iOS App'
16 | required: true
17 | default: true
18 | build_macos:
19 | type: boolean
20 | description: 'Build macOS App'
21 | required: true
22 | default: true
23 |
24 | jobs:
25 | call-workflow:
26 | uses: appfair/fairground/.github/workflows/configure_app.yml@main
27 | with:
28 | version: ${{ github.event.inputs.version }}
29 | build_ios: ${{ github.event.inputs.build_ios == 'true' }}
30 | build_macos: ${{ github.event.inputs.build_macos == 'true' }}
31 |
32 | permissions:
33 | actions: write
34 | checks: write
35 | contents: write
36 | deployments: write
37 | id-token: write
38 | issues: write
39 | discussions: write
40 | packages: write
41 | pages: write
42 | pull-requests: write
43 | repository-projects: write
44 | security-events: write
45 | statuses: write
46 |
47 |
--------------------------------------------------------------------------------
/.github/workflows/replicate_release.yml:
--------------------------------------------------------------------------------
1 | name: "Replicate Release"
2 | # Integrate release runs in the base repo
3 | # when it receives a pull request
4 | #
5 | # This workflow only needs to be configured
6 | # by the base (upstream) fairground.
7 | #
8 | # See: https://www.appfair.net
9 | on:
10 | pull_request_target:
11 | branches: [ main ]
12 | types: [opened, reopened]
13 |
14 | jobs:
15 | call-workflow:
16 | uses: appfair/fairground/.github/workflows/fair.yml@main
17 | secrets: inherit
18 | with:
19 | fairseal_issuer: appfairbot
20 |
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .*.swp
2 | fastlane/
3 | .fairtool/
4 | _site/
5 | Gemfile
6 | Gemfile.lock
7 | .jekyll-cache
8 | .DS_Store
9 | .build
10 | xcuserdata/
11 | build/
12 | staging/
13 | DerivedData/
14 | *.moved-aside
15 | *.pbxuser
16 | !default.pbxuser
17 | *.mode1v3
18 | !default.mode1v3
19 | *.mode2v3
20 | !default.mode2v3
21 | *.perspectivev3
22 | !default.perspectivev3
23 | *.hmap
24 | *.ipa
25 | *.dSYM.zip
26 | *.dSYM
27 | timeline.xctimeline
28 | playground.xcworkspace
29 | Packages/
30 | Package.pins
31 | Package.resolved
32 | .swiftpm
33 | .build/
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/App.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/App.yml:
--------------------------------------------------------------------------------
1 | # App metadata; see https://appfair.net/#App.yml
2 | app:
3 | #name: "App Name" # 30-char limit
4 | #subtitle: "A brief summary of the App" # 30-char limit
5 | #keywords: "appfair,free" # comma separated keywords ; 100-char limit
6 | #description: "A complete description of the app" # 4000-char limit
7 | #notes: "Some notes about this app for reviewers."
8 |
9 | # primary_category and secondary_category can be any of: FOOD_AND_DRINK, BUSINESS, EDUCATION, SOCIAL_NETWORKING, BOOKS, SPORTS, FINANCE, REFERENCE, GRAPHICS_AND_DESIGN, DEVELOPER_TOOLS, HEALTH_AND_FITNESS, MUSIC, WEATHER, TRAVEL, ENTERTAINMENT, STICKERS, GAMES, LIFESTYLE, MEDICAL, MAGAZINES_AND_NEWSPAPERS, UTILITIES, SHOPPING, PRODUCTIVITY, NEWS, PHOTO_AND_VIDEO, NAVIGATION
10 |
11 | primary_category: "UTILITIES"
12 | secondary_category: "PRODUCTIVITY"
13 |
14 |
15 | # translations for the name, subtitle, description, and keywords
16 | # Supported language keys are: # ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US, es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it, ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk, sv, th, tr, uk, vi, zh-Hans, zh-Hant
17 |
18 | localizations:
19 | #fr-FR:
20 | # name: "App Name in French"
21 | # subtitle: "App Subtitle in French"
22 | # description: "App Description in French"
23 |
24 | # marketplace-issued indentifiers for the distribution channels for this app
25 | markets:
26 | #testflight: "0123456789" # the assigned TestFlight id
27 | #testflighturl: "https://…" # the public TestFlight beta link
28 | #appstore: "0123456789" # the assigned App Store id
29 | #appstoreurl: "https://…" # the official App Store landing page
30 | #playstore: "123456543210" # the assigned Play Store id
31 |
32 | # Pages / Jekyll configuration:
33 | remote_theme: "appfair/fairapp-theme"
34 |
35 | # the app icon is generated from a simple SVG path and a tint color
36 | icon:
37 | # gradient tint color (symbolic name or "#RRGGBB")
38 | tint: "red"
39 | # SVG path to place in the center of the icon
40 | path: "M0 200 v-200 h200 a100,100 90 0,1 0,200 a100,100 90 0,1 -200,0 z"
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color-example-setting" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "red" : "0xF9",
9 | "green" : "0xC4",
10 | "blue" : "0xA0"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "idiom" : "universal"
23 | }
24 | ],
25 | "info" : {
26 | "author" : "xcode",
27 | "version" : 1
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | },
93 | {
94 | "idiom" : "mac",
95 | "scale" : "1x",
96 | "size" : "16x16"
97 | },
98 | {
99 | "idiom" : "mac",
100 | "scale" : "2x",
101 | "size" : "16x16"
102 | },
103 | {
104 | "idiom" : "mac",
105 | "scale" : "1x",
106 | "size" : "32x32"
107 | },
108 | {
109 | "idiom" : "mac",
110 | "scale" : "2x",
111 | "size" : "32x32"
112 | },
113 | {
114 | "idiom" : "mac",
115 | "scale" : "1x",
116 | "size" : "128x128"
117 | },
118 | {
119 | "idiom" : "mac",
120 | "scale" : "2x",
121 | "size" : "128x128"
122 | },
123 | {
124 | "idiom" : "mac",
125 | "scale" : "1x",
126 | "size" : "256x256"
127 | },
128 | {
129 | "idiom" : "mac",
130 | "scale" : "2x",
131 | "size" : "256x256"
132 | },
133 | {
134 | "idiom" : "mac",
135 | "scale" : "1x",
136 | "size" : "512x512"
137 | },
138 | {
139 | "idiom" : "mac",
140 | "scale" : "2x",
141 | "size" : "512x512"
142 | }
143 | ],
144 | "info" : {
145 | "author" : "xcode",
146 | "version" : 1
147 | }
148 | }
149 |
--------------------------------------------------------------------------------
/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/CONTRIBUTION.txt:
--------------------------------------------------------------------------------
1 | CONTRIBUTION SUBMISSION POLICY:
2 |
3 | By intentionally submitting any modifications, corrections or
4 | derivatives to this work, or any other work intended for use with this
5 | library, you confirm that you are the copyright holder for those contributions
6 | and you grant to the App Fair Project a nonexclusive, worldwide, irrevocable,
7 | royalty-free, perpetual, license to use, copy, create derivative
8 | works based on those contributions, and sublicense and distribute
9 | those contributions and any derivatives thereof.
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AppFairIconSymbol
6 | $(ICON_SYMBOL)
7 | AppFairIconTint
8 | $(ICON_TINT)
9 | CFBundleDevelopmentRegion
10 | en
11 | CFBundleExecutable
12 | $(EXECUTABLE_NAME)
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | $(PRODUCT_NAME)
19 | CFBundlePackageType
20 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
21 | CFBundleShortVersionString
22 | $(MARKETING_VERSION)
23 | CFBundleURLTypes
24 |
25 |
26 | CFBundleTypeRole
27 | Editor
28 | CFBundleURLName
29 | $(PRODUCT_NAME)
30 | CFBundleURLSchemes
31 |
32 | $(PRODUCT_BUNDLE_IDENTIFIER)
33 |
34 |
35 |
36 | CFBundleVersion
37 | $(CURRENT_PROJECT_VERSION)
38 | FairUsage
39 |
40 | com.apple.security.files.user-selected.read-only
41 | This app needs to read local files in order to load user-selected books
42 | com.apple.security.files.user-selected.read-write
43 | This app needs to read and write files in order to…
44 | com.apple.security.network.client
45 | This app needs to access the network in order to download books
46 |
47 | ITSAppUsesNonExemptEncryption
48 |
49 | LSApplicationCategoryType
50 | $(APP_CATEGORY)
51 | LSApplicationQueriesSchemes
52 |
53 | appfair
54 |
55 | LSMinimumSystemVersion
56 | $(MACOSX_DEPLOYMENT_TARGET)
57 | LSSupportsOpeningDocumentsInPlace
58 |
59 | LSUIPresentationMode
60 | 0
61 | NSAppTransportSecurity
62 |
63 | NSAllowsArbitraryLoads
64 |
65 |
66 | NSAppleEventsUsageDescription
67 | AppleScript can be used by this app.
68 | NSAppleScriptEnabled
69 |
70 | NSHumanReadableCopyright
71 | GNU Affero General Public License
72 | UIApplicationSceneManifest
73 |
74 | UIApplicationSupportsMultipleScenes
75 |
76 |
77 | UIApplicationSupportsIndirectInputEvents
78 |
79 | UILaunchScreen
80 |
81 | UISupportedInterfaceOrientations
82 |
83 | UIInterfaceOrientationPortrait
84 | UIInterfaceOrientationPortraitUpsideDown
85 | UIInterfaceOrientationLandscapeLeft
86 | UIInterfaceOrientationLandscapeRight
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/LICENSE_EXCEPTION.FAIR:
--------------------------------------------------------------------------------
1 | The software in this package is distributed under the
2 | GNU Affero General Public License version 3 or later
3 | with a special exception described below.
4 |
5 | A copy of GNU Affero General Public License (AGPL) is included in
6 | this distribution, in the file LICENSE.AGPL.
7 |
8 | App Fair Linking Exception:
9 |
10 | Linking this library statically or dynamically with other modules is
11 | making a combined work based on this library. Thus, the terms and
12 | conditions of the GNU Affero General Public License cover the whole
13 | combination.
14 |
15 | As a special exception, the copyright holders of this library give you
16 | permission to link this library with independent modules to produce an
17 | executable, regardless of the license terms of these independent
18 | modules, and to copy and distribute the resulting executable under
19 | terms of your choice, provided that you also meet, for each linked
20 | independent module, the terms and conditions of the license of that
21 | module. An independent module is a module which is not derived from
22 | or based on this library. If you modify this library, you may extend
23 | this exception to your version of the library, but you are not
24 | obligated to do so. If you do not wish to do so, delete this
25 | exception statement from your version.
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.7
2 | import PackageDescription
3 |
4 | /// This package template is forked from [appfair/App](https://github.com/appfair/App/fork)
5 | /// and provides support for building and distributing an [App Fair](https://appfair.net) app.
6 | ///
7 | /// Additional source-only dependencies can be added, but the initial "FairApp" dependency must
8 | /// remain unchanged in order for the package to be eligible for App Fair integration and distribution.
9 | ///
10 | /// In order to set up a new App Fair project in a fresh fork, run:
11 | /// ```
12 | /// swift package --allow-writing-to-package-directory fairtool app
13 | /// ```
14 | let package = Package(
15 | name: "App", // do not rename
16 | defaultLocalization: "en",
17 | platforms: [ .macOS(.v12), .iOS(.v15) ],
18 | products: [ .library(name: "App", type: .dynamic, targets: ["App"]) ],
19 | dependencies: [
20 | .package(url: "https://github.com/fair-ground/Fair", from: "0.9.1"), // must be first
21 | ],
22 | targets: [
23 | .target(name: "App", dependencies: [
24 | .product(name: "FairApp", package: "Fair"), // required
25 | //.product(name: "FairKit", package: "Fair"), // optional enhancements
26 | ], resources: [
27 | .process("Resources"), // processed resources
28 | ], plugins: [
29 | //.plugin(name: "FairBuild", package: "Fair"),
30 | ]),
31 | .testTarget(name: "AppTests", dependencies: ["App"]),
32 | ]
33 | )
34 |
35 | // MARK: fair-ground package validation
36 |
37 | // The following validations are required in order for the package
38 | // to be accepted by the appfair's integration-release workflow.
39 | //
40 | // These lines can be removed from your project, but the
41 | // rules will be enforced during the `integrate` phase regardless.
42 | protocol PDep { var url: String? { get } }
43 | extension Package.Dependency : PDep { }
44 |
45 | precondition(package.name == "App", "Package.swift name must be 'App', but was: '\(package.name)'")
46 | precondition(!package.dependencies.isEmpty, "Package.swift must have at least one dependency")
47 | precondition((package.dependencies[0] as PDep).url == "https://github.com/fair-ground/Fair", "first Package.swift dependency must be 'https://github.com/fair-ground/Fair")
48 |
49 | precondition(package.products.count == 1, "Package.swift must have exactly one product")
50 | precondition(package.products.first?.name == "App", "Package.swift product must be named 'App', but was: '\(package.products.first?.name ?? "")'")
51 |
52 | // validate target names and source paths
53 |
54 | precondition(package.targets.count == 2, "package must have exactly two targets named 'App' and 'AppTests'")
55 |
56 | precondition(package.targets.first?.name == "App", "first target must be named 'App', but was: '\(package.targets.first?.name ?? "")'")
57 | precondition(package.targets.first?.path == nil || package.targets.first?.path == "Sources", "first target path must be named 'Sources', but was: '\(package.targets.first?.path ?? "")'")
58 | precondition(package.targets.first?.sources == nil, "first target sources must be empty")
59 |
60 | precondition(package.targets.last?.name == "AppTests", "second target must be named 'AppTests', but was: \(package.targets.last?.name ?? "")")
61 | precondition(package.targets.last?.path == nil || package.targets.last?.path == "Tests", "second target must be named 'Tests', but was: '\(package.targets.last?.path ?? "")'")
62 | precondition(package.targets.last?.sources == nil, "second target sources must be empty")
63 |
64 | precondition(package.targets.first?.dependencies.isEmpty == false, "package target must have at least one dependency")
65 |
66 | // Target.Depencency is opaque and non-equatable, so resort to using the description for validation
67 | precondition(String(describing: package.targets[0].dependencies[0]).hasPrefix("productItem(name: \"FairApp\", package: Optional(\"Fair\")") == true, "first package dependency must be FairApp")
68 |
69 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## App-Name: an App Fair app
2 |
3 | The _Description_ section of the `README.md` file contains the description
4 | of this app as it will appear in App Fair.
5 |
6 | It supports **basic** formatting, but not images, lists, or links.
7 |
8 | ## Installation
9 |
10 | ### App Fair Installation
11 |
12 | Once the initial release has been created,
13 | App-Name can be downloaded and installed using
14 | [App Fair.app](https://www.appfair.app)
15 | by opening
16 | [appfair.app/fair?app=App-Name](https://appfair.app/fair?app=App-Name).
17 |
18 | ## Support
19 |
20 | The landing page for this app is available at
21 | [https://App-Name.github.io/App/](https://App-Name.github.io/App/).
22 |
23 | Community Support for this app is available on the
24 | [Discussion](../../discussions) forums.
25 |
26 | Problem reports and suggestions for improvement can be found in the
27 | [Issues](../../issues) list.
28 |
29 | ## Development
30 |
31 | Create and distribute your own app by
32 | [forking this repository](../../fork).
33 | Learn more at [appfair.net](https://appfair.net).
34 |
--------------------------------------------------------------------------------
/Sources/App/App.yml:
--------------------------------------------------------------------------------
1 | ../../App.yml
--------------------------------------------------------------------------------
/Sources/App/AppMain.swift:
--------------------------------------------------------------------------------
1 | /**
2 | This program is free software: you can redistribute it and/or modify
3 | it under the terms of the GNU Affero General Public License as
4 | published by the Free Software Foundation, either version 3 of the
5 | License, or (at your option) any later version.
6 |
7 | This program is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | GNU Affero General Public License for more details.
11 |
12 | The full text of the GNU Affero General Public License can be
13 | found in the COPYING.txt file or at https://www.gnu.org/licenses/
14 |
15 | Linking this library statically or dynamically with other modules is
16 | making a combined work based on this library. Thus, the terms and
17 | conditions of the GNU Affero General Public License cover the whole
18 | combination.
19 |
20 | As a special exception, the copyright holders of this library give you
21 | permission to link this library with independent modules to produce an
22 | executable, regardless of the license terms of these independent
23 | modules, and to copy and distribute the resulting executable under
24 | terms of your choice, provided that you also meet, for each linked
25 | independent module, the terms and conditions of the license of that
26 | module. An independent module is a module which is not derived from
27 | or based on this library. If you modify this library, you may extend
28 | this exception to your version of the library, but you are not
29 | obligated to do so. If you do not wish to do so, delete this
30 | exception statement from your version.
31 | */
32 | import FairApp
33 |
34 | // MARK: DO NOT MODIFY
35 |
36 | // This file is validated by the fairground and any changes will cause integration to fail.
37 |
38 | /// The `FairContainer` for the current app is the entry point
39 | /// to the app's initial launch, both in CLI and GUI forms.
40 | ///
41 | /// - Note: This source in `AppMain.swift` must not be modified or else integration will fail;
42 | /// App customization should be implemented with extensions in `Container.swift`
43 | @main public enum AppContainer : FairApp.FairContainer {
44 | public static func main() async throws { try await launch(bundle: Bundle.module) }
45 | }
46 |
47 | // MARK: Localization
48 |
49 | /// This file contains references to the localized translated Text embedded in the `FairApp` module.
50 | ///
51 | /// The App Fair's translation strategy is to keep every translatable string in the `Sources/App/Resources/en.lproj/Localizable.strings` file.
52 | /// This provides a single unit that a translator can work with, rather than having translations scattered throughout multiple app metadata configuration files.
53 | /// At integration time, the `fairtool` will scan and assemble all the localized resources and use them in the various app storefront submission processes.
54 |
55 | /// By convention, those strings that are used by the build system will be prefixed with a "_".
56 | ///
57 | /// Note that even if you do not use these strings in your app, you must keep these strings defined in your project
58 | /// because the string generation for the storefront relies on the presence of these constants.
59 | public extension Locale {
60 | /// A translation of the app's keywords from the `Localized.strings` key: `_app-keywords`.
61 | ///
62 | /// This string is used both for runtime access to the localized app keywords, as well as part of the storefront metadata that is used to externally represent the app.
63 | ///
64 | /// Any changes to this string must be done in the corresponding `Sources/App/Resources/*.lproj/Localizable.strings` file.
65 | ///
66 | /// It corresponds to the fastlane key `keywords` https://docs.fastlane.tools/actions/deliver/#localized-metadata
67 | static let appKeywords = { NSLocalizedString("_app-keywords", bundle: .module, value: "app,fair,free", comment: "the comma-separated keywords (100 characters max), used both at runtime and on the storefront page") }
68 |
69 | /// A translation of the app's name from the `Localized.strings` key: `_app-name`
70 | ///
71 | /// Any changes to this string must be done in the corresponding `Sources/App/Resources/*.lproj/Localizable.strings` file.
72 | ///
73 | /// This string is used both for runtime access to the localized app name, as well as part of the storefront metadata that is used to externally represent the app.
74 | ///
75 | /// It corresponds to the fastlane key `name` https://docs.fastlane.tools/actions/deliver/#localized-metadata
76 | static let appName = { NSLocalizedString("_app-name", bundle: .module, value: "App Name", comment: "the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages") }
77 |
78 | /// A translation of the app's release notes from the `Localized.strings` key: `_app-release-notes`.
79 | ///
80 | /// Any changes to this string must be done in the corresponding `Sources/App/Resources/*.lproj/Localizable.strings` file.
81 | ///
82 | /// This string is used both for runtime access to the localized app release notes, as well as part of the storefront metadata that is used to externally represent the app.
83 | ///
84 | /// It corresponds to the fastlane key `releaseNotes` https://docs.fastlane.tools/actions/deliver/#localized-metadata
85 | static let appReleaseNotes = { NSLocalizedString("_app-release-notes", bundle: .module, value: """
86 | This release contains feature enhancements, bug fixes, performance improvements, and much more!
87 | """, comment: "The release notes for the latest version of the app; used both in the welcome card and on storefront pages") }
88 |
89 | /// A translation of the app's subtitle from the `Localized.strings` key: `_app-subtitle`.
90 | ///
91 | /// This string is used both for runtime access to the localized app subtitle, as well as part of the storefront metadata that is used to externally represent the app.
92 | ///
93 | /// It corresponds to the fastlane key `subtitle` https://docs.fastlane.tools/actions/deliver/#localized-metadata
94 | static let appSubtitle = { NSLocalizedString("_app-subtitle", bundle: .module, value: "A free and open App Fair app", comment: "the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages") }
95 |
96 | /// A translation of the app's summary from the `Localized.strings` key: `_app-summary`.
97 | ///
98 | /// This string is used both for runtime access to the localized app summary, as well as part of the storefront metadata that is used to externally represent the app.
99 | ///
100 | /// It corresponds to the fastlane key `description` https://docs.fastlane.tools/actions/deliver/#localized-metadata
101 | static let appSummary = { NSLocalizedString("_app-summary", bundle: .module, value: """
102 | This is an App Fair app. This text describes in plain language what the application does.
103 |
104 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
105 |
106 | The description should be written with a general audience in mind, using plain language and common terms.
107 | It will be translated into multiple languages by App Fair translation volunteers.
108 | """, comment: "the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages") }
109 | }
110 |
111 |
112 | #if canImport(SwiftUI)
113 | extension Text {
114 | /// Clients should use the localized form of `Text.init` in order to take advantage of the provided `Localizable.strings` localizations.
115 | @available(*, deprecated, message: "Facilitate translation with: `Text(”My String”, bundle: .module, comment: “description of My String for translators”)`", renamed: "Text.init(_:bundle:comment:)")
116 | internal init(_ key: LocalizedStringKey) {
117 | self.init(key, bundle: .module, comment: "no comment")
118 | }
119 | }
120 | #endif
121 |
122 |
--------------------------------------------------------------------------------
/Sources/App/Container.swift:
--------------------------------------------------------------------------------
1 | import FairApp
2 |
3 | /// The entry point to creating a scene and settings.
4 | public extension AppContainer {
5 | @SceneBuilder static func rootScene(store: Store) -> some SwiftUI.Scene {
6 | WindowGroup { // or DocumentGroup
7 | FacetHostingView(store: store).environmentObject(store)
8 | }
9 | .commands {
10 | //SidebarCommands()
11 | FacetCommands(store: store)
12 | }
13 | }
14 |
15 | static func settingsView(store: Store) -> some SwiftUI.View {
16 | Store.AppFacets.settings
17 | .facetView(for: store)
18 | .environmentObject(store)
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/Sources/App/ContentView.swift:
--------------------------------------------------------------------------------
1 | import FairApp
2 |
3 | /// The main content view for the app. This is the starting point for customizing you app's behavior.
4 | struct ContentView: View {
5 | @EnvironmentObject var store: Store
6 |
7 | var body: some View {
8 | VStack {
9 | Text("Welcome to \(Locale.appName())!", bundle: .module, comment: "welcome title")
10 | .font(.title)
11 | }
12 | .frame(maxWidth: .infinity, maxHeight: .infinity)
13 | }
14 | }
15 |
16 |
17 | struct ContentView_Previews: PreviewProvider {
18 | static var previews: some View {
19 | ContentView()
20 | .environmentObject(Store())
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/App.yml:
--------------------------------------------------------------------------------
1 | ../../../App.yml
--------------------------------------------------------------------------------
/Sources/App/Resources/FUNDING.yml:
--------------------------------------------------------------------------------
1 | ../../../.github/FUNDING.yml
--------------------------------------------------------------------------------
/Sources/App/Resources/LICENSE.AGPL:
--------------------------------------------------------------------------------
1 | ../../../LICENSE.AGPL
--------------------------------------------------------------------------------
/Sources/App/Resources/ar.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ar.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Arabic (العربية) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ar.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ca.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ca.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Catalan (català) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ca.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/cs.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/cs.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Czech (čeština) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/cs.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/da.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/da.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Danish (dansk) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/da.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/de.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // German Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/de.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized German (Deutsch) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/de.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/el.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/el.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Greek (Ελληνικά) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/el.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized English (English) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en_AU.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en_AU.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized English (English) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en_AU.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en_GB.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en_GB.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized English (English) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/en_GB.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/es.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Spanish Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/es.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Spanish (español) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/es.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/es_419.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/es_419.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Spanish (español) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/es_419.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fa.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fa.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Persian (فارسی) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fa.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fi.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Finnish (suomi) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fi.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fr.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // French Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized French (français) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fr.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fr_CA.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fr_CA.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized French (français) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/fr_CA.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/he.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/he.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Hebrew (עברית) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/he.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hi.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Hindi (हिन्दी) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hi.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hr.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Croatian (hrvatski) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hr.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hu.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hu.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Hungarian (magyar) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/hu.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/id.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/id.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Indonesian (Indonesia) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/id.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/it.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Italian Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/it.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Italian (italiano) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/it.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ja.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Japanese Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Japanese (日本語) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ja.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ko.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Korean Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Korean (한국어) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ko.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ms.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ms.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Malay (Bahasa Melayu) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ms.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/nl.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/nl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Dutch (Nederlands) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/nl.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/no.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/no.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Norwegian (norsk) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/no.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pl.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Polish (polski) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pl.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pt.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Portugese Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pt.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Portuguese (português) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pt.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pt_PT.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pt_PT.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Portuguese (português) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/pt_PT.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ro.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ro.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Romanian (română) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ro.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ru.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Russian Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Russian (русский) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/ru.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/sk.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/sk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Slovak (slovenčina) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/sk.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/sv.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/sv.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Swedish (svenska) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/sv.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/th.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/th.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Thai (ไทย) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/th.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/tr.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/tr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Turkish (Türkçe) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/tr.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/uk.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/uk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Ukrainian (українська) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/uk.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/vi.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // English Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
6 |
--------------------------------------------------------------------------------
/Sources/App/Resources/vi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Vietnamese (Tiếng Việt) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/vi.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/zh-Hans.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Simplified Chinese Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Chinese (中文) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/zh-Hans.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/Resources/zh-Hant.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | // Traditional Chinese Info.plist translation for this App Fair app.
2 | // Translators wanted! Simply edit this file…
3 |
4 | // "CFBundleName" = "App Name";
5 |
--------------------------------------------------------------------------------
/Sources/App/Resources/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | // Localized Chinese (中文) strings for this App Fair App.
2 | // Translators: edit this file to fork the repository and contribute your translated strings.
3 | // Visit https://appfair.net/#translation for more details.
4 |
5 | /* the comma-separated keywords (100 characters max), used both at runtime and on the storefront page */
6 | "_app-keywords" = "app,fair,free";
7 |
8 | /* the app name (30 characters max) which should be simple, memorable, and distinctive; used both in the welcome card and on storefront pages */
9 | "_app-name" = "App Name";
10 |
11 | /* The release notes for the latest version of the app; used both in the welcome card and on storefront pages */
12 | "_app-release-notes" = "This release contains feature enhancements, bug fixes, performance improvements, and much more!";
13 |
14 | /* the subtitle of the app (30 characters max) meant summarize your app in a concise phrase that explains the value of your app in greater detail that the name; used both in the welcome card and on storefront pages */
15 | "_app-subtitle" = "A free and open App Fair app";
16 |
17 | /* the long form summary of the app, used both at runtime and on the storefront page; used both in the welcome card and on storefront pages */
18 | "_app-summary" = "This is an App Fair app. This text describes in plain language what the application does.
19 |
20 | This summary will be used both in the app's Welcome screen, as well as in the description of the app on the storefront.
21 |
22 | The description should be written with a general audience in mind, using plain language and common terms.
23 | It will be translated into multiple languages by App Fair translation volunteers.";
24 |
25 | /* togglePreference preference title */
26 | "Boolean Preference" = "Boolean Preference";
27 |
28 | /* tab title for top-level “Content” facet */
29 | "Content" = "Content";
30 |
31 | /* numberPreference preference title */
32 | "Numeric Preference" = "Numeric Preference";
33 |
34 | /* preferences title */
35 | "Preferences" = "Preferences";
36 |
37 | /* tab title for top-level “Settings” facet */
38 | "Settings" = "Settings";
39 |
40 | /* tab title for top-level “Welcome” facet */
41 | "Welcome" = "Welcome";
42 |
43 | /* welcome title */
44 | "Welcome to %@!" = "Welcome to %@!";
45 |
46 | /* app intro card #2 banner markdown */
47 | "welcome-02-banner" = "Get Started";
48 |
49 | /* app intro card #2 caption markdown */
50 | "welcome-02-caption" = "Start developing your app.";
51 |
52 | /* app intro card #2 content markdown */
53 | "welcome-02-content" = "My app is my best friend. It is my life. I must master it as I must master my life.";
54 |
55 | /* app intro card #3 banner markdown */
56 | "welcome-03-banner" = "Internationalize";
57 |
58 | /* app intro card #3 caption markdown */
59 | "welcome-03-caption" = "Bring your app to the World";
60 |
61 | /* app intro card #3 content markdown */
62 | "welcome-03-content" = "App Fair apps are global, with support for multiple languages and locales.";
63 |
64 |
--------------------------------------------------------------------------------
/Sources/App/Resources/zh-Hant.lproj/Localizable.stringsdict:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | %d day(s) out of %d
6 |
7 | NSStringLocalizedFormatKey
8 | %#@value@
9 | value
10 |
11 | NSStringFormatSpecTypeKey
12 | NSStringPluralRuleType
13 | NSStringFormatValueTypeKey
14 | d
15 | one
16 | %d day out of %d
17 | other
18 | %d days out of %d
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Sources/App/SettingsView.swift:
--------------------------------------------------------------------------------
1 | import FairApp
2 |
3 | /// The settings view for app, which includes the preferences along with standard settings.
4 | public struct SettingsView : View {
5 | @SceneStorage("selectedSetting") private var selectedSetting = OptionalStringStorage(value: nil)
6 | private let fixedSetting: Store.ConfigFacets?
7 |
8 | init(fixedSetting: Store.ConfigFacets? = nil) {
9 | self.fixedSetting = fixedSetting
10 | }
11 |
12 | public var body: some View {
13 | FacetBrowserView(nested: true, selection: fixedSetting != nil ? .constant(fixedSetting) : $selectedSetting.value)
14 | #if os(macOS)
15 | .frame(maxWidth: .infinity, maxHeight: .infinity)
16 | .frame(width: 600, height: 300)
17 | #endif
18 | }
19 | }
20 |
21 | /// A form that presents controls for manipualting the app's preferences.
22 | public struct PreferencesView : View {
23 | @EnvironmentObject var store: Store
24 |
25 | public var body: some View {
26 | Form {
27 | Toggle(isOn: store.$togglePreference) {
28 | Text("Boolean Preference", bundle: .module, comment: "togglePreference preference title")
29 | }
30 | Section {
31 | Slider(value: store.$numberPreference, in: 0...100, onEditingChanged: { _ in })
32 | } header: {
33 | HStack {
34 | Text("Numeric Preference", bundle: .module, comment: "numberPreference preference title")
35 | Spacer()
36 | Text(round(store.numberPreference), format: .number)
37 | .font(.body.monospacedDigit())
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
44 |
45 | struct SettingsView_Previews: PreviewProvider {
46 | static var previews: some View {
47 | SettingsView(fixedSetting: Store.ConfigFacets.allCases.first)
48 | .environmentObject(Store())
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Sources/App/Store.swift:
--------------------------------------------------------------------------------
1 | import FairApp
2 |
3 | /// The global app environment containing configuration metadata and shared defaults.
4 | ///
5 | /// The shared instance of Store is available throughout the app with:
6 | ///
7 | /// ``@EnvironmentObject var store: Store``
8 | open class Store: SceneManager {
9 | /// The module bundle for this store, used for looking up embedded resources
10 | public static let bundle = Bundle.module
11 |
12 | /// The configuration metadata for the app from the `App.yml` file.
13 | public static let config: JSON = try! configuration(name: "App")
14 |
15 | /// App-wide preference using ``SwiftUI/AppStorage``.
16 | @AppStorage("togglePreference") public var togglePreference = false
17 |
18 | /// App-wide preference using ``SwiftUI/AppStorage``.
19 | @AppStorage("numberPreference") public var numberPreference = 0.0
20 |
21 | public required init() {
22 | }
23 |
24 | /// AppFacets describes the top-level app, expressed as tabs on a mobile device and outline items on desktops.
25 | public enum AppFacets : String, FacetView, CaseIterable {
26 | /// The initial facet, which typically shows a welcome / onboarding experience
27 | case welcome
28 | /// The main content of the app.
29 | case content
30 | /// The setting for the app, which contains app-specific preferences as well as other standard settings
31 | case settings
32 |
33 | public var facetInfo: FacetInfo {
34 | switch self {
35 | case .welcome:
36 | return FacetInfo(title: Text("Welcome", bundle: .module, comment: "tab title for top-level “Welcome” facet"), symbol: "house", tint: nil)
37 | case .content:
38 | return FacetInfo(title: Text("Content", bundle: .module, comment: "tab title for top-level “Content” facet"), symbol: "puzzlepiece", tint: nil)
39 | case .settings:
40 | return FacetInfo(title: Text("Settings", bundle: .module, comment: "tab title for top-level “Settings” facet"), symbol: "gearshape", tint: nil)
41 | }
42 | }
43 |
44 | @ViewBuilder public func facetView(for store: Store) -> some View {
45 | switch self {
46 | case .welcome: WelcomeView()
47 | case .content: ContentView()
48 | case .settings: SettingsView()
49 | }
50 | }
51 | }
52 |
53 | /// A ``Facets`` that describes the app's configuration settings.
54 | ///
55 | /// Adding `WithStandardSettings` to the type will add standard configuration facets like "Appearance", "Language", and "Support"
56 | public typealias ConfigFacets = StoreSettings.WithStandardSettings
57 |
58 | /// A ``Facets`` that describes the app's preferences sections.
59 | public enum StoreSettings : String, FacetView, CaseIterable {
60 | /// The main preferences for the app
61 | case preferences
62 |
63 | public var facetInfo: FacetInfo {
64 | switch self {
65 | case .preferences:
66 | return FacetInfo(title: Text("Preferences", bundle: .module, comment: "preferences title"), symbol: "gearshape", tint: nil)
67 | }
68 | }
69 |
70 | @ViewBuilder public func facetView(for store: Store) -> some View {
71 | switch self {
72 | case .preferences: PreferencesView()
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/Sources/App/WelcomeView.swift:
--------------------------------------------------------------------------------
1 | import FairApp
2 |
3 | /// A welcome view that cycles through a grid of introductory "cards" using a ``CardBoard``.
4 | ///
5 | /// You should update the contents of the cards to describe the purpose and usage of your app.
6 | ///
7 | /// The card markdown fields are defined in the `Localizable.strings` files for each supported language,
8 | /// and links are provided to these files from within the app to facilitate the contribution of translations.
9 | struct WelcomeView : View {
10 | @EnvironmentObject var store: Store
11 | @Environment(\.locale) var locale
12 | @State var selectedCard: Card.ID?
13 |
14 | var body: some View {
15 | // a flexible board of welcome cards, providing the introduction and onboarding experience for the app
16 | CardBoard(selection: $selectedCard, selectedMode: .monochrome, unselectedMode: .hierarchical, selectedVariants: .circle, unselectedVariants: .fill.circle, cards: Self.localizedCards)
17 | .autocycle() // expand each card after a delay
18 | }
19 |
20 | ///
21 | private static var cardColors = ([.accentColor] + CodableColor.nominalColors).makeIterator()
22 |
23 | /// The card defintions for the welcome screen.
24 | ///
25 | /// Each card contains a system symbol name as well a title, subtitle, and body markdown.
26 | /// You are expected to add cards to describe the purpose and usage of your particular app.
27 | ///
28 | /// Internationalization is supported by updating the corresponding localization keys in the various
29 | /// `Localizable.strings` files (e.g., `Sources/App/Resources/fr.lproj/Localizable.strings`).
30 | /// Links are provided to the source repository for these files from within the app to facilitate the contribution of translations.
31 | /// These translation files must be kept up to date with your source code, which can be done manually or using `genstrings`.
32 | /// Alternatively, an app localization refresh can be done with `fairtool app localize` or the corresponding build plug-in.
33 | static let localizedCards = [
34 | card("checkmark", color: cardColors.next(),
35 | title: Locale.appName(),
36 | subtitle: Locale.appSubtitle(),
37 | body: Locale.appSummary()),
38 | card("hammer", color: cardColors.next(),
39 | title: NSLocalizedString("welcome-02-banner", bundle: .module, value: "Get Started", comment: "app intro card #2 banner markdown"),
40 | subtitle: NSLocalizedString("welcome-02-caption", bundle: .module, value: "Start developing your app.", comment: "app intro card #2 caption markdown"),
41 | body: NSLocalizedString("welcome-02-content", bundle: .module, value: "My app is my best friend. It is my life. I must master it as I must master my life.", comment: "app intro card #2 content markdown")),
42 | card("flag", color: cardColors.next(),
43 | title: NSLocalizedString("welcome-03-banner", bundle: .module, value: "Internationalize", comment: "app intro card #3 banner markdown"),
44 | subtitle: NSLocalizedString("welcome-03-caption", bundle: .module, value: "Bring your app to the World", comment: "app intro card #3 caption markdown"),
45 | body: NSLocalizedString("welcome-03-content", bundle: .module, value: "App Fair apps are global, with support for multiple languages and locales.", comment: "app intro card #3 content markdown")),
46 | ]
47 | .compactMap({ $0 })
48 |
49 | /// Loads the localized card string for the current locale.
50 | private static func card(_ symbolName: String, color: CodableColor? = nil, title: String, subtitle: String, body: String) -> Card? {
51 | func checkLocalized(_ value: String) -> String? {
52 | // only show cards that have a localization set in the Localized.strings file
53 | if value.hasPrefix("welcome-") { return nil }
54 | return value
55 | }
56 | guard let title = checkLocalized(title) else {
57 | return nil
58 | }
59 |
60 | return Card(title: title, subtitle: checkLocalized(subtitle), body: checkLocalized(body), background: [color].compacted(), flair: symbolName)
61 | }
62 | }
63 |
64 |
--------------------------------------------------------------------------------
/Tests/AppTests/AppTests.swift:
--------------------------------------------------------------------------------
1 | /**
2 | This program is free software: you can redistribute it and/or modify
3 | it under the terms of the GNU Affero General Public License as
4 | published by the Free Software Foundation, either version 3 of the
5 | License, or (at your option) any later version.
6 |
7 | This program is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | GNU Affero General Public License for more details.
11 |
12 | You should have received a copy of the GNU Affero General Public License
13 | along with this program. If not, see .
14 | */
15 | import Swift
16 | import XCTest
17 | import App
18 | import FairApp
19 | import SwiftUI
20 |
21 | open class AppTests: XCTestCase {
22 | @MainActor open func testAppManager() throws {
23 | let store = AppContainer.AppManager()
24 | XCTAssertEqual(store.togglePreference, false)
25 | XCTAssertEqual(store.numberPreference, 0.0)
26 |
27 | let cfg = AppContainer.AppManager.config
28 | XCTAssertEqual("appfair/fairapp-theme", cfg["remote_theme"])
29 | }
30 |
31 | /// Creates screenshots for this app by iterating through all the facets, locales, and supported devices.
32 | /// When run in test cases with the default parameters, the generated screenshots will be included
33 | /// as metadata for the app submission.
34 | @MainActor open func testScreenshots() throws {
35 | _ = try Store().captureFacetScreens()
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/appfair.xcconfig:
--------------------------------------------------------------------------------
1 | // The configuration file for your App Fair App. See: https://www.appfair.net
2 |
3 | // PRODUCT_NAME is the app name, consisting of two words separated by a space
4 | PRODUCT_NAME = App Name
5 |
6 | // PRODUCT_BUNDLE_IDENTIFIER must be in the form: "app.App-Name"
7 | PRODUCT_BUNDLE_IDENTIFIER = app.App-Name
8 |
9 | // The semantic version for the app matching the git tag for the release
10 | MARKETING_VERSION = 0.0.1
11 |
12 | // The monotonically increasing number specifying the internal app version
13 | CURRENT_PROJECT_VERSION = 1
14 |
15 | // The category of the app should be one of: public.app-category.business, developer-tools, education, entertainment, finance, games, graphics-design, healthcare-fitness, lifestyle, medical, music, news, photography, productivity, reference, social-networking, sports, travel, utilities, video, weather
16 | APP_CATEGORY = public.app-category.utilities
17 |
18 | // Specify which platforms to build and release
19 | // SUPPORTED_PLATFORMS = macosx
20 | // SUPPORTED_PLATFORMS = iphoneos iphonesimulator
21 | // SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator android
22 | SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator
23 |
24 | // Catalyst settings for iOS apps on macOS
25 | // SUPPORTS_MACCATALYST = YES
26 | // SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO
27 |
28 | // On-device testing may need to override the bundle ID
29 | // PRODUCT_BUNDLE_IDENTIFIER[config=Debug][sdk=iphoneos*] = myorg.app.App-Name
30 |
31 | // FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)
32 | // ONLY_ACTIVE_ARCH[config=Debug][sdk=*][arch=*] = YES
33 |
34 | // Development team ID for on-device and catalyst testing
35 | // DEVELOPMENT_TEAM =
36 |
37 | IPHONEOS_DEPLOYMENT_TARGET = 16.0
38 | MACOSX_DEPLOYMENT_TARGET = 13.0
39 |
40 |
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | ../App.yml
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: fairapp
3 | ---
4 |
5 |
--------------------------------------------------------------------------------
/docs/screenshots/README:
--------------------------------------------------------------------------------
1 | PNG files placed in this folder will be used as the App Fair preview screenshots.
2 |
3 | The files should be named according to one of the following pattern:
4 |
5 | `screenshot_ID-PLATFORM-WIDTHxHEIGHT.png`
6 | `screenshot_ID-PLATFORM-MODE-WIDTHxHEIGHT.png`
7 | `screenshot_ID-PLATFORM-MODE-WIDTHxHEIGHT@SCALEx.png`
8 |
9 | Where `PLATFORM` is `mac`, `iphone`, or `ipad`.
10 |
11 |
12 | For example:
13 |
14 | * screenshot_01-mac-dark-1024x768@1x.png
15 | * screenshot_01-mac-light-1024x768@1x.png
16 | * screenshot_02-iphone-dark-1284x2778.png
17 | * screenshot_03-iphone-dark-2778x1284.png
18 | * screenshot_04-ipad-dark-2224x1668.png
19 | * screenshot_04-ipad-light-2224x1668.png
20 |
21 |
--------------------------------------------------------------------------------
/project.xcodeproj/xcshareddata/xcschemes/AppFairApp.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
53 |
55 |
61 |
62 |
63 |
64 |
70 |
72 |
78 |
79 |
80 |
81 |
83 |
84 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/sandbox-ios.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/sandbox-macos.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | com.apple.security.files.user-selected.read-write
7 |
8 |
9 |
10 | com.apple.security.network.client
11 |
12 |
13 |
14 | com.apple.security.app-sandbox
15 |
16 |
17 |
18 | com.apple.security.cs.allow-jit
19 |
20 |
21 |
22 | com.apple.security.cs.disable-library-validation
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/xcode.swift:
--------------------------------------------------------------------------------
1 | import App
2 | import Foundation
3 |
4 | ///
5 | /// **DO NOT MODIFY**
6 | ///
7 | /// This is the entry point for the app, which is defined in App.AppContainer.
8 | /// It is the **only** code that may be included in the Xcode `project.xcodeproj`,
9 | /// and it must remain unmodified on order to the app to be eligable for App Fair distribution.
10 | @available(macOS 12.0, iOS 15.0, *)
11 | @main public enum App {
12 | public static func main() async throws {
13 | try await AppContainer.main()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------