Compare commits
No commits in common. "main" and "1.4.0" have entirely different histories.
17
.arkana.yml
17
.arkana.yml
|
@ -1,17 +0,0 @@
|
||||||
import_name: 'ArkanaKeys'
|
|
||||||
namespace: 'Keys'
|
|
||||||
result_path: 'Dependencies'
|
|
||||||
flavors:
|
|
||||||
- AppStore
|
|
||||||
swift_declaration_strategy: let
|
|
||||||
should_generate_unit_tests: true
|
|
||||||
package_manager: spm
|
|
||||||
environments:
|
|
||||||
- Debug
|
|
||||||
- Release
|
|
||||||
global_secrets:
|
|
||||||
# nothing
|
|
||||||
environment_secrets:
|
|
||||||
# Will lookup for <Key>Debug and <Key>Release env vars (assuming no flavor was declared)
|
|
||||||
# Mastodon Push Notification Endpoint
|
|
||||||
- NotificationEndpoint
|
|
|
@ -1,7 +0,0 @@
|
||||||
# Required
|
|
||||||
|
|
||||||
# https://<your-domain>/relay-to/development
|
|
||||||
NotificationEndpointDebug=""
|
|
||||||
|
|
||||||
# https://<your-domain>/relay-to/production
|
|
||||||
NotificationEndpointRelease=""
|
|
|
@ -1,75 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -xeu
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
function finish() {
|
|
||||||
ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip"
|
|
||||||
rm -rf "${RESULT_BUNDLE_PATH}"
|
|
||||||
}
|
|
||||||
|
|
||||||
trap finish EXIT
|
|
||||||
|
|
||||||
SDK="${SDK:-iphoneos}"
|
|
||||||
WORKSPACE="${WORKSPACE:-Mastodon.xcworkspace}"
|
|
||||||
SCHEME="${SCHEME:-Mastodon}"
|
|
||||||
CONFIGURATION=${CONFIGURATION:-Release}
|
|
||||||
|
|
||||||
BUILD_DIR=${BUILD_DIR:-.build}
|
|
||||||
ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts}
|
|
||||||
RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult"
|
|
||||||
ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}
|
|
||||||
DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}
|
|
||||||
EXPORT_OPTIONS_FILE=".github/support/ExportOptions.plist"
|
|
||||||
|
|
||||||
WORK_DIR=$(pwd)
|
|
||||||
API_PRIVATE_KEYS_PATH="${WORK_DIR}/${BUILD_DIR}/private_keys"
|
|
||||||
API_KEY_FILE="${API_PRIVATE_KEYS_PATH}/api_key.p8"
|
|
||||||
|
|
||||||
rm -rf "${RESULT_BUNDLE_PATH}"
|
|
||||||
|
|
||||||
rm -rf "${API_PRIVATE_KEYS_PATH}"
|
|
||||||
mkdir -p "${API_PRIVATE_KEYS_PATH}"
|
|
||||||
echo -n "${ENV_API_PRIVATE_KEY_BASE64}" | base64 --decode > "${API_KEY_FILE}"
|
|
||||||
|
|
||||||
BUILD_NUMBER=$(app-store-connect get-latest-testflight-build-number $ENV_APP_ID --issuer-id $ENV_ISSUER_ID --key-id $ENV_API_KEY_ID --private-key @file:$API_KEY_FILE)
|
|
||||||
BUILD_NUMBER=$((BUILD_NUMBER+1))
|
|
||||||
CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0}
|
|
||||||
|
|
||||||
echo "GITHUB_TAG_NAME=build-$CURRENT_PROJECT_VERSION" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
agvtool new-version -all $CURRENT_PROJECT_VERSION
|
|
||||||
|
|
||||||
xcrun xcodebuild clean \
|
|
||||||
-workspace "${WORKSPACE}" \
|
|
||||||
-scheme "${SCHEME}" \
|
|
||||||
-configuration "${CONFIGURATION}"
|
|
||||||
|
|
||||||
xcrun xcodebuild archive \
|
|
||||||
-workspace "${WORKSPACE}" \
|
|
||||||
-scheme "${SCHEME}" \
|
|
||||||
-configuration "${CONFIGURATION}" \
|
|
||||||
-destination generic/platform=iOS \
|
|
||||||
-sdk "${SDK}" \
|
|
||||||
-parallelizeTargets \
|
|
||||||
-showBuildTimingSummary \
|
|
||||||
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
|
||||||
-archivePath "${ARCHIVE_PATH}" \
|
|
||||||
-resultBundlePath "${RESULT_BUNDLE_PATH}" \
|
|
||||||
-allowProvisioningUpdates \
|
|
||||||
-authenticationKeyPath "${API_KEY_FILE}" \
|
|
||||||
-authenticationKeyID "${ENV_API_KEY_ID}" \
|
|
||||||
-authenticationKeyIssuerID "${ENV_ISSUER_ID}"
|
|
||||||
|
|
||||||
xcrun xcodebuild \
|
|
||||||
-exportArchive \
|
|
||||||
-archivePath "${ARCHIVE_PATH}" \
|
|
||||||
-exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \
|
|
||||||
-exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" \
|
|
||||||
-allowProvisioningUpdates \
|
|
||||||
-authenticationKeyPath "${API_KEY_FILE}" \
|
|
||||||
-authenticationKeyID "${ENV_API_KEY_ID}" \
|
|
||||||
-authenticationKeyIssuerID "${ENV_ISSUER_ID}"
|
|
||||||
|
|
||||||
# Zip up the Xcode Archive into Artifacts folder.
|
|
||||||
ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip"
|
|
|
@ -1,15 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# workaround https://github.com/CocoaPods/CocoaPods/issues/11355
|
sudo gem install cocoapods-keys
|
||||||
# sed -i '' $'1s/^/source "https:\\/\\/github.com\\/CocoaPods\\/Specs.git"\\\n\\\n/' Podfile
|
|
||||||
|
|
||||||
# Install Ruby Bundler
|
# stub keys. DO NOT use in production
|
||||||
gem install bundler:2.3.11
|
pod keys set notification_endpoint "<endpoint>"
|
||||||
|
pod keys set notification_endpoint_debug "<endpoint>"
|
||||||
|
|
||||||
# Install Ruby Gems
|
pod install
|
||||||
bundle install
|
|
||||||
|
|
||||||
# Setup notification endpoint
|
|
||||||
bundle exec arkana
|
|
||||||
|
|
||||||
bundle exec pod install
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>method</key>
|
|
||||||
<string>app-store</string>
|
|
||||||
<key>manageAppVersionAndBuildNumber</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -1,74 +0,0 @@
|
||||||
name: Build for Develop TestFlight
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
- release*
|
|
||||||
- ci-test
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build
|
|
||||||
runs-on: macOS-12
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Setup
|
|
||||||
env:
|
|
||||||
NotificationEndpointDebug: ${{ secrets.NotificationEndpointDebug }}
|
|
||||||
NotificationEndpointRelease: ${{ secrets.NotificationEndpointRelease }}
|
|
||||||
run: exec ./.github/scripts/setup.sh
|
|
||||||
|
|
||||||
- name: Install codemagic-cli-tools
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
- run: |
|
|
||||||
pip3 install codemagic-cli-tools
|
|
||||||
- run: |
|
|
||||||
codemagic-cli-tools --version || true
|
|
||||||
|
|
||||||
- name: Import Code-Signing Certificates
|
|
||||||
uses: Apple-Actions/import-codesign-certs@v1 # https://github.com/Apple-Actions/import-codesign-certs
|
|
||||||
with:
|
|
||||||
keychain: build-p12
|
|
||||||
p12-file-base64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
|
||||||
p12-password: ${{ secrets.P12_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Download Provisioning Profiles
|
|
||||||
uses: Apple-Actions/download-provisioning-profiles@v1 # https://github.com/Apple-Actions/download-provisioning-profiles
|
|
||||||
with:
|
|
||||||
bundle-id: org.joinmastodon.app
|
|
||||||
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
|
||||||
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
|
|
||||||
api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
env:
|
|
||||||
ENV_APP_ID: ${{ secrets.APP_ID }}
|
|
||||||
ENV_ISSUER_ID: ${{ secrets.APPSTORE_ISSUER_ID }}
|
|
||||||
ENV_API_KEY_ID: ${{ secrets.APPSTORE_KEY_ID }}
|
|
||||||
ENV_API_PRIVATE_KEY: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
|
||||||
ENV_API_PRIVATE_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_KEY_BASE64 }}
|
|
||||||
run: exec ./.github/scripts/build-release.sh
|
|
||||||
|
|
||||||
- name: Upload TestFlight Build
|
|
||||||
uses: Apple-Actions/upload-testflight-build@master
|
|
||||||
with:
|
|
||||||
app-path: .build/Artifacts/Mastodon.ipa/Mastodon.ipa
|
|
||||||
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
|
||||||
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
|
|
||||||
api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
|
||||||
|
|
||||||
- name: Tag commit
|
|
||||||
uses: tvdias/github-tagger@v0.0.1
|
|
||||||
with:
|
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
tag: "${{ env.GITHUB_TAG_NAME }}"
|
|
||||||
|
|
||||||
- name: Clean up keychain and provisioning profile
|
|
||||||
if: ${{ always() }}
|
|
||||||
run: |
|
|
||||||
security delete-keychain build-p12.keychain-db
|
|
|
@ -6,9 +6,6 @@ on:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
- feature/*
|
- feature/*
|
||||||
- feature-*
|
|
||||||
- issue/*
|
|
||||||
- issue-*
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- develop
|
- develop
|
||||||
|
@ -18,14 +15,13 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: CI build
|
name: CI build
|
||||||
runs-on: macos-12
|
runs-on: macos-11
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
- name: force Xcode 13.2.1
|
||||||
|
run: sudo xcode-select -switch /Applications/Xcode_13.2.1.app
|
||||||
- name: setup
|
- name: setup
|
||||||
env:
|
|
||||||
NotificationEndpointDebug: ${{ secrets.NotificationEndpointDebug }}
|
|
||||||
NotificationEndpointRelease: ${{ secrets.NotificationEndpointRelease }}
|
|
||||||
run: exec ./.github/scripts/setup.sh
|
run: exec ./.github/scripts/setup.sh
|
||||||
- name: build
|
- name: build
|
||||||
run: exec ./.github/scripts/build.sh
|
run: exec ./.github/scripts/build.sh
|
||||||
|
|
|
@ -120,9 +120,6 @@ xcuserdata
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods
|
# End of https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods
|
||||||
|
|
||||||
# Localization/StringsConvertor/input
|
Localization/StringsConvertor/input
|
||||||
Localization/StringsConvertor/output
|
Localization/StringsConvertor/output
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
env/**/**
|
|
||||||
!env/.env
|
|
|
@ -1,6 +1,6 @@
|
||||||
//
|
//
|
||||||
// AppSecret.swift
|
// AppSecret.swift
|
||||||
// MastodonCore
|
// AppShared
|
||||||
//
|
//
|
||||||
// Created by MainasuK Cirno on 2021-4-27.
|
// Created by MainasuK Cirno on 2021-4-27.
|
||||||
//
|
//
|
||||||
|
@ -9,8 +9,8 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import CryptoKit
|
import CryptoKit
|
||||||
import KeychainAccess
|
import KeychainAccess
|
||||||
|
import Keys
|
||||||
import MastodonCommon
|
import MastodonCommon
|
||||||
import ArkanaKeys
|
|
||||||
|
|
||||||
public final class AppSecret {
|
public final class AppSecret {
|
||||||
|
|
||||||
|
@ -36,12 +36,12 @@ public final class AppSecret {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
|
let keys = MastodonKeys()
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
let keys = Keys.Debug()
|
self.notificationEndpoint = keys.notification_endpoint_debug
|
||||||
self.notificationEndpoint = keys.notificationEndpoint
|
|
||||||
#else
|
#else
|
||||||
let keys = Keys.Release()
|
self.notificationEndpoint = keys.notification_endpoint
|
||||||
self.notificationEndpoint = keys.notificationEndpoint
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
//
|
||||||
|
// AppShared.h
|
||||||
|
// AppShared
|
||||||
|
//
|
||||||
|
// Created by MainasuK Cirno on 2021-4-27.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
//! Project version number for AppShared.
|
||||||
|
FOUNDATION_EXPORT double AppSharedVersionNumber;
|
||||||
|
|
||||||
|
//! Project version string for AppShared.
|
||||||
|
FOUNDATION_EXPORT const unsigned char AppSharedVersionString[];
|
||||||
|
|
||||||
|
// In this header, you should import all the public headers of your framework using statements like #import <AppShared/PublicHeader.h>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$(PRODUCT_NAME)</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.4.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>121</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -1,13 +1,12 @@
|
||||||
//
|
//
|
||||||
// UserDefaults+Notification.swift
|
// UserDefaults+Notification.swift
|
||||||
// MastodonCommon
|
// AppShared
|
||||||
//
|
//
|
||||||
// Created by Cirno MainasuK on 2021-10-9.
|
// Created by Cirno MainasuK on 2021-10-9.
|
||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
import CryptoKit
|
import CryptoKit
|
||||||
import MastodonExtension
|
|
||||||
|
|
||||||
extension UserDefaults {
|
extension UserDefaults {
|
||||||
// always use hash value (SHA256) from accessToken as key
|
// always use hash value (SHA256) from accessToken as key
|
||||||
|
@ -39,15 +38,3 @@ extension UserDefaults {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension UserDefaults {
|
|
||||||
|
|
||||||
@objc public dynamic var notificationBadgeCount: Int {
|
|
||||||
get {
|
|
||||||
register(defaults: [#function: 0])
|
|
||||||
return integer(forKey: #function)
|
|
||||||
}
|
|
||||||
set { self[#function] = newValue }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,12 +1,13 @@
|
||||||
# Acknowledgments
|
# Acknowledgments
|
||||||
|
|
||||||
- [Alamofire](https://github.com/Alamofire/Alamofire)
|
|
||||||
- [AlamofireImage](https://github.com/Alamofire/AlamofireImage)
|
- [AlamofireImage](https://github.com/Alamofire/AlamofireImage)
|
||||||
- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator)
|
- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator)
|
||||||
- [Arkana](https://github.com/rogerluan/arkana)
|
- [Alamofire](https://github.com/Alamofire/Alamofire)
|
||||||
- [CommonOSLog](https://github.com/mainasuk/CommonOSLog)
|
- [CommonOSLog](https://github.com/mainasuk/CommonOSLog)
|
||||||
- [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift)
|
- [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift)
|
||||||
- [DateToolSwift](https://github.com/MatthewYork/DateTools)
|
- [DateToolSwift](https://github.com/MatthewYork/DateTools)
|
||||||
|
- [DiffableDataSources](https://github.com/ra1028/DiffableDataSources)
|
||||||
|
- [DifferenceKit](https://github.com/ra1028/DifferenceKit)
|
||||||
- [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage)
|
- [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage)
|
||||||
- [FLEX](https://github.com/FLEXTool/FLEX)
|
- [FLEX](https://github.com/FLEXTool/FLEX)
|
||||||
- [FPSIndicator](https://github.com/MainasuK/FPSIndicator)
|
- [FPSIndicator](https://github.com/MainasuK/FPSIndicator)
|
||||||
|
@ -25,10 +26,9 @@
|
||||||
- [SwiftGen](https://github.com/SwiftGen/SwiftGen)
|
- [SwiftGen](https://github.com/SwiftGen/SwiftGen)
|
||||||
- [SwiftUI-Introspect](https://github.com/siteline/SwiftUI-Introspect)
|
- [SwiftUI-Introspect](https://github.com/siteline/SwiftUI-Introspect)
|
||||||
- [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON)
|
- [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON)
|
||||||
- [TabBarPager](https://github.com/TwidereProject/TabBarPager)
|
|
||||||
- [Tabman](https://github.com/uias/Tabman)
|
- [Tabman](https://github.com/uias/Tabman)
|
||||||
|
- [TwidereX-iOS](https://github.com/TwidereProject/TwidereX-iOS)
|
||||||
- [ThirdPartyMailer](https://github.com/vtourraine/ThirdPartyMailer)
|
- [ThirdPartyMailer](https://github.com/vtourraine/ThirdPartyMailer)
|
||||||
- [TOCropViewController](https://github.com/TimOliver/TOCropViewController)
|
- [TOCropViewController](https://github.com/TimOliver/TOCropViewController)
|
||||||
- [TwidereX-iOS](https://github.com/TwidereProject/TwidereX-iOS)
|
|
||||||
- [TwitterProfile](https://github.com/OfTheWolf/TwitterProfile)
|
- [TwitterProfile](https://github.com/OfTheWolf/TwitterProfile)
|
||||||
- [UITextView-Placeholder](https://github.com/devxoul/UITextView-Placeholder)
|
- [UITextView-Placeholder](https://github.com/devxoul/UITextView-Placeholder)
|
|
@ -1,30 +1,30 @@
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
- File an issue to report a bug or feature request
|
- File the issue for bug report and feature request
|
||||||
- Translate the project in our [Crowdin](https://crowdin.com/project/mastodon-for-ios) project
|
- Translate the project in our [Crowdin](https://crowdin.com/project/mastodon-for-ios) project
|
||||||
- Make the Pull Request to contribute
|
- Make the Pull Request to contribute
|
||||||
|
|
||||||
## Bug Report
|
## Bug Report
|
||||||
File an issue about the bug or feature request. Make sure you are installing the latest version of the app from TestFlight or App Store.
|
File the issue about the bug. Make sure you are installing the latest version app from TestFlight or App Store.
|
||||||
|
|
||||||
## Translation
|
## Translation
|
||||||
[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)
|
[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)
|
||||||
|
|
||||||
The translation will update regularly. Please request the language if it is not listed via an issue.
|
The translation will update regularly. Please request language if not listed via issue.
|
||||||
|
|
||||||
## Pull Request
|
## Pull Request
|
||||||
|
|
||||||
You can create a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via an issue.
|
You can make a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via issue.
|
||||||
|
|
||||||
Also, there are lots of existing feature request issues that could be a good-first-issue discussing place.
|
Also, there are lots of existing feature request issues that could be a good-first-issue discussing place.
|
||||||
|
|
||||||
Follow the git-flow pattern to make your pull request.
|
Follow the git-flow pattern to make your pull request.
|
||||||
|
|
||||||
1. Ensure you have started a new branch based on the `develop` branch.
|
1. Ensure you are checkout on the `develop` branch.
|
||||||
2. Write your changes and test them on **iPad and iPhone**.
|
2. Write your codes and test them on **iPad and iPhone**.
|
||||||
3. Merge the `develop` branch into your branch then make a Pull Request. Please merge the branch and resolve any conflicts if `develop` updates. **Do not force push your commits.**
|
3. Merge the `develop` into your branch then make a Pull Request. Please merge the branch and resolve any conflicts when the `develop` updates. **Do not force push your codes.**
|
||||||
4. Make sure the permission for your fork is open to the reviewer. Code style fix, conflict resolution, and other changes may be committed by the reviewer directly.
|
4. Make sure the permission for your folk is open to the reviewer. Code style fix, conflict resolution, and other changes may be committed by the reviewer directly.
|
||||||
5. Request a code review and wait for approval. The PR will be merged when it is approved.
|
5. Request a code review and wait for approval. The PR will be merged when it is approved.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
The documentation for this app is listed under the [Documentation](../Documentation/) folder. We are also welcoming contributions for documentation.
|
The documents for this app is list under the [Documentation](../Documentation/) folder. We are also welcome contributions for documentation.
|
|
@ -7,18 +7,17 @@
|
||||||
- iOS 14.0+
|
- iOS 14.0+
|
||||||
|
|
||||||
|
|
||||||
Install the latest version of Xcode from the App Store or Apple Developer Download website. Also, we assert you have the [Homebrew](https://brew.sh) package manager.
|
Intell the latest version of Xcode from the App Store or Apple Developer Download website. Also, we assert you have the [Homebrew](https://brew.sh) package manager.
|
||||||
|
|
||||||
This guide may not suit your machine and actually setup procedure may change in the future. Please file the issue or Pull Request if there are any problems.
|
This guide may not suit your machine and actually setup procedure may change in the future. Please file the issue or Pull Request if there are any problems.
|
||||||
|
|
||||||
## CocoaPods
|
## CocoaPods
|
||||||
The app use [CocoaPods]() and [Arkana](https://github.com/rogerluan/arkana). Ruby Gems are managed through Bundler. The M1 Mac needs virtual ruby env to workaround compatibility issues. Make sure you have [Rosetta](https://support.apple.com/en-us/HT211861) installed if you are using the M1 Mac.
|
The app use [CocoaPods]() and [CocoaPods-Keys](https://github.com/orta/cocoapods-keys). The M1 Mac needs virtual ruby env to workaround compatibility issues.
|
||||||
|
|
||||||
#### Intel Mac
|
#### Intel Mac
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
gem install bundler
|
sudo gem install cocoapods cocoapods-keys
|
||||||
bundle install
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### M1 Mac
|
#### M1 Mac
|
||||||
|
@ -41,39 +40,31 @@ rbenv global 3.0.3
|
||||||
ruby --version
|
ruby --version
|
||||||
# > ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]
|
# > ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]
|
||||||
|
|
||||||
gem install bundler
|
sudo gem install cocoapods cocoapods-keys
|
||||||
bundle install
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Bootstrap
|
## Bootstrap
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
# make a clean build
|
# make a clean build
|
||||||
bundle install
|
sudo gem install cocoapods-clean
|
||||||
bundle exec pod clean
|
pod clean
|
||||||
|
|
||||||
# setup arkana
|
|
||||||
# please check the `.env.example` to create your's or use the empty example directly
|
|
||||||
bundle exec arkana -e ./env/.env
|
|
||||||
|
|
||||||
# clean pods
|
|
||||||
bundle exec pod clean
|
|
||||||
|
|
||||||
# make install
|
# make install
|
||||||
bundle exec pod install --repo-update
|
pod install --repo-update
|
||||||
|
|
||||||
# open workspace
|
# open workspace
|
||||||
open Mastodon.xcworkspace
|
open Mastodon.xcworkspace
|
||||||
```
|
```
|
||||||
|
|
||||||
The Arkana plugin will setup the push notification endpoint. You can use the empty template from `./env/.env` or use your own `.env` file. To setup the push notification. Please check section `Push Notification` below.
|
The CocoaPods-Key plugin will request the push notification endpoint. You can fufill the empty string and set it later. To setup the push notification. Please check section `Push Notification` below.
|
||||||
|
|
||||||
The app requires the `App Group` capability. To make sure it works for your developer membership. Please check [AppSecret.swift](../MastodonSDK/Sources/MastodonCore/AppSecret.swift) file and set another unique `groupID` and update `App Group` settings.
|
The app requires the `App Group` capability. To make sure it works for your developer membership. Please check [AppSecret.swift](../AppShared/AppSecret.swift) file and set another unique `groupID` and update `App Group` settings.
|
||||||
|
|
||||||
#### Push Notification (Optional)
|
#### Push Notification (Optional)
|
||||||
The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay) APNs. You can set your push notification endpoint via Arkana. There are two endpoints:
|
The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay) APNs. You can set your push notification endpoint via Cocoapod-Keys. There are two endpoints:
|
||||||
- NotificationEndpointDebug: for `DEBUG` usage. e.g. `https://<your.domin>/relay-to/development`
|
- notification_endpoint: for `RELEASE` usage
|
||||||
- NotificationEndpointRelease: for `RELEASE` usage. e.g. `https://<your.domin>/relay-to/production`
|
- notification_endpoint_debug: for `DEBUG` usage
|
||||||
|
|
||||||
Please check the [Establishing a Certificate-Based Connection to APNs
|
Please check the [Establishing a Certificate-Based Connection to APNs
|
||||||
](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns) document to generate the certificate and exports the p12 file.
|
](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns) document to generate the certificate and exports the p12 file.
|
||||||
|
|
|
@ -14,7 +14,7 @@ We use `xcodebuild` CLI tool to trigger UITest.
|
||||||
Set the `name` in `-destination` option to add device for snapshot. For example:
|
Set the `name` in `-destination` option to add device for snapshot. For example:
|
||||||
`-destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \`
|
`-destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \`
|
||||||
|
|
||||||
You can list the available simulators:
|
You can list the avaiable simulator:
|
||||||
```zsh
|
```zsh
|
||||||
# list the destinations
|
# list the destinations
|
||||||
xcodebuild \
|
xcodebuild \
|
||||||
|
|
7
Gemfile
7
Gemfile
|
@ -1,7 +0,0 @@
|
||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem 'arkana'
|
|
||||||
gem "cocoapods"
|
|
||||||
gem "cocoapods-clean"
|
|
||||||
gem "xcpretty"
|
|
||||||
|
|
114
Gemfile.lock
114
Gemfile.lock
|
@ -1,114 +0,0 @@
|
||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
CFPropertyList (3.0.5)
|
|
||||||
rexml
|
|
||||||
activesupport (6.1.7)
|
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
||||||
i18n (>= 1.6, < 2)
|
|
||||||
minitest (>= 5.1)
|
|
||||||
tzinfo (~> 2.0)
|
|
||||||
zeitwerk (~> 2.3)
|
|
||||||
addressable (2.8.1)
|
|
||||||
public_suffix (>= 2.0.2, < 6.0)
|
|
||||||
algoliasearch (1.27.5)
|
|
||||||
httpclient (~> 2.8, >= 2.8.3)
|
|
||||||
json (>= 1.5.1)
|
|
||||||
arkana (1.2.0)
|
|
||||||
colorize (~> 0.8)
|
|
||||||
dotenv (~> 2.7)
|
|
||||||
yaml (~> 0.2)
|
|
||||||
atomos (0.1.3)
|
|
||||||
claide (1.1.0)
|
|
||||||
cocoapods (1.11.3)
|
|
||||||
addressable (~> 2.8)
|
|
||||||
claide (>= 1.0.2, < 2.0)
|
|
||||||
cocoapods-core (= 1.11.3)
|
|
||||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
|
||||||
cocoapods-downloader (>= 1.4.0, < 2.0)
|
|
||||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
|
||||||
cocoapods-search (>= 1.0.0, < 2.0)
|
|
||||||
cocoapods-trunk (>= 1.4.0, < 2.0)
|
|
||||||
cocoapods-try (>= 1.1.0, < 2.0)
|
|
||||||
colored2 (~> 3.1)
|
|
||||||
escape (~> 0.0.4)
|
|
||||||
fourflusher (>= 2.3.0, < 3.0)
|
|
||||||
gh_inspector (~> 1.0)
|
|
||||||
molinillo (~> 0.8.0)
|
|
||||||
nap (~> 1.0)
|
|
||||||
ruby-macho (>= 1.0, < 3.0)
|
|
||||||
xcodeproj (>= 1.21.0, < 2.0)
|
|
||||||
cocoapods-clean (0.0.1)
|
|
||||||
cocoapods-core (1.11.3)
|
|
||||||
activesupport (>= 5.0, < 7)
|
|
||||||
addressable (~> 2.8)
|
|
||||||
algoliasearch (~> 1.0)
|
|
||||||
concurrent-ruby (~> 1.1)
|
|
||||||
fuzzy_match (~> 2.0.4)
|
|
||||||
nap (~> 1.0)
|
|
||||||
netrc (~> 0.11)
|
|
||||||
public_suffix (~> 4.0)
|
|
||||||
typhoeus (~> 1.0)
|
|
||||||
cocoapods-deintegrate (1.0.5)
|
|
||||||
cocoapods-downloader (1.6.3)
|
|
||||||
cocoapods-plugins (1.0.0)
|
|
||||||
nap
|
|
||||||
cocoapods-search (1.0.1)
|
|
||||||
cocoapods-trunk (1.6.0)
|
|
||||||
nap (>= 0.8, < 2.0)
|
|
||||||
netrc (~> 0.11)
|
|
||||||
cocoapods-try (1.2.0)
|
|
||||||
colored2 (3.1.2)
|
|
||||||
colorize (0.8.1)
|
|
||||||
concurrent-ruby (1.1.10)
|
|
||||||
dotenv (2.8.1)
|
|
||||||
escape (0.0.4)
|
|
||||||
ethon (0.15.0)
|
|
||||||
ffi (>= 1.15.0)
|
|
||||||
ffi (1.15.5)
|
|
||||||
fourflusher (2.3.1)
|
|
||||||
fuzzy_match (2.0.4)
|
|
||||||
gh_inspector (1.1.3)
|
|
||||||
httpclient (2.8.3)
|
|
||||||
i18n (1.12.0)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
json (2.6.2)
|
|
||||||
minitest (5.16.3)
|
|
||||||
molinillo (0.8.0)
|
|
||||||
nanaimo (0.3.0)
|
|
||||||
nap (1.1.0)
|
|
||||||
netrc (0.11.0)
|
|
||||||
public_suffix (4.0.7)
|
|
||||||
rexml (3.2.5)
|
|
||||||
rouge (2.0.7)
|
|
||||||
ruby-macho (2.5.1)
|
|
||||||
typhoeus (1.4.0)
|
|
||||||
ethon (>= 0.9.0)
|
|
||||||
tzinfo (2.0.5)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
xcodeproj (1.22.0)
|
|
||||||
CFPropertyList (>= 2.3.3, < 4.0)
|
|
||||||
atomos (~> 0.1.3)
|
|
||||||
claide (>= 1.0.2, < 2.0)
|
|
||||||
colored2 (~> 3.1)
|
|
||||||
nanaimo (~> 0.3.0)
|
|
||||||
rexml (~> 3.2.4)
|
|
||||||
xcpretty (0.3.0)
|
|
||||||
rouge (~> 2.0.7)
|
|
||||||
yaml (0.2.0)
|
|
||||||
zeitwerk (2.6.3)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
arm64-darwin-21
|
|
||||||
arm64-darwin-22
|
|
||||||
x86_64-darwin-21
|
|
||||||
x86_64-darwin-22
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
arkana
|
|
||||||
cocoapods
|
|
||||||
cocoapods-clean
|
|
||||||
xcpretty
|
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
2.3.17
|
|
|
@ -13,15 +13,15 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>ld</string>
|
<string>ld</string>
|
||||||
<key>zero</key>
|
<key>zero</key>
|
||||||
<string>no unread notifications</string>
|
<string>no unread notification</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 unread notification</string>
|
<string>1 unread notification</string>
|
||||||
<key>few</key>
|
<key>few</key>
|
||||||
<string>%ld unread notifications</string>
|
<string>%ld unread notifications</string>
|
||||||
<key>many</key>
|
<key>many</key>
|
||||||
<string>%ld unread notifications</string>
|
<string>%ld unread notification</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld unread notifications</string>
|
<string>%ld unread notification</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||||
|
@ -67,59 +67,6 @@
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld characters</string>
|
<string>%ld characters</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
|
||||||
<key>a11y.plural.count.characters_left</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>%#@character_count@ left</string>
|
|
||||||
<key>character_count</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>ld</string>
|
|
||||||
<key>zero</key>
|
|
||||||
<string>no characters</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 character</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld characters</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>%ld characters</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld characters</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>plural.count.followed_by_and_mutual</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>%#@names@%#@count_mutual@</string>
|
|
||||||
<key>names</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>ld</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string></string>
|
|
||||||
</dict>
|
|
||||||
<key>count_mutual</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>ld</string>
|
|
||||||
<key>zero</key>
|
|
||||||
<string>Followed by %1$@</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>Followed by %1$@, and another mutual</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>Followed by %1$@, and %ld mutuals</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>Followed by %1$@, and %ld mutuals</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>Followed by %1$@, and %ld mutuals</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.metric_formatted.post</key>
|
<key>plural.count.metric_formatted.post</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
@ -143,28 +90,6 @@
|
||||||
<string>posts</string>
|
<string>posts</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>plural.count.media</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>%#@media_count@</string>
|
|
||||||
<key>media_count</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>ld</string>
|
|
||||||
<key>zero</key>
|
|
||||||
<string>0 media</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 media</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld media</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>%ld media</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld media</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>plural.count.post</key>
|
<key>plural.count.post</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
<key>NSStringLocalizedFormatKey</key>
|
||||||
|
|
|
@ -1,34 +1,23 @@
|
||||||
# Localization
|
# Localization
|
||||||
[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)
|
[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios)
|
||||||
|
|
||||||
We use Crowdin for translations and some automation.
|
Mastodon localization template file
|
||||||
|
|
||||||
## How to contribute
|
|
||||||
|
|
||||||
### Help with translations
|
## How to contribute?
|
||||||
|
|
||||||
Head over [Crowdin][crowdin-mastodon-ios] for that. To help with translations, select your language and translate :-) If your language is not in the list, please feel free to [open a topic on Crowdin](crowdin-mastodon-ios-discussions).
|
Please use the [Crodwin](https://crowdin.com/project/mastodon-for-ios) to contribute. If your language is not in the list. Please feel free to open the issue.
|
||||||
|
|
||||||
Please note: You need to have an account on Crowdin to help with translations.
|
## How to maintains
|
||||||
|
|
||||||
### Add new strings
|
The project use a script to generate Xcode localized strings files.
|
||||||
|
|
||||||
This is mainly for developers.
|
```zsh
|
||||||
|
// enter workdir
|
||||||
|
cd Mastodon
|
||||||
|
|
||||||
1. Add new strings in `Localization/app.json` **and** the `Localizable.strings` for English.
|
// merge PR from Crowdin bot
|
||||||
2. Run `swiftgen` to generate the `Strings.swift`-file **or** have Xcode build the app (`swiftgen` is a Build phase, too).
|
|
||||||
3. Use `import MastodonLocalization` and its (new) `L10n`-enum and its properties where ever you need them in the app.
|
|
||||||
4. Once the updated `Localization/app.json` hits `develop`, it gets synced to Crowdin, where people can help with translations. `Localization/app.json` must be a valid json.
|
|
||||||
|
|
||||||
## How to update translations
|
// update resource
|
||||||
|
./update_localization.sh
|
||||||
If there are new translations, Crowdin pushes new commits to a branch called `l10n_develop` and creates a new Pull Request. Both, the branch and the PR might be updated once an hour. The project itself uses a script to generate the various `Localizable.strings`-files etc. for Xcode.
|
```
|
||||||
|
|
||||||
To update or add new translations, the workflow is as follows:
|
|
||||||
|
|
||||||
1. Merge the PR with `l10n_develop` into `develop`. It's usually called `New Crowdin Updates`
|
|
||||||
2. Run `update.localization.sh` on your computer.
|
|
||||||
3. Commit the changes and push `develop`.
|
|
||||||
|
|
||||||
[crowdin-mastodon-ios]: https://crowdin.com/project/mastodon-for-ios
|
|
||||||
[crowdin-mastodon-ios-discussions]: https://crowdin.com/project/mastodon-for-ios/discussions
|
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Příspěvek na Mastodon";
|
|
||||||
|
|
||||||
"751xkl" = "Textový obsah";
|
|
||||||
|
|
||||||
"CsR7G2" = "Příspěvek na Mastodon";
|
|
||||||
|
|
||||||
"HZSGTr" = "Jaký obsah se má přidat?";
|
|
||||||
|
|
||||||
"HdGikU" = "Odeslání se nezdařilo";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Důvod selhání";
|
|
||||||
|
|
||||||
"RHxKOw" = "Odeslat příspěvek s textovým obsahem";
|
|
||||||
|
|
||||||
"RxSqsb" = "Příspěvek";
|
|
||||||
|
|
||||||
"WCIR3D" = "Zveřejnit ${content} na Mastodon";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Příspěvek";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Viditelnost";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Viditelnost příspěvku";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "Existuje ${count} možností odpovídajících 'Veřejný'.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "Existuje ${count} možností, které odpovídají „jen sledujícím“.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, veřejné";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, pouze sledující";
|
|
||||||
|
|
||||||
"dUyuGg" = "Příspěvek na Mastodon";
|
|
||||||
|
|
||||||
"dYQ5NN" = "Veřejný";
|
|
||||||
|
|
||||||
"ehFLjY" = "Pouze sledující";
|
|
||||||
|
|
||||||
"gfePDu" = "Odeslání se nezdařilo. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "Příspěvek byl úspěšně odeslán.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Jen pro kontrolu, chtěli jste „Veřejný“?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Jen pro kontrolu, chtěli jste „Pouze sledující“?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
|
||||||
|
|
||||||
"ryJLwG" = "Příspěvek byl úspěšně odeslán. ";
|
|
|
@ -1,46 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Existuje %#@count_option@ odpovídající „${content}“.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 option</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>There are %#@count_option@ matching ‘${visibility}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 option</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Publicar en Mastodon";
|
|
||||||
|
|
||||||
"751xkl" = "Texto a incluír";
|
|
||||||
|
|
||||||
"CsR7G2" = "Publicar en Mastodon";
|
|
||||||
|
|
||||||
"HZSGTr" = "Cal é o contido a publicar?";
|
|
||||||
|
|
||||||
"HdGikU" = "Fallou a publicación";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Razón do fallo";
|
|
||||||
|
|
||||||
"RHxKOw" = "Enviar Publicación con texto";
|
|
||||||
|
|
||||||
"RxSqsb" = "Publicación";
|
|
||||||
|
|
||||||
"WCIR3D" = "Publicar ${content} en Mastodon";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Publicación";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Visibilidade";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Visibilidade da publicación";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "Hai ${count} opcións que coinciden con ‘Público’.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "Hai ${count} opcións que coinciden con 'Só seguidoras’.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, Público";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, Só seguidoras";
|
|
||||||
|
|
||||||
"dUyuGg" = "Publicar en Mastodon";
|
|
||||||
|
|
||||||
"dYQ5NN" = "Público";
|
|
||||||
|
|
||||||
"ehFLjY" = "Só seguidoras";
|
|
||||||
|
|
||||||
"gfePDu" = "Fallou a publicación. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "Publicación correcta.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Só para confirmar, querías ’Público'?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Só para confirmar, querías ’Só para seguidoras'?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
|
||||||
|
|
||||||
"ryJLwG" = "Publicación correcta. ";
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Hai %#@count_option@ coincidencias con '${content}'.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 opción</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld opcións</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Hai %#@count_option@ coincidentes con '${visibility}'.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 opción</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld opcións</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Birta á Mastodon";
|
|
||||||
|
|
||||||
"751xkl" = "Efni texta";
|
|
||||||
|
|
||||||
"CsR7G2" = "Birta á Mastodon";
|
|
||||||
|
|
||||||
"HZSGTr" = "Hvaða efni á að birta?";
|
|
||||||
|
|
||||||
"HdGikU" = "Birting færslu mistókst";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Ástæða bilunar";
|
|
||||||
|
|
||||||
"RHxKOw" = "Senda færslu með textaefni";
|
|
||||||
|
|
||||||
"RxSqsb" = "Færsla";
|
|
||||||
|
|
||||||
"WCIR3D" = "Birta ${content} á Mastodon";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Færsla";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Sýnileiki";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Sýnileiki færslu";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "Það eru ${count} valkostir sem samsvara ‘Opinbert’.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "Það eru ${count} valkostir sem samsvara ‘Einungis fylgjendur’.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, opinbert";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, einungis fylgjendur";
|
|
||||||
|
|
||||||
"dUyuGg" = "Birta á Mastodon";
|
|
||||||
|
|
||||||
"dYQ5NN" = "Opinbert";
|
|
||||||
|
|
||||||
"ehFLjY" = "Einungis fylgjendur";
|
|
||||||
|
|
||||||
"gfePDu" = "Birting færslu mistókst. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "Það tókst að senda færsluna.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Bara til að staðfesta, þú vildir 'Opinbert'?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Bara til að staðfesta, þú vildir ''Einungis fylgjendur'?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL-slóð";
|
|
||||||
|
|
||||||
"ryJLwG" = "Það tókst að senda færsluna. ";
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Það eru %#@count_option@ sem samsvara ‘${content}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 valkostur</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld valkostir</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Það eru %#@count_option@ sem samsvara ‘${visibility}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 valkostur</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld valkostir</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -29,9 +29,9 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>%ld n uɣewwaṛ</string>
|
<string>1 uɣewwaṛ</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld n iɣewwaṛen</string>
|
<string>%ld iɣewwaṛen</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Post on Mastodon";
|
|
||||||
|
|
||||||
"751xkl" = "Text Content";
|
|
||||||
|
|
||||||
"CsR7G2" = "Post on Mastodon";
|
|
||||||
|
|
||||||
"HZSGTr" = "What content to post?";
|
|
||||||
|
|
||||||
"HdGikU" = "Posting failed";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Failure Reason";
|
|
||||||
|
|
||||||
"RHxKOw" = "Send Post with text content";
|
|
||||||
|
|
||||||
"RxSqsb" = "Post";
|
|
||||||
|
|
||||||
"WCIR3D" = "Post ${content} on Mastodon";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Post";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Visibility";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Post Visibility";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, Public";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, Followers Only";
|
|
||||||
|
|
||||||
"dUyuGg" = "Post on Mastodon";
|
|
||||||
|
|
||||||
"dYQ5NN" = "공개";
|
|
||||||
|
|
||||||
"ehFLjY" = "팔로워 전용";
|
|
||||||
|
|
||||||
"gfePDu" = "게시를 실패했습니다. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "성공적으로 게시물을 전송했습니다.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "확인차 물어보건데, '공개'로 게시하시길 원합니까?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "확인차 물어보건데, '팔로워 전용'으로 게시하시길 원합니까?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
|
||||||
|
|
||||||
"ryJLwG" = "성공적으로 게시물을 전송했습니다. ";
|
|
|
@ -13,7 +13,7 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld 개의 옵션</string>
|
<string>%ld options</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
<key>There are ${count} options matching ‘${visibility}’.</key>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
<string>%ld 개의 옵션</string>
|
<string>%ld options</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Postar no Mastodon";
|
|
||||||
|
|
||||||
"751xkl" = "Conteúdo do texto";
|
|
||||||
|
|
||||||
"CsR7G2" = "Postar no Mastodon";
|
|
||||||
|
|
||||||
"HZSGTr" = "Qual conteúdo a publicar?";
|
|
||||||
|
|
||||||
"HdGikU" = "Falha na publicação";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Motivo da falha";
|
|
||||||
|
|
||||||
"RHxKOw" = "Enviar postagem com conteúdo de texto";
|
|
||||||
|
|
||||||
"RxSqsb" = "Postagem";
|
|
||||||
|
|
||||||
"WCIR3D" = "Postar ${content} no Mastodon";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Postar";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Visibilidade";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Visibilidade da publicação";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "Existem ${count} opções correspondentes a ‘Público’.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "Existem ${count} opções correspondentes a ‘Apenas para seguidores’.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, Público";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, Apenas para seguidores";
|
|
||||||
|
|
||||||
"dUyuGg" = "Postar no Mastodon";
|
|
||||||
|
|
||||||
"dYQ5NN" = "Público";
|
|
||||||
|
|
||||||
"ehFLjY" = "Apenas para seguidores";
|
|
||||||
|
|
||||||
"gfePDu" = "Falha na publicação. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "Publicação enviada com sucesso.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Só para confirmar, você queria ‘Público’?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Só para confirmar, você queria ‘Apenas para seguidores’?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
|
||||||
|
|
||||||
"ryJLwG" = "Publicação enviada com sucesso. ";
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Existem %#@count_option@ opções correspondentes a ‘${content}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 opção</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld opções</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Existem %#@count_option@ opções correspondentes a ‘${visibility}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 opção</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld opções</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -12,8 +12,6 @@
|
||||||
<string>NSStringPluralRuleType</string>
|
<string>NSStringPluralRuleType</string>
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>zero</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 option</string>
|
<string>1 option</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
||||||
|
@ -30,8 +28,6 @@
|
||||||
<string>NSStringPluralRuleType</string>
|
<string>NSStringPluralRuleType</string>
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
<key>NSStringFormatValueTypeKey</key>
|
||||||
<string>%ld</string>
|
<string>%ld</string>
|
||||||
<key>zero</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>one</key>
|
<key>one</key>
|
||||||
<string>1 option</string>
|
<string>1 option</string>
|
||||||
<key>other</key>
|
<key>other</key>
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
"RHxKOw" = "Send Post with text content";
|
"RHxKOw" = "Send Post with text content";
|
||||||
|
|
||||||
"RxSqsb" = "Ziņa";
|
"RxSqsb" = "Post";
|
||||||
|
|
||||||
"WCIR3D" = "Post ${content} on Mastodon";
|
"WCIR3D" = "Post ${content} on Mastodon";
|
||||||
|
|
||||||
|
@ -34,9 +34,9 @@
|
||||||
|
|
||||||
"dUyuGg" = "Post on Mastodon";
|
"dUyuGg" = "Post on Mastodon";
|
||||||
|
|
||||||
"dYQ5NN" = "Publisks";
|
"dYQ5NN" = "Public";
|
||||||
|
|
||||||
"ehFLjY" = "Tikai sekotājiem";
|
"ehFLjY" = "Followers Only";
|
||||||
|
|
||||||
"gfePDu" = "Posting failed. ${failureReason}";
|
"gfePDu" = "Posting failed. ${failureReason}";
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Objavi na Mastodonu";
|
|
||||||
|
|
||||||
"751xkl" = "besedilo";
|
|
||||||
|
|
||||||
"CsR7G2" = "Objavi na Mastodonu";
|
|
||||||
|
|
||||||
"HZSGTr" = "Kakšno vsebino želite objaviti?";
|
|
||||||
|
|
||||||
"HdGikU" = "Objava ni uspela";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Vzrok za neuspeh";
|
|
||||||
|
|
||||||
"RHxKOw" = "Pošlji objavo z besedilom";
|
|
||||||
|
|
||||||
"RxSqsb" = "Objavi";
|
|
||||||
|
|
||||||
"WCIR3D" = "Objavite ${content} na Mastodonu";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Objavi";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Vidnost";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Vidnost objave";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "Z \"Javno\" se ujema ${count} možnosti.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "S \"Samo sledilci\" se ujema ${count} možnosti.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, javno";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, samo sledilci";
|
|
||||||
|
|
||||||
"dUyuGg" = "Objavi na Mastodonu";
|
|
||||||
|
|
||||||
"dYQ5NN" = "Javno";
|
|
||||||
|
|
||||||
"ehFLjY" = "Samo sledilci";
|
|
||||||
|
|
||||||
"gfePDu" = "Objava je spodletela. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "Uspešno poslana objava.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Da ne bo nesporazuma - želeli ste \"Javno\"?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Da ne bo nesporazuma - želeli ste \"Samo sledilci\"?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
|
||||||
|
|
||||||
"ryJLwG" = "Uspešno poslana objava. ";
|
|
|
@ -1,46 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Na voljo: %#@count_option@, ki se ujema z "${content}".</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>%ld možnost</string>
|
|
||||||
<key>two</key>
|
|
||||||
<string>%ld možnosti</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld možnosti</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld možnosti</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>Na voljo: %#@count_option@, ki se ujema z "${visibility}".</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>%ld možnost</string>
|
|
||||||
<key>two</key>
|
|
||||||
<string>%ld možnosti</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld možnosti</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld možnosti</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -1,51 +0,0 @@
|
||||||
"16wxgf" = "Publicera på Mastodon";
|
|
||||||
|
|
||||||
"751xkl" = "Textinnehåll";
|
|
||||||
|
|
||||||
"CsR7G2" = "Publicera på Mastodon";
|
|
||||||
|
|
||||||
"HZSGTr" = "Vilket innehåll ska publiceras?";
|
|
||||||
|
|
||||||
"HdGikU" = "Publiceringen misslyckades";
|
|
||||||
|
|
||||||
"KDNTJ4" = "Felorsak";
|
|
||||||
|
|
||||||
"RHxKOw" = "Skicka inlägg med textinnehåll";
|
|
||||||
|
|
||||||
"RxSqsb" = "Inlägg";
|
|
||||||
|
|
||||||
"WCIR3D" = "Publicera ${content} på Mastodon";
|
|
||||||
|
|
||||||
"ZKJSNu" = "Inlägg";
|
|
||||||
|
|
||||||
"ZS1XaK" = "${content}";
|
|
||||||
|
|
||||||
"ZbSjzC" = "Synlighet";
|
|
||||||
|
|
||||||
"Zo4jgJ" = "Inläggssynlighet";
|
|
||||||
|
|
||||||
"apSxMG-dYQ5NN" = "Det finns ${count} alternativ som matchar ‘Offentligt’.";
|
|
||||||
|
|
||||||
"apSxMG-ehFLjY" = "Det finns ${count} alternativ som matchar ‘Endast följare’.";
|
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, Offentligt";
|
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, Endast följare";
|
|
||||||
|
|
||||||
"dUyuGg" = "Publicera på Mastodon";
|
|
||||||
|
|
||||||
"dYQ5NN" = "Offentligt";
|
|
||||||
|
|
||||||
"ehFLjY" = "Endast följare";
|
|
||||||
|
|
||||||
"gfePDu" = "Kunde inte publicera. ${failureReason}";
|
|
||||||
|
|
||||||
"k7dbKQ" = "Inlägget har publicerats.";
|
|
||||||
|
|
||||||
"oGiqmY-dYQ5NN" = "Bara för att bekräfta, ville du ha 'Offentligt'?";
|
|
||||||
|
|
||||||
"oGiqmY-ehFLjY" = "Bara för att bekräfta, ville du ha 'Endast följare'?";
|
|
||||||
|
|
||||||
"rM6dvp" = "URL";
|
|
||||||
|
|
||||||
"ryJLwG" = "Inlägget har publicerats. ";
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
"16wxgf" = "Posta på Mastodon";
|
||||||
|
|
||||||
|
"751xkl" = "Textinnehåll";
|
||||||
|
|
||||||
|
"CsR7G2" = "Posta på Mastodon";
|
||||||
|
|
||||||
|
"HZSGTr" = "Vilket innehåll ska jag posta?";
|
||||||
|
|
||||||
|
"HdGikU" = "Inlägget misslyckades";
|
||||||
|
|
||||||
|
"KDNTJ4" = "Felorsak";
|
||||||
|
|
||||||
|
"RHxKOw" = "Skicka inlägg med textinnehåll";
|
||||||
|
|
||||||
|
"RxSqsb" = "Posta";
|
||||||
|
|
||||||
|
"WCIR3D" = "Posta ${content} på Mastodon";
|
||||||
|
|
||||||
|
"ZKJSNu" = "Posta";
|
||||||
|
|
||||||
|
"ZS1XaK" = "${content}";
|
||||||
|
|
||||||
|
"ZbSjzC" = "Synlighet";
|
||||||
|
|
||||||
|
"Zo4jgJ" = "Inläggssynlighet";
|
||||||
|
|
||||||
|
"apSxMG-dYQ5NN" = "Det finns ${count} alternativ som matchar ‘Publikt’.";
|
||||||
|
|
||||||
|
"apSxMG-ehFLjY" = "Det finns ${count} alternativ som matchar ‘Endast följare’.";
|
||||||
|
|
||||||
|
"ayoYEb-dYQ5NN" = "${content}, Publikt";
|
||||||
|
|
||||||
|
"ayoYEb-ehFLjY" = "${content}, Endast följare";
|
||||||
|
|
||||||
|
"dUyuGg" = "Posta på Mastodon";
|
||||||
|
|
||||||
|
"dYQ5NN" = "Publikt";
|
||||||
|
|
||||||
|
"ehFLjY" = "Endast följare";
|
||||||
|
|
||||||
|
"gfePDu" = "Inlägget misslyckades. ${failureReason}";
|
||||||
|
|
||||||
|
"k7dbKQ" = "Inlägget har postats.";
|
||||||
|
|
||||||
|
"oGiqmY-dYQ5NN" = "Bara för att bekräfta, ville du ha 'Publikt'?";
|
||||||
|
|
||||||
|
"oGiqmY-ehFLjY" = "Bara för att bekräfta, ville du ha 'Endast följare'?";
|
||||||
|
|
||||||
|
"rM6dvp" = "URL";
|
||||||
|
|
||||||
|
"ryJLwG" = "Inlägget har postats. ";
|
|
@ -1,46 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>There are ${count} options matching ‘${content}’. - 2</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>There are %#@count_option@ matching ‘${content}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 option</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>There are ${count} options matching ‘${visibility}’.</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringLocalizedFormatKey</key>
|
|
||||||
<string>There are %#@count_option@ matching ‘${visibility}’.</string>
|
|
||||||
<key>count_option</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSStringFormatSpecTypeKey</key>
|
|
||||||
<string>NSStringPluralRuleType</string>
|
|
||||||
<key>NSStringFormatValueTypeKey</key>
|
|
||||||
<string>%ld</string>
|
|
||||||
<key>one</key>
|
|
||||||
<string>1 option</string>
|
|
||||||
<key>few</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>many</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
<key>other</key>
|
|
||||||
<string>%ld options</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
"ayoYEb-dYQ5NN" = "${content}, Công khai";
|
"ayoYEb-dYQ5NN" = "${content}, Công khai";
|
||||||
|
|
||||||
"ayoYEb-ehFLjY" = "${content}, Chỉ người theo dõi";
|
"ayoYEb-ehFLjY" = "${content}, Riêng tư";
|
||||||
|
|
||||||
"dUyuGg" = "Đăng lên Mastodon";
|
"dUyuGg" = "Đăng lên Mastodon";
|
||||||
|
|
|
@ -47,33 +47,30 @@ private func convert(from inputDirectoryURL: URL, to outputDirectory: URL) {
|
||||||
|
|
||||||
private func map(language: String) -> String? {
|
private func map(language: String) -> String? {
|
||||||
switch language {
|
switch language {
|
||||||
case "Base.lproj": return "Base"
|
case "ar_SA": return "ar" // Arabic (Saudi Arabia)
|
||||||
case "ar.lproj": return "ar" // Arabic
|
case "eu_ES": return "eu-ES" // Basque
|
||||||
case "eu.lproj": return "eu" // Basque
|
case "ca_ES": return "ca" // Catalan
|
||||||
case "ca.lproj": return "ca" // Catalan
|
case "zh_CN": return "zh-Hans" // Chinese Simplified
|
||||||
case "zh-Hans.lproj": return "zh-Hans" // Chinese Simplified
|
case "zh_TW": return "zh-Hant" // Chinese Traditional
|
||||||
case "zh-Hant.lproj": return "zh-Hant" // Chinese Traditional
|
case "nl_NL": return "nl" // Dutch
|
||||||
case "cs.lproj": return "cs" // Czech
|
case "en_US": return "en"
|
||||||
case "nl.lproj": return "nl" // Dutch
|
case "fr_FR": return "fr" // French
|
||||||
case "en.lproj": return "en"
|
case "gl_ES": return "gl" // Galician
|
||||||
case "fi.lproj": return "fi" // Finnish
|
case "de_DE": return "de" // German
|
||||||
case "fr.lproj": return "fr" // French
|
case "it_IT": return "it" // Italian
|
||||||
case "gl.lproj": return "gl" // Galician
|
case "ja_JP": return "ja" // Japanese
|
||||||
case "de.lproj": return "de" // German
|
case "kab_KAB": return "kab" // Kabyle
|
||||||
case "it.lproj": return "it" // Italian
|
case "kmr_TR": return "ku" // Kurmanji (Kurdish)
|
||||||
case "ja.lproj": return "ja" // Japanese
|
case "ru_RU": return "ru" // Russian
|
||||||
case "kab.lproj": return "kab" // Kabyle
|
case "gd_GB": return "gd-GB" // Scottish Gaelic
|
||||||
case "kmr.lproj": return "ku" // Kurmanji (Kurdish) [intent mapping]
|
case "ckb_IR": return "ckb" // Sorani (Kurdish)
|
||||||
case "ru.lproj": return "ru" // Russian
|
case "es_ES": return "es" // Spanish
|
||||||
case "gd.lproj": return "gd" // Scottish Gaelic
|
case "es_AR": return "es-419" // Spanish, Argentina
|
||||||
case "sl.lproj": return "sl" // Slovenian
|
case "sv-SE": return "sv" // Swedish
|
||||||
case "ckb.lproj": return "ckb" // Sorani (Kurdish)
|
case "sv_FI": return "sv_FI" // Swedish, Finland
|
||||||
case "es.lproj": return "es" // Spanish
|
case "th_TH": return "th" // Thai
|
||||||
case "es_AR.lproj": return "es-AR" // Spanish, Argentina
|
case "tr_TR": return "tr" // Turkish
|
||||||
case "sv.lproj": return "sv" // Swedish
|
case "vi_VN": return "vi" // Vietnamese
|
||||||
case "th.lproj": return "th" // Thai
|
|
||||||
case "tr.lproj": return "tr" // Turkish
|
|
||||||
case "vi.lproj": return "vi" // Vietnamese
|
|
||||||
default: return nil
|
default: return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue