{"id":22831518,"url":"https://github.com/phrase/phraseapp-rubymotion","last_synced_at":"2025-10-18T13:14:28.115Z","repository":{"id":32917744,"uuid":"36513124","full_name":"phrase/phraseapp-rubymotion","owner":"phrase","description":"Phrase for RubyMotion","archived":false,"fork":false,"pushed_at":"2021-09-21T13:17:02.000Z","size":31,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-03-06T10:55:53.990Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://phrase.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phrase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-29T15:36:35.000Z","updated_at":"2021-09-24T10:02:01.000Z","dependencies_parsed_at":"2022-08-02T00:59:37.804Z","dependency_job_id":null,"html_url":"https://github.com/phrase/phraseapp-rubymotion","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phrase%2Fphraseapp-rubymotion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phrase%2Fphraseapp-rubymotion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phrase%2Fphraseapp-rubymotion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phrase%2Fphraseapp-rubymotion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phrase","download_url":"https://codeload.github.com/phrase/phraseapp-rubymotion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246403903,"owners_count":20771527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-12T20:26:23.504Z","updated_at":"2025-10-18T13:14:28.020Z","avatar_url":"https://github.com/phrase.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# phraseapp-rubymotion\n\nphraseapp-rubymotion lets you connect your RubyMotion application to Phrase and benefit from the best internationalization workflow for your (iOS) projects.\n\nYou can use iOS Localizable.strings files to store and read translations but at the same time work on your translation files collaboratively with translators, developers and product managers.\n\n[Learn more about Phrase](https://phrase.com/)\n\n## Installation\n\nUsing the service requires a Phrase account. Just sign up at [phrase.com/signup](https://phrase.com/signup) and get your free trial account.\n\n### Install the Gem\n\nAdd this line to your application's Gemfile:\n\n    gem 'phraseapp-rubymotion'\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install phraseapp-rubymotion\n\nRequire the gem (unless you use bundler):\n\n```ruby\nrequire 'phraseapp-rubymotion'\n```\n\n### Configure Phrase\n\nAdd the Access Token and Project ID to your application's Rakefile:\n\n```ruby\nMotion::Project::App.setup do |app|\n  app.name = \"Test Application\"\n  app.development do\n    app.phraseapp do\n      app.phraseapp.enabled = true\n      app.phraseapp.access_token = \"YOUR_ACCESS_TOKEN\"\n      app.phraseapp.project_id = \"YOUR_PROJECT_ID\"\n    end\n  end\nend\n```\n\nYou will find the Project ID in your [project settings](https://phrase.com/projects). Generate Access Tokens in your [profile settings](https://phrase.com/settings/oauth_access_tokens).\n\nThis will automatically create the `phraseapp_config.rb` configuration file in your app folder during every build process.\n\n**Please make sure that you only enable Phrase in development mode and never in release mode!**\n\n## Usage\n\nUsing Phrase with phraseapp-rubymotion lets you send new translations to the Phrase API automatically without having to write them into your Localizable.strings file or uploading them - just by browsing the app.\n\n### Localizing Strings ###\n\nThe first step towards a localized app is to localize all strings by extending them with their localized counterparts. This can be done by simply calling the `#__` method on each string that is implemented by phraseapp-rubymotion:\n\n```ruby\n\"Hello World\"\n```\n\nnow becomes:\n\n```ruby\n\"Hello World\".__\n```\n\nor (when using a fallback translation):\n\n```ruby\n\"Hello World\".__(\"My fallback translation\")\n```\n\nOf course you can use more generic names for your keys as well, such as:\n\n```ruby\n\"HOME_WELCOME_BUTTON_LABEL\".__\n```\n\n[Learn more about localization in iOS](https://developer.apple.com/internationalization/)\n\n### Browsing translations in your app\n\nSimply build and run your app (in the simulator). When in development mode, phraseapp-rubymotion will send all of your localized strings to PhraseApp automatically! Log into your [Phrase account](https://phrase.com/account/login) and check your newly created keys. If you already have your localization files in the correct place, it will transmit translations as well.\n\n## Support\n\n* [Phrase Documentation](https://help.phrase.com/)\n* [Phrase Support](https://phrase.com/contact)\n\n## Get help / support\n\nPlease contact [support@phrase.com](mailto:support@phrase.com?subject=[GitHub]%20) and we can take more direct action toward finding a solution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphrase%2Fphraseapp-rubymotion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphrase%2Fphraseapp-rubymotion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphrase%2Fphraseapp-rubymotion/lists"}