code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:23+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/gnu-social/language/vi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: vi\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: OpenID plugin server error.
#: openid.php:139
msgid "Cannot instantiate OpenID consumer object."
msgstr ""

#. TRANS: OpenID plugin message. Given when an OpenID is not valid.
#: openid.php:151
msgid "Not a valid OpenID."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication
#. request fails.
#. TRANS: %s is the failure message.
#: openid.php:156
#, php-format
msgid "OpenID failure: %s."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication
#. request cannot be redirected.
#. TRANS: %s is the failure message.
#: openid.php:206
#, php-format
msgid "Could not redirect to server: %s."
msgstr ""

#. TRANS: OpenID plugin user instructions.
#: openid.php:245
msgid ""
"This form should automatically submit itself. If not, click the submit "
"button to go to your OpenID provider."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:281
msgid "Error saving the profile."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:293
msgid "Error saving the user."
msgstr ""

#. TRANS: OpenID plugin client exception (403).
#: openid.php:323
msgid "Unauthorized URL used for OpenID login."
msgstr ""

#. TRANS: Title
#: openid.php:371
msgid "OpenID Login Submission"
msgstr ""

#. TRANS: OpenID plugin message used while requesting authorization user's
#. OpenID login provider.
#: openid.php:382
msgid "Requesting authorization from your login provider..."
msgstr ""

#. TRANS: OpenID plugin message. User instruction while requesting
#. authorization user's OpenID login provider.
#: openid.php:386
msgid ""
"If you are not redirected to your login provider in a few seconds, try "
"pushing the button below."
msgstr ""

#. TRANS: Error message displayed when trying to perform an action that
#. requires a logged in user.
#: actions/finishaddopenid.php:66
msgid "Not logged in."
msgstr "Chưa đăng nhập."

#. TRANS: Status message in case the response from the OpenID provider is that
#. the logon attempt was cancelled.
#: actions/finishaddopenid.php:87 actions/finishopenidlogin.php:243
msgid "OpenID authentication cancelled."
msgstr ""

#. TRANS: OpenID authentication failed; display the error message.
#. TRANS: %s is the error message.
#. TRANS: OpenID authentication failed; display the error message. %s is the
#. error message.
#: actions/finishaddopenid.php:92 actions/finishopenidlogin.php:247
#, php-format
msgid "OpenID authentication failed: %s."
msgstr ""

#. TRANS: OpenID authentication error.
#. TRANS: Message displayed when OpenID authentication is aborted.
#: actions/finishaddopenid.php:109 actions/finishopenidlogin.php:268
msgid ""
"OpenID authentication aborted: You are not allowed to login to this site."
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already
#. connected to them.
#: actions/finishaddopenid.php:120
msgid "You already have this OpenID!"
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already used
#. by another user.
#: actions/finishaddopenid.php:123
msgid "Someone else already has this OpenID."
msgstr ""

#. TRANS: Message in case the OpenID object cannot be connected to the user.
#: actions/finishaddopenid.php:136
msgid "Error connecting user."
msgstr ""

#. TRANS: Message in case the user or the user profile cannot be saved in
#. StatusNet.
#: actions/finishaddopenid.php:143
msgid "Error updating profile."
msgstr ""

#. TRANS: Title after getting the status of the OpenID authorisation request.
#: actions/finishaddopenid.php:183
msgid "OpenID Login"
msgstr ""

#. TRANS: OpenID plugin client error given trying to add an unauthorised
#. OpenID to a user (403).
#. TRANS: %s is a request identity.
#: actions/openidserver.php:115
#, php-format
msgid "You are not authorized to use the identity %s."
msgstr ""

#. TRANS: OpenID plugin client error given when not getting a response for a
#. given OpenID provider (500).
#: actions/openidserver.php:136
msgid "Just an OpenID provider. Nothing to see here, move along..."
msgstr ""

#. TRANS: Title of OpenID settings page for a user.
#: actions/openidsettings.php:57
msgctxt "TITLE"
msgid "OpenID settings"
msgstr ""

#. TRANS: Form instructions for OpenID settings.
#. TRANS: This message contains Markdown links in the form
#. [description](link).
#: actions/openidsettings.php:69
#, php-format
msgid ""
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
"account. Manage your associated OpenIDs from here."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidsettings.php:100
msgctxt "LEGEND"
msgid "Add OpenID"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:104
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""

#. TRANS: Field label.
#. TRANS: OpenID plugin logon form field label.
#: actions/openidsettings.php:110 actions/openidlogin.php:155
#: OpenIDPlugin.php:702
msgid "OpenID URL"
msgstr ""

#. TRANS: Button text for adding an OpenID URL.
#: actions/openidsettings.php:121
msgctxt "BUTTON"
msgid "Add"
msgstr ""

#. TRANS: Header on OpenID settings page.
#: actions/openidsettings.php:133
msgctxt "HEADER"
msgid "Remove OpenID"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:139
msgid ""
"Removing your only OpenID would make it impossible to log in! If you need to"
" remove it, add another OpenID first."
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:155
msgid ""
"You can remove an OpenID from your account by clicking the button marked "
"\"Remove\"."
msgstr ""

#. TRANS: Button text to remove an OpenID.
#. TRANS: Button text to remove an OpenID trustroot.
#: actions/openidsettings.php:179 actions/openidsettings.php:223
msgctxt "BUTTON"
msgid "Remove"
msgstr "Khôi phục"

#. TRANS: Fieldset legend.
#: actions/openidsettings.php:194
msgid "OpenID Trusted Sites"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:198
msgid ""
"The following sites are allowed to access your identity and log you in. You "
"can remove a site from this list to deny it access to your OpenID."
msgstr ""

#: actions/openidsettings.php:229
msgctxt "LEGEND"
msgid "Preferences"
msgstr ""

#. TRANS: Button text to save OpenID prefs
#. TRANS: Button text to save OpenID settings.
#: actions/openidsettings.php:237 actions/openidadminpanel.php:284
msgctxt "BUTTON"
msgid "Save"
msgstr "Lưu"

#. TRANS: Client error displayed when the session token does not match or is
#. not given.
#. TRANS: Message given when there is a problem with the user's session token.
#: actions/openidsettings.php:257 actions/finishopenidlogin.php:42
msgid "There was a problem with your session token. Try again, please."
msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."

#. TRANS: Form validation error if no OpenID providers can be added.
#: actions/openidsettings.php:265
msgid "Cannot add new providers."
msgstr ""

#. TRANS: Unexpected form validation error.
#: actions/openidsettings.php:281
msgid "Something weird happened."
msgstr ""

#. TRANS: Form validation error when trying to remove a non-existing
#. trustroot.
#: actions/openidsettings.php:305
msgid "No such OpenID trustroot."
msgstr ""

#. TRANS: Success message after removing trustroots.
#: actions/openidsettings.php:310
msgid "Trustroots removed."
msgstr ""

#. TRANS: Form validation error for a non-existing OpenID.
#: actions/openidsettings.php:333
msgid "No such OpenID."
msgstr ""

#. TRANS: Form validation error if OpenID is connected to another user.
#: actions/openidsettings.php:339
msgid "That OpenID does not belong to you."
msgstr ""

#. TRANS: Success message after removing an OpenID.
#: actions/openidsettings.php:344
msgid "OpenID removed."
msgstr ""

#: actions/openidsettings.php:383
msgid "OpenID preferences saved."
msgstr ""

#. TRANS: Client error message trying to log on with OpenID while already
#. logged on.
#: actions/finishopenidlogin.php:37 actions/openidlogin.php:33
msgid "Already logged in."
msgstr "Đã đăng nhập."

#. TRANS: Message given if user does not agree with the site's license.
#: actions/finishopenidlogin.php:48
msgid "You cannot register if you do not agree to the license."
msgstr ""

#. TRANS: Messag given on an unknown error.
#: actions/finishopenidlogin.php:57
msgid "An unknown error has occured."
msgstr ""

#. TRANS: Instructions given after a first successful logon using OpenID.
#. TRANS: %s is the site name.
#: actions/finishopenidlogin.php:73
#, php-format
msgid ""
"This is the first time you have logged into %s so we must connect your "
"OpenID to a local account. You can either create a new account, or connect "
"with your existing account, if you have one."
msgstr ""

#. TRANS: Title
#: actions/finishopenidlogin.php:80
msgctxt "TITLE"
msgid "OpenID Account Setup"
msgstr ""

#. TRANS: Fieldset legend.
#: actions/finishopenidlogin.php:118
msgid "Create new account"
msgstr ""

#. TRANS: Form guide.
#: actions/finishopenidlogin.php:121
msgid "Create a new user with this nickname."
msgstr ""

#. TRANS: Field label.
#: actions/finishopenidlogin.php:129
msgid "New nickname"
msgstr ""

#. TRANS: Field title.
#: actions/finishopenidlogin.php:132
msgid "1-64 lowercase letters or numbers, no punctuation or spaces."
msgstr ""

#. TRANS: Field label.
#: actions/finishopenidlogin.php:136
msgid "Email"
msgstr "Email"

#. TRANS: Field title.
#: actions/finishopenidlogin.php:138
msgid "Used only for updates, announcements, and password recovery."
msgstr ""

#. TRANS: OpenID plugin link text.
#. TRANS: %s is a link to a license with the license name as link text.
#: actions/finishopenidlogin.php:155
#, php-format
msgid ""
"My text and files are available under %s except this private data: password,"
" email address, IM address, and phone number."
msgstr ""

#. TRANS: Button label in form in which to create a new user on the site for
#. an OpenID.
#: actions/finishopenidlogin.php:168
msgctxt "BUTTON"
msgid "Create"
msgstr ""

#. TRANS: Used as form legend for form in which to connect an OpenID to an
#. existing user on the site.
#: actions/finishopenidlogin.php:182
msgid "Connect existing account"
msgstr ""

#. TRANS: User instructions for form in which to connect an OpenID to an
#. existing user on the site.
#: actions/finishopenidlogin.php:185
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:189
msgid "Existing nickname"
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:193
msgid "Password"
msgstr "Mật khẩu"

#. TRANS: Button text in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:197
msgctxt "BUTTON"
msgid "Connect"
msgstr ""

#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site.
#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site without an invitation code, and none was provided.
#: actions/finishopenidlogin.php:324 actions/finishopenidlogin.php:333
msgid "Registration not allowed."
msgstr "Đăng ký"

#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site without an invitation code, and the one provided was not valid.
#: actions/finishopenidlogin.php:340
msgid "Not a valid invitation code."
msgstr ""

#. TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
#. TRANS: OpenID plugin server error. A stored OpenID cannot be found.
#: actions/finishopenidlogin.php:355 actions/finishopenidlogin.php:438
msgid "Stored OpenID not found."
msgstr ""

#. TRANS: OpenID plugin server error.
#: actions/finishopenidlogin.php:364
msgid "Creating new account for OpenID that already has a user."
msgstr ""

#. TRANS: OpenID plugin message.
#: actions/finishopenidlogin.php:426
msgid "Invalid username or password."
msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ."

#. TRANS: OpenID plugin server error. The user or user profile could not be
#. saved.
#: actions/finishopenidlogin.php:445
msgid "Error connecting user to OpenID."
msgstr ""

#. TRANS: OpenID plugin message. Rememberme logins have to reauthenticate
#. before changing any profile settings.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: actions/openidlogin.php:74
#, php-format
msgid ""
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
"before changing your settings."
msgstr ""

#. TRANS: OpenID plugin message.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: actions/openidlogin.php:80
#, php-format
msgid "Login with an [OpenID](%%doc.openid%%) account."
msgstr ""

#. TRANS: OpenID plugin message. Title.
#: actions/openidlogin.php:114
msgctxt "TITLE"
msgid "OpenID Login"
msgstr ""

#. TRANS: OpenID plugin logon form legend.
#: actions/openidlogin.php:132 OpenIDPlugin.php:679
msgctxt "LEGEND"
msgid "OpenID login"
msgstr ""

#. TRANS: Field label.
#: actions/openidlogin.php:140
msgctxt "LABEL"
msgid "OpenID provider"
msgstr ""

#. TRANS: Form guide.
#: actions/openidlogin.php:149 OpenIDPlugin.php:696
msgid "Enter your username."
msgstr ""

#. TRANS: Form guide.
#: actions/openidlogin.php:151 OpenIDPlugin.php:698
msgid "You will be sent to the provider's site for authentication."
msgstr ""

#. TRANS: OpenID plugin logon form field title.
#. TRANS: OpenID plugin logon form field instructions.
#: actions/openidlogin.php:158 OpenIDPlugin.php:705
msgid "Your OpenID URL."
msgstr ""

#. TRANS: OpenID plugin logon form checkbox label for setting to put the
#. OpenID information in a cookie.
#: actions/openidlogin.php:163
msgid "Remember me"
msgstr "Nhớ tôi"

#. TRANS: OpenID plugin logon form field title.
#: actions/openidlogin.php:165
msgid "Automatically login in the future; not for shared computers!"
msgstr "Sẽ tự động đăng nhập, không dành cho các máy sử dụng chung!"

#. TRANS: OpenID plugin logon form button label to start logon with the data
#. provided in the logon form.
#: actions/openidlogin.php:170
msgctxt "BUTTON"
msgid "Login"
msgstr "Đăng nhập"

#. TRANS: Title for OpenID bridge administration page.
#: actions/openidadminpanel.php:53
msgctxt "TITLE"
msgid "OpenID Settings"
msgstr ""

#. TRANS: Page instructions.
#: actions/openidadminpanel.php:64
msgid "OpenID settings"
msgstr ""

#. TRANS: Client error displayed when OpenID provider URL is too long.
#: actions/openidadminpanel.php:145
msgid "Invalid provider URL. Maximum length is 255 characters."
msgstr ""

#. TRANS: Client error displayed when Launchpad team name is too long.
#: actions/openidadminpanel.php:152
msgid "Invalid team name. Maximum length is 255 characters."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidadminpanel.php:206
msgctxt "LEGEND"
msgid "Trusted provider"
msgstr ""

#. TRANS: Form guide.
#: actions/openidadminpanel.php:209
msgid ""
"By default, users are allowed to authenticate with any OpenID provider. If "
"you are using your own OpenID service for shared sign-in, you can restrict "
"access to only your own users here."
msgstr ""

#. TRANS: Field label.
#: actions/openidadminpanel.php:218
msgid "Provider URL"
msgstr ""

#. TRANS: Field title.
#: actions/openidadminpanel.php:220
msgid ""
"All OpenID logins will be sent to this URL; other providers may not be used."
msgstr ""

#. TRANS: Checkbox label.
#: actions/openidadminpanel.php:228
msgid "Append a username to base URL"
msgstr ""

#. TRANS: Checkbox title.
#: actions/openidadminpanel.php:231
msgid ""
"Login form will show the base URL and prompt for a username to add at the "
"end. Use when OpenID provider URL should be the profile page for individual "
"users."
msgstr ""

#. TRANS: Field label.
#: actions/openidadminpanel.php:240
msgid "Required team"
msgstr ""

#. TRANS: Field title.
#: actions/openidadminpanel.php:242
msgid "Only allow logins from users in the given team (Launchpad extension)."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidadminpanel.php:255
msgctxt "LEGEND"
msgid "Options"
msgstr ""

#. TRANS: Checkbox label.
#: actions/openidadminpanel.php:263
msgid "Enable OpenID-only mode"
msgstr ""

#. TRANS: Checkbox title.
#: actions/openidadminpanel.php:266
msgid ""
"Require all users to login via OpenID. Warning: disables password "
"authentication for all users!"
msgstr ""

#. TRANS: Button title to save OpenID settings.
#: actions/openidadminpanel.php:286
msgid "Save OpenID settings."
msgstr ""

#. TRANS: Title for identity verification page.
#: actions/openidtrust.php:51
msgid "OpenID Identity Verification"
msgstr ""

#. TRANS: Client error when visiting page directly.
#: actions/openidtrust.php:69
msgid ""
"This page should only be reached during OpenID processing, not directly."
msgstr ""

#. TRANS: Page notice. %s is a trustroot name.
#: actions/openidtrust.php:118
#, php-format
msgid ""
"%s has asked to verify your identity. Click Continue to verify your identity"
" and login without creating a new password."
msgstr ""

#. TRANS: Button text to continue OpenID identity verification.
#. TRANS: button label for OAuth authorization page when needing OpenID
#. authentication first.
#: actions/openidtrust.php:136 OpenIDPlugin.php:662
msgctxt "BUTTON"
msgid "Continue"
msgstr ""

#. TRANS: Button text to cancel OpenID identity verification.
#: actions/openidtrust.php:138
msgctxt "BUTTON"
msgid "Cancel"
msgstr ""

#. TRANS: Client exception thrown when an action is not available.
#: OpenIDPlugin.php:139
msgid "Unavailable action."
msgstr ""

#. TRANS: Tooltip for main menu option "Login"
#: OpenIDPlugin.php:219
msgctxt "TOOLTIP"
msgid "Login to the site."
msgstr ""

#. TRANS: Main menu option when not logged in to log in
#: OpenIDPlugin.php:222
msgctxt "MENU"
msgid "Login"
msgstr "Đăng nhập"

#. TRANS: Tooltip for main menu option "Help"
#: OpenIDPlugin.php:227
msgctxt "TOOLTIP"
msgid "Help me!"
msgstr ""

#. TRANS: Main menu option for help on the StatusNet site
#: OpenIDPlugin.php:230
msgctxt "MENU"
msgid "Help"
msgstr "Trợ giúp"

#. TRANS: Tooltip for main menu option "Search"
#: OpenIDPlugin.php:236
msgctxt "TOOLTIP"
msgid "Search for people or text."
msgstr ""

#. TRANS: Main menu option when logged in or when the StatusNet instance is
#. not private
#: OpenIDPlugin.php:239
msgctxt "MENU"
msgid "Search"
msgstr ""

#. TRANS: OpenID plugin menu item on site logon page.
#. TRANS: OpenID plugin menu item on user settings page.
#. TRANS: OpenID configuration menu item.
#: OpenIDPlugin.php:296 OpenIDPlugin.php:332 OpenIDPlugin.php:524
#: OpenIDPlugin.php:604
msgctxt "MENU"
msgid "OpenID"
msgstr ""

#. TRANS: OpenID plugin tooltip for logon menu item.
#: OpenIDPlugin.php:298
msgid "Login or register with OpenID."
msgstr ""

#. TRANS: OpenID plugin tooltip for user settings menu item.
#: OpenIDPlugin.php:334
msgid "Add or remove OpenIDs."
msgstr ""

#. TRANS: Page notice for logged in users to try and get them to add an OpenID
#. account to their StatusNet account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:466
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? [Add an OpenID to your "
"account](%%action.openidsettings%%)!"
msgstr ""

#. TRANS: Page notice for anonymous users to try and get them to register with
#. an OpenID account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:471
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID "
"registration](%%action.openidlogin%%)!)"
msgstr ""

#. TRANS: Page notice on the login page to try and get them to log on with an
#. OpenID account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:479
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID "
"login](%%action.openidlogin%%)!)"
msgstr ""

#. TRANS: Tooltip for OpenID configuration menu item.
#: OpenIDPlugin.php:606
msgid "OpenID configuration."
msgstr ""

#. TRANS: Plugin description.
#: OpenIDPlugin.php:652
msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site."
msgstr ""

#. TRANS: Field label.
#: OpenIDPlugin.php:687
msgid "OpenID provider"
msgstr ""


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:23+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/gnu-social/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: OpenID plugin server error.
#: openid.php:139
msgid "Cannot instantiate OpenID consumer object."
msgstr ""

#. TRANS: OpenID plugin message. Given when an OpenID is not valid.
#: openid.php:151
msgid "Not a valid OpenID."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication
#. request fails.
#. TRANS: %s is the failure message.
#: openid.php:156
#, php-format
msgid "OpenID failure: %s."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication
#. request cannot be redirected.
#. TRANS: %s is the failure message.
#: openid.php:206
#, php-format
msgid "Could not redirect to server: %s."
msgstr ""

#. TRANS: OpenID plugin user instructions.
#: openid.php:245
msgid ""
"This form should automatically submit itself. If not, click the submit "
"button to go to your OpenID provider."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:281
msgid "Error saving the profile."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:293
msgid "Error saving the user."
msgstr ""

#. TRANS: OpenID plugin client exception (403).
#: openid.php:323
msgid "Unauthorized URL used for OpenID login."
msgstr ""

#. TRANS: Title
#: openid.php:371
msgid "OpenID Login Submission"
msgstr ""

#. TRANS: OpenID plugin message used while requesting authorization user's
#. OpenID login provider.
#: openid.php:382
msgid "Requesting authorization from your login provider..."
msgstr ""

#. TRANS: OpenID plugin message. User instruction while requesting
#. authorization user's OpenID login provider.
#: openid.php:386
msgid ""
"If you are not redirected to your login provider in a few seconds, try "
"pushing the button below."
msgstr ""

#. TRANS: Error message displayed when trying to perform an action that
#. requires a logged in user.
#: actions/finishaddopenid.php:66
msgid "Not logged in."
msgstr "未登录。"

#. TRANS: Status message in case the response from the OpenID provider is that
#. the logon attempt was cancelled.
#: actions/finishaddopenid.php:87 actions/finishopenidlogin.php:243
msgid "OpenID authentication cancelled."
msgstr ""

#. TRANS: OpenID authentication failed; display the error message.
#. TRANS: %s is the error message.
#. TRANS: OpenID authentication failed; display the error message. %s is the
#. error message.
#: actions/finishaddopenid.php:92 actions/finishopenidlogin.php:247
#, php-format
msgid "OpenID authentication failed: %s."
msgstr ""

#. TRANS: OpenID authentication error.
#. TRANS: Message displayed when OpenID authentication is aborted.
#: actions/finishaddopenid.php:109 actions/finishopenidlogin.php:268
msgid ""
"OpenID authentication aborted: You are not allowed to login to this site."
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already
#. connected to them.
#: actions/finishaddopenid.php:120
msgid "You already have this OpenID!"
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already used
#. by another user.
#: actions/finishaddopenid.php:123
msgid "Someone else already has this OpenID."
msgstr ""

#. TRANS: Message in case the OpenID object cannot be connected to the user.
#: actions/finishaddopenid.php:136
msgid "Error connecting user."
msgstr ""

#. TRANS: Message in case the user or the user profile cannot be saved in
#. StatusNet.
#: actions/finishaddopenid.php:143
msgid "Error updating profile."
msgstr ""

#. TRANS: Title after getting the status of the OpenID authorisation request.
#: actions/finishaddopenid.php:183
msgid "OpenID Login"
msgstr ""

#. TRANS: OpenID plugin client error given trying to add an unauthorised
#. OpenID to a user (403).
#. TRANS: %s is a request identity.
#: actions/openidserver.php:115
#, php-format
msgid "You are not authorized to use the identity %s."
msgstr ""

#. TRANS: OpenID plugin client error given when not getting a response for a
#. given OpenID provider (500).
#: actions/openidserver.php:136
msgid "Just an OpenID provider. Nothing to see here, move along..."
msgstr ""

#. TRANS: Title of OpenID settings page for a user.
#: actions/openidsettings.php:57
msgctxt "TITLE"
msgid "OpenID settings"
msgstr ""

#. TRANS: Form instructions for OpenID settings.
#. TRANS: This message contains Markdown links in the form
#. [description](link).
#: actions/openidsettings.php:69
#, php-format
msgid ""
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
"account. Manage your associated OpenIDs from here."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidsettings.php:100
msgctxt "LEGEND"
msgid "Add OpenID"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:104
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""

#. TRANS: Field label.
#. TRANS: OpenID plugin logon form field label.
#: actions/openidsettings.php:110 actions/openidlogin.php:155
#: OpenIDPlugin.php:702
msgid "OpenID URL"
msgstr ""

#. TRANS: Button text for adding an OpenID URL.
#: actions/openidsettings.php:121
msgctxt "BUTTON"
msgid "Add"
msgstr "添加"

#. TRANS: Header on OpenID settings page.
#: actions/openidsettings.php:133
msgctxt "HEADER"
msgid "Remove OpenID"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:139
msgid ""
"Removing your only OpenID would make it impossible to log in! If you need to"
" remove it, add another OpenID first."
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:155
msgid ""
"You can remove an OpenID from your account by clicking the button marked "
"\"Remove\"."
msgstr ""

#. TRANS: Button text to remove an OpenID.
#. TRANS: Button text to remove an OpenID trustroot.
#: actions/openidsettings.php:179 actions/openidsettings.php:223
msgctxt "BUTTON"
msgid "Remove"
msgstr "移除"

#. TRANS: Fieldset legend.
#: actions/openidsettings.php:194
msgid "OpenID Trusted Sites"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:198
msgid ""
"The following sites are allowed to access your identity and log you in. You "
"can remove a site from this list to deny it access to your OpenID."
msgstr ""

#: actions/openidsettings.php:229
msgctxt "LEGEND"
msgid "Preferences"
msgstr "参数设置"

#. TRANS: Button text to save OpenID prefs
#. TRANS: Button text to save OpenID settings.
#: actions/openidsettings.php:237 actions/openidadminpanel.php:284
msgctxt "BUTTON"
msgid "Save"
msgstr "保存"

#. TRANS: Client error displayed when the session token does not match or is
#. not given.
#. TRANS: Message given when there is a problem with the user's session token.
#: actions/openidsettings.php:257 actions/finishopenidlogin.php:42
msgid "There was a problem with your session token. Try again, please."
msgstr "你的 session 出现了一个问题，请重试。"

#. TRANS: Form validation error if no OpenID providers can be added.
#: actions/openidsettings.php:265
msgid "Cannot add new providers."
msgstr ""

#. TRANS: Unexpected form validation error.
#: actions/openidsettings.php:281
msgid "Something weird happened."
msgstr "发生了很诡异的事情。"

#. TRANS: Form validation error when trying to remove a non-existing
#. trustroot.
#: actions/openidsettings.php:305
msgid "No such OpenID trustroot."
msgstr ""

#. TRANS: Success message after removing trustroots.
#: actions/openidsettings.php:310
msgid "Trustroots removed."
msgstr ""

#. TRANS: Form validation error for a non-existing OpenID.
#: actions/openidsettings.php:333
msgid "No such OpenID."
msgstr ""

#. TRANS: Form validation error if OpenID is connected to another user.
#: actions/openidsettings.php:339
msgid "That OpenID does not belong to you."
msgstr ""

#. TRANS: Success message after removing an OpenID.
#: actions/openidsettings.php:344
msgid "OpenID removed."
msgstr ""

#: actions/openidsettings.php:383
msgid "OpenID preferences saved."
msgstr ""

#. TRANS: Client error message trying to log on with OpenID while already
#. logged on.
#: actions/finishopenidlogin.php:37 actions/openidlogin.php:33
msgid "Already logged in."
msgstr "已登录。"

#. TRANS: Message given if user does not agree with the site's license.
#: actions/finishopenidlogin.php:48
msgid "You cannot register if you do not agree to the license."
msgstr "你必须同意许可协议才能注册。"

#. TRANS: Messag given on an unknown error.
#: actions/finishopenidlogin.php:57
msgid "An unknown error has occured."
msgstr "出现了一个未知的错误。"

#. TRANS: Instructions given after a first successful logon using OpenID.
#. TRANS: %s is the site name.
#: actions/finishopenidlogin.php:73
#, php-format
msgid ""
"This is the first time you have logged into %s so we must connect your "
"OpenID to a local account. You can either create a new account, or connect "
"with your existing account, if you have one."
msgstr ""

#. TRANS: Title
#: actions/finishopenidlogin.php:80
msgctxt "TITLE"
msgid "OpenID Account Setup"
msgstr ""

#. TRANS: Fieldset legend.
#: actions/finishopenidlogin.php:118
msgid "Create new account"
msgstr "创建新的帐户"

#. TRANS: Form guide.
#: actions/finishopenidlogin.php:121
msgid "Create a new user with this nickname."
msgstr "此别名与创建新用户。"

#. TRANS: Field label.
#: actions/finishopenidlogin.php:129
msgid "New nickname"
msgstr "新的昵称"

#. TRANS: Field title.
#: actions/finishopenidlogin.php:132
msgid "1-64 lowercase letters or numbers, no punctuation or spaces."
msgstr "1 到 64 个小写字母或数字，不包含标点或空格。"

#. TRANS: Field label.
#: actions/finishopenidlogin.php:136
msgid "Email"
msgstr "电子邮件"

#. TRANS: Field title.
#: actions/finishopenidlogin.php:138
msgid "Used only for updates, announcements, and password recovery."
msgstr "仅用于更新、 公告及密码恢复。"

#. TRANS: OpenID plugin link text.
#. TRANS: %s is a link to a license with the license name as link text.
#: actions/finishopenidlogin.php:155
#, php-format
msgid ""
"My text and files are available under %s except this private data: password,"
" email address, IM address, and phone number."
msgstr "我的文字和文件在%s下提供，除了如下隐私内容：密码、电子邮件地址、IM 地址和电话号码。"

#. TRANS: Button label in form in which to create a new user on the site for
#. an OpenID.
#: actions/finishopenidlogin.php:168
msgctxt "BUTTON"
msgid "Create"
msgstr "创建"

#. TRANS: Used as form legend for form in which to connect an OpenID to an
#. existing user on the site.
#: actions/finishopenidlogin.php:182
msgid "Connect existing account"
msgstr "连接现有的帐户"

#. TRANS: User instructions for form in which to connect an OpenID to an
#. existing user on the site.
#: actions/finishopenidlogin.php:185
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:189
msgid "Existing nickname"
msgstr "现有的昵称"

#. TRANS: Field label in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:193
msgid "Password"
msgstr "密码"

#. TRANS: Button text in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:197
msgctxt "BUTTON"
msgid "Connect"
msgstr "连接"

#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site.
#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site without an invitation code, and none was provided.
#: actions/finishopenidlogin.php:324 actions/finishopenidlogin.php:333
msgid "Registration not allowed."
msgstr "不允许注册。"

#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site without an invitation code, and the one provided was not valid.
#: actions/finishopenidlogin.php:340
msgid "Not a valid invitation code."
msgstr "不是一个有效的邀请代码。"

#. TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
#. TRANS: OpenID plugin server error. A stored OpenID cannot be found.
#: actions/finishopenidlogin.php:355 actions/finishopenidlogin.php:438
msgid "Stored OpenID not found."
msgstr ""

#. TRANS: OpenID plugin server error.
#: actions/finishopenidlogin.php:364
msgid "Creating new account for OpenID that already has a user."
msgstr ""

#. TRANS: OpenID plugin message.
#: actions/finishopenidlogin.php:426
msgid "Invalid username or password."
msgstr "用户名或密码不正确。"

#. TRANS: OpenID plugin server error. The user or user profile could not be
#. saved.
#: actions/finishopenidlogin.php:445
msgid "Error connecting user to OpenID."
msgstr ""

#. TRANS: OpenID plugin message. Rememberme logins have to reauthenticate
#. before changing any profile settings.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: actions/openidlogin.php:74
#, php-format
msgid ""
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
"before changing your settings."
msgstr ""

#. TRANS: OpenID plugin message.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: actions/openidlogin.php:80
#, php-format
msgid "Login with an [OpenID](%%doc.openid%%) account."
msgstr ""

#. TRANS: OpenID plugin message. Title.
#: actions/openidlogin.php:114
msgctxt "TITLE"
msgid "OpenID Login"
msgstr ""

#. TRANS: OpenID plugin logon form legend.
#: actions/openidlogin.php:132 OpenIDPlugin.php:679
msgctxt "LEGEND"
msgid "OpenID login"
msgstr ""

#. TRANS: Field label.
#: actions/openidlogin.php:140
msgctxt "LABEL"
msgid "OpenID provider"
msgstr ""

#. TRANS: Form guide.
#: actions/openidlogin.php:149 OpenIDPlugin.php:696
msgid "Enter your username."
msgstr ""

#. TRANS: Form guide.
#: actions/openidlogin.php:151 OpenIDPlugin.php:698
msgid "You will be sent to the provider's site for authentication."
msgstr ""

#. TRANS: OpenID plugin logon form field title.
#. TRANS: OpenID plugin logon form field instructions.
#: actions/openidlogin.php:158 OpenIDPlugin.php:705
msgid "Your OpenID URL."
msgstr ""

#. TRANS: OpenID plugin logon form checkbox label for setting to put the
#. OpenID information in a cookie.
#: actions/openidlogin.php:163
msgid "Remember me"
msgstr "记住登录状态"

#. TRANS: OpenID plugin logon form field title.
#: actions/openidlogin.php:165
msgid "Automatically login in the future; not for shared computers!"
msgstr "下次自动登录，请不要在公共电脑上使用此选项！"

#. TRANS: OpenID plugin logon form button label to start logon with the data
#. provided in the logon form.
#: actions/openidlogin.php:170
msgctxt "BUTTON"
msgid "Login"
msgstr "登录"

#. TRANS: Title for OpenID bridge administration page.
#: actions/openidadminpanel.php:53
msgctxt "TITLE"
msgid "OpenID Settings"
msgstr ""

#. TRANS: Page instructions.
#: actions/openidadminpanel.php:64
msgid "OpenID settings"
msgstr ""

#. TRANS: Client error displayed when OpenID provider URL is too long.
#: actions/openidadminpanel.php:145
msgid "Invalid provider URL. Maximum length is 255 characters."
msgstr ""

#. TRANS: Client error displayed when Launchpad team name is too long.
#: actions/openidadminpanel.php:152
msgid "Invalid team name. Maximum length is 255 characters."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidadminpanel.php:206
msgctxt "LEGEND"
msgid "Trusted provider"
msgstr ""

#. TRANS: Form guide.
#: actions/openidadminpanel.php:209
msgid ""
"By default, users are allowed to authenticate with any OpenID provider. If "
"you are using your own OpenID service for shared sign-in, you can restrict "
"access to only your own users here."
msgstr ""

#. TRANS: Field label.
#: actions/openidadminpanel.php:218
msgid "Provider URL"
msgstr ""

#. TRANS: Field title.
#: actions/openidadminpanel.php:220
msgid ""
"All OpenID logins will be sent to this URL; other providers may not be used."
msgstr ""

#. TRANS: Checkbox label.
#: actions/openidadminpanel.php:228
msgid "Append a username to base URL"
msgstr ""

#. TRANS: Checkbox title.
#: actions/openidadminpanel.php:231
msgid ""
"Login form will show the base URL and prompt for a username to add at the "
"end. Use when OpenID provider URL should be the profile page for individual "
"users."
msgstr ""

#. TRANS: Field label.
#: actions/openidadminpanel.php:240
msgid "Required team"
msgstr ""

#. TRANS: Field title.
#: actions/openidadminpanel.php:242
msgid "Only allow logins from users in the given team (Launchpad extension)."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidadminpanel.php:255
msgctxt "LEGEND"
msgid "Options"
msgstr "选项"

#. TRANS: Checkbox label.
#: actions/openidadminpanel.php:263
msgid "Enable OpenID-only mode"
msgstr ""

#. TRANS: Checkbox title.
#: actions/openidadminpanel.php:266
msgid ""
"Require all users to login via OpenID. Warning: disables password "
"authentication for all users!"
msgstr ""

#. TRANS: Button title to save OpenID settings.
#: actions/openidadminpanel.php:286
msgid "Save OpenID settings."
msgstr ""

#. TRANS: Title for identity verification page.
#: actions/openidtrust.php:51
msgid "OpenID Identity Verification"
msgstr ""

#. TRANS: Client error when visiting page directly.
#: actions/openidtrust.php:69
msgid ""
"This page should only be reached during OpenID processing, not directly."
msgstr ""

#. TRANS: Page notice. %s is a trustroot name.
#: actions/openidtrust.php:118
#, php-format
msgid ""
"%s has asked to verify your identity. Click Continue to verify your identity"
" and login without creating a new password."
msgstr ""

#. TRANS: Button text to continue OpenID identity verification.
#. TRANS: button label for OAuth authorization page when needing OpenID
#. authentication first.
#: actions/openidtrust.php:136 OpenIDPlugin.php:662
msgctxt "BUTTON"
msgid "Continue"
msgstr "继续"

#. TRANS: Button text to cancel OpenID identity verification.
#: actions/openidtrust.php:138
msgctxt "BUTTON"
msgid "Cancel"
msgstr "取消"

#. TRANS: Client exception thrown when an action is not available.
#: OpenIDPlugin.php:139
msgid "Unavailable action."
msgstr ""

#. TRANS: Tooltip for main menu option "Login"
#: OpenIDPlugin.php:219
msgctxt "TOOLTIP"
msgid "Login to the site."
msgstr "请登录网站。"

#. TRANS: Main menu option when not logged in to log in
#: OpenIDPlugin.php:222
msgctxt "MENU"
msgid "Login"
msgstr "登录"

#. TRANS: Tooltip for main menu option "Help"
#: OpenIDPlugin.php:227
msgctxt "TOOLTIP"
msgid "Help me!"
msgstr ""

#. TRANS: Main menu option for help on the StatusNet site
#: OpenIDPlugin.php:230
msgctxt "MENU"
msgid "Help"
msgstr "帮助"

#. TRANS: Tooltip for main menu option "Search"
#: OpenIDPlugin.php:236
msgctxt "TOOLTIP"
msgid "Search for people or text."
msgstr ""

#. TRANS: Main menu option when logged in or when the StatusNet instance is
#. not private
#: OpenIDPlugin.php:239
msgctxt "MENU"
msgid "Search"
msgstr "搜索"

#. TRANS: OpenID plugin menu item on site logon page.
#. TRANS: OpenID plugin menu item on user settings page.
#. TRANS: OpenID configuration menu item.
#: OpenIDPlugin.php:296 OpenIDPlugin.php:332 OpenIDPlugin.php:524
#: OpenIDPlugin.php:604
msgctxt "MENU"
msgid "OpenID"
msgstr ""

#. TRANS: OpenID plugin tooltip for logon menu item.
#: OpenIDPlugin.php:298
msgid "Login or register with OpenID."
msgstr ""

#. TRANS: OpenID plugin tooltip for user settings menu item.
#: OpenIDPlugin.php:334
msgid "Add or remove OpenIDs."
msgstr ""

#. TRANS: Page notice for logged in users to try and get them to add an OpenID
#. account to their StatusNet account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:466
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? [Add an OpenID to your "
"account](%%action.openidsettings%%)!"
msgstr ""

#. TRANS: Page notice for anonymous users to try and get them to register with
#. an OpenID account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:471
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID "
"registration](%%action.openidlogin%%)!)"
msgstr ""

#. TRANS: Page notice on the login page to try and get them to log on with an
#. OpenID account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:479
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID "
"login](%%action.openidlogin%%)!)"
msgstr ""

#. TRANS: Tooltip for OpenID configuration menu item.
#: OpenIDPlugin.php:606
msgid "OpenID configuration."
msgstr ""

#. TRANS: Plugin description.
#: OpenIDPlugin.php:652
msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site."
msgstr ""

#. TRANS: Field label.
#: OpenIDPlugin.php:687
msgid "OpenID provider"
msgstr ""

repo_name: piratas/tortuga

license: mit


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-05 16:23+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/gnu-social/language/zh_TW/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#. TRANS: OpenID plugin server error.
#: openid.php:139
msgid "Cannot instantiate OpenID consumer object."
msgstr ""

#. TRANS: OpenID plugin message. Given when an OpenID is not valid.
#: openid.php:151
msgid "Not a valid OpenID."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication
#. request fails.
#. TRANS: %s is the failure message.
#: openid.php:156
#, php-format
msgid "OpenID failure: %s."
msgstr ""

#. TRANS: OpenID plugin server error. Given when the OpenID authentication
#. request cannot be redirected.
#. TRANS: %s is the failure message.
#: openid.php:206
#, php-format
msgid "Could not redirect to server: %s."
msgstr ""

#. TRANS: OpenID plugin user instructions.
#: openid.php:245
msgid ""
"This form should automatically submit itself. If not, click the submit "
"button to go to your OpenID provider."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:281
msgid "Error saving the profile."
msgstr ""

#. TRANS: OpenID plugin server error.
#: openid.php:293
msgid "Error saving the user."
msgstr ""

#. TRANS: OpenID plugin client exception (403).
#: openid.php:323
msgid "Unauthorized URL used for OpenID login."
msgstr ""

#. TRANS: Title
#: openid.php:371
msgid "OpenID Login Submission"
msgstr ""

#. TRANS: OpenID plugin message used while requesting authorization user's
#. OpenID login provider.
#: openid.php:382
msgid "Requesting authorization from your login provider..."
msgstr ""

#. TRANS: OpenID plugin message. User instruction while requesting
#. authorization user's OpenID login provider.
#: openid.php:386
msgid ""
"If you are not redirected to your login provider in a few seconds, try "
"pushing the button below."
msgstr ""

#. TRANS: Error message displayed when trying to perform an action that
#. requires a logged in user.
#: actions/finishaddopenid.php:66
msgid "Not logged in."
msgstr ""

#. TRANS: Status message in case the response from the OpenID provider is that
#. the logon attempt was cancelled.
#: actions/finishaddopenid.php:87 actions/finishopenidlogin.php:243
msgid "OpenID authentication cancelled."
msgstr ""

#. TRANS: OpenID authentication failed; display the error message.
#. TRANS: %s is the error message.
#. TRANS: OpenID authentication failed; display the error message. %s is the
#. error message.
#: actions/finishaddopenid.php:92 actions/finishopenidlogin.php:247
#, php-format
msgid "OpenID authentication failed: %s."
msgstr ""

#. TRANS: OpenID authentication error.
#. TRANS: Message displayed when OpenID authentication is aborted.
#: actions/finishaddopenid.php:109 actions/finishopenidlogin.php:268
msgid ""
"OpenID authentication aborted: You are not allowed to login to this site."
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already
#. connected to them.
#: actions/finishaddopenid.php:120
msgid "You already have this OpenID!"
msgstr ""

#. TRANS: Message in case a user tries to add an OpenID that is already used
#. by another user.
#: actions/finishaddopenid.php:123
msgid "Someone else already has this OpenID."
msgstr ""

#. TRANS: Message in case the OpenID object cannot be connected to the user.
#: actions/finishaddopenid.php:136
msgid "Error connecting user."
msgstr ""

#. TRANS: Message in case the user or the user profile cannot be saved in
#. StatusNet.
#: actions/finishaddopenid.php:143
msgid "Error updating profile."
msgstr ""

#. TRANS: Title after getting the status of the OpenID authorisation request.
#: actions/finishaddopenid.php:183
msgid "OpenID Login"
msgstr ""

#. TRANS: OpenID plugin client error given trying to add an unauthorised
#. OpenID to a user (403).
#. TRANS: %s is a request identity.
#: actions/openidserver.php:115
#, php-format
msgid "You are not authorized to use the identity %s."
msgstr ""

#. TRANS: OpenID plugin client error given when not getting a response for a
#. given OpenID provider (500).
#: actions/openidserver.php:136
msgid "Just an OpenID provider. Nothing to see here, move along..."
msgstr ""

#. TRANS: Title of OpenID settings page for a user.
#: actions/openidsettings.php:57
msgctxt "TITLE"
msgid "OpenID settings"
msgstr ""

#. TRANS: Form instructions for OpenID settings.
#. TRANS: This message contains Markdown links in the form
#. [description](link).
#: actions/openidsettings.php:69
#, php-format
msgid ""
"[OpenID](%%doc.openid%%) lets you log into many sites with the same user "
"account. Manage your associated OpenIDs from here."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidsettings.php:100
msgctxt "LEGEND"
msgid "Add OpenID"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:104
msgid ""
"If you want to add an OpenID to your account, enter it in the box below and "
"click \"Add\"."
msgstr ""

#. TRANS: Field label.
#. TRANS: OpenID plugin logon form field label.
#: actions/openidsettings.php:110 actions/openidlogin.php:155
#: OpenIDPlugin.php:702
msgid "OpenID URL"
msgstr ""

#. TRANS: Button text for adding an OpenID URL.
#: actions/openidsettings.php:121
msgctxt "BUTTON"
msgid "Add"
msgstr ""

#. TRANS: Header on OpenID settings page.
#: actions/openidsettings.php:133
msgctxt "HEADER"
msgid "Remove OpenID"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:139
msgid ""
"Removing your only OpenID would make it impossible to log in! If you need to"
" remove it, add another OpenID first."
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:155
msgid ""
"You can remove an OpenID from your account by clicking the button marked "
"\"Remove\"."
msgstr ""

#. TRANS: Button text to remove an OpenID.
#. TRANS: Button text to remove an OpenID trustroot.
#: actions/openidsettings.php:179 actions/openidsettings.php:223
msgctxt "BUTTON"
msgid "Remove"
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidsettings.php:194
msgid "OpenID Trusted Sites"
msgstr ""

#. TRANS: Form guide.
#: actions/openidsettings.php:198
msgid ""
"The following sites are allowed to access your identity and log you in. You "
"can remove a site from this list to deny it access to your OpenID."
msgstr ""

#: actions/openidsettings.php:229
msgctxt "LEGEND"
msgid "Preferences"
msgstr ""

#. TRANS: Button text to save OpenID prefs
#. TRANS: Button text to save OpenID settings.
#: actions/openidsettings.php:237 actions/openidadminpanel.php:284
msgctxt "BUTTON"
msgid "Save"
msgstr ""

#. TRANS: Client error displayed when the session token does not match or is
#. not given.
#. TRANS: Message given when there is a problem with the user's session token.
#: actions/openidsettings.php:257 actions/finishopenidlogin.php:42
msgid "There was a problem with your session token. Try again, please."
msgstr ""

#. TRANS: Form validation error if no OpenID providers can be added.
#: actions/openidsettings.php:265
msgid "Cannot add new providers."
msgstr ""

#. TRANS: Unexpected form validation error.
#: actions/openidsettings.php:281
msgid "Something weird happened."
msgstr ""

#. TRANS: Form validation error when trying to remove a non-existing
#. trustroot.
#: actions/openidsettings.php:305
msgid "No such OpenID trustroot."
msgstr ""

#. TRANS: Success message after removing trustroots.
#: actions/openidsettings.php:310
msgid "Trustroots removed."
msgstr ""

#. TRANS: Form validation error for a non-existing OpenID.
#: actions/openidsettings.php:333
msgid "No such OpenID."
msgstr ""

#. TRANS: Form validation error if OpenID is connected to another user.
#: actions/openidsettings.php:339
msgid "That OpenID does not belong to you."
msgstr ""

#. TRANS: Success message after removing an OpenID.
#: actions/openidsettings.php:344
msgid "OpenID removed."
msgstr ""

#: actions/openidsettings.php:383
msgid "OpenID preferences saved."
msgstr ""

#. TRANS: Client error message trying to log on with OpenID while already
#. logged on.
#: actions/finishopenidlogin.php:37 actions/openidlogin.php:33
msgid "Already logged in."
msgstr "已登入"

#. TRANS: Message given if user does not agree with the site's license.
#: actions/finishopenidlogin.php:48
msgid "You cannot register if you do not agree to the license."
msgstr ""

#. TRANS: Messag given on an unknown error.
#: actions/finishopenidlogin.php:57
msgid "An unknown error has occured."
msgstr ""

#. TRANS: Instructions given after a first successful logon using OpenID.
#. TRANS: %s is the site name.
#: actions/finishopenidlogin.php:73
#, php-format
msgid ""
"This is the first time you have logged into %s so we must connect your "
"OpenID to a local account. You can either create a new account, or connect "
"with your existing account, if you have one."
msgstr ""

#. TRANS: Title
#: actions/finishopenidlogin.php:80
msgctxt "TITLE"
msgid "OpenID Account Setup"
msgstr ""

#. TRANS: Fieldset legend.
#: actions/finishopenidlogin.php:118
msgid "Create new account"
msgstr ""

#. TRANS: Form guide.
#: actions/finishopenidlogin.php:121
msgid "Create a new user with this nickname."
msgstr ""

#. TRANS: Field label.
#: actions/finishopenidlogin.php:129
msgid "New nickname"
msgstr ""

#. TRANS: Field title.
#: actions/finishopenidlogin.php:132
msgid "1-64 lowercase letters or numbers, no punctuation or spaces."
msgstr ""

#. TRANS: Field label.
#: actions/finishopenidlogin.php:136
msgid "Email"
msgstr "電子信箱"

#. TRANS: Field title.
#: actions/finishopenidlogin.php:138
msgid "Used only for updates, announcements, and password recovery."
msgstr ""

#. TRANS: OpenID plugin link text.
#. TRANS: %s is a link to a license with the license name as link text.
#: actions/finishopenidlogin.php:155
#, php-format
msgid ""
"My text and files are available under %s except this private data: password,"
" email address, IM address, and phone number."
msgstr ""

#. TRANS: Button label in form in which to create a new user on the site for
#. an OpenID.
#: actions/finishopenidlogin.php:168
msgctxt "BUTTON"
msgid "Create"
msgstr ""

#. TRANS: Used as form legend for form in which to connect an OpenID to an
#. existing user on the site.
#: actions/finishopenidlogin.php:182
msgid "Connect existing account"
msgstr ""

#. TRANS: User instructions for form in which to connect an OpenID to an
#. existing user on the site.
#: actions/finishopenidlogin.php:185
msgid ""
"If you already have an account, login with your username and password to "
"connect it to your OpenID."
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:189
msgid "Existing nickname"
msgstr ""

#. TRANS: Field label in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:193
msgid "Password"
msgstr ""

#. TRANS: Button text in form in which to connect an OpenID to an existing
#. user on the site.
#: actions/finishopenidlogin.php:197
msgctxt "BUTTON"
msgid "Connect"
msgstr ""

#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site.
#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site without an invitation code, and none was provided.
#: actions/finishopenidlogin.php:324 actions/finishopenidlogin.php:333
msgid "Registration not allowed."
msgstr ""

#. TRANS: OpenID plugin message. No new user registration is allowed on the
#. site without an invitation code, and the one provided was not valid.
#: actions/finishopenidlogin.php:340
msgid "Not a valid invitation code."
msgstr ""

#. TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved.
#. TRANS: OpenID plugin server error. A stored OpenID cannot be found.
#: actions/finishopenidlogin.php:355 actions/finishopenidlogin.php:438
msgid "Stored OpenID not found."
msgstr ""

#. TRANS: OpenID plugin server error.
#: actions/finishopenidlogin.php:364
msgid "Creating new account for OpenID that already has a user."
msgstr ""

#. TRANS: OpenID plugin message.
#: actions/finishopenidlogin.php:426
msgid "Invalid username or password."
msgstr "使用者名稱或密碼無效"

#. TRANS: OpenID plugin server error. The user or user profile could not be
#. saved.
#: actions/finishopenidlogin.php:445
msgid "Error connecting user to OpenID."
msgstr ""

#. TRANS: OpenID plugin message. Rememberme logins have to reauthenticate
#. before changing any profile settings.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: actions/openidlogin.php:74
#, php-format
msgid ""
"For security reasons, please re-login with your [OpenID](%%doc.openid%%) "
"before changing your settings."
msgstr ""

#. TRANS: OpenID plugin message.
#. TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)".
#: actions/openidlogin.php:80
#, php-format
msgid "Login with an [OpenID](%%doc.openid%%) account."
msgstr ""

#. TRANS: OpenID plugin message. Title.
#: actions/openidlogin.php:114
msgctxt "TITLE"
msgid "OpenID Login"
msgstr ""

#. TRANS: OpenID plugin logon form legend.
#: actions/openidlogin.php:132 OpenIDPlugin.php:679
msgctxt "LEGEND"
msgid "OpenID login"
msgstr ""

#. TRANS: Field label.
#: actions/openidlogin.php:140
msgctxt "LABEL"
msgid "OpenID provider"
msgstr ""

#. TRANS: Form guide.
#: actions/openidlogin.php:149 OpenIDPlugin.php:696
msgid "Enter your username."
msgstr ""

#. TRANS: Form guide.
#: actions/openidlogin.php:151 OpenIDPlugin.php:698
msgid "You will be sent to the provider's site for authentication."
msgstr ""

#. TRANS: OpenID plugin logon form field title.
#. TRANS: OpenID plugin logon form field instructions.
#: actions/openidlogin.php:158 OpenIDPlugin.php:705
msgid "Your OpenID URL."
msgstr ""

#. TRANS: OpenID plugin logon form checkbox label for setting to put the
#. OpenID information in a cookie.
#: actions/openidlogin.php:163
msgid "Remember me"
msgstr ""

#. TRANS: OpenID plugin logon form field title.
#: actions/openidlogin.php:165
msgid "Automatically login in the future; not for shared computers!"
msgstr "未來在同一部電腦自動登入"

#. TRANS: OpenID plugin logon form button label to start logon with the data
#. provided in the logon form.
#: actions/openidlogin.php:170
msgctxt "BUTTON"
msgid "Login"
msgstr "登入"

#. TRANS: Title for OpenID bridge administration page.
#: actions/openidadminpanel.php:53
msgctxt "TITLE"
msgid "OpenID Settings"
msgstr ""

#. TRANS: Page instructions.
#: actions/openidadminpanel.php:64
msgid "OpenID settings"
msgstr ""

#. TRANS: Client error displayed when OpenID provider URL is too long.
#: actions/openidadminpanel.php:145
msgid "Invalid provider URL. Maximum length is 255 characters."
msgstr ""

#. TRANS: Client error displayed when Launchpad team name is too long.
#: actions/openidadminpanel.php:152
msgid "Invalid team name. Maximum length is 255 characters."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidadminpanel.php:206
msgctxt "LEGEND"
msgid "Trusted provider"
msgstr ""

#. TRANS: Form guide.
#: actions/openidadminpanel.php:209
msgid ""
"By default, users are allowed to authenticate with any OpenID provider. If "
"you are using your own OpenID service for shared sign-in, you can restrict "
"access to only your own users here."
msgstr ""

#. TRANS: Field label.
#: actions/openidadminpanel.php:218
msgid "Provider URL"
msgstr ""

#. TRANS: Field title.
#: actions/openidadminpanel.php:220
msgid ""
"All OpenID logins will be sent to this URL; other providers may not be used."
msgstr ""

#. TRANS: Checkbox label.
#: actions/openidadminpanel.php:228
msgid "Append a username to base URL"
msgstr ""

#. TRANS: Checkbox title.
#: actions/openidadminpanel.php:231
msgid ""
"Login form will show the base URL and prompt for a username to add at the "
"end. Use when OpenID provider URL should be the profile page for individual "
"users."
msgstr ""

#. TRANS: Field label.
#: actions/openidadminpanel.php:240
msgid "Required team"
msgstr ""

#. TRANS: Field title.
#: actions/openidadminpanel.php:242
msgid "Only allow logins from users in the given team (Launchpad extension)."
msgstr ""

#. TRANS: Fieldset legend.
#: actions/openidadminpanel.php:255
msgctxt "LEGEND"
msgid "Options"
msgstr ""

#. TRANS: Checkbox label.
#: actions/openidadminpanel.php:263
msgid "Enable OpenID-only mode"
msgstr ""

#. TRANS: Checkbox title.
#: actions/openidadminpanel.php:266
msgid ""
"Require all users to login via OpenID. Warning: disables password "
"authentication for all users!"
msgstr ""

#. TRANS: Button title to save OpenID settings.
#: actions/openidadminpanel.php:286
msgid "Save OpenID settings."
msgstr ""

#. TRANS: Title for identity verification page.
#: actions/openidtrust.php:51
msgid "OpenID Identity Verification"
msgstr ""

#. TRANS: Client error when visiting page directly.
#: actions/openidtrust.php:69
msgid ""
"This page should only be reached during OpenID processing, not directly."
msgstr ""

#. TRANS: Page notice. %s is a trustroot name.
#: actions/openidtrust.php:118
#, php-format
msgid ""
"%s has asked to verify your identity. Click Continue to verify your identity"
" and login without creating a new password."
msgstr ""

#. TRANS: Button text to continue OpenID identity verification.
#. TRANS: button label for OAuth authorization page when needing OpenID
#. authentication first.
#: actions/openidtrust.php:136 OpenIDPlugin.php:662
msgctxt "BUTTON"
msgid "Continue"
msgstr ""

#. TRANS: Button text to cancel OpenID identity verification.
#: actions/openidtrust.php:138
msgctxt "BUTTON"
msgid "Cancel"
msgstr ""

#. TRANS: Client exception thrown when an action is not available.
#: OpenIDPlugin.php:139
msgid "Unavailable action."
msgstr ""

#. TRANS: Tooltip for main menu option "Login"
#: OpenIDPlugin.php:219
msgctxt "TOOLTIP"
msgid "Login to the site."
msgstr ""

#. TRANS: Main menu option when not logged in to log in
#: OpenIDPlugin.php:222
msgctxt "MENU"
msgid "Login"
msgstr "登入"

#. TRANS: Tooltip for main menu option "Help"
#: OpenIDPlugin.php:227
msgctxt "TOOLTIP"
msgid "Help me!"
msgstr ""

#. TRANS: Main menu option for help on the StatusNet site
#: OpenIDPlugin.php:230
msgctxt "MENU"
msgid "Help"
msgstr ""

#. TRANS: Tooltip for main menu option "Search"
#: OpenIDPlugin.php:236
msgctxt "TOOLTIP"
msgid "Search for people or text."
msgstr ""

#. TRANS: Main menu option when logged in or when the StatusNet instance is
#. not private
#: OpenIDPlugin.php:239
msgctxt "MENU"
msgid "Search"
msgstr ""

#. TRANS: OpenID plugin menu item on site logon page.
#. TRANS: OpenID plugin menu item on user settings page.
#. TRANS: OpenID configuration menu item.
#: OpenIDPlugin.php:296 OpenIDPlugin.php:332 OpenIDPlugin.php:524
#: OpenIDPlugin.php:604
msgctxt "MENU"
msgid "OpenID"
msgstr ""

#. TRANS: OpenID plugin tooltip for logon menu item.
#: OpenIDPlugin.php:298
msgid "Login or register with OpenID."
msgstr ""

#. TRANS: OpenID plugin tooltip for user settings menu item.
#: OpenIDPlugin.php:334
msgid "Add or remove OpenIDs."
msgstr ""

#. TRANS: Page notice for logged in users to try and get them to add an OpenID
#. account to their StatusNet account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:466
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? [Add an OpenID to your "
"account](%%action.openidsettings%%)!"
msgstr ""

#. TRANS: Page notice for anonymous users to try and get them to register with
#. an OpenID account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:471
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID "
"registration](%%action.openidlogin%%)!)"
msgstr ""

#. TRANS: Page notice on the login page to try and get them to log on with an
#. OpenID account.
#. TRANS: This message contains Markdown links in the form
#. (description)[link].
#: OpenIDPlugin.php:479
#, php-format
msgid ""
"(Have an [OpenID](http://openid.net/)? Try our [OpenID "
"login](%%action.openidlogin%%)!)"
msgstr ""

#. TRANS: Tooltip for OpenID configuration menu item.
#: OpenIDPlugin.php:606
msgid "OpenID configuration."
msgstr ""

#. TRANS: Plugin description.
#: OpenIDPlugin.php:652
msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site."
msgstr ""

#. TRANS: Field label.
#: OpenIDPlugin.php:687
msgid "OpenID provider"
msgstr ""


code:
<?php
/*
 * StatusNet - the distributed open-source microblogging tool
 * Copyright (C) 2008, 2009, StatusNet, Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

if (!defined('STATUSNET')) {
    exit(1);
}

require_once('Auth/OpenID.php');
require_once('Auth/OpenID/Consumer.php');
require_once('Auth/OpenID/Server.php');
require_once('Auth/OpenID/SReg.php');
require_once('Auth/OpenID/MySQLStore.php');

// About one year cookie expiry

define('OPENID_COOKIE_EXPIRY', round(365.25 * 24 * 60 * 60));
define('OPENID_COOKIE_KEY', 'lastusedopenid');

function oid_store()
{
    static $store = null;
    if (!$store) {
        // Can't be called statically
        $user = new User();
        $conn = $user->getDatabaseConnection();
        $store = new Auth_OpenID_MySQLStore($conn);
    }
    return $store;
}

function oid_consumer()
{
    $store = oid_store();
    $consumer = new Auth_OpenID_Consumer($store);
    return $consumer;
}

function oid_server()
{
    $store = oid_store();
    $server = new Auth_OpenID_Server($store, common_local_url('openidserver'));
    return $server;
}

function oid_clear_last()
{
    oid_set_last('');
}

function oid_set_last($openid_url)
{
    common_set_cookie(OPENID_COOKIE_KEY,
                     $openid_url,
                     time() + OPENID_COOKIE_EXPIRY);
}

function oid_get_last()
{
    if (empty($_COOKIE[OPENID_COOKIE_KEY])) {
        return null;
    }
    $openid_url = $_COOKIE[OPENID_COOKIE_KEY];
    if ($openid_url && strlen($openid_url) > 0) {
        return $openid_url;
    } else {
        return null;
    }
}

function oid_link_user($id, $canonical, $display)
{
    global $_PEAR;

    $oid = new User_openid();
    $oid->user_id = $id;
    $oid->canonical = $canonical;
    $oid->display = $display;
    $oid->created = common_sql_now();

    if (!$oid->insert()) {
        $err = &$_PEAR->getStaticProperty('DB_DataObject','lastError');
        return false;
    }

    return true;
}

function oid_get_user($openid_url)
{
    $user = null;
    $oid = User_openid::getKV('canonical', $openid_url);
    if ($oid) {
        $user = User::getKV('id', $oid->user_id);
    }
    return $user;
}

function oid_check_immediate($openid_url, $backto=null)
{
    if (!$backto) {
        $action = $_REQUEST['action'];
        $args = common_copy_args($_GET);
        unset($args['action']);
        $backto = common_local_url($action, $args);
    }

    common_ensure_session();

    $_SESSION['openid_immediate_backto'] = $backto;

    oid_authenticate($openid_url,
                     'finishimmediate',
                     true);
}

function oid_authenticate($openid_url, $returnto, $immediate=false)
{

    $consumer = oid_consumer();

    if (!$consumer) {
        // TRANS: OpenID plugin server error.
        common_server_error(_m('Cannot instantiate OpenID consumer object.'));
        return false;
    }

    common_ensure_session();

    $auth_request = $consumer->begin($openid_url);

    // Handle failure status return values.
    if (!$auth_request) {
        common_log(LOG_ERR, __METHOD__ . ": mystery fail contacting $openid_url");
        // TRANS: OpenID plugin message. Given when an OpenID is not valid.
        return _m('Not a valid OpenID.');
    } else if (Auth_OpenID::isFailure($auth_request)) {
        common_log(LOG_ERR, __METHOD__ . ": OpenID fail to $openid_url: $auth_request->message");
        // TRANS: OpenID plugin server error. Given when the OpenID authentication request fails.
        // TRANS: %s is the failure message.
        return sprintf(_m('OpenID failure: %s.'), $auth_request->message);
    }

    $sreg_request = Auth_OpenID_SRegRequest::build(// Required
                                                   array(),
                                                   // Optional
                                                   array('nickname',
                                                         'email',
                                                         'fullname',
                                                         'language',
                                                         'timezone',
                                                         'postcode',
                                                         'country'));

    if ($sreg_request) {
        $auth_request->addExtension($sreg_request);
    }

    $requiredTeam = common_config('openid', 'required_team');
    if ($requiredTeam) {
        // LaunchPad OpenID extension
        $team_request = new Auth_OpenID_TeamsRequest(array($requiredTeam));
        if ($team_request) {
            $auth_request->addExtension($team_request);
        }
    }

    $trust_root = common_root_url(true);
    $process_url = common_local_url($returnto);

    // Net::OpenID::Server as used on LiveJournal appears to incorrectly
    // reject POST requests for data submissions that OpenID 1.1 specs
    // as GET, although 2.0 allows them:
    // https://rt.cpan.org/Public/Bug/Display.html?id=42202
    //
    // Our OpenID libraries would have switched in the redirect automatically
    // if it were detecting 1.1 compatibility mode, however the server is
    // advertising itself as 2.0-compatible, so we got switched to the POST.
    //
    // Since the GET should always work anyway, we'll just take out the
    // autosubmitter for now.
    //
    //if ($auth_request->shouldSendRedirect()) {
        $redirect_url = $auth_request->redirectURL($trust_root,
                                                   $process_url,
                                                   $immediate);
        if (!$redirect_url) {
        } else if (Auth_OpenID::isFailure($redirect_url)) {
            // TRANS: OpenID plugin server error. Given when the OpenID authentication request cannot be redirected.
            // TRANS: %s is the failure message.
            return sprintf(_m('Could not redirect to server: %s.'), $redirect_url->message);
        } else {
            common_redirect($redirect_url, 303);
        }
    /*
    } else {
        // Generate form markup and render it.
        $form_id = 'openid_message';
        $form_html = $auth_request->formMarkup($trust_root, $process_url,
                                               $immediate, array('id' => $form_id));

        // XXX: This is cheap, but things choke if we don't escape ampersands
        // in the HTML attributes

        $form_html = preg_replace('/&/', '&', $form_html);

        // Display an error if the form markup couldn't be generated;
        // otherwise, render the HTML.
        if (Auth_OpenID::isFailure($form_html)) {
            // TRANS: OpenID plugin server error if the form markup could not be generated.
            // TRANS: %s is the failure message.
            common_server_error(sprintf(_m('Could not create OpenID form: %s'), $form_html->message));
        } else {
            $action = new AutosubmitAction(); // see below
            $action->form_html = $form_html;
            $action->form_id = $form_id;
            $action->prepare(array('action' => 'autosubmit'));
            $action->handle(array('action' => 'autosubmit'));
        }
    }
    */
}

// Half-assed attempt at a module-private function

function _oid_print_instructions()
{
    common_element('div', 'instructions',
                   // TRANS: OpenID plugin user instructions.
                   _m('This form should automatically submit itself. '.
                      'If not, click the submit button to go to your '.
                      'OpenID provider.'));
}

/**
 * Update a user from sreg parameters
 * @param User $user
 * @param array $sreg fields from OpenID sreg response
 * @access private
 */
function oid_update_user($user, $sreg)
{
    $profile = $user->getProfile();

    $orig_profile = clone($profile);

    if (!empty($sreg['fullname']) && strlen($sreg['fullname']) <= 255) {
        $profile->fullname = $sreg['fullname'];
    }

    if (!empty($sreg['country'])) {
        if ($sreg['postcode']) {
            // XXX: use postcode to get city and region
            // XXX: also, store postcode somewhere -- it's valuable!
            $profile->location = $sreg['postcode'] . ', ' . $sreg['country'];
        } else {
            $profile->location = $sreg['country'];
        }
    }

    // XXX save language if it's passed
    // XXX save timezone if it's passed

    if (!$profile->update($orig_profile)) {
        // TRANS: OpenID plugin server error.
        common_server_error(_m('Error saving the profile.'));
        return false;
    }

    $orig_user = clone($user);

    if (!empty($sreg['email']) && Validate::email($sreg['email'], common_config('email', 'check_domain'))) {
        $user->email = $sreg['email'];
    }

    if (!$user->update($orig_user)) {
        // TRANS: OpenID plugin server error.
        common_server_error(_m('Error saving the user.'));
        return false;
    }

    return true;
}

function oid_assert_allowed($url)
{
    $blacklist = common_config('openid', 'blacklist');
    $whitelist = common_config('openid', 'whitelist');

    if (empty($blacklist)) {
        $blacklist = array();
    }

    if (empty($whitelist)) {
        $whitelist = array();
    }

    foreach ($blacklist as $pattern) {
        if (preg_match("/$pattern/", $url)) {
            common_log(LOG_INFO, "Matched OpenID blacklist pattern {$pattern} with {$url}");
            foreach ($whitelist as $exception) {
                if (preg_match("/$exception/", $url)) {
                    common_log(LOG_INFO, "Matched OpenID whitelist pattern {$exception} with {$url}");
                    return;
                }
            }
            // TRANS: OpenID plugin client exception (403).
            throw new ClientException(_m('Unauthorized URL used for OpenID login.'), 403);
        }
    }

    return;
}

/**
 * Check the teams available in the given OpenID response
 * Using Launchpad's OpenID teams extension
 *
 * @return boolean whether this user is acceptable
 */
function oid_check_teams($response)
{
    $requiredTeam = common_config('openid', 'required_team');
    if ($requiredTeam) {
        $team_resp = new Auth_OpenID_TeamsResponse($response);
        if ($team_resp) {
            $teams = $team_resp->getTeams();
        } else {
            $teams = array();
        }

        $match = in_array($requiredTeam, $teams);
        $is = $match ? 'is' : 'is not';
        common_log(LOG_DEBUG, "Remote user $is in required team $requiredTeam: [" . implode(', ', $teams) . "]");

        return $match;
    }

    return true;
}

class AutosubmitAction extends Action
{
    var $form_html = null;
    var $form_id = null;

    function handle($args)
    {
        parent::handle($args);
        $this->showPage();
    }

    function title()
    {
        // TRANS: Title
        return _m('OpenID Login Submission');
    }

    function showContent()
    {
        $this->raw('
');
        // @todo FIXME: This would be better using standard CSS class, but the present theme's a bit scary.
        $this->element('img', array('src' => Theme::path('images/icons/icon_processing.gif', 'base'),
                                    // for some reason the base CSS sets s as block display?!
                                    'style' => 'display: inline'));
        // TRANS: OpenID plugin message used while requesting authorization user's OpenID login provider.
        $this->text(_m('Requesting authorization from your login provider...'));
        $this->raw('
');
        $this->raw('
');
        // TRANS: OpenID plugin message. User instruction while requesting authorization user's OpenID login provider.
        $this->text(_m('If you are not redirected to your login provider in a few seconds, try pushing the button below.'));
        $this->raw('
');
        $this->raw($this->form_html);
    }

    function showScripts()
    {
        parent::showScripts();
        $this->element('script', null,
                       'document.getElementById(\'' . $this->form_id . '\').submit();');
    }
}


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Plugin for OpenX ad server
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Ads
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

if (!defined('STATUSNET')) {
    exit(1);
}

/**
 * Plugin for OpenX Ad Server
 *
 * This plugin supports the OpenX ad server, http://www.openx.org/
 *
 * We support the 4 ad sizes for the Universal Ad Platform (UAP):
 *
 *     Medium Rectangle
 *     (Small) Rectangle
 *     Leaderboard
 *     Wide Skyscraper
 *
 * They fit in different places on the default theme. Some themes
 * might interact quite poorly with this plugin.
 *
 * To enable advertising, you will need an OpenX server. You'll need
 * to set up a "zone" for your StatusNet site that identifies a
 * kind of ad you want to place (of the above 4 sizes).
 *
 * Add the plugin to config.php like so:
 *
 *     addPlugin('OpenX', array('adScript' => 'full path to script',
 *                              'rectangle' => 1));
 *
 * Here, the 'adScript' parameter is the full path to the OpenX
 * ad script, like 'http://example.com/www/delivery/ajs.php'. Note
 * that we don't do any magic to swap between HTTP and HTTPS, so
 * if you want HTTPS, say so.
 *
 * The 'rectangle' parameter is the zone ID for that ad space on
 * your site. If you've configured another size, try 'mediumRectangle',
 * 'leaderboard', or 'wideSkyscraper'.
 *
 * If for some reason your ad server is different from the default,
 * use the 'adScript' parameter to set the full path to the ad script.
 *
 * @category Ads
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 *
 * @seeAlso  UAPPlugin
 */
class OpenXPlugin extends UAPPlugin
{
    public $adScript = null;

    function initialize()
    {
        parent::initialize();

        // A little bit of chicanery so we avoid overwriting values that
        // are passed in with the constructor
        foreach (array('mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper', 'adScript') as $setting) {
            $value = common_config('openx', $setting);
            if (!empty($value)) { // not found
                $this->$setting = $value;
            }
        }

        return true;
    }

    /**
     * Show a medium rectangle 'ad'
     *
     * @param Action $action Action being shown
     *
     * @return void
     */
    protected function showMediumRectangle($action)
    {
        $this->showAd($action, $this->mediumRectangle);
    }

    /**
     * Show a rectangle 'ad'
     *
     * @param Action $action Action being shown
     *
     * @return void
     */
    protected function showRectangle($action)
    {
        $this->showAd($action, $this->rectangle);
    }

    /**
     * Show a wide skyscraper ad
     *
     * @param Action $action Action being shown
     *
     * @return void
     */
    protected function showWideSkyscraper($action)
    {
        $this->showAd($action, $this->wideSkyscraper);
    }

    /**
     * Show a leaderboard ad
     *
     * @param Action $action Action being shown
     *
     * @return void
     */
    protected function showLeaderboard($action)
    {
        $this->showAd($action, $this->leaderboard);
    }

    /**
     * Show an ad using OpenX
     *
     * @param Action  $action Action being shown
     * @param integer $zone   Zone to show
     *
     * @return void
     */
    protected function showAd($action, $zone)
    {
$scr = <<<ENDOFSCRIPT
var m3_u = '%s';
var m3_r = Math.floor(Math.random()*99999999999);
if (!document.MAX_used) document.MAX_used = ',';
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
document.write ("?zoneid=%d");
document.write ('&cb=' + m3_r);
if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used);
document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));
document.write ("&loc=" + escape(window.location));
if (document.referrer) document.write ("&referer=" + escape(document.referrer));
if (document.context) document.write ("&context=" + escape(document.context));
if (document.mmm_fo) document.write ("&mmm_fo=1");
document.write ("'><\/scr"+"ipt>");
ENDOFSCRIPT;

        $action->inlineScript(sprintf($scr, $this->adScript, $zone));
        return true;
    }

    function onRouterInitialized($m)
    {
        $m->connect('panel/openx',
                    array('action' => 'openxadminpanel'));

        return true;
    }

    function onEndAdminPanelNav($menu) {
        if (AdminPanelAction::canAdmin('openx')) {
            // TRANS: Menu item title.
            $menu_title = _m('OpenX configuration.');
            // TRANS: Menu item for site administration
            $menu->out->menuItem(common_local_url('openxadminpanel'), _m('OpenX'),
                                 $menu_title, $action_name == 'openxadminpanel', 'nav_openx_admin_panel');
        }
        return true;
    }

    /**
     * Add our version information to output
     *
     * @param array &$versions Array of version-data arrays
     *
     * @return boolean hook value
     */
    function onPluginVersion(&$versions)
    {
        $versions[] = array('name' => 'OpenX',
                            'version' => GNUSOCIAL_VERSION,
                            'author' => 'Evan Prodromou',
                            'homepage' => 'http://status.net/wiki/Plugin:OpenX',
                            'rawdescription' =>
                            // TRANS: Plugin description.
                            _m('Plugin for OpenX Ad Server.'));
        return true;
    }
}


code:
<?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * OpenX administration panel
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  OpenX
 * @package   StatusNet
 * @author    Evan Prodromou <evan@status.net>
 * @copyright 2010 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

if (!defined('STATUSNET')) {
    exit(1);
}

/**
 * Administer openx settings
 *
 * @category OpenX
 * @package  StatusNet
 * @author   Evan Prodromou <evan@status.net>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class OpenXadminpanelAction extends AdminPanelAction
{
    /**
     * Returns the page title
     *
     * @return string page title
     */
    function title()
    {
        // TRANS: Page title for OpenX admin panel.
        return _m('TITLE', 'OpenX');
    }

    /**
     * Instructions for using this form.
     *
     * @return string instructions
     */
    function getInstructions()
    {
        // TRANS: Instructions for OpenX admin panel.
        return _m('OpenX settings for this StatusNet site');
    }

    /**
     * Show the site admin panel form
     *
     * @return void
     */
    function showForm()
    {
        $form = new OpenXAdminPanelForm($this);
        $form->show();
        return;
    }

    /**
     * Save settings from the form
     *
     * @return void
     */
    function saveSettings()
    {
        static $settings = array('openx' => array('adScript', 'mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper'));

        $values = array();

        foreach ($settings as $section => $parts) {
            foreach ($parts as $setting) {
                $values[$section][$setting] = $this->trimmed($setting);
            }
        }

        // This throws an exception on validation errors
        $this->validate($values);

        // assert(all values are valid);
        $config = new Config();

        $config->query('BEGIN');

        foreach ($settings as $section => $parts) {
            foreach ($parts as $setting) {
                Config::save($section, $setting, $values[$section][$setting]);
            }
        }

        $config->query('COMMIT');

        return;
    }

    function validate(&$values)
    {
    }
}

/**
 * Form for the openx admin panel
 */
class OpenXAdminPanelForm extends AdminForm
{
    /**
     * ID of the form
     *
     * @return int ID of the form
     */
    function id()
    {
        return 'form_openx_admin_panel';
    }

    /**
     * class of the form
     *
     * @return string class of the form
     */
    function formClass()
    {
        return 'form_openx';
    }

    /**
     * Action of the form
     *
     * @return string URL of the action
     */
    function action()
    {
        return common_local_url('openxadminpanel');
    }

    /**
     * Data elements of the form
     *
     * @return void
     */
    function formData()
    {
        $this->out->elementStart('fieldset', array('id' => 'openx_admin'));
        $this->out->elementStart('ul', 'form_data');
        $this->li();
        $this->input('adScript',
                     // TRANS: Form label in OpenX admin panel.
                     _m('Ad script URL'),
                     // TRANS: Tooltip for form label in OpenX admin panel.
                     _m('Script URL'),
                     'openx');
        $this->unli();
        $this->li();
        $this->input('mediumRectangle',
                     // TRANS: Form label in OpenX admin panel. Refers to advertisement format.
                     _m('Medium rectangle'),
                     // TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
                     _m('Medium rectangle zone'),
                     'openx');
        $this->unli();
        $this->li();
        $this->input('rectangle',
                     // TRANS: Form label in OpenX admin panel. Refers to advertisement format.
                     _m('Rectangle'),
                     // TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
                     _m('Rectangle zone'),
                     'openx');
        $this->unli();
        $this->li();
        $this->input('leaderboard',
                     // TRANS: Form label in OpenX admin panel. Refers to advertisement format.
                     _m('Leaderboard'),
                     // TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
                     _m('Leaderboard zone'),
                     'openx');
        $this->unli();
        $this->li();
        $this->input('wideSkyscraper',
                     // TRANS: Form label in OpenX admin panel. Refers to advertisement format.
                     _m('Skyscraper'),
                     // TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
                     _m('Wide skyscraper zone'),
                     'openx');
        $this->unli();
        $this->out->elementEnd('ul');
    }

    /**
     * Action elements
     *
     * @return void
     */
    function formActions()
    {
        $this->out->submit('submit',
                    // TRANS: Submit button text in OpenX admin panel.
                    _m('BUTTON','Save'),
                    'submit',
                    null,
                    // TRANS: Submit button title in OpenX admin panel.
                    _m('Save OpenX settings.'));
    }
}


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-27 16:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#. TRANS: Menu item title.
#: OpenXPlugin.php:187
msgid "OpenX configuration."
msgstr ""

#. TRANS: Menu item for site administration
#: OpenXPlugin.php:189
msgid "OpenX"
msgstr ""

#. TRANS: Plugin description.
#: OpenXPlugin.php:210
msgid "Plugin for OpenX Ad Server."
msgstr ""

#. TRANS: Page title for OpenX admin panel.
#: actions/openxadminpanel.php:53
msgctxt "TITLE"
msgid "OpenX"
msgstr ""

#. TRANS: Instructions for OpenX admin panel.
#: actions/openxadminpanel.php:64
msgid "OpenX settings for this StatusNet site"
msgstr ""

#. TRANS: Form label in OpenX admin panel.
#: actions/openxadminpanel.php:167
msgid "Ad script URL"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel.
#: actions/openxadminpanel.php:169
msgid "Script URL"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:175
msgid "Medium rectangle"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:177
msgid "Medium rectangle zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:183
msgid "Rectangle"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:185
msgid "Rectangle zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:191
msgid "Leaderboard"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:193
msgid "Leaderboard zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:199
msgid "Skyscraper"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:201
msgid "Wide skyscraper zone"
msgstr ""

#. TRANS: Submit button text in OpenX admin panel.
#: actions/openxadminpanel.php:216
msgctxt "BUTTON"
msgid "Save"
msgstr ""

#. TRANS: Submit button title in OpenX admin panel.
#: actions/openxadminpanel.php:220
msgid "Save OpenX settings."
msgstr ""


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-07 09:32+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans (http://www.transifex.com/projects/p/gnu-social/language/af/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: af\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. TRANS: Menu item title.
#: OpenXPlugin.php:187
msgid "OpenX configuration."
msgstr ""

#. TRANS: Menu item for site administration
#: OpenXPlugin.php:189
msgid "OpenX"
msgstr ""

#. TRANS: Plugin description.
#: OpenXPlugin.php:210
msgid "Plugin for OpenX Ad Server."
msgstr ""

#. TRANS: Page title for OpenX admin panel.
#: actions/openxadminpanel.php:53
msgctxt "TITLE"
msgid "OpenX"
msgstr ""

#. TRANS: Instructions for OpenX admin panel.
#: actions/openxadminpanel.php:64
msgid "OpenX settings for this StatusNet site"
msgstr ""

#. TRANS: Form label in OpenX admin panel.
#: actions/openxadminpanel.php:167
msgid "Ad script URL"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel.
#: actions/openxadminpanel.php:169
msgid "Script URL"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:175
msgid "Medium rectangle"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:177
msgid "Medium rectangle zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:183
msgid "Rectangle"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:185
msgid "Rectangle zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:191
msgid "Leaderboard"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:193
msgid "Leaderboard zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:199
msgid "Skyscraper"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:201
msgid "Wide skyscraper zone"
msgstr ""

#. TRANS: Submit button text in OpenX admin panel.
#: actions/openxadminpanel.php:216
msgctxt "BUTTON"
msgid "Save"
msgstr "Stoor"

#. TRANS: Submit button title in OpenX admin panel.
#: actions/openxadminpanel.php:220
msgid "Save OpenX settings."
msgstr ""


code:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-07 09:32+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/gnu-social/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

#. TRANS: Menu item title.
#: OpenXPlugin.php:187
msgid "OpenX configuration."
msgstr ""

#. TRANS: Menu item for site administration
#: OpenXPlugin.php:189
msgid "OpenX"
msgstr ""

#. TRANS: Plugin description.
#: OpenXPlugin.php:210
msgid "Plugin for OpenX Ad Server."
msgstr ""

#. TRANS: Page title for OpenX admin panel.
#: actions/openxadminpanel.php:53
msgctxt "TITLE"
msgid "OpenX"
msgstr ""

#. TRANS: Instructions for OpenX admin panel.
#: actions/openxadminpanel.php:64
msgid "OpenX settings for this StatusNet site"
msgstr ""

#. TRANS: Form label in OpenX admin panel.
#: actions/openxadminpanel.php:167
msgid "Ad script URL"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel.
#: actions/openxadminpanel.php:169
msgid "Script URL"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:175
msgid "Medium rectangle"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:177
msgid "Medium rectangle zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:183
msgid "Rectangle"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:185
msgid "Rectangle zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:191
msgid "Leaderboard"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:193
msgid "Leaderboard zone"
msgstr ""

#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
#: actions/openxadminpanel.php:199
msgid "Skyscraper"
msgstr ""

#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement
#. format.
#: actions/openxadminpanel.php:201
msgid "Wide skyscraper zone"
msgstr ""

#. TRANS: Submit button text in OpenX admin panel.
#: actions/openxadminpanel.php:216
msgctxt "BUTTON"
msgid "Save"
msgstr "احفظ"

#. TRANS: Submit button title in OpenX admin panel.
#: actions/openxadminpanel.php:220
msgid "Save OpenX settings."
msgstr ""